Compare commits

...

15 Commits

Author SHA1 Message Date
d3cb0ab3f6 0.4.1
Checked in late, forgot to do so after actual release
2015-09-28 12:16:31 +00:00
e5fa4706db Fix loading of user guide and FAQ translations (#1641) 2015-09-12 15:40:16 +00:00
ecdd2ee426 Added new user guide translation 2015-09-12 14:30:22 +00:00
784a716f0a Updated translations 2015-09-12 14:29:53 +00:00
afdde691b4 CME fix 2015-09-02 01:33:49 +00:00
65d9439e03 Add owner to new ticket URL 2015-08-23 05:59:08 +00:00
8d19c4c78a Fixed CME 2015-08-21 02:22:35 +00:00
8731a72887 0.4 2015-08-21 02:20:25 +00:00
9e1b42134c Remove build numbers from version 2015-08-21 02:20:02 +00:00
17b4d035eb Update last checked time for manual checks too 2015-08-20 23:58:49 +00:00
d967d50c51 Fix email checking 2015-08-20 23:50:17 +00:00
42770cf01b Updated ignores 2015-08-20 11:53:10 +00:00
c910e17f6c Fix bug with sending anon emails 2015-08-20 11:52:09 +00:00
d408242173 Test OutboxProcessor.sendEmail(), proves existence of bug with anon emails 2015-08-20 11:26:34 +00:00
c52429f393 Add Mockito to unittest deps 2015-08-20 11:24:58 +00:00
41 changed files with 1044 additions and 382 deletions

View File

@ -53,6 +53,9 @@ subethasmtp-3.1.7.jar
# Downloaded JUnit libraries
junit-4.8.1.jar
# Downloaded Mockito libraries
mockito-core-2.0.31-beta.jar
# Downloaded jMock libraries
cglib-nodep-2.2.3.jar
hamcrest-core-1.3.jar

View File

@ -12,6 +12,8 @@
<property name="junit.filename" value="junit-4.8.1.jar"/>
<property name="junit.url" value="http://sourceforge.net/projects/junit/files/junit/4.8.1/junit-4.8.1.jar/download"/>
<property name="mockito.filename" value="mockito-core-2.0.31-beta.jar"/>
<property name="mockito.url" value="https://bintray.com/artifact/download/szczepiq/maven/org/mockito/mockito-core/2.0.31-beta/mockito-core-2.0.31-beta.jar"/>
<!-- Just the main jMock .jar, the .zip contains this and dependencies -->
<property name="jmock.filename" value="jmock-2.6.0.jar"/>
<property name="jmock.archive" value="jmock-2.6.0-jars.zip"/>
@ -350,7 +352,7 @@
<!-- make the update xpi2p -->
<copy file="plugin/plugin.config" todir="plugin/plugin.tmp" overwrite="true" />
<exec executable="echo" osfamily="unix" failonerror="true" output="plugin/plugin.tmp/plugin.config" append="true">
<arg value="version=${version}-b${build.number}" />
<arg value="version=${version}" />
</exec>
<exec executable="echo" osfamily="unix" failonerror="true" output="plugin/plugin.tmp/plugin.config" append="true">
<arg value="update-only=true" />
@ -383,7 +385,7 @@
<!-- make the install xpi2p -->
<copy file="plugin/plugin.config" todir="plugin/plugin.tmp" overwrite="true" />
<exec executable="echo" osfamily="unix" failonerror="true" output="plugin/plugin.tmp/plugin.config" append="true">
<arg value="version=${version}-b${build.number}" />
<arg value="version=${version}" />
</exec>
<exec executable="${makeplugin}" inputstring="${release.password.su3}" failonerror="true" >
<arg value="plugin/plugin.tmp" />
@ -650,11 +652,14 @@
<target name="junit" depends="compile">
<available property="junitexists" file="${lib}/${junit.filename}" type="file"/>
<ant target="downloadjunit"/>
<available property="mockitoexists" file="${lib}/${mockito.filename}" type="file"/>
<ant target="downloadmockito"/>
<available property="jmockexists" file="${lib}/${jmock.filename}" type="file"/>
<ant target="downloadjmock"/>
<path id="junitcp">
<pathelement location="${lib}/${junit.filename}"/>
<pathelement location="${lib}/${mockito.filename}"/>
<pathelement path="${jmockcp}"/>
<pathelement location="./ant_build/classes"/>
<path refid="cp"/>
@ -702,6 +707,16 @@
<get src="${junit.url}" verbose="true" dest="${lib}/${junit.filename}"/>
</target>
<target name="downloadmockito" unless="mockitoexists">
<input message="Mockito not found, download now?" validargs="y,n" addproperty="userinput.mockito"/>
<fail message="OK, aborting build." >
<condition>
<equals arg1="${userinput.mockito}" arg2="n"/>
</condition>
</fail>
<get src="${mockito.url}" verbose="true" dest="${lib}/${mockito.filename}"/>
</target>
<target name="downloadjmock" unless="jmockexists">
<input message="jMock not found, download now?" validargs="y,n" addproperty="userinput.jmock"/>
<fail message="OK, aborting build." >

View File

@ -1,6 +1,20 @@
I2P-Bote Version History
------------------------
0.4.1 (Released on Sep 12, 2015)
* Fixed bugs:
o ConcurrentModificationException errors in logs
o User guide and FAQ not loading translations
0.4 (Released on Aug 21, 2015)
* Fixed bugs:
o Email checking would get stuck if no new mail was found
o "Last checked" time was inconsistent for manual checks
o Anonymous emails would never send
* Removed build number from version
* Skipped 0.3.* series
o 0.3.1 is less than 0.3-b195; would need to go to 0.3.196
0.3 (Released on Aug 15, 2015)
* New default theme based on Material design
* New features:

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Arabic (http://www.transifex.com/otf/I2P/language/ar/)\n"
@ -18,47 +18,47 @@ msgstr ""
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "لا توجد هوية متوافقة مع المرسل:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "كلمة المرور القديمة غير صحيحة."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "كلمة المرور الجديدة والتأكيد غير صالحة."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Czech (http://www.transifex.com/otf/I2P/language/cs/)\n"
@ -16,47 +16,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Žádná identita neodpovídá poli odesílatel/od:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Staré heslo je špatně zadané."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Nové heslo a jeho potvrzení se neshodují."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -16,9 +16,9 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-21 21:11+0000\n"
"Last-Translator: Lars Schimmer <echelon@i2pmail.org>\n"
"Language-Team: German (http://www.transifex.com/otf/I2P/language/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
@ -26,47 +26,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Material"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "hellblau"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Vanille"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Keine Mailidentität stimmt mit diesem Absenderfeld (\"Von\") überein:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Prüfe Passwort"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Das alte Kennwort ist leider nicht korrekt."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Das neue Kennwort und die Kennwortbestätigung stimmen nicht überein."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Verschlüssele Identitäten"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Verschlüssele Adressbuch"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Verschlüssele Verzeichnis"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Aktualisiere Passwortdatei"
@ -463,19 +463,19 @@ msgstr "Antwort an:"
#: src/main/webapp/newEmail.jsp
msgid "Remove this recipient"
msgstr ""
msgstr "Diesen Empfänger entfernen"
#: src/main/webapp/newEmail.jsp
msgid "Add this recipient to the address book"
msgstr ""
msgstr "Diesen Empfänger zum Adressbuch hinzfügen"
#: src/main/webapp/newEmail.jsp
msgid "Select recipients from address book"
msgstr ""
msgstr "Empfänger aus Adressbuch auswählen"
#: src/main/webapp/newEmail.jsp
msgid "Add another recipient field"
msgstr ""
msgstr "Einen weiteren Empfänger hinzufügen"
#: src/main/webapp/newEmail.jsp
msgid "Subject:"
@ -1121,11 +1121,11 @@ msgstr "I2P-Bote, Version {0}"
#: src/main/webapp/about.jsp
msgid "To submit bug reports or feature requests:"
msgstr ""
msgstr "Um Fehler oder Wünsche zu äussern:"
#: src/main/webapp/about.jsp
msgid "click here"
msgstr ""
msgstr "Hier klicken"
#: src/main/webapp/about.jsp
msgid "Developers:"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-02-14 22:33+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: English (http://www.transifex.com/projects/p/I2P/language/"
@ -17,47 +17,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Material"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Light Blue"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Vanilla"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "No identity matches the sender/from field: "
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Checking password"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "The old password is not correct."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "The new password and the confirmation password do not match."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Re-encrypting identities"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Re-encrypting addressbook"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Re-encrypting folder"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Updating password file"

View File

@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-09 07:14+0000\n"
"Last-Translator: blabla <blabla@trash-mail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/otf/I2P/language/es/)\n"
@ -32,47 +32,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Material"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Celeste"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Vainilla"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "No existe ninguna identidad que concuerde con el campo remitente:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Comprobando contraseña"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "La contraseña antigua no es correcta."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "La nueva contraseña y la confirmación de ésta no coinciden."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Volviendo a cifrar identidades"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Volviendo a cifrar libreta de direcciones"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Volviendo a cifrar carpeta"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Actualizando fichero de contraseña"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Finnish (http://www.transifex.com/otf/I2P/language/fi/)\n"
@ -15,47 +15,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Materiaali"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Vaaleansininen"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Tarkistetaan salasana"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Vanha salasana ei ole oikea."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Uusi salasana ja vahvistussalasana eivät täsmää."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Päivitetään salasanatiedosto"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-06 12:54+0000\n"
"Last-Translator: Towinet\n"
"Language-Team: French (http://www.transifex.com/otf/I2P/language/fr/)\n"
@ -20,49 +20,49 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Matériau"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Bleu clair"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Vanille"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Aucune identité ne correspond au champ \"Expéditeur/De\":"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Vérification de mot de passe"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "L'ancien mot de passe est incorrect."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr ""
"Le nouveau mot de passe et le mot de passe de confirmation ne correspondent "
"pas."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Re-chiffrement d'identités"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Re-chiffrement de carnet d'adresses"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Re-chiffrement de dossier"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Mise à jour du fichier de mot de passe"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Hungarian (http://www.transifex.com/otf/I2P/language/hu/)\n"
@ -15,47 +15,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Világoskék"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Nincsenek azonossági egyezések a feladó/-tól mezőben:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "A régi jelszó nem megfelelő."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Az új jelszó és a megerősítő jelszó nem egyezik."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Indonesian (http://www.transifex.com/otf/I2P/language/id/)\n"
@ -15,47 +15,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Tidak ada identitas yang cocok dengan field pengirim/dari:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Kata sandi lama tidak benar."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Kata sandi baru dan konfirmasi kata sandi tidak cocok."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Italian (http://www.transifex.com/otf/I2P/language/it/)\n"
@ -26,47 +26,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Materiale"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Azzurro"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Vanilla"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Nessuna identità fa match con il campo mittente/da:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Controllo della password"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "La vecchia password non è corretta."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "La nuova password e quella di conferma non sono uguali."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Re-criptando le identità"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Re-criptando la rubrica"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Re-criptando la cartella"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Aggiornamento del file della password"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Japanese (http://www.transifex.com/otf/I2P/language/ja/)\n"
@ -16,47 +16,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "素材"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "ライトブルー"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "バニラ"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "送信者/差出人欄と一致するIDが見つかりませんでした:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "パスワードを確認しています"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "古いパスワードが間違っています。"
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "新しいパスワードと確認用のパスワードが一致しません。"
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "IDを再暗号化しています"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "アドレス帳を再暗号化しています"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "フォルダを再暗号化しています"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "パスワードファイルを更新しています"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/otf/I2P/language/"
@ -18,47 +18,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Ingen identitet matcher med sender/fra område"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Det gamle passordet er ikke korrekt."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Det nye passordet og bekreftelsespassordet matcher ikke."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Dutch (http://www.transifex.com/otf/I2P/language/nl/)\n"
@ -22,47 +22,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Materiaal"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Lichtblauw"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Vanille"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Geen identiteit komt overeen met het afzender/van veld: "
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Bezig met controleren van wachtwoord"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Het oude wachtwoord is onjuist."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Het nieuwe wachtwoord en de bevestiging komen niet overeen."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Bezig met opnieuw versleutelen van identiteiten"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Bezig met opnieuw versleutelen van adresboek"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Bezig met opnieuw versleutelen van map"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Bezig met bijwerken van wachtwoordbestand"

View File

@ -6,14 +6,15 @@
# polacco <polacco@i2pmail.org>, 2012,2014
# seb, 2014
# seb, 2014
# Taporpo Ne <taporpone@gmail.com>, 2015
# Warton <businesshehe@yahoo.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-30 22:13+0000\n"
"Last-Translator: Taporpo Ne <taporpone@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/otf/I2P/language/pl/)\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
@ -22,49 +23,49 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
#: src/main/java/i2p/bote/Configuration.java:67
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Light Blue"
msgstr ""
msgid "Material"
msgstr "Materiał"
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Vanilla"
msgstr ""
msgid "Light Blue"
msgstr "Jasnoniebieski"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Wanilia"
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Żadna tożsamość nie zgadza się z wysyłającym/z pola Od:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
msgstr "Sprawdzanie hasła"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Stare hasło jest nieprawodłowe."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Nowe hasło i potwierdzenie hasła nie zgadza się."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
msgstr "Ponowne szyfrowanie tożsamości"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
msgstr "Ponowne szyfrowanie książki adresowej"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
msgstr "Ponowne szyfrowanie folderu"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""
msgstr "Aktualizacja pliku hasła"
#: src/main/java/i2p/bote/crypto/ECDH256_ECDSA256.java:45
msgid "256-bit Elliptic Curve Encryption"
@ -182,7 +183,7 @@ msgstr "Brama wyłączona"
#: src/main/java/i2p/bote/web/JSPHelper.java:247
#, java-format
msgid "No identity matches the sender/from field: {0}"
msgstr ""
msgstr "Żadna tożsamość nie zgadza się z wysyłającym/z pola: {0}"
#: src/main/java/i2p/bote/web/JSPHelper.java:250
#, java-format
@ -222,7 +223,7 @@ msgstr "Osiągalność %"
#: src/main/java/i2p/bote/web/PeerInfoTag.java:225
#: src/main/java/i2p/bote/web/PeerInfoTag.java:230
msgid "Untested"
msgstr ""
msgstr "Nietestowane"
#: src/main/java/i2p/bote/web/PeerInfoTag.java:138
msgid "Banned Peers:"
@ -239,22 +240,22 @@ msgstr "Powód bana"
#: src/main/java/i2p/bote/web/PeerInfoTag.java:182
#: src/main/java/i2p/bote/web/PeerInfoTag.java:187
msgid "Reachable"
msgstr ""
msgstr "Osiągalny"
#: src/main/java/i2p/bote/web/PeerInfoTag.java:184
#: src/main/java/i2p/bote/web/PeerInfoTag.java:188
msgid "Unreachable"
msgstr ""
msgstr "Nie osiągalny"
#: src/main/java/i2p/bote/web/PeerInfoTag.java:221
#: src/main/java/i2p/bote/web/PeerInfoTag.java:228
msgid "Good"
msgstr ""
msgstr "Dobre"
#: src/main/java/i2p/bote/web/PeerInfoTag.java:223
#: src/main/java/i2p/bote/web/PeerInfoTag.java:229
msgid "Unreliable"
msgstr ""
msgstr "Niepewne"
#: src/main/java/i2p/bote/web/SendEmailTag.java:73
msgid "Error: Please add at least one recipient."
@ -455,19 +456,19 @@ msgstr "Odpowiedz do:"
#: src/main/webapp/newEmail.jsp
msgid "Remove this recipient"
msgstr ""
msgstr "Usuń tego odbiorce"
#: src/main/webapp/newEmail.jsp
msgid "Add this recipient to the address book"
msgstr ""
msgstr "Dodaj tego odbiorcę do książki adresowej"
#: src/main/webapp/newEmail.jsp
msgid "Select recipients from address book"
msgstr ""
msgstr "Wybierz odbiorców z książki adresowej"
#: src/main/webapp/newEmail.jsp
msgid "Add another recipient field"
msgstr ""
msgstr "Dodaj kolejnego odbiorcę"
#: src/main/webapp/newEmail.jsp
msgid "Subject:"
@ -510,10 +511,12 @@ msgid ""
"The email could not be found in this folder. It was probably moved to the "
"Sent folder."
msgstr ""
"Ten email nie posiada prawidłowego podpisu. Najprawdopodobniej został "
"przeniesiony do Wysłane"
#: src/main/webapp/showEmail.jsp
msgid "The email could not be found in this folder."
msgstr ""
msgstr "Email nie został odnaleziony w tym folderze"
#: src/main/webapp/showEmail.jsp
msgid "Signature:"
@ -553,19 +556,19 @@ msgstr "Re:"
#: src/main/webapp/importIdentities.jsp
msgid "Import Identities"
msgstr ""
msgstr "Import tożsamości"
#: src/main/webapp/importIdentities.jsp
msgid "Please select an identities file and try again."
msgstr ""
msgstr "Proszę wybierz tożsamość po czym spróbuj ponownie"
#: src/main/webapp/importIdentities.jsp
msgid "The identities have been imported."
msgstr ""
msgstr "Tożsamości zostały zimportowane"
#: src/main/webapp/importIdentities.jsp
msgid "Identities file:"
msgstr ""
msgstr "Pliki tożsamości:"
#: src/main/webapp/importIdentities.jsp
msgid "Password:"
@ -573,15 +576,15 @@ msgstr "Hasło:"
#: src/main/webapp/importIdentities.jsp
msgid "(leave blank if identities not encrypted)"
msgstr ""
msgstr "(pozostaw puste jeśli tożsamości nie są szyfrowane)"
#: src/main/webapp/importIdentities.jsp
msgid "Overwrite all existing identities:"
msgstr ""
msgstr "Nadpisz wszystkie istniejące tożsamości"
#: src/main/webapp/importIdentities.jsp
msgid "Duplicates: replace existing identity:"
msgstr ""
msgstr "Duplikat: zastąp istniejącą tożsamość:"
#: src/main/webapp/importIdentities.jsp
msgid "Import"
@ -627,11 +630,11 @@ msgstr "Cel:"
#: src/main/webapp/exportIdentities.jsp
msgid "Export Identities"
msgstr ""
msgstr "Eksportuj tożsamości"
#: src/main/webapp/exportIdentities.jsp
msgid "(leave blank to not encrypt identities)"
msgstr ""
msgstr "(pozostaw puste by nie szyfrować tożsamości)"
#: src/main/webapp/exportIdentities.jsp
msgid "Confirm:"
@ -639,7 +642,7 @@ msgstr "Potwierdź:"
#: src/main/webapp/exportIdentities.jsp
msgid "Export"
msgstr ""
msgstr "Eksport"
#: src/main/webapp/publishDestination.jsp
msgid "Add Email Destination to Directory"
@ -885,7 +888,7 @@ msgstr ""
#: src/main/webapp/noIdentities.jsp
msgid "No Identity"
msgstr ""
msgstr "Brak tożsamości"
#: src/main/webapp/noIdentities.jsp
msgid "No Email Identity Defined"
@ -945,7 +948,7 @@ msgstr "Opis"
#: src/main/webapp/identities.jsp
msgid "Check mail for this identity"
msgstr ""
msgstr "Sprawdź pocztę dla tej tożsamości"
#: src/main/webapp/identities.jsp
msgid "New Identity"
@ -1023,7 +1026,7 @@ msgstr ""
#: src/main/webapp/editIdentity.jsp
msgid "(2 chars takes seconds, 3 takes minutes, etc.)"
msgstr ""
msgstr "(2 znaki zajmują sekundy, 3 zajmują minuty itd.)"
#: src/main/webapp/editIdentity.jsp
msgid "Email Destination:"
@ -1035,7 +1038,7 @@ msgstr "Domyślna Tożsamość:"
#: src/main/webapp/editIdentity.jsp
msgid "Include in global check:"
msgstr ""
msgstr "Zawrzyj w sprawdzeniu globalnym"
#: src/main/webapp/editIdentity.jsp
msgid "Private keys:"
@ -1071,7 +1074,7 @@ msgstr "Proszę czekać..."
#: src/main/webapp/submitIdentity.jsp
msgid "The Email Identity is being generated. This may take a while."
msgstr ""
msgstr "Tożsamość jest generowana. Może to potrwać kilka minut."
#: src/main/webapp/submitIdentity.jsp
msgid "The email identity has been saved."
@ -1111,15 +1114,15 @@ msgstr "I2P-Bote Wersja {0}"
#: src/main/webapp/about.jsp
msgid "To submit bug reports or feature requests:"
msgstr ""
msgstr "Aby zgłosić buga lub poprosić o nową funkcje:"
#: src/main/webapp/about.jsp
msgid "click here"
msgstr ""
msgstr "Kliknij tu"
#: src/main/webapp/about.jsp
msgid "Developers:"
msgstr ""
msgstr "Deweloperzy"
#: src/main/webapp/about.jsp
msgid "Click to send an email"
@ -1131,11 +1134,11 @@ msgstr "Opinia na temat I2P-Bote"
#: src/main/webapp/about.jsp
msgid "Technical concept, implementation, user interface"
msgstr ""
msgstr "Koncept techniczny, implementacja, interfejs użytkownika"
#: src/main/webapp/about.jsp
msgid "User experience, extended features, Android app"
msgstr ""
msgstr "Wrażenia użytkowników, rozszerzone funkcje, aplikacja Android"
#: src/main/webapp/about.jsp
msgid "Contributors:"
@ -1143,7 +1146,7 @@ msgstr "Współtwórcy:"
#: src/main/webapp/about.jsp
msgid "Technical concept, translation, QA, usability, technical feedback"
msgstr ""
msgstr "Koncept techniczny, tłumaczenie, QA, użyteczność, opinie techniczne"
#: src/main/webapp/about.jsp
msgid "Pluginization, technical feedback"
@ -1151,7 +1154,7 @@ msgstr "Wtyczki, opinie techniczne"
#: src/main/webapp/about.jsp
msgid "Seedless integration"
msgstr ""
msgstr "Integracja z Seedless"
#: src/main/webapp/about.jsp
msgid "Russian translation"
@ -1207,7 +1210,7 @@ msgstr "Węgierskie tłumaczenie"
#: src/main/webapp/about.jsp
msgid "Alpha testing"
msgstr ""
msgstr "Testy alfa"
#: src/main/webapp/about.jsp
msgid "Code fixes, translation updates from tx"
@ -1260,7 +1263,7 @@ msgstr "Ustawienia zapisane."
#: src/main/webapp/settings.jsp
msgid "General"
msgstr ""
msgstr "Ogólne"
#: src/main/webapp/settings.jsp
msgid "Check for mail every {0} minutes"
@ -1276,7 +1279,7 @@ msgstr "Włącz IMAP na porcie {0}"
#: src/main/webapp/settings.jsp
msgid "Enable SMTP on port {0}"
msgstr ""
msgstr "Włącz SMTP na porcie {0}"
#: src/main/webapp/settings.jsp
msgid "Theme:"
@ -1284,7 +1287,7 @@ msgstr "Motyw:"
#: src/main/webapp/settings.jsp
msgid "Privacy"
msgstr ""
msgstr "Prywatność"
#: src/main/webapp/settings.jsp
msgid "Use English for text added to outgoing email ('Re:', 'wrote:', etc.)"
@ -1298,7 +1301,7 @@ msgstr "Dołącz czas wysłania w listach wychodzących"
#: src/main/webapp/settings.jsp
msgid "Routing"
msgstr ""
msgstr "Routing"
#: src/main/webapp/settings.jsp
msgid "Use relays when sending mail:"
@ -1334,7 +1337,7 @@ msgstr "Zmień hasło"
#: src/main/webapp/faq.jsp
msgid "Frequently Asked Questions"
msgstr ""
msgstr "Najczęściej Zadawane Pytania"
#: src/main/webapp/WEB-INF/tags/folderLink.tag
msgid "{0} emails total"
@ -1346,7 +1349,7 @@ msgstr "{0} wszystkich listów, {1} nowych"
#: src/main/webapp/WEB-INF/tags/folderLink.tag
msgid "{0} incomplete"
msgstr ""
msgstr "{0} niepełnych"
#: src/main/webapp/WEB-INF/tags/address.tag
msgid "Add to Address Book"

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:00+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Portuguese (http://www.transifex.com/otf/I2P/language/pt/)\n"
@ -24,47 +24,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Material"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Azul claro"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Normal"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Nenhuma identidade coincide com o campo do remetente 'De':"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "A verificar a senha..."
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "A antiga senha não está correta."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "A nova senha e a sua confirmação não coincidem."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "A re-cifrar as identidades"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "A re-cifrar o livro de endereços"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "A re-cifrar a pasta"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "A atualizar o ficheiro de senhas"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"POT-Creation-Date: 2015-09-12 14:28+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/I2P/"
@ -16,47 +16,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Material"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Azul claro"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Baunilha"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Nenhuma identidade confere com o campo remetente/de:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Verificando senha"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "A senha antiga não está correta."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "A nova senha e a senha de confirmação não conferem."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Recriptografando as identidades"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Recriptografando o livro de endereços"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Recriptografando a pasta"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Atualizando arquivo de senha"

View File

@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"POT-Creation-Date: 2015-09-12 14:29+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Romanian (http://www.transifex.com/otf/I2P/language/ro/)\n"
@ -15,47 +15,47 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
"2:1));\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Nici o identitate nu se potrivește cu expeditorul / din câmp:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Parola veche nu este corectă."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Parolă noua și parola de confirmare nu coincid."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"POT-Creation-Date: 2015-09-12 14:29+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/otf/I2P/language/"
@ -27,47 +27,47 @@ msgstr ""
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Материальный"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Голубой"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Ванильный"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Нет соответствующего набора ключей для такого отправителя: "
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Проверка пароля"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Старый пароль неверен."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Новый пароль и пароль для подтверждения не совпадают."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Перешифрование идентификатора"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Перешифрование адресной книги"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Перешифрование папки"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Обновляется файл с паролями"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"POT-Creation-Date: 2015-09-12 14:29+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Slovak (http://www.transifex.com/otf/I2P/language/sk/)\n"
@ -16,47 +16,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Odosielateľovi nezodpovedá žiadna identita/z poľa:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Staré heslo nie je správne."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Nové heslo a potvrdzovacie heslo sa nezhodujú."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"POT-Creation-Date: 2015-09-12 14:29+0000\n"
"PO-Revision-Date: 2015-08-26 18:03+0000\n"
"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.com/otf/I2P/language/"
"sv_SE/)\n"
"Language: sv_SE\n"
@ -21,47 +21,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "Material"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "Ljusblå"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "Vanilj"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Ingen identitet överensstämmer med avsändare/från fältet:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "Kontrollerar lösenord"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Det gamla lösenordet är inte rätt."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Det nya lösenordet och bekräftelselösenordet matchar inte."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "Återkrypterar identiteter"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "Återkrypterar adressbok"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "Återkrypterar katalog"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "Uppdaterar lösenordsfil"
@ -455,19 +455,19 @@ msgstr "Svara till:"
#: src/main/webapp/newEmail.jsp
msgid "Remove this recipient"
msgstr ""
msgstr "Tag bort mottagare"
#: src/main/webapp/newEmail.jsp
msgid "Add this recipient to the address book"
msgstr ""
msgstr "Lägg till mottagare till adressbok"
#: src/main/webapp/newEmail.jsp
msgid "Select recipients from address book"
msgstr ""
msgstr "Välj mottagare från adressbok"
#: src/main/webapp/newEmail.jsp
msgid "Add another recipient field"
msgstr ""
msgstr "Lägg till ett annat mottagarfält"
#: src/main/webapp/newEmail.jsp
msgid "Subject:"
@ -475,15 +475,15 @@ msgstr "Ämne:"
#: src/main/webapp/newEmail.jsp
msgid "Attachments:"
msgstr "Bifogningar:"
msgstr "Bilagor:"
#: src/main/webapp/newEmail.jsp
msgid "Remove this attachment"
msgstr "Ta bort denhär bifogningen"
msgstr "Tag bort denna bilaga"
#: src/main/webapp/newEmail.jsp
msgid "Add another attachment"
msgstr "Lägg till en bifogning till"
msgstr "Lägg till en bilaga"
#: src/main/webapp/newEmail.jsp
msgid "Attach"
@ -491,7 +491,7 @@ msgstr "Bifoga"
#: src/main/webapp/newEmail.jsp
msgid "It is recommended to keep attachments below 500 kBytes."
msgstr "Det rekomenderas att bifogningar är mindre än 500kB."
msgstr "Bilagorna bör vara mindre än 500kB."
#: src/main/webapp/newEmail.jsp
msgid "Message:"
@ -1108,11 +1108,11 @@ msgstr "I2P-Bote Version {0}"
#: src/main/webapp/about.jsp
msgid "To submit bug reports or feature requests:"
msgstr ""
msgstr "För att rapportera buggar eller begär funktioner:"
#: src/main/webapp/about.jsp
msgid "click here"
msgstr ""
msgstr "Klicka här"
#: src/main/webapp/about.jsp
msgid "Developers:"

View File

@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"POT-Creation-Date: 2015-09-12 14:29+0000\n"
"PO-Revision-Date: 2015-08-07 17:14+0000\n"
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/"
@ -24,47 +24,47 @@ msgstr ""
"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"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Старий пароль не правильний."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Новий пароль та підтвердження не співпадають."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"POT-Creation-Date: 2015-09-12 14:29+0000\n"
"PO-Revision-Date: 2015-08-05 01:52+0000\n"
"Last-Translator: str4d <str4d@i2pmail.org>\n"
"Language-Team: Vietnamese (http://www.transifex.com/otf/I2P/language/vi/)\n"
@ -16,47 +16,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr ""
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "Không danh tính nào khớp với hàng người gửi:"
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "Mật khẩu cũ không đúng."
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "Mật khẩu mới và mật khẩu xác nhận không khớp."
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr ""
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 02:01+0000\n"
"POT-Creation-Date: 2015-09-12 14:29+0000\n"
"PO-Revision-Date: 2015-08-05 02:14+0000\n"
"Last-Translator: YF <yfdyh000@gmail.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/otf/I2P/language/"
@ -18,47 +18,47 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/main/java/i2p/bote/Configuration.java:67
#: src/main/java/i2p/bote/Configuration.java:68
msgid "Material"
msgstr "纸张"
#: src/main/java/i2p/bote/Configuration.java:68
#: src/main/java/i2p/bote/Configuration.java:69
msgid "Light Blue"
msgstr "亮蓝"
#: src/main/java/i2p/bote/Configuration.java:69
#: src/main/java/i2p/bote/Configuration.java:70
msgid "Vanilla"
msgstr "香草白"
#: src/main/java/i2p/bote/I2PBote.java:515
#: src/main/java/i2p/bote/I2PBote.java:516
msgid "No identity matches the sender/from field: "
msgstr "没有身份密钥与寄件者/收件人相匹配: "
#: src/main/java/i2p/bote/I2PBote.java:719
#: src/main/java/i2p/bote/I2PBote.java:721
msgid "Checking password"
msgstr "正在检查密码"
#: src/main/java/i2p/bote/I2PBote.java:722
#: src/main/java/i2p/bote/I2PBote.java:724
msgid "The old password is not correct."
msgstr "旧密码不正确。"
#: src/main/java/i2p/bote/I2PBote.java:724
#: src/main/java/i2p/bote/I2PBote.java:726
msgid "The new password and the confirmation password do not match."
msgstr "新密码与确认密码字段输入相符。"
#: src/main/java/i2p/bote/I2PBote.java:731
#: src/main/java/i2p/bote/I2PBote.java:733
msgid "Re-encrypting identities"
msgstr "重新加密身份"
#: src/main/java/i2p/bote/I2PBote.java:734
#: src/main/java/i2p/bote/I2PBote.java:736
msgid "Re-encrypting addressbook"
msgstr "重新加密地址簿"
#: src/main/java/i2p/bote/I2PBote.java:737
#: src/main/java/i2p/bote/I2PBote.java:739
msgid "Re-encrypting folder"
msgstr "重新加密文件夹"
#: src/main/java/i2p/bote/I2PBote.java:741
#: src/main/java/i2p/bote/I2PBote.java:743
msgid "Updating password file"
msgstr "正在更新密码文件"

View File

@ -22,6 +22,7 @@
package i2p.bote;
import static i2p.bote.Util._;
import i2p.bote.email.EmailIdentity.IdentityConfig;
import i2p.bote.packet.dht.Contact;
import java.io.File;
@ -39,7 +40,7 @@ import net.i2p.util.Log;
import net.i2p.util.SecureFile;
import net.i2p.util.SystemVersion;
public class Configuration {
public class Configuration implements IdentityConfig {
public static final String KEY_DERIVATION_PARAMETERS_FILE = "derivparams"; // name of the KDF parameter cache file, relative to I2P_BOTE_SUBDIR
private static final String I2P_BOTE_SUBDIR = "i2pbote"; // relative to the I2P app dir

View File

@ -128,7 +128,7 @@ import org.apache.commons.configuration.ConfigurationException;
*/
public class I2PBote implements NetworkStatusSource, EmailFolderManager, MailSender, PasswordVerifier {
public static final int PROTOCOL_VERSION = 4;
private static final String APP_VERSION = "0.3";
private static final String APP_VERSION = "0.4.1";
private static final int STARTUP_DELAY = 3; // the number of minutes to wait before connecting to I2P (this gives the router time to get ready)
private static volatile I2PBote instance;

View File

@ -56,7 +56,7 @@ public class EmailIdentity extends EmailDestination {
private Fingerprint fingerprint;
private boolean published;
private boolean defaultIdentity;
private IdentityConfig identityConfig;
private IdentityConfigImpl identityConfig;
/**
* Creates a random <code>EmailIdentity</code>.
@ -87,7 +87,7 @@ public class EmailIdentity extends EmailDestination {
publicSigningKey = signingKeys.getPublic();
privateSigningKey = signingKeys.getPrivate();
identityConfig = new IdentityConfig();
identityConfig = new IdentityConfigImpl();
}
/**
@ -119,7 +119,7 @@ public class EmailIdentity extends EmailDestination {
publicSigningKey = publicKeys.signingKey;
privateSigningKey = privateKeys.signingKey;
identityConfig = new IdentityConfig();
identityConfig = new IdentityConfigImpl();
}
public PrivateKey getPrivateEncryptionKey() {
@ -246,6 +246,10 @@ public class EmailIdentity extends EmailDestination {
identityConfig.loadFromProperties(properties, prefix, overwrite);
}
public Properties saveConfig(String prefix) {
return identityConfig.saveToProperties(prefix);
}
public IdentityConfig getConfig() {
return identityConfig;
}
@ -254,7 +258,25 @@ public class EmailIdentity extends EmailDestination {
return identityConfig.wrap(configuration);
}
public class IdentityConfig {
public void setIncludeInGlobalCheck(boolean include) {
identityConfig.setIncludeInGlobalCheck(include);
}
public boolean getIncludeInGlobalCheck() {
return identityConfig.getIncludeInGlobalCheck();
}
public interface IdentityConfig {
public int getRelayRedundancy();
public void setRelayMinDelay(int minDelay);
public int getRelayMinDelay();
public void setRelayMaxDelay(int maxDelay);
public int getRelayMaxDelay();
public void setNumStoreHops(int numHops);
public int getNumStoreHops();
}
private class IdentityConfigImpl implements IdentityConfig {
private static final String PARAMETER_INCLUDE_IN_GLOBAL_CHECK_MAIL = "includeInGlobalCheck";
private static final boolean DEFAULT_INCLUDE_IN_GLOBAL_CHECK_MAIL = true;
@ -269,11 +291,11 @@ public class EmailIdentity extends EmailDestination {
private Properties properties;
private Configuration configuration;
public IdentityConfig() {
public IdentityConfigImpl() {
properties = new Properties();
}
private IdentityConfig(Properties properties, Configuration configuration) {
private IdentityConfigImpl(Properties properties, Configuration configuration) {
this.properties = properties;
this.configuration = configuration;
}
@ -302,7 +324,7 @@ public class EmailIdentity extends EmailDestination {
}
public IdentityConfig wrap(Configuration configuration) {
return new IdentityConfig(properties, configuration);
return new IdentityConfigImpl(properties, configuration);
}
// Identity-only configuration

View File

@ -293,7 +293,7 @@ public class Identities implements KeyUpdateHandler {
String text = identity.getText();
properties.setProperty(prefix + PREF_TEXT, (text==null ? "" : text));
properties.setProperty(prefix + PREF_PUBLISHED, identity.isPublished() ? "true" : "false");
properties.putAll(identity.getConfig().saveToProperties(prefix + CONFIGURATION_PREFIX));
properties.putAll(identity.saveConfig(prefix + CONFIGURATION_PREFIX));
index++;
}

View File

@ -39,6 +39,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
@ -135,8 +136,11 @@ public class ClosestNodesLookupTask implements Callable<List<Destination>> {
TimeUnit.SECONDS.sleep(1);
} while (!isDone());
log.debug("Node lookup for " + key + " found " + responses.size() + " nodes (may include local node).");
for (Destination node: responses)
log.debug(" Node: " + Util.toBase32(node));
synchronized (responses) {
Iterator<Destination> i = responses.iterator();
while (i.hasNext())
log.debug(" Node: " + Util.toBase32(i.next()));
}
}
finally {
i2pReceiver.removePacketListener(packetListener);
@ -207,10 +211,13 @@ public class ClosestNodesLookupTask implements Callable<List<Destination>> {
*/
private List<Destination> getResults() {
List<Destination> resultsList = new ArrayList<Destination>();
for (Destination destination: responses) {
resultsList.add(destination);
if (resultsList.size() >= K)
break;
synchronized (responses) {
Iterator<Destination> i = responses.iterator();
while (i.hasNext()) {
resultsList.add(i.next());
if (resultsList.size() >= K)
break;
}
}
return resultsList;
}

View File

@ -38,6 +38,7 @@ import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
@ -46,6 +47,7 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
@ -116,7 +118,7 @@ public class EmailChecker extends I2PAppThread {
previousMailCheckTime = lastMailCheckTime;
lastMailCheckTime = System.currentTimeMillis();
for (EmailIdentity identity : identities.getAll()) {
if (identity.getConfig().getIncludeInGlobalCheck()) {
if (identity.getIncludeInGlobalCheck()) {
checkForMail(identity);
}
}
@ -126,6 +128,10 @@ public class EmailChecker extends I2PAppThread {
}
public synchronized void checkForMail(String key) throws PasswordException, IOException, GeneralSecurityException {
if (!isCheckingForMail()) {
previousMailCheckTime = lastMailCheckTime;
lastMailCheckTime = System.currentTimeMillis();
}
EmailIdentity identity = identities.get(key);
if (identity != null)
checkForMail(identity);
@ -188,11 +194,20 @@ public class EmailChecker extends I2PAppThread {
private synchronized void updatePendingTasks() {
try {
for (Map.Entry<EmailIdentity, Future<Boolean>> entry: pendingMailCheckTasks.entrySet())
if (entry.getValue().get(1, TimeUnit.MILLISECONDS)) {
newMailReceived = true;
pendingMailCheckTasks.remove(entry.getKey());
synchronized (pendingMailCheckTasks) {
Iterator<Map.Entry<EmailIdentity, Future<Boolean>>> iter = pendingMailCheckTasks.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<EmailIdentity, Future<Boolean>> entry = iter.next();
try {
boolean newMailForIdentity = entry.getValue().get(1, TimeUnit.MILLISECONDS);
iter.remove();
if (newMailForIdentity)
newMailReceived = true;
} catch (TimeoutException e) {
log.debug("CheckEmailTask not finished for Identity " + entry.getKey());
}
}
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (Exception e) {

View File

@ -150,7 +150,7 @@ public class OutboxProcessor extends I2PAppThread {
* @throws IOException
* @throws InterruptedException
*/
private void sendEmail(Email email) throws MessagingException, DhtException, GeneralSecurityException, PasswordException, IOException, InterruptedException {
void sendEmail(Email email) throws MessagingException, DhtException, GeneralSecurityException, PasswordException, IOException, InterruptedException {
EmailIdentity senderIdentity = null;
if (!email.isAnonymous()) {
String sender = email.getOneFromAddress();
@ -207,7 +207,11 @@ public class OutboxProcessor extends I2PAppThread {
log.info("Sending email: " + logSuffix);
EmailDestination recipientDest = new EmailDestination(recipient);
EmailIdentity.IdentityConfig identityConfig = senderIdentity.getWrappedConfig(configuration);
EmailIdentity.IdentityConfig identityConfig;
if (email.isAnonymous())
identityConfig = configuration;
else
identityConfig = senderIdentity.getWrappedConfig(configuration);
int hops = identityConfig.getNumStoreHops();
long minDelay = identityConfig.getRelayMinDelay() * 60 * 1000;
long maxDelay = identityConfig.getRelayMaxDelay() * 60 * 1000;

View File

@ -35,7 +35,7 @@
</ib:message>
</h2>
<p><ib:message key="To submit bug reports or feature requests:"/> <a href="http://trac.i2p2.i2p/newticket?component=apps/plugins&keywords=I2P-Bote"><ib:message key="click here"/></a>.</p>
<p><ib:message key="To submit bug reports or feature requests:"/> <a href="http://trac.i2p2.i2p/newticket?component=apps/plugins&keywords=I2P-Bote&owner=str4d"><ib:message key="click here"/></a>.</p>
<div class="contributor-category"><ib:message key="Developers:"/></div>
<div>

View File

@ -183,7 +183,7 @@
<ib:message key="Include in global check:"/>
</div>
<div class="identity-form-checkbox">
<c:if test="${empty identity or identity.config.includeInGlobalCheck}">
<c:if test="${empty identity or identity.includeInGlobalCheck}">
<c:set var="checked" value="checked='checked'"/>
</c:if>
<input type="checkbox" name="includeInGlobalCheck" ${checked}/>

View File

@ -25,5 +25,5 @@
<ib:message key="FAQ" var="title" scope="request"/>
<ib:message key="Frequently Asked Questions" var="pagetitle" scope="request"/>
<c:set var="navSelected" value="faq" scope="request"/>
<c:set var="filename" value="${ib:getLocalizedFilename('FAQ.html', pageContext.servletContext)}" scope="request"/>
<jsp:forward page="showHtml.jsp"/>
<c:set var="filename" value="${ib:getLocalizedFilename('html/FAQ.html', pageContext.servletContext)}" scope="request"/>
<jsp:forward page="showHtml.jsp"/>

View File

@ -0,0 +1,477 @@
<div>
<h1>Användarguide</h1>
<nav><p><a href="#Introduktion">1. Introduktion</a></p>
<p><a href="#How-To">2. Att använda I2P-Bote</a></p>
<p><a href="#Starting">2.1. Starta I2P-Bote</a></p>
<p><a href="#Creating-Identities">2.2. Skapa en Identitet</a></p>
<p><a href="#Sending-Receiving">2.3. Skicka och ta emot email</a></p>
<p><a href="#Address-Book">2.4. Lokal adressbok</a></p>
<p><a href="#Settings">2.5. Inställningar (och vad de betyder)</a></p>
<p><a href="#Gateway">2.6. Email till och från internet</a></p>
<p><a href="#Considerations">3. Överväganden kring anonymitet</a></p>
<p><a href="#Technical-Concept">4. Tekniskt koncept</a></p>
<p><a href="#Technical-Details">5. Tekniska detaljer</a></p>
<p><a href="#Terminology">6. Terminologi/Ordlista</a></p>
<p><a href="#Credits">7. Erkännanden</a></p>
</nav><h2 id="Introduction">1. Introduktion</h2>
<p>I2P-Bote är ett användarvänligt mycket anonymt säkert emailprogram för
I2P. Det är ett serverlöst, helt decentraliserat system som etablerar/formerar ett
peer-till-peer nätverk överlagrat det helt moderna
låglatens-anonymiseringsnätverket
I2P; dessutom lägger det till en valbar mixminion-liknande höglatens-transport och
undviker därigenom låglatens-nätverkens tillkortakommanden.</p>
<p>Därför, I2P-Bote drar full nytta av den anonymitet som levereras av I2P, plus att den genererar sin egen anonymitet genom att lägga till ytterligare ett anonymiseringslager (overlay network).</p>
<p>Det är detta koncept av anonymitet i lager som gör I2P-Bote så flexibelt: du kan konfigurera den att vara extremt anonym och långsam, eller mindre anonym men snabbare/mer effektiv. Hur som helst, I2P-Bote levererar alltid väldigt bra anonymitet för både avsändare och mottagare såväl som kryptering ändpunkt-till-ändpunkt. Frånsett om du skickar mail till eller från det vanliga internet, kommer ALLA email - innehållet, bilagorna och header utom mottagarens adress (subject, date time sender address, &hellip;) att vara krypterade från punkt till punkt. Mottagerns adress är endast synlig för mail-routens sista nod som sparar paketen i kad-nätverket och respektive lagringsnoder, men de kan inte läsa mailets innehåll, vem som skickat det eller vem som hämtar det.</p>
<p>I2P-Bote erbjuder möjligheten att göra din kommunikation ytterligare mer anonym
genom att aktivera höglatens mail-routes - dock till ett pris.
Användare som vill att deras anonyma email skall anlända så snabbt som möjligt bör
avaktivera mail-routes och använda 'direkt' leverenas över I2P. Detta garanterar
att de aldrig kommer att vara mindre anonyma än den nivå av anonymitet som erbjuds av
I2Ps standardförbindelse.</p>
<p>För att åstadkomma hög användbarhet, har vi gjort det möjligt att använda den med
standardklienter för email som Thunderbird, Evolution eller Kmail, utan att behöva
oroa dig för vilken extra informaiton dessa applikationer skickar i sina headers.
Dessutom finns det ett web-interface som låter dig skicka och läsa email eller
hantera dina inställningar och identiteter.</p>
<h2 id="How-To">2. Att använda I2P-Bote</h2>
<h3 id="Starting">2.1 Starta I2P-Bote</h3>
<p>Efter att du startat I2P-Bote (som förval startar den automatiskt när
din I2P-router startar) tar det lite mer än tre minuter innan
allting är igång och fungerar.</p>
<p>Så ta en titt på 'Nätverksstatus' till vänster. Där bör det stå 'Ansluten'</p>
<p>Om du vill använda I2P-Bote själv, måste du först skapa en identitet.</p>
<h3 id="Creating-Identities">2.2. Skapa en Identitet</h3>
<p>Klicka på 'Identiteter' till vänster och därefter på knappen 'Ny Identitet'</p>
<p>Fyll i minst ett 'Offentligt Namn' och tryck sedan på 'Skapa'. Det är allt som behövs för att skapa en identitet.</p>
<p>Det offentliga namnet är namet du ser för denna identet (användbart om du
har olika identiteter för olika grupper av användare som du kommunicerar med eller olika syften)
och det kommer at skickas som 'sändarens namn' till mailets mottagare.
Ett offentligt namn behöver inte vara unikt.</p>
<p>(Eftersom du kan välja vilket namn som helst här - vem som helst kan kalla sig HungryHobo
där - är det inte lämpat att användas av mottagern för att tala om ifall två mail
kommer från samma avsändare. Detta är orsaken till att namnet som sparas i den lokala adressboken
(det kan bara finnas ett namn per destinationsnyckel) visas, om det finns ett,
och du kommer att se en grön bock i kolumnen "Känd", som talar om att det
är ett lokalt känt namn. Om det inte finns någon förkomst av en destination i den lokala adressboken,
kommer namnet som uppges av avsändaren att visas med ett prefix {UNK} i mailklienterna).</p>
<p>Du kan också fylla i de andra fälten om du vill:</p>
<p>Beskrivning - detta fält lagras lokalt. Det är bara till för bekvämlighets skull:
om du vill lägga till ytterligare information för dig själv om denna identitet, kan du skriva den här.</p>
<p>Email Adress - detta fält används inte än.</p>
<p>Välj någon av krypteringsalgoritmerna. Om du är tveksam, håll dig till förvalen.</p>
<p>Du kan klicka på namnet på en en av dina identiteter och sen koipera den långa nyckeln
som visara under 'Email-destination'. Dett är din email-adress i I2P-Bote. Om
du vill att någon skall kunna skicka bote-mail till dig, måste hen ha den långa nyckeln.</p>
<p>Nu kan du skicka och ta emot I2P-Bote mail.</p>
<p>Men du bör också ta en titt på dina I2P-Boteinställningar och se om dom passar dina behov.</p>
<p>(Du kan också skapa olika identiteter och tilldela var och en av dem olika inställningar.)</p>
<h3 id="Sending-Receiving">2.3. Skicka och ta emot email</h3>
<p>Du måste ha I2P-Botes email-destinationsnyckel för andvändaren du skall skicka bote-mail till.</p>
<p>För att kunna skicka ett meddelande, klicka på 'Ny', välj din egen sändaridentitet
eller 'Anonym' under 'Från' och skriv in mottagerns mail-destinationsnyckel
eller som ett alternativ en adress på 'Till:'-raden.</p>
<p>(Alternativt kan du trycka på 'Addressbok'-knappen under denna linje
för att välja från email-destinationer lagrade lokalt i din adressbok:
Markera användarer/na du vill skall ha ditt mail och tryck på 'Lägg till Mottagare'.)</p>
<p>Du kan lägga till flera mottagare och ändra 'Till' till 'Kopia' eller 'Dold kopia'</p>
<p>Plus-knappen lägger till ytterligare mottagar-linjer.</p>
<p>Skriv nu ditt bote-mail och tryck på 'Skicka' för att sända det, eller 'Spara' för att
spara det som ett utkast i din 'utkast'-mapp eller någon annan användar-definierad mapp.</p>
<p>När du trycker på 'Skicka' placeras ditt email i Utkorg-mappen och du kan
fortsätta använda I2P-Bote, d v s skriva andra mail eller helt enkelt göra andra saker.
2P-Bote skickar nu ditt email. När det är skickat tas det automatiskt bort från din
Utkorg och lagras i din Skickat-mapp. Detta betyder att ditt mail är på väg till
mottagaren (om du inte har satt en fördröjning, men det är avaktiverat som förval).</p>
<p> I I2P-Bote är email automatiskt signerade (om du inte skickar dem utan avsändare).</p>
<p>Du kan också skicka email utan att specificera <em>någon</em> sändares
identitet/destination/adress, välj bara 'Anonym' i rullistmenyn 'Från:'.</p>
<p>Med de förvalda inställningarna kommer I2P-Bote automatiskt att kolla nya email, och allt du behöver
göra för att se om du fått några email är att titta i din Inkorg (länken 'Inkorg' till vänster).</p>
<p>Du kan forcera en manuell kontroll genom att trycka på 'Kontrollera Mail'-knappen. Detta är en
global kontroll, som försöker hämta nya mail för alla dina identiteter, utom dom du har tagit bort från
global kontroll. [Ännu inte implementerat]</p>
<p>Antalet olästa email visas i parentesen brevid mappens namn i sidofältet.</p>
<p>Klicka på 'Inkorg' för att se en lista över mottagna email. Du kommer att se två kolumner
med kryss eller gröna bockar. Dessa visar om mailet innehåller en giltig signatur och är autentiskt (Sig)
och om sändarens email-destinationsnyckel är känd lokalt, d.v.s i din adressbok (Känd). Därför
betyder två gröna bockar brevid ett mail att identiteten för detta email är känd och att denna
identitet har signerat mailet.</p>
<p>Om du har ett visst namn i din adressbok och du får ett mail från en
identitet med det namnet, och Känd <em>inte</em> visar en grön bock,
då är det en <em>annan</em> destination som har skickat och signerat detta mail; hen
har bara råkat ta samma namn som du har valt till en av dina kontakter. </p>
<p>Om det där är en grön bock för 'Sig', så är mailet korrekt signerat av sändaren
och du kan lägga till den till din adressbok under ett annat namn, som nu kommer att visas som sändare.</p>
<p>Ett mail utan sändardestination ('Det står 'Anonym') kommer naturligtvis att ha två kryss.</p>
<p>Genom att klicka på ett email som visas i din inbox öppnar du mailet.</p>
<p>Det samma gäller alla andra mappar.</p>
<p>(På grund av I2P-Botes ditribuerade natur, tar det några minuter såväl att skicka som
att kontrollera och ta emot email. Med mail-routes aktiverade ännu mer. Men du behöver inte ha din
browser öppen för det, bara lämna I2P-Bote som en bakgrundsrpocess - detta ökar också anonymiteten.)</p>
<h3 id="Address-Book">2.4. Lokal Adressbok</h3>
<p>Om du har I2P-Bote email-nyckeln från någon som du kommer att skriva mer frekvent till,
är det behändigt att spara nyckeln lokalt i din adressbok (länk till vänster), ange ett namn du väljer för
denna kontakt och klistra in destinationen på motsvarande line, spara sen.</p>
<p>Du bör normalt spara destinationer till din adressbok, så att nästa gång
du får ett mail från samma avsändare visas detta ('Loc' är markerat) och ett mail
som är skickat av någon annan som använder samma namn är markerat som INTE känd lokalt (ett kryss
i web-UIs 'Känd' kolumn eller {UNK} före avsändaren i IMAP), så att du vet att det är en ny/annan avsändare.</p>
<h3 id="Settings">2.5. Inställningar (och vad de betyder)</h3>
<p>Under inställningar kan du välja att I2P-Botes gränssnitts <em>språk</em>
(för närvarande engelska eller tyska) och bestämma huruvida även med en icke-engelsk språkinställning
allting som läggs till automatiskt till ett mail när du svarar
kommer att vara på engelska i alla fall, så att mottagaren inte vet att din I2P-Bote är
inställd på ett annat språk. Annars skulle mottagaren kunna gissa din nationalitet vilket skulle
skada din anonymitet.</p>
<p>Här kan du också justera tidsintervallet för <em>utomatisk kontroll</em> av
email och bestämma om skall skicka någon <em>tidsstämpel</em> med dina mail,
vilket indikerar när mailet skickades. Tidsstämplar är alltid i UTC.</p>
<p>(När man använder mail-routes, är tidsstämplar automatiskt avaktiverade.) [inte
implementerat ännu]</p>
<p>automatisk kontroll av email:</p>
<p>För bekvämlighets skull finns det en alternativ: 'Kontrollera mail varje XX minut'</p>
<p>Här kan du specificera hur ofta din I2P-Bote app skall försöka hämta olästa
mail till dina identiteter. Detta kan ställas in per identitet. [inte implementerat ännu]</p>
<p>Om du specificerar ett slumpmässigt offset, så väntar den inte med att kontrollera _exakt_ varje XX
minut, utan snarare varje (XX+-offset*XX)minuter, d.v.s efter en slumpmässigt vald tid mellan
(1-offset)XX minuter och (1+offset)XX minuter. [ännu inte implementerat]</p>
<p>Du kan också helt avaktivera automatisk kontroll för en speciell identitet.</p>
<p>(Om du är osäker om de här inställningarna, använd förvalen. De borde fungera för dig).</p>
<p><em>Mail routes</em> är kedjor av I2P-Botenoder som agerar relays/routers för
andra peers och följer fördröjningar per-hopp, och på så sätt erbjuder en transport med hög latens
för ökad anonymitet.</p>
<p>Du kan specificera antalet noder (här kallde hopp) som skall kedjas ihop
för att skapa en mail-route. Då kommer varje email-paket som skickas av identiteten
som har en mail-route aktiverad gå igenom en route av n hopp innan den sparas. Du kan ange
en fördröjning för varje hopp individuellt, då inget hopp kommer att veta tidpunkten när ett paket
väntar vid nästa hopp, vilket gör timingen oförutsägbar. [individuella inställningar för per-hop och per-identitet
är ännu inte implementerade]</p>
<p>Som fördröjning kan du specificera en tidsram (t.ex. 60-600 minuter) - sen kommer
en slumpmässig väntetid mellan de två värdena att väljas för paketet vid det hoppet -
eller en fixerad tid, då kommer paketet att vidarebefordras efter den bestämda tiden, d.v.s
middagstid UTC, oavsett när det ankom. [fixerad tid ännu inte implementerad]</p>
<p>(När man använder mail-routes, är tidsstämplar automatiskt avaktiverade.) [ännu inte
implementerat]</p>
<p>Under <em>Mixing anonymity</em> (minsta antal relayer
som kommer att skickas) kan du specificera ett tröskelvärde. Eftersom din nod endast kan
agera pålitligt som mixer om det finns tillräckligt många främmande paket att mixa och blanda
egna paket med, kommer den att samla meddelanden vars fördröjningstid är över tills
den når den lägre gränsen. Endast när den överskrids börjar din nod skicka ut dem
i slumpmässig ordning.</p>
<p><em>exludera identitet från global kontroll</em>[Ännu inte implementerat]</p>
<p>Om du aktiverar detta val för en av dina identiteter så kommer denna inte att påverkas av
global manuell kontroll av mail eller någon global kontroll alls.</p>
<h3 id="Gateway">2.6. Email till och från internet.</h3>
<p>[INTE ÄNNU IMPLEMENTERAD!]</p>
<p>För att kunna skicka bote-mail till internet och ta emot mail fron internet med din I2P-Bote måste du först
registrera en lämplig mail-gateway. Fär närvarande finns det bara en: postman.</p>
<ol>
<li><p>Börja med att gå till
<a href="http://hq.postman.i2p/?page_id=16">http://hq.postman.i2p/?page_id=16</a>
och registrera ett konto. Om du redan har ett konto eller precis har skapat ett som beskrivet, gå vidare till #2.</p></li>
<li><p>För ett existerande konto kan du lägga till din I2P-Bote maildestination, så att
email som kommer från internet vidarebefordras till din I2P-Bote app. För att göra detta gå till:
<a href="http://hq.postman.i2p/?page_id=74">http://hq.postman.i2p/?page_id=74</a>
och ange den efterfrågade informationen.</p></li>
</ol>
<p>Alla email som skickas till den adressen
(<a href="mailto:name@i2pmail.org">name@i2pmail.org</a> från det yttre internet
eller <a href="mailto:name@mail.i2p">name@mail.i2p</a> för mail från andra postman-användare)
kommer nu att vidarebefordras via I2P-Botes nätverk till din I2P-Bote att.</p>
<p>(N.B. Användandet av <a href="mailto:name@mail.i2p">name@mail.i2p</a> eller
<a href="mailto:name@i2pmail.org">name@i2pmail.org</a> adresser i stället för
den långa adressen, gör att mailen inte längre krypteras punkt-till-punkt. Därför rekommenderas
det att byta I2P-Bote mail-destinationer (nycklar) för att kommunicera inom nätverket.
Postman har erbjudit hög kvalitet på sin service för I2P länge, men var medvetem om att det är en
centraliserad punkt som kan försvinna en dag, eller värre, tas över av någon som manipulerar mail.
Vad gäller interna nätverks-mail som kommunikation, så ser I2P-Bote till att om du använder
adressnycklar kan ingen mixtra med mailen du skickar eller tar emot.)</p>
<p>Om du inte bara vill ta emot mail från internet men också skicka email från I2P-Bote, måste du
ge din I2P-Bote destinationsnyckeln till din gateway, så att din I2P-Bote vet var den skall skicka mailen.</p>
<p>Du kan göra detta under 'Inställningar'. Denna gateway kommer att ge I2P-Botes användare
möjlighet att kommunicera med vanliga email-användare på internet såväl som användare av postmans
klassiska i2pmail-service (@mail.i2p).</p>
<p>För att motverka missbruk kommer det att finnas en begränsning av antalet email
du kan sända ut till internet; precis som för vanliga postman email-användare: Om en användare av I2P-Bote
överskrider kvoten av utgående mail, kommer de överskjutande mailen att studsa tillbaka.</p>
<h2 id="Considerations">3. Överväganden om anonymitet.</h2>
<p>Skicka inte identifierbar information om dig själv (namn, adress, geografisk adress,
tidszon, ålder, sajter du nyligen besökt eller bloggat om, användarnamn,
ipnummer, I2P-routerid, I2P-Bote id, personnummer, kreditkortsnummer, &hellip;, kopior av ditt pass,
körkort, hyreskontrakt, foton (med eller utan kläder), dokument som innehåller ditt
användarnamn i författarinformationen, och mycket mycket mer)!</p>
<p>Om möjligt,</p>
<ul>
<li><p>låt I2P-Bote köra dygnet runt,</p></li>
<li><p>använd mailroutes med slumpmässiga fördröjning per-hopp och /eller fixerad sänttid per-hopp, [ännu inte <em>helt</em> implementerad]</p></li>
<li><p>använd ett långt tidsintervall för kontroll,</p></li>
<li><p>använd en lång låkal fördröjning för egna paket,</p></li>
<li><p>använd ett stort slumpmässigt kontrollintervall. [ännu inte implementerat]</p></li>
</ul>
<p>Du kan undertrycka sändandet av datum och tid i mailets header.</p>
<p>När du svarar på ett email läggs viss markörer till för att visa mottagare att detta
är ett svar, som t.ex. 'Svar: [ämnet för mailet du svarar på]' eller '[användarnamn] skrev:'.
Dessa är olika för språken du kan välja i språkinställningarna. Emellertid, om du inte vill att mottagaren
skall veta vilket språk du har satt, kan du undertrycka översättning av dess markörer, att de kommer
att vara på engelska, oavsett vilket språk som är inställt. För att göra detta, markera 'Använd engelska för
text som läggs till utgående mail ('Re:, ''wrote:', etc.)'</p>
<p>Var försiktig med innehållet. Inkludera inte personlig information eller
information som bara du äger. Skriv inte 'Jag går och lägger mig nu, det är sent'
när du inkluderar tidsstämplar.</p>
<p>Språket du skriver på, din stil och dina formuleringar kan också vara av intresse för en motståndare</p>
<p>I2P-Bote erbjuder också möjligheten att använda olika email-identiteter.
Antag att en av dina kontakter får reda på din identitet, eftersom du glömde radera
identifierbar information i ett hemligt dokument du skickat till hen. Om detta
mails mottagare skulle samarbeta med andra som du är i kontakt med, kunde hen
avslöja den riktiga identitet som hör till den Bote-adress hen har från dig.
Så, om du kommunicerar med dessa andra användande samma Bote-adress, kommer de
att kunna veta vem du är. Det går inte om du använder en annan adress för att
skicka mail till dem.</p>
<h2 id="Technical-Concept">4. Tekniska koncept</h2>
<p>I2P-Bote är ett punkt-till-punkt krypterat, nätverksinternt, helt decentraliserat
(d.v.s serverlöst) email-system. Det stöder olika identiteter och avslöjar inte
email-headers. För närvarande är det fortfarande alpha software. Det kan användas
via webkonsoll, och det har IMAP och SMTP-support, så bote-mail kan läsas och skrivas av en vanlig
email-klient. I planerna finns också att garantera ytterligare anonymitet genom att erbjuda hög-latens transport
som tillval. Alla bote-mail krypteras automatiskt punkt-till-punkt, så man behöver inte
konfiguera eller tillämpa extra email-kryptering (även om man kan göra det också), och bote-mail
autenticeras automatiskt. Eftersom det är ett decentraliserat system finns det inga mail-servrar
som kan knyta olika email-identiteter till varandra (<em>profiling</em>): Inte ens noderna som relayar mail kommer att känna till avsändaren
och förutom avsändare och mottagare, kommer endast höglatens-tunneln för mail och lagringsnoderna att veta till vilken anonym identitet
mailet skickas. Den ursprungliga avsändaren kan ha gått off-line långt innan mailet
blir tillgängligt för den andra sidan. Detta ökar på anonymiteten som kan nås med I2P-Bote.
För dom som inte vill ha hög fördröjning: Alla dessa inställningar är användar-valda,
så var och en beslutar själv hur mycket anonymitet hen vill ha.</p>
<p>I2P-Botes noder lagrar krypterade email i en Kademlia DHT. Därför kan ett email
skickas genom ett antal andra noder (relays) för ökad säkerhet, eller direkt till ett set
av lagringsnoder för snabbare leverans. Det samma gäller hämtning av mail.</p>
<p>(När mail-routes används, avaktiveras automatiskt tidsstämplar.) [Hämta via
relays är ännu inte implementerat]</p>
<p>Alla noder är likvärdiga: Det finns inga 'supernoder' eller speciella relay/lagringsnoder.
Alla agerar som potientiella relay och lagringsnod. Det
maximala diskutrymme som används för relayade/sparade mail-paket kan ställas in av användaren.</p>
<p>Innan ett email skickas till ett relay, delas det upp i paket och
krypteras med mottagarens offentliga nyckel. Dess paket lagras redundant i
en distribuerad hashtabell (DHT).</p>
<p>De sparas i minst 100 dagar, under vilken tid mottagaren kan ladda ner dem.</p>
<p>Relaypaket går också ut efter 100 dagare eller mer.</p>
<p>Om en nod får slut på lagringsutrymme för email, och det inte finns några gamla paket som kan raderas,
avvisar noden förfrågningar om lagring.</p>
<p>Dessutom, I2P-Bote rensar mail-headers och tillåter inte att någon onödig information
skickas, vilket tillåter email-klienter utan tidigare kontroll av denna klient sänder i mail-headers.</p>
<p>All kryptering, val av rutt och profilering sker lokalt så att ingen tredje part
är involverad.</p>
<p>I2P-Bote kräver ingen central nod ens för bootstrapping, eftersom den använder Seedless.</p>
<p>Om du använder I2P-Bote korrekt, d.v.s med övervägandena ovan och med sunt förnuft,
kommer ingen att kunna ta reda på vem eller var du är. Om du redan övervakas och din internetuppkoppling
sniffas, kan övervakaren inte se vad eller till vem du skickar post eller varifrån du tar emot post eller var dina
kontakter finns.</p>
<p>Låt oss gå in lite mer i detalj:</p>
<h3>Vad I2P-Bote <em>verkligen döljer</em>:</h3>
<p>I2P-Bote döljer både identiet och plats för sändare och mottagare, liksom även
de mellanliggande noderne (relay och lagring), innehållet i dina mail, deras storlek och antalet mail du skickar.</p>
<p>Endast mottagaren kan känna till avsändarens botemail-destination, och om han väljer att
inte sända sin destination, kan inte ens mottagaren veta den.</p>
<p>Inte ens om du skicka tidsstämplar kommer din tidszon att avslöjas.</p>
<p>Dessutom döljer I2P-Bote:</p>
<ul>
<li><p>det faktum att du kör I2P-Bote</p></li>
<li><p>det faktum att du skicka mail</p></li>
<li><p>det faktum att du tar emot mail</p></li>
<li><p>tidpunkten när du skickar mail</p></li>
<li><p>tidpunkten när du tar emot mail</p></li>
<li>
<p>den övre gränsen av mängden mail en okänd användare tar emot</p>
<ul>
<li><p>en abstrakt användare, inte en konkret, räkna ut existensen från
en existerande mail-identitet eftersom hen kan ha mer än en mail-identitet</p></li>
</ul>
</li>
<li><p>den lägre gränsen, eftersom en identitet också skickar ut test och attrapp-meddelanden</p></li>
</ul>
<h3>Vad I2P-Bote <em>döljer delvis</em>:</h3>
<p>I2P-Botes adress till mottagaren är endast känd av sändare och mottagare.</p>
<p>Om det finns flera mottagare, kommer var och en att se alla andra som fick mailet via 'Till:' eller 'Kopia:'</p>
<p>Alla som listas under 'Dold kopia:' kommer att vara synliga endast för avsändaren och själva mottagaren.</p>
<p>Tiden för avsändandet kommer, om alls, endast att vara synlig för avsändare och mottagare.</p>
<h3>Vad I2P-Bote <em>kan dölja som tillval</em>:</h3>
<ul>
<li><p>Om mailroutes används, tiden ett bote-mail skickas</p></li>
<li><p>Om mailroutes används, tiden ett botemail hämtas. [ännu inte implementerat]</p></li>
<li><p>Om avsändaren undertrycker tidsstämplar kommer endast avsändaren själv veta när han skickat ett mail.</p></li>
</ul>
<h3>vad I2P-Bote <em>inte kan dölja</em>:</h3>
<p>I2P-Bote kan inte dölja hur ofta en given identitet kontrollerar nya mail eller
antalet mail en given identitet tar emot.</p>
<h2 id="Technical-Details">5. Tekniska detaljer</h2>
<p>Se techdoc.txt</p>
<h2 id="Terminology">6. Terminologi/Ordlista</h2>
<h3>I2P-Bote (router/nod) id:</h3>
<p>Detta är den id en I2P-Bote router är känd. Det används för att kontakta
denna router, för lagring, relaying och för att hämta mail, men också för krypteringen hopp-till-hopp
och för att helt enkelt den via I2P, eftersom det är detsamma som routerns destination för I2P-tunnel.
Det visas för att reprensentera en I2P-Botenod i stats.</p>
<p>Så routerns id motsvarar I2P-destinationen (adressen av en I2P-Botenod i I2P-nätverket -
det finns ingen anledning att känna till den om du inte har problem med att ansluta till andra I2P-Botenoder).</p>
<h3>I2P-Bote email-destination:</h3>
<p>I2P-Botes email-destination (nyckel) är en identifierare med vilken någon kan nås
via I2P-Bote, precis som namnet anger: en email-destination. Därför är
den för I2P-Bote vad en emailadress är för vanlig email: Destinationen är den faktiska adress
för att skicka email, för att lagra och hämta dem från DHT. På samma gång används den för kryptering
punkt-till-punkt av email, header-information och bilagor.</p>
<p>En email-destination för I2P-Bote är en Base64 sträng som innehåller en offentlig
krypteringsnyckel och en signeringsnyckel för verifikation. Exempel:</p>
<pre>uQtdwFHqbWHGyxZN8wChjWbCcgWrKuoBRNoziEpE8XDt8koHdJiskYXeUyq7JmpG
In8WKXY5LNue~62IXeZ-ppUYDdqi5V~9BZrcbpvgb5tjuu3ZRtHq9Vn6T9hOO1fa
FYZbK-FqHRiKm~lewFjSmfbBf1e6Fb~FLwQqUBTMtKYrRdO1d3xVIm2XXK83k1Da
-nufGASLaHJfsEkwMMDngg8uqRQmoj0THJb6vRfXzRw4qR5a0nj6dodeBfl2NgL9
HfOLInwrD67haJqjFJ8r~vVyOxRDJYFE8~f9b7k3N0YeyUK4RJSoiPXtTBLQ2RFQ
gOaKg4CuKHE0KCigBRU-Fhhc4weUzyU-g~rbTc2SWPlfvZ6n0voSvhvkZI9V52X3
SptDXk3fAEcwnC7lZzza6RNHurSMDMyOTmppAVz6BD8PB4o4RuWq7MQcnF9znElp
HX3Q10QdV3omVZJDNPxo-Wf~CpEd88C9ga4pS~QGIHSWtMPLFazeGeSHCnPzIRYD</pre>
<p>I2P-Bote router/nod id och I2P-Bote email-destinationer ser liknanade ut, men är i själva
verket helt oberoende av varandra.</p>
<h3>Email adress:</h3>
<p>Email-adresser i I2P-Bote är genvägar för email-destinationer.</p>
<p>&gt;Email-adressen &lt;--&gt; destinationsstrukturer för email lagras på två ställen:
den lokala adressboken och den distribuerade adresskatalogen [den senare ännu inte implementerad].</p>
<h3>I2P-Bote email-identitet:</h3>
<p>I2P-Botes email-identitet är en uppsättning av I2P-Botes nyckel för email-destination, motsvarande
privata nyckalr och ett namn tilldelat av användaren. Detta namn
kommer att skickar med destinations-nyckeln om du inte untertrycker sändning
av information om avsändaren.</p>
<p>Emellertid kommer det endast att visas för mottagaren om denne inte har något
namn för destinationen i sin lokala adressbok.</p>
<p>Så tekniskt sett består en email-identitet av fyra saker:</p>
<ul>
<li><p>en email-destination (d.v.s två offentliga nycklar)</p></li>
<li><p>tvo privata nycklar för email-destination</p></li>
<li><p>offentligt namn som kan visas för andra i email</p></li>
<li><p>en beskrivning som inte visas för någon men utom dig (den hjälper dig komma ihåg
vilken email-identitet du använder för vissa ändamål).</p></li>
</ul>
<p>Det krävs inte någon email-identitet för att skicka mail (men då kan endast
'Anonym' väljas i avsändarfältet).</p>
<h3>Mail routes:</h3>
<p>Mail-routes är en ytterligare hög-latenstransport för I2P-Bote. En kedja av noder byggs av I2P-Bote
för den sakens skull och agerar relays/routers för paket och genomför individuella fördröjningar per-hopp. [ännu inga
inställningar för indviduella fördröjningar implementerade]</p>
<p><strong>VARNING!</strong> Om du väljer detta alternativ - speciellt med många
hopp och/eller lång fördröjning skall du inte bli förvånad om mailet inte kommer fram snart. Det kommer,
naturligtvis att ta längre tid - kanske flera dagar!</p>
<h2 id="Credits">7. Erkännanden</h2>
<p>Se <a href="about.jsp">sidan Om</a>.</p>
<h2>NJUT AV BOTE-KÄNSLAN!!</h2>
</div>

View File

@ -21,5 +21,5 @@
<!DOCTYPE html>
<jsp:include page="header.jsp"/>
<jsp:include page="html/${filename}"/>
<jsp:include page="footer.jsp"/>
<jsp:include page="${filename}"/>
<jsp:include page="footer.jsp"/>

View File

@ -24,5 +24,5 @@
<ib:message key="User Guide" var="title" scope="request"/>
<c:set var="navSelected" value="user-guide" scope="request"/>
<c:set var="filename" value="${ib:getLocalizedFilename('userGuide.html', pageContext.servletContext)}" scope="request"/>
<jsp:forward page="showHtml.jsp"/>
<c:set var="filename" value="${ib:getLocalizedFilename('html/userGuide.html', pageContext.servletContext)}" scope="request"/>
<jsp:forward page="showHtml.jsp"/>

View File

@ -52,6 +52,7 @@ import i2p.bote.packet.dht.StoreRequestTest;
import i2p.bote.packet.dht.UnencryptedEmailPacketTest;
import i2p.bote.packet.relay.RelayRequestTest;
import i2p.bote.packet.relay.ReturnChainTest;
import i2p.bote.service.OutboxProcessorTest;
import junit.framework.Test;
import junit.framework.TestSuite;
@ -84,7 +85,10 @@ import org.junit.runners.Suite;
IncompleteEmailFolderTest.class,
IndexPacketFolderTest.class,
RelayPacketFolderTest.class,
// Services
OutboxProcessorTest.class,
// Other
EmailTest.class,
EmailMetadataTest.class,

View File

@ -0,0 +1,97 @@
package i2p.bote.service;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.List;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import i2p.bote.Configuration;
import i2p.bote.TestUtil;
import i2p.bote.email.Email;
import i2p.bote.email.EmailIdentity;
import i2p.bote.email.Identities;
import i2p.bote.folder.Outbox;
import i2p.bote.folder.RelayPacketFolder;
import i2p.bote.network.DHT;
import i2p.bote.network.NetworkStatusSource;
import i2p.bote.packet.dht.DhtStorablePacket;
import i2p.bote.packet.dht.EncryptedEmailPacket;
import i2p.bote.packet.dht.IndexPacket;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
public class OutboxProcessorTest {
@Rule public MockitoRule rule = MockitoJUnit.rule();
@Mock DHT dht;
@Mock Outbox outbox;
@Mock RelayPeerManager peerManager;
@Mock RelayPacketFolder relayPacketFolder;
@Mock Identities identities;
@Mock Configuration configuration;
@Mock NetworkStatusSource networkStatusSource;
OutboxProcessor op;
Email testEmail;
@Before
public void setUp() {
op = new OutboxProcessor(
dht,
outbox,
peerManager,
relayPacketFolder,
identities,
configuration,
networkStatusSource);
}
@Test
public void testSendEmail() throws Exception {
EmailIdentity identity = TestUtil.createTestIdentities().get(0).identity;
String address = "tester <" + identity.getKey() + ">";
when(identities.extractIdentity(address)).thenReturn(identity);
testEmail = new Email(true);
testEmail.setFrom(new InternetAddress(address));
testEmail.addRecipient(RecipientType.TO, new InternetAddress("Erika Mustermann <m-5~1dZ0MrGdyAWu-C2ecNAB5LCCsHQpeSfjn-r~mqMfNvroR98~BRmReUDmb0la-r-pBHLMtflrJE7aTrGwDTBm5~AJFEm-9SJPZnyGs-ed5pOj4Db65yJml1y1n77qr1~mM4GITl6KuIoxg8YwvPrCIlXe2hiiDCoC-uY9-np9UY>"));
testEmail.setSubject("Test", "UTF-8");
testEmail.setText("foobar");
op.sendEmail(testEmail);
ArgumentCaptor<DhtStorablePacket> arg = ArgumentCaptor.forClass(DhtStorablePacket.class);
verify(dht, times(2)).store(arg.capture());
List<DhtStorablePacket> values = arg.getAllValues();
assertTrue(values.get(0) instanceof EncryptedEmailPacket);
assertTrue(values.get(1) instanceof IndexPacket);
assertTrue(((IndexPacket)values.get(1)).contains(((EncryptedEmailPacket)values.get(0)).getDhtKey()));
}
@Test
public void testSendAnonymousEmail() throws Exception {
testEmail = new Email(true);
testEmail.setFrom(new InternetAddress("anonymous"));
testEmail.addRecipient(RecipientType.TO, new InternetAddress("Erika Mustermann <m-5~1dZ0MrGdyAWu-C2ecNAB5LCCsHQpeSfjn-r~mqMfNvroR98~BRmReUDmb0la-r-pBHLMtflrJE7aTrGwDTBm5~AJFEm-9SJPZnyGs-ed5pOj4Db65yJml1y1n77qr1~mM4GITl6KuIoxg8YwvPrCIlXe2hiiDCoC-uY9-np9UY>"));
testEmail.setSubject("Test", "UTF-8");
testEmail.setText("foobar");
op.sendEmail(testEmail);
ArgumentCaptor<DhtStorablePacket> arg = ArgumentCaptor.forClass(DhtStorablePacket.class);
verify(dht, times(2)).store(arg.capture());
List<DhtStorablePacket> values = arg.getAllValues();
assertTrue(values.get(0) instanceof EncryptedEmailPacket);
assertTrue(values.get(1) instanceof IndexPacket);
assertTrue(((IndexPacket)values.get(1)).contains(((EncryptedEmailPacket)values.get(0)).getDhtKey()));
}
}