From 38f7045dc2564ec7cd83f5339cb7a6fb1969849f Mon Sep 17 00:00:00 2001 From: upstream svn Date: Sat, 2 Aug 2008 08:30:17 +0200 Subject: [PATCH] Upstream tarball 20080802 --- CVSDATE | 2 +- SVNDATE | 2 +- docs/Changelog | 8 + po/amule.pot | 36 +++-- po/ar.po | 36 +++-- po/bg.po | 36 +++-- po/ca.po | 36 +++-- po/cs.po | 36 +++-- po/da.po | 36 +++-- po/de.po | 36 +++-- po/el.po | 36 +++-- po/en_GB.po | 36 +++-- po/es.po | 36 +++-- po/et_EE.po | 36 +++-- po/eu.po | 36 +++-- po/fa.po | 36 +++-- po/fi.po | 36 +++-- po/fr.po | 247 +++++++++++++++++-------------- po/gl.po | 36 +++-- po/he.po | 36 +++-- po/hr.po | 36 +++-- po/hu.po | 36 +++-- po/it.po | 36 +++-- po/it_CH.po | 36 +++-- po/ja.po | 36 +++-- po/ko_KR.po | 36 +++-- po/lt.po | 36 +++-- po/nl.po | 36 +++-- po/nn.po | 36 +++-- po/pl.po | 36 +++-- po/pt_BR.po | 36 +++-- po/pt_PT.po | 36 +++-- po/ru.po | 36 +++-- po/sl.po | 36 +++-- po/sq.po | 36 +++-- po/sv.po | 36 +++-- po/tr.po | 36 +++-- po/zh_CN.po | 197 ++++++++++++------------ po/zh_TW.po | 36 +++-- src/BaseClient.cpp | 8 +- src/ClientTCPSocket.cpp | 3 +- src/include/common/ClientVersion.h | 6 +- src/include/protocol/ed2k/Constants.h | 2 +- src/kademlia/kademlia/Kademlia.cpp | 105 ++++++++++++- src/kademlia/kademlia/Kademlia.h | 15 +- src/kademlia/kademlia/Search.cpp | 25 ++++ src/kademlia/kademlia/Search.h | 1 + src/kademlia/net/KademliaUDPListener.cpp | 54 +++++-- src/kademlia/net/KademliaUDPListener.h | 2 +- src/kademlia/net/PacketTracking.cpp | 17 ++- src/kademlia/net/PacketTracking.h | 1 + src/kademlia/routing/RoutingZone.cpp | 209 +++++++++++++++++++++----- src/kademlia/routing/RoutingZone.h | 6 + src/utils/fileview/KadFiles.cpp | 11 +- 54 files changed, 1364 insertions(+), 781 deletions(-) diff --git a/CVSDATE b/CVSDATE index 4930f4c4..d3888b9e 100644 --- a/CVSDATE +++ b/CVSDATE @@ -1 +1 @@ -Thu Jul 31 07:02:00 CEST 2008 +Sat Aug 2 07:01:59 CEST 2008 diff --git a/SVNDATE b/SVNDATE index 4930f4c4..d3888b9e 100644 --- a/SVNDATE +++ b/SVNDATE @@ -1 +1 @@ -Thu Jul 31 07:02:00 CEST 2008 +Sat Aug 2 07:01:59 CEST 2008 diff --git a/docs/Changelog b/docs/Changelog index 08095a82..9f6f0f4e 100644 --- a/docs/Changelog +++ b/docs/Changelog @@ -6,6 +6,8 @@ Version 2.x.x - The river knows. * Various fixes to new colour code * Allow user to select display of transfer rates * Extendable list-control settings save/load code + * Implemented an alternate method to estimate the real user count + in the Kad network, which is not based on our local routing table. Greek: * Part number is now an extra column in the download list @@ -104,12 +106,18 @@ Version 2.2.2 - Whatever comes next. (possible an old file version), aMule will assume all contacts to be verified to avoid slowing down the connecting process + - Implemented a special nodes.dat file version suitable + for mass distribution. * Fixed not sending sources for clients that did not announce their part availability. * Fixed all list columns being disabled in case of invalid data in config file. * Fixed directory tree not available. + Kry: + * Fixed: Incorrect SX packets sent, plus no reply to + out-of-multipacket SX as a bonus + MalaPraxis: * Remap colours on Windows * Add resources diff --git a/po/amule.pot b/po/amule.pot index fba0e1ad..ba512c2e 100644 --- a/po/amule.pot +++ b/po/amule.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -125,12 +125,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -146,35 +146,35 @@ msgstr "" msgid "Unknown" msgstr "" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -182,7 +182,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -190,11 +190,11 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -504,7 +504,8 @@ msgstr "" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -512,13 +513,18 @@ msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/ar.po b/po/ar.po index 3ba978b2..d376b2da 100644 --- a/po/ar.po +++ b/po/ar.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2004-03-28 22:15+0300\n" "Last-Translator: saleh alhathal \n" "Language-Team: \n" @@ -123,12 +123,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -144,35 +144,35 @@ msgstr "" msgid "Unknown" msgstr "غير معرف" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "طلب:" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -180,7 +180,7 @@ msgid_plural "" msgstr[0] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" msgstr[1] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -188,11 +188,11 @@ msgid_plural "" msgstr[0] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" msgstr[1] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "طلب ملف غير معروف" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -504,7 +504,8 @@ msgstr "" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -512,13 +513,18 @@ msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/bg.po b/po/bg.po index 03caac47..3210bd0e 100644 --- a/po/bg.po +++ b/po/bg.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: source_strings\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2004-02-07 21:55+0200\n" "Last-Translator: Boyan Ivanov \n" "Language-Team: Bulgarian \n" @@ -127,12 +127,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -148,35 +148,35 @@ msgstr "" msgid "Unknown" msgstr "Неизвестен" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Поискан:" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -186,7 +186,7 @@ msgstr[0] "" msgstr[1] "" "Статистика за текущата сесия : Приети %d от %d заявки,%s осъществени\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -196,11 +196,11 @@ msgstr[0] "" msgstr[1] "" "Статистика за текущата сесия : Приети %d от %d заявки,%s осъществени\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Заявен е несъществуващ файл" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -514,7 +514,8 @@ msgstr "" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -522,13 +523,18 @@ msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/ca.po b/po/ca.po index cc6b9ccf..a3fbbd7d 100644 --- a/po/ca.po +++ b/po/ca.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-12 12:08+0100\n" "Last-Translator: Carles Escrig i Royo \n" "Language-Team: Catalan\n" @@ -136,12 +136,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "AVÍS: No s'ha pogut esborrar %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "No s'han pogut obtenir els compartits de l'usuari '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -157,35 +157,35 @@ msgstr "No s'han pogut obtenir els compartits de l'usuari '%s'" msgid "Unknown" msgstr "Desconegut" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versió d'eMule falsa %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (eMule fals)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (eMule fals)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basat en l'eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Sobrenom: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Demanat: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -197,7 +197,7 @@ msgstr[1] "" "Estadístiques dels fitxers per a aquesta sessió: %d peticions acceptades de %" "d, %s transferides\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -209,11 +209,11 @@ msgstr[1] "" "Estadístiques dels fitxers per a totes les sessions: %d peticions acceptades " "de %d, %s transferides\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "S'ha demanat un fitxer desconegut" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Client %s amb IP:Port %s:%d usant %s %s %s" @@ -530,7 +530,8 @@ msgstr "Kademlia: la paraula clau de cerca és massa curta" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -538,13 +539,18 @@ msgstr[0] "S'ha llegit %u contacte Kad" msgstr[1] "S'han llegit %u contactes Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/cs.po b/po/cs.po index 099e6daa..962ba995 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule 2.2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2007-09-03 20:20+0100\n" "Last-Translator: David Watzke \n" "Language-Team: cs \n" @@ -126,12 +126,12 @@ msgstr "VAROVÁNÍ: Nelze smazat původní '%s' po vytvoření zálohy" msgid "WARNING: Failed to delete %s" msgstr "VAROVÁNÍ: Nelze smazat %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Nelze získat seznam sdílených souborů od uživatele '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -147,35 +147,35 @@ msgstr "Nelze získat seznam sdílených souborů od uživatele '%s'" msgid "Unknown" msgstr "Neznámý" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (falešná eMule verze %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (falešná eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (falešná eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (založeno na eMule v.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Přezdívka: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Vyžádáno:" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -185,7 +185,7 @@ msgstr[0] "" msgstr[1] "" "Statistika souboru pro toto sezení: Přijato %d z %d požadavků, %s přeneseno\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -197,11 +197,11 @@ msgstr[1] "" "Statistika souboru pro všechna sezení: Přijato %d z %d požadavků, %s " "přeneseno\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Vyžádán neznámý soubor" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Klient %s s IP %s na portu %d používá %s %s %s" @@ -515,7 +515,8 @@ msgstr "Kademlia: hledaný výraz je příliš krátký" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -523,13 +524,18 @@ msgstr[0] "Přečteno %u Kad kontaktů" msgstr[1] "Přečteno %u Kad kontaktů" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/da.po b/po/da.po index 517d5efc..db308849 100644 --- a/po/da.po +++ b/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule CVS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2007-10-13 18:09+0200\n" "Last-Translator: Alex Thomsen Leth \n" "Language-Team: aMule Team \n" @@ -124,12 +124,12 @@ msgstr "ADVARSEL: Kunne ikke fjerne orginal '%s' efter oprettelse af backup" msgid "WARNING: Failed to delete %s" msgstr "ADVARSEL: Kunne ikke slette '%s'" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Hentelse af delte fier fra bruger '%s' fejlede" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -145,35 +145,35 @@ msgstr "Hentelse af delte fier fra bruger '%s' fejlede" msgid "Unknown" msgstr "Ukendt" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Falsk eMule version-%#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " Falsk eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Falsk eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseret på eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Anmodede:" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -181,7 +181,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -189,11 +189,11 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Anmodet om ukendt fil" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -506,7 +506,8 @@ msgstr "Kademlia: s msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -514,13 +515,18 @@ msgstr[0] "L msgstr[1] "Læs %u Kad kontakter" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/de.po b/po/de.po index 2e457795..d24244a9 100644 --- a/po/de.po +++ b/po/de.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-13 12:13+0100\n" "Last-Translator: Johannes Krampf \n" "Language-Team: \n" @@ -131,12 +131,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "WARNUNG: Fehler beim Löschen von %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Konnte Liste der freigegebenen Dateien von Benutzer '%s' nicht abrufen" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -152,35 +152,35 @@ msgstr "Konnte Liste der freigegebenen Dateien von Benutzer '%s' nicht abrufen" msgid "Unknown" msgstr "Unbekannt" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fake eMule version %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Fake eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Fake eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basiert auf eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Spitzname: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Angefordert: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -190,7 +190,7 @@ msgstr[0] "" msgstr[1] "" "Dateistatistik dieser Sitzung: %d von %d Anfragen akzeptiert, %s übertragen\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -201,11 +201,11 @@ msgstr[1] "" "Dateistatistik aller Sitzungen: %d von %d Anfragen akzeptiert, %s " "übertragen\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Unbekannte Datei angefordert" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Client %s auf IP:Port %s:%d benutzt %s %s %s" @@ -522,7 +522,8 @@ msgstr "Kademlia: Suchbegriff zu kurz" msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Das Suchwort ist bereits auf der Suchliste." -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -530,13 +531,18 @@ msgstr[0] "Lese %u Kad-Kontakt" msgstr[1] "Lese %u Kad-Kontakte" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Nur %d Kad-Kontakt verfügbar, nodes.dat wurde nicht geschrieben." msgstr[1] "Nur %d Kad-Kontakte verfügbar, nodes.dat wurde nicht geschrieben." -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/el.po b/po/el.po index eb4af590..1a08bc6d 100644 --- a/po/el.po +++ b/po/el.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: el\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-30 01:25-0600\n" "Last-Translator: Dimitris \n" "Language-Team: Greek\n" @@ -130,12 +130,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "Ειδοποίηση: Απέτυχα να σβήσω το %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Αποτυχία λήψης των κοινόχρηστων αρχείων του χρήστη '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -151,35 +151,35 @@ msgstr "Αποτυχία λήψης των κοινόχρηστων αρχείω msgid "Unknown" msgstr "Άγνωστο" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "(Πλασματική έκδοση eMule %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "(Πλασματικό eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Πλασματικό eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (βασισμένο στο eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Παρατσούκλι: %s Ταυτότητα: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Ζητήθηκε: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -191,7 +191,7 @@ msgstr[1] "" "Στατιστικές αρχείων για αυτή τη συνεδρία: Δεκτά %d από %d αίτησεις, %s " "μεταφέρθηκαν\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -203,11 +203,11 @@ msgstr[1] "" "Στατιστικές αρχείων για όλες τις συνεδρίες: Δεκτά %d από %d αίτησεις, %s " "μεταφέρθηκαν\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Αναζητήθηκε άγνωστο αρχείο" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Πελάτης %s στην θύρα IP %s:%d ο οποίος χρησιμοποιεί %s %s %s" @@ -526,7 +526,8 @@ msgstr "Kademlia: O κωδικός αναζήτησης είναι πολύ μι msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Ο κωδικός αναζήτησης υπάρχει ήδη στη λίστα αναζητήσεων: " -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -534,6 +535,11 @@ msgstr[0] "Ανάγνωση %u επαφής Kad" msgstr[1] "Ανάγνωση %u επαφών Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" @@ -542,7 +548,7 @@ msgstr[0] "" msgstr[1] "" "Μόνο %d γνωριμίες Kad είναι διαθέσιμες. το αρχείο nodes.dat δεν γράφτηκε" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/en_GB.po b/po/en_GB.po index 097fb16b..5914115a 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule CVS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-08 02:22+0100\n" "Last-Translator: Dévai Tamás \n" "Language-Team: aMule Team \n" @@ -123,12 +123,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -144,35 +144,35 @@ msgstr "" msgid "Unknown" msgstr "" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -180,7 +180,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -188,11 +188,11 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -502,7 +502,8 @@ msgstr "" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -510,13 +511,18 @@ msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/es.po b/po/es.po index b09ac085..1eb5cead 100644 --- a/po/es.po +++ b/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-25 21:00+0100\n" "Last-Translator: Mad-Soft \n" "Language-Team: Spanish \n" @@ -133,12 +133,12 @@ msgstr "ALERTA: Imposible borrar '%s' original, creando copia de seguridad" msgid "WARNING: Failed to delete %s" msgstr "ALERTA: Error al borrar %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Error al obtener la lista de compartidos del usuario '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -154,35 +154,35 @@ msgstr "Error al obtener la lista de compartidos del usuario '%s'" msgid "Unknown" msgstr "Desconocido" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versión Falsa eMule %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Falso eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Falso eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basado en eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Alias: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Solicitado: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -194,7 +194,7 @@ msgstr[1] "" "Estadísticas de archivo para esta sesión: %d Aceptadas de %d peticiones, %s " "transferidas\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -206,11 +206,11 @@ msgstr[1] "" "Estadísticas de archivo para todas las sesiones: %d Aceptadas de %d " "peticiones, %s transferidas\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Solicitado un archivo desconocido" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Cliente %s en IP:Puerto %s:%d usando %s %s %s" @@ -527,7 +527,8 @@ msgstr "Kademlia: palabra de búsqueda demasiado corta" msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: palabra de búsqueda ya está en la lista de búsqueda: " -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -535,13 +536,18 @@ msgstr[0] "Leído %u contacto Kad" msgstr[1] "Leídos %u contactos Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Solo %d contacto Kad disponible, nodes.dat no escrito" msgstr[1] "Solo %d contactos Kad disponibles, nodes.dat no escrito" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/et_EE.po b/po/et_EE.po index 10eb0c3c..6810dc8e 100644 --- a/po/et_EE.po +++ b/po/et_EE.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: et_EE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-23 18:30+0300\n" "Last-Translator: Hans \n" "Language-Team: \n" @@ -128,12 +128,12 @@ msgstr "HOIATUS: peale varukoopia tegemist ei suuda '%s' originaali eemaldada" msgid "WARNING: Failed to delete %s" msgstr "HOIATUS: Ei suutnud %s kustutada" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Ei suuda tõmmata kasutaja '%s' jagatud faili" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -149,35 +149,35 @@ msgstr "Ei suuda tõmmata kasutaja '%s' jagatud faili" msgid "Unknown" msgstr "Teadmata" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Valetatud eMule versioon %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Valetatud eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Valetatud eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseerub eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Kasutajanimi: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Küsitud: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -187,7 +187,7 @@ msgstr[0] "" msgstr[1] "" "Selle seansi failistatistika: Aksepteeritud %d/%d päringust, %s siirdatud\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -199,11 +199,11 @@ msgstr[1] "" "Kõikide seansside failistatistika: Aksepteeritud %d/%d päringust, %s " "siirdatud\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Küsiti tundmatut faili" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Klient %s IP:Port %s:%d kasutab %s %s %s" @@ -517,7 +517,8 @@ msgstr "Kademlia: otsingu võtmesõna on liiga lühike" msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: otsingu võtmesõna on juba loetelus: " -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -525,13 +526,18 @@ msgstr[0] "Loetud %u Kad kontakti" msgstr[1] "Loetud %u Kad kontakti" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Saadaval ainult %d Kad kontakt, nodes.dat ei lisatud" msgstr[1] "Saadaval ainult %d Kad kontakti, nodes.dat ei lisatud" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/eu.po b/po/eu.po index 7b220b68..f57dfdc6 100644 --- a/po/eu.po +++ b/po/eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: eu\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-03-30 18:39+0200\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" @@ -129,12 +129,12 @@ msgstr "KONTUZ: Ezin da jatorrizko '%s' ezabatu basbeskopia sortu ondoren" msgid "WARNING: Failed to delete %s" msgstr "KONTUZ: Huts %s ezabatzerakoan" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Huts '%s' erabiltzailearen partekatutako fitxategiak jasotzerakoan" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -150,35 +150,35 @@ msgstr "Huts '%s' erabiltzailearen partekatutako fitxategiak jasotzerakoan" msgid "Unknown" msgstr "Ezezaguna" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Gezurrezko eMule bertsioa %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Gezurrezko eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Gezurrezko eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (eMule v0.%u-tan oinarriturik)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Ezizena: %s ID-a: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Eskaerak: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -190,7 +190,7 @@ msgstr[1] "" "Fitxategi estatistikak saio honentzat. Onarturik %d - %d eskakizunetik, %s " "transferiturik\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -202,11 +202,11 @@ msgstr[1] "" "Fitxategi estatistikak saio guztientzat. Onarturik %d %d eskakizunetik, %s " "transferiturik\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Fitxategi ezezaguna eskaturik" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "%s bezeroa %s:%d IP:Atakan %s %s %s erabiliaz" @@ -518,7 +518,8 @@ msgstr "Kademlia: bilaketa gako laburregia" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -526,13 +527,18 @@ msgstr[0] "Irakurri Kad kontaktu %u " msgstr[1] "Irakurri %u Kad kontaktu" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/fa.po b/po/fa.po index 0b4eecb6..f5c17c1d 100644 --- a/po/fa.po +++ b/po/fa.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule SVN\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-02-07 09:12+0100\n" "Last-Translator: \n" "Language-Team: Persian\n" @@ -122,12 +122,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -143,35 +143,35 @@ msgstr "" msgid "Unknown" msgstr "" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -179,7 +179,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -187,11 +187,11 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -501,7 +501,8 @@ msgstr "" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -509,13 +510,18 @@ msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/fi.po b/po/fi.po index 3236f817..a068466e 100644 --- a/po/fi.po +++ b/po/fi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fi\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-12 18:58+0200\n" "Last-Translator: Tapio Rantala \n" "Language-Team: aMule Team \n" @@ -127,12 +127,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "VAROITUS: Ei voitu poistaa %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Jaettujen tiedostojen listaus käyttäjältä '%s' ei onnistunut" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -148,35 +148,35 @@ msgstr "Jaettujen tiedostojen listaus käyttäjältä '%s' ei onnistunut" msgid "Unknown" msgstr "Tuntematon" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Vale-eMule versio %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Vale-eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Vale-eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (pohjautuu eMule-versioon v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Nimimerkki: %s Tunnus: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Pyydetty: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -186,7 +186,7 @@ msgstr[0] "" msgstr[1] "" "Tiedostotilasto tästä sessiosta: Hyväksytty %d / %d pyynnöstä, %s siirretty\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -198,11 +198,11 @@ msgstr[1] "" "Tiedostotilasto kaikista sessioista: Hyväksytty %d / %d pyynnöstä, %s " "siirretty\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Pyydetty tuntematonta tiedostoa" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Asiakas %s IP:Portti %s:%d ohjelmalla %s %s %s" @@ -516,7 +516,8 @@ msgstr "Kademlia: hakusana on liian lyhyt" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -524,13 +525,18 @@ msgstr[0] "Luettu %u Kad-kontakti" msgstr[1] "Luettu %u Kad-kontaktia" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/fr.po b/po/fr.po index 5d7dcd3c..dce44595 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,17 +9,18 @@ # Carlos Diaz , 2008. msgid "" msgstr "" -"Project-Id-Version: fr\n" +"Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" -"PO-Revision-Date: 2008-06-24 20:07+0100\n" -"Last-Translator: Youpla \n" -"Language-Team: Español \n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" +"PO-Revision-Date: 2008-08-01 12:19+0100\n" +"Last-Translator: Aïssi Dylan \n" +"Language-Team: Français\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: KBabel 1.11.4\n" +"X-Poedit-Language: French\n" #: src/libs/ec/cpp/RemoteConnect.cpp:86 src/libs/ec/cpp/RemoteConnect.cpp:94 msgid "You must specify a non-empty password." @@ -27,7 +28,7 @@ msgstr "Vous devez entrer un mot de passe non vide." #: src/libs/ec/cpp/RemoteConnect.cpp:91 msgid "Invalid password, not a MD5 hash!" -msgstr "Mot de passe invalide, ce n'est pas un hash MD5 !" +msgstr "Mot de passe invalide, ce n'est pas un hachage MD5 !" #: src/libs/ec/cpp/RemoteConnect.cpp:136 msgid "Connection failure" @@ -94,17 +95,17 @@ msgstr "En attente" #: src/ThreadTasks.cpp:130 #, c-format msgid "Starting to create MD4 and AICH hash for file: %s" -msgstr "Création des hashes MD4 et AICH démarrée pour le fichier: %s" +msgstr "Création des hachages MD4 et AICH démarrée pour le fichier: %s" #: src/ThreadTasks.cpp:134 #, c-format msgid "Starting to create MD4 hash for file: %s" -msgstr "Création du hash MD4 démarrée pour le fichier: %s" +msgstr "Création du hachage MD4 démarrée pour le fichier: %s" #: src/ThreadTasks.cpp:138 #, c-format msgid "Starting to create AICH hash for file: %s" -msgstr "Création du hash AICH démarrée pour le fichier: %s" +msgstr "Création du hachage AICH démarrée pour le fichier: %s" #: src/ThreadTasks.cpp:347 #, c-format @@ -136,12 +137,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "ATTENTION : Échec de la suppression de %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Échec de la réception des fichiers partagés de l'utilisateur '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -157,35 +158,35 @@ msgstr "Échec de la réception des fichiers partagés de l'utilisateur '%s'" msgid "Unknown" msgstr "Inconnu" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fake eMule version %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Fake eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Fake eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basé sur eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Pseudo : %s ID : %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Demandé: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -197,7 +198,7 @@ msgstr[1] "" "Statistiques des fichiers pour cette session: %d requêtes acceptées sur %d, %" "s transférées\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -209,11 +210,11 @@ msgstr[1] "" "Statistiques des fichiers pour toutes les sessions: %d requêtes acceptées " "sur %d, %s transférées\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Fichier demandé inconnu" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Le client %s sur IP:Port %s:%d utilisant %s %s %s" @@ -298,7 +299,7 @@ msgstr "Le nom du fichier sans la partie répertoire." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." -msgstr "Le hash eD2k du fichier." +msgstr "Le hachage eD2k du fichier." #: src/UserEvents.h:75 msgid "The size of the file in bytes." @@ -533,7 +534,8 @@ msgstr "" "Kademlia : le mot-clé de la recherche est toujours dans la liste de " "recherche :" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -541,13 +543,18 @@ msgstr[0] "%u contact Kad lu" msgstr[1] "%u contacts Kad lus" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Seulement %d contact Kad disponible, nodes.dat non écrit" +msgstr[1] "Seulement %d contacts Kad disponible, nodes.dat non écrit" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" @@ -564,7 +571,7 @@ msgstr "connexion du client web acceptée\n" #: src/webserver/src/WebServer.cpp:309 msgid "ERROR: cannot accept web client connection\n" -msgstr "" +msgstr "ERREUR: impossible d'accepter la connexion au client web\n" #: src/webserver/src/WebServer.cpp:379 #, c-format @@ -610,7 +617,7 @@ msgstr "Vérification du mot de passe\n" #: src/webserver/src/WebServer.cpp:1879 msgid "Password hash invalid\n" -msgstr "Hash du mot de passe invalide\n" +msgstr "Hachage du mot de passe invalide\n" #: src/webserver/src/WebServer.cpp:1894 msgid "Password ok\n" @@ -1173,7 +1180,7 @@ msgstr "Effacer" #: src/utils/aLinkCreator/src/alcframe.cpp:160 msgid "Create link with part-hashes" -msgstr "Créer le lien avec les hashs partiels" +msgstr "Créer le lien avec les hachages partiels" #: src/utils/aLinkCreator/src/alcframe.cpp:166 msgid "" @@ -1185,11 +1192,11 @@ msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:192 msgid "MD4 File Hash" -msgstr "Hash MD4 du fichier" +msgstr "Hachage MD4 du fichier" #: src/utils/aLinkCreator/src/alcframe.cpp:204 msgid "eD2k File Hash" -msgstr "Hash du fichier eD2k" +msgstr "Hachage du fichier eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:215 msgid "eD2k link" @@ -1300,8 +1307,8 @@ msgstr "Traitement du fichier numéro %u : %s" #: src/utils/aLinkCreator/src/alcc.cpp:70 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" -"Vous avez demandé les hashs partiels (Seulement utilisés pour des fichiers " -"dont les tailles sont > 9.5 Mo)" +"Vous avez demandé les hachages partiels (Seulement utilisés pour des " +"fichiers dont les tailles sont > 9.5 Mo)" #: src/utils/aLinkCreator/src/alcc.cpp:83 #, c-format @@ -1574,7 +1581,7 @@ msgstr "Turque" #: src/Preferences.cpp:822 src/muuli_wdr.cpp:2223 msgid "- default -" -msgstr "" +msgstr "- défaut -" #: src/Preferences.cpp:838 msgid "User:" @@ -1784,34 +1791,40 @@ msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" +"Client P2P multiplateforme basé sur eMule \n" +"\n" #: src/amuleDlg.cpp:467 msgid "Website: http://www.amule.org \n" -msgstr "" +msgstr "Site web: http://www.amule.org \n" #: src/amuleDlg.cpp:468 msgid "Forum: http://forum.amule.org \n" -msgstr "" +msgstr "Forum: http://forum.amule.org \n" #: src/amuleDlg.cpp:469 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" +"FAQ: http://wiki.amule.org \n" +"\n" #: src/amuleDlg.cpp:470 msgid "Contact: admin@amule.org (administrative issues) \n" -msgstr "" +msgstr "Contacte: admin@amule.org (problèmes administratives) \n" #: src/amuleDlg.cpp:471 msgid "" "Copyright (c) 2003-2008 aMule Team \n" "\n" msgstr "" +"Copyright (c) 2003-2008 aMule Team \n" +"\n" #: src/amuleDlg.cpp:472 msgid "Part of aMule is based on \n" -msgstr "" +msgstr "Une partie d'aMule est basée sur \n" #: src/amuleDlg.cpp:473 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" @@ -1819,11 +1832,11 @@ msgstr "Kademlia : Routage peer-to-peer basé sur la métrique XOR.\n" #: src/amuleDlg.cpp:474 msgid " Copyright (C) 2002 Petar Maymounkov \n" -msgstr "" +msgstr " Copyright (C) 2002 Petar Maymounkov \n" #: src/amuleDlg.cpp:475 msgid "http://kademlia.scs.cs.nyu.edu\n" -msgstr "" +msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:478 src/PrefsUnifiedDlg.cpp:515 #: src/PrefsUnifiedDlg.cpp:610 src/PrefsUnifiedDlg.cpp:692 src/KadDlg.cpp:177 @@ -2020,7 +2033,7 @@ msgstr "Sécurité" #: src/PrefsUnifiedDlg.cpp:174 msgid "Interface" -msgstr "" +msgstr "Interface" #: src/PrefsUnifiedDlg.cpp:176 msgid "Proxy" @@ -2028,7 +2041,7 @@ msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:177 msgid "Filters" -msgstr "" +msgstr "Filtres" #: src/PrefsUnifiedDlg.cpp:178 msgid "Remote Controls" @@ -2040,7 +2053,7 @@ msgstr "Signature en ligne" #: src/PrefsUnifiedDlg.cpp:180 msgid "Advanced" -msgstr "" +msgstr "Avancé" #: src/PrefsUnifiedDlg.cpp:181 msgid "Events" @@ -2071,6 +2084,9 @@ msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" +"Votre liste de serveur pour la mise à jour automatique est vide.\n" +"'La mise à jour automatique au démarrage de la liste des serveurs' va être " +"désactivé." #: src/PrefsUnifiedDlg.cpp:521 msgid "" @@ -2327,12 +2343,12 @@ msgstr "Accès accepté." #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" -"Échec de la commande PartFile à distance: Hash du fichier non trouvé: %s" +"Échec de la commande PartFile à distance: Hachage du fichier non trouvé: %s" #: src/ExternalConn.cpp:567 #, c-format msgid "FileHash not found: %s" -msgstr "Hash du fichier non trouvé : %s" +msgstr "Hachage du fichier non trouvé : %s" #: src/ExternalConn.cpp:630 src/ExternalConn.cpp:714 msgid "OOPS! OpCode processing error!" @@ -2944,7 +2960,7 @@ msgstr "Information" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" -msgstr "Le Hash utilisateur spécifié est invalide !" +msgstr "Le hachage utilisateur spécifié est invalide !" #: src/SearchListCtrl.cpp:89 src/DownloadListCtrl.cpp:194 #: src/PartFile.cpp:3929 src/FileDetailListCtrl.cpp:44 @@ -3019,7 +3035,7 @@ msgstr "Utilisateurs au total : %s | Fichiers au total : %s" #: src/DownloadListCtrl.cpp:187 msgid "Part" -msgstr "" +msgstr "Partie" #: src/DownloadListCtrl.cpp:190 src/ClientListCtrl.cpp:520 msgid "Transferred" @@ -3218,7 +3234,7 @@ msgstr "ERREUR : Le fichier part.met est de taille nulle : %s ==> %s" #: src/PartFile.cpp:351 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" -msgstr "" +msgstr "ERREUR: Version du fichier part.met invalide: %s ==> %s" #: src/PartFile.cpp:601 #, c-format @@ -3322,7 +3338,7 @@ msgstr "Partie complète (%i) trouvée dans %s" #: src/PartFile.cpp:1218 #, c-format msgid "Finished rehashing %s" -msgstr "Re-hash de %s terminé" +msgstr "Re-hachage de %s terminé" #: src/PartFile.cpp:2242 #, c-format @@ -3343,8 +3359,8 @@ msgstr "Fichier supprimé : %s" #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" -"AVERTISSEMENT : Impossible de calculer le hash de la partie téléchargée. " -"Ensemble de hash incomplet pour '%s'" +"AVERTISSEMENT : Impossible de calculer le hachage de la partie téléchargée. " +"Ensemble de hachage incomplet pour '%s'" #: src/PartFile.cpp:2391 #, c-format @@ -3352,8 +3368,8 @@ msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" -"ERREUR : Imppossible de calculer le hash de la partie téléchargée - Ensemble " -"de hash incomplet pour (%s). Ceci ne devrait jamais arriver" +"ERREUR : Impossible de calculer le hachage de la partie téléchargée - " +"Ensemble de hachage incomplet pour (%s). Ceci ne devrait jamais arriver" #: src/PartFile.cpp:3087 #, c-format @@ -3400,6 +3416,8 @@ msgstr "AVERTISSEMENT : known.met n'a pas pu être ouvert." #: src/KnownFileList.cpp:86 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" +"AVERTISSEMENT: La liste de fichier Known est corrompu, elle contient des " +"entêtes invalides." #: src/KnownFileList.cpp:112 #, c-format @@ -3617,7 +3635,7 @@ msgstr "" #: src/TextClient.cpp:346 msgid "Processing by hash: " -msgstr "Traitement par hash :" +msgstr "Traitement par hachage :" #: src/TextClient.cpp:361 msgid "Processing by filename: " @@ -3626,7 +3644,7 @@ msgstr "Traitement par nom de fichier :" #: src/TextClient.cpp:384 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" -"Cette commande nécessite un argument. Arguments valides : un hash de " +"Cette commande nécessite un argument. Arguments valides : un hachage de " "fichier.\n" #: src/TextClient.cpp:410 @@ -3636,7 +3654,7 @@ msgstr "Nombre invalide\n" #: src/TextClient.cpp:414 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" -"Ce n'est pas un hash valide (la longueur devrait être exactement 32 " +"Ce n'est pas un hachage valide (la longueur devrait être exactement 32 " "caractères)\n" #: src/TextClient.cpp:630 @@ -3878,7 +3896,7 @@ msgstr "" "liste\n" " seront ajoutés à la liste des serveurs.\n" "\n" -"Le lien aimant devra contenir le hash eD2k et la taille du fichier.\n" +"Le lien aimant devra contenir le hachage eD2k et la taille du fichier.\n" #: src/TextClient.cpp:868 msgid "Set a preference value." @@ -4395,7 +4413,7 @@ msgstr "État" #: src/PartFileConvert.cpp:631 msgid "Filehash" -msgstr "Hash du fichier" +msgstr "Hachage du fichier" #: src/PartFileConvert.cpp:677 msgid "Import partfiles" @@ -4684,7 +4702,7 @@ msgstr "Global" #: src/muuli_wdr.cpp:193 msgid "FileHash" -msgstr "Hash du fichier" +msgstr "Hachage du fichier" #: src/muuli_wdr.cpp:201 msgid "Extended Parameters" @@ -4816,7 +4834,7 @@ msgstr "Fichier .met :" #: src/muuli_wdr.cpp:589 msgid "Hash :" -msgstr "Hash :" +msgstr "Hachage :" #: src/muuli_wdr.cpp:604 msgid "Filesize :" @@ -4908,6 +4926,9 @@ msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" +"Pour un film vous pouvez indiquer sa durée, l'histoire, la langue ...\\n" +"\\net s'il s'agit d'un faux, vous pouvez prévenir les autres utilisateurs " +"d'aMule." #: src/muuli_wdr.cpp:893 msgid "File Quality" @@ -4953,7 +4974,7 @@ msgstr "Nom d'utilisateur :" #: src/muuli_wdr.cpp:1039 msgid "Userhash :" -msgstr "Hash de l'utilisateur :" +msgstr "Hachage de l'utilisateur :" #: src/muuli_wdr.cpp:1078 msgid "Reload your shared files" @@ -5021,7 +5042,7 @@ msgstr "Nom d'utilisateur :" #: src/muuli_wdr.cpp:1360 msgid "Userhash:" -msgstr "Hash de l'utilisateur :" +msgstr "Hachage de l'utilisateur :" #: src/muuli_wdr.cpp:1383 msgid "Client software:" @@ -5123,7 +5144,7 @@ msgstr "" #: src/muuli_wdr.cpp:1594 msgid "Language: " -msgstr "" +msgstr "Langage: " #: src/muuli_wdr.cpp:1595 src/muuli_wdr.cpp:1629 src/muuli_wdr.cpp:1633 #: src/muuli_wdr.cpp:1637 @@ -5158,7 +5179,7 @@ msgstr "Confirmation en quittant" #: src/muuli_wdr.cpp:1615 msgid "Makes aMule prompt before exiting." -msgstr "" +msgstr "Confirmation de fermeture d'aMule." #: src/muuli_wdr.cpp:1618 msgid "Enable Tray Icon" @@ -5182,11 +5203,11 @@ msgstr "" #: src/muuli_wdr.cpp:1628 msgid "Tooltip delay time: " -msgstr "" +msgstr "Délai d'affichage des infobulles:" #: src/muuli_wdr.cpp:1636 msgid "seconds" -msgstr "" +msgstr "secondes" #: src/muuli_wdr.cpp:1642 msgid "Browser Selection" @@ -5216,11 +5237,11 @@ msgstr "Lecteur vidéo" #: src/muuli_wdr.cpp:1676 msgid "Create backup for preview" -msgstr "" +msgstr "Créer une sauvegarde pour la prévisualisation" #: src/muuli_wdr.cpp:1695 msgid "Bandwidth limits" -msgstr "" +msgstr "Limites de la bande passante" #: src/muuli_wdr.cpp:1710 msgid "Upload" @@ -5232,11 +5253,11 @@ msgstr "Allocation des slots Amis" #: src/muuli_wdr.cpp:1732 msgid "Ports" -msgstr "" +msgstr "Ports" #: src/muuli_wdr.cpp:1738 msgid "Standard TCP Port " -msgstr "" +msgstr "Port TCP standard" #: src/muuli_wdr.cpp:1742 msgid "This is the standard eD2k port and cannot be disabled." @@ -5244,45 +5265,48 @@ msgstr "Ceci est le port eD2k standard et ne peut pas être activé." #: src/muuli_wdr.cpp:1745 msgid "UDP port for server requests (TCP+3):" -msgstr "" +msgstr "Port UDP pour les requêtes des serveurs (TCP+3):" #: src/muuli_wdr.cpp:1748 msgid "4665" -msgstr "" +msgstr "4665" #: src/muuli_wdr.cpp:1751 msgid "Extended UDP port (Kad / global search) " -msgstr "" +msgstr "Port UDP étendu (Kad / recherche globale)" #: src/muuli_wdr.cpp:1755 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" +"Ce port UDP est utilisé pour les requêtes eD2k étendues et pour le réseau Kad" #: src/muuli_wdr.cpp:1758 msgid "Enable UPnP for router port forwarding" -msgstr "" +msgstr "Activer UPnP pour la redirection de port du routeur" #: src/muuli_wdr.cpp:1763 msgid "UPnP TCP Port (Optional):" -msgstr "" +msgstr "Port TCP UPnP (Facultatif):" #: src/muuli_wdr.cpp:1776 msgid "Bind local address to IP (empty for any):" -msgstr "" +msgstr "Lier l'adresse local à une IP (vide pour tout):" #: src/muuli_wdr.cpp:1780 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" +"Utilisateurs avancés uniquement: Si vous avez plusieurs interfaces réseau, " +"entrez l'adresse de l'interface à laquelle aMule doit être lié." #: src/muuli_wdr.cpp:1788 msgid "Max sources per downloading file:" -msgstr "" +msgstr "Sources maximales par fichier téléchargé:" #: src/muuli_wdr.cpp:1794 msgid "Max simultaneous connections:" -msgstr "" +msgstr "Connexions simultanées maximales:" #: src/muuli_wdr.cpp:1807 msgid "Kademlia" @@ -5346,15 +5370,16 @@ msgstr "Mettre les serveurs ajoutés manuellement en priorité haute" #: src/muuli_wdr.cpp:1907 msgid "Intelligent Corruption Handling (I.C.H.)" -msgstr "" +msgstr "Gestion Intelligente de la Corruption (I.C.H.)" #: src/muuli_wdr.cpp:1910 msgid "Enable" -msgstr "" +msgstr "Activer" #: src/muuli_wdr.cpp:1914 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" +"Gestion Avancée de la Corruption se fiant aux hachages (non recommandé)" #: src/muuli_wdr.cpp:1922 msgid "Add files to download in pause mode" @@ -5370,7 +5395,7 @@ msgstr "Essayer de télécharger la première et la dernière partie en premier" #: src/muuli_wdr.cpp:1932 msgid "Start next paused file when a file completes" -msgstr "" +msgstr "Démarrer le prochain fichier en pause lorsqu'un fichier se termine" #: src/muuli_wdr.cpp:1936 msgid "From the same category" @@ -5390,7 +5415,7 @@ msgstr "" #: src/muuli_wdr.cpp:1946 msgid "Stop downloads when free disk space reaches " -msgstr "" +msgstr "Stop les téléchargements lorsque l'espace disponible est atteint" #: src/muuli_wdr.cpp:1947 msgid "Select this if you want aMule to check your disk space" @@ -5415,19 +5440,19 @@ msgstr "Ajouter les nouveaux fichiers partagés en priorité automatique" #: src/muuli_wdr.cpp:1991 msgid "Destination folder for downloads" -msgstr "" +msgstr "Dossier de destination des téléchargements" #: src/muuli_wdr.cpp:2002 msgid "Folder for temporary download files" -msgstr "" +msgstr "Dossier des fichiers de téléchargements temporaires" #: src/muuli_wdr.cpp:2013 msgid "Shared folders" -msgstr "" +msgstr "Dossiers partagés" #: src/muuli_wdr.cpp:2016 msgid "(Right click on folder icon for recursive share)" -msgstr "(Cliquez à droite sur l'icône du répertoire pour un partage récursif)" +msgstr "(Clic droit sur l'icône du répertoire pour un partage récursif)" #: src/muuli_wdr.cpp:2023 msgid "Share hidden files" @@ -5451,15 +5476,15 @@ msgstr "Échelle du graphique des connexions : 100 " #: src/muuli_wdr.cpp:2067 msgid "Download graph scale:" -msgstr "" +msgstr "Échelle des graphiques de réception:" #: src/muuli_wdr.cpp:2076 msgid "Upload graph scale:" -msgstr "" +msgstr "Échelle des graphiques d'envoi:" #: src/muuli_wdr.cpp:2090 msgid "Colours: " -msgstr "" +msgstr "Couleurs: " #: src/muuli_wdr.cpp:2095 msgid "Background" @@ -5519,7 +5544,7 @@ msgstr "Sélectionner" #: src/muuli_wdr.cpp:2121 msgid "Tree" -msgstr "" +msgstr "Arbre" #: src/muuli_wdr.cpp:2132 msgid "Number of Client Versions shown (0=unlimited)" @@ -5563,11 +5588,11 @@ msgstr "Intervalle de rafraîchissement de la connexion serveur : Désactivé" #: src/muuli_wdr.cpp:2218 msgid "Skin to use: " -msgstr "" +msgstr "Skin à utiliser:" #: src/muuli_wdr.cpp:2230 msgid "Show \"Fast eD2k Links Handler\" in every window." -msgstr "" +msgstr "Afficher le \"Gestionnaire rapide de lien eD2k \" dans chaque fenêtre." #: src/muuli_wdr.cpp:2234 msgid "Show extended info on categories tabs" @@ -5579,15 +5604,15 @@ msgstr "Afficher les taux de transfert dans la barre de titre" #: src/muuli_wdr.cpp:2241 msgid "Before application name" -msgstr "" +msgstr "Avant le nom de l'application" #: src/muuli_wdr.cpp:2244 msgid "After application name" -msgstr "" +msgstr "Après le nom de l'application" #: src/muuli_wdr.cpp:2248 msgid "Show overhead bandwidth" -msgstr "" +msgstr "Afficher la bande passante totale" #: src/muuli_wdr.cpp:2252 msgid "Vertical toolbar orientation" @@ -5595,15 +5620,15 @@ msgstr "Orientation de la barre d'outils verticale" #: src/muuli_wdr.cpp:2255 msgid "Download Queue Files" -msgstr "" +msgstr "Fichiers à télécharger en file d'attente" #: src/muuli_wdr.cpp:2258 msgid "Show progress percentage" -msgstr "" +msgstr "Afficher le pourcentage de progression" #: src/muuli_wdr.cpp:2265 msgid "Show progress bar" -msgstr "" +msgstr "Afficher la bar de progression" #: src/muuli_wdr.cpp:2269 msgid "Flat" @@ -5615,7 +5640,7 @@ msgstr "Relief" #: src/muuli_wdr.cpp:2280 msgid "Auto-sort files (high CPU)" -msgstr "" +msgstr "Triage automatique des fichiers (augmente la charge du CPU)" #: src/muuli_wdr.cpp:2282 msgid "aMule will sort the columns in your download list automatically" @@ -5632,7 +5657,7 @@ msgstr "Accepter les connexions externes" #: src/muuli_wdr.cpp:2311 msgid "IP of the listening interface:" -msgstr "" +msgstr "IP de l'interface d'écoute:" #: src/muuli_wdr.cpp:2315 msgid "" @@ -5644,7 +5669,7 @@ msgstr "" #: src/muuli_wdr.cpp:2323 src/muuli_wdr.cpp:2384 msgid "TCP port:" -msgstr "" +msgstr "Port TCP:" #: src/muuli_wdr.cpp:2331 msgid "Enable UPnP port forwarding on the EC port" @@ -5656,7 +5681,7 @@ msgstr "Paramètres du serveur Web" #: src/muuli_wdr.cpp:2349 msgid "Run webserver on startup" -msgstr "" +msgstr "Démarrer le serveur web au démarrage" #: src/muuli_wdr.cpp:2355 msgid "Web template" @@ -5676,11 +5701,11 @@ msgstr "Mot de passe sans privilèges" #: src/muuli_wdr.cpp:2392 msgid "Enable UPnP port forwarding of the web server port" -msgstr "" +msgstr "Activer la redirection de port UPnP sur le port du serveur web" #: src/muuli_wdr.cpp:2397 msgid "Web server UPnP TCP port (Optional)" -msgstr "" +msgstr "Port TCP UPnP du serveur web (Facultatif)" #: src/muuli_wdr.cpp:2407 msgid "Page Refresh Time (in secs)" @@ -5894,7 +5919,7 @@ msgstr "Personne" #: src/muuli_wdr.cpp:2963 msgid "Who can see my shared files:" -msgstr "" +msgstr "Qui peut voir mes fichiers partagés:" #: src/muuli_wdr.cpp:2964 msgid "Select who can request to view a list of your shared files." @@ -6002,7 +6027,7 @@ msgstr "" #: src/muuli_wdr.cpp:3072 msgid "Save online signature file in: " -msgstr "" +msgstr "Sauver le fichier de signature en ligne dans:" #: src/muuli_wdr.cpp:3079 msgid "" @@ -6039,7 +6064,7 @@ msgstr "" #: src/muuli_wdr.cpp:3120 msgid "Show received messages in the log" -msgstr "" +msgstr "Afficher les messages reçus dans le journal" #: src/muuli_wdr.cpp:3125 msgid "Comments" @@ -6063,7 +6088,7 @@ msgstr "Active/Désactive l'authentification par nom d'utilisateur/mot de passe" #: src/muuli_wdr.cpp:3163 msgid "Username: " -msgstr "" +msgstr "Nom d'utilisateur:" #: src/muuli_wdr.cpp:3167 msgid "The username to use to connect to the proxy" @@ -6163,7 +6188,7 @@ msgstr "Supprimer celui sélectionné" #: src/muuli_wdr.cpp:3429 msgid "Event Types" -msgstr "" +msgstr "Types d'événements" #: src/muuli_wdr.cpp:3454 msgid "Connect to any server and/or Kad" @@ -6549,7 +6574,7 @@ msgstr "Reçus" #: src/ClientListCtrl.cpp:1028 msgid "Userhash" -msgstr "Hash de l'utilisateur" +msgstr "Hachage de l'utilisateur" #: src/ClientListCtrl.cpp:1029 msgid "Encrypted" @@ -6779,7 +6804,7 @@ msgstr "Fermer les autres onglets" #: src/amule-gui.cpp:196 msgid "aMule remote control" -msgstr "" +msgstr "Contrôle à distance d'aMule" #: src/ServerList.cpp:83 #, c-format diff --git a/po/gl.po b/po/gl.po index b299e921..b7c2f64f 100644 --- a/po/gl.po +++ b/po/gl.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: gl\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-03 12:01+0100\n" "Last-Translator: Festor Wailon Dacoba \n" "Language-Team: Galego \n" @@ -142,12 +142,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "AVISO: Fallou ao eliminar %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Erro ao recupera-los ficheiros compartidos do usuario '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -163,35 +163,35 @@ msgstr "Erro ao recupera-los ficheiros compartidos do usuario '%s'" msgid "Unknown" msgstr "Descoñecido" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fake eMule versión %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Fake eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Fake eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basado en eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Alcume: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Petición: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -203,7 +203,7 @@ msgstr[1] "" "Estatísticas do ficheiro para esta sesión: Aceptadas %d de %d peticións; %s " "transferidas\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -215,11 +215,11 @@ msgstr[1] "" "Estatísticas do ficheiro para todas as sesións: Aceptadas %d de %d " "peticións; %s transferidas\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Petición dun ficheiro descoñecido" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Cliente %s en IP: Porto %s:%d usando %s %s %s" @@ -536,7 +536,8 @@ msgstr "Kademlia: palabra de busca demasiado corta" msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: A palabra buscada xa está na lista de búsqueda:" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -544,13 +545,18 @@ msgstr[0] "Lido %u contacto Kad" msgstr[1] "Lidos %u contactos Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/he.po b/po/he.po index f361fe42..9a747831 100644 --- a/po/he.po +++ b/po/he.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: amule 2.20\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-04-11 00:21+0300\n" "Last-Translator: Peace Kramer \n" "Language-Team: Hebrew\n" @@ -125,12 +125,12 @@ msgstr "אזהרה: לא ניתן להסיר את '%s' המקורי לאחר ש msgid "WARNING: Failed to delete %s" msgstr "אזהרה: הניסיון למחוק/להסיר את '%s' נכשל." -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "הניסיון לקבל את רשימת הקבצים המשותפים מהמשתמש '%s' כשלה." -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -146,35 +146,35 @@ msgstr "הניסיון לקבל את רשימת הקבצים המשותפים מ msgid "Unknown" msgstr "לא ידוע" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "(חיקוי אימיול בגרסת %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "(חיקוי אימיול)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "אקס-מיול (חיקוי אימיול)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.איקס (מבוסס על אימיול בגרסת 0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "כינוי:%s מ\"ז: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "בוּקַש: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -182,7 +182,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -190,11 +190,11 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "בקשה עבור קובץ לא ידוע" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "לקוח %s ב כתובת:מבואה %s:%d משתמש ב %s %s %s" @@ -506,7 +506,8 @@ msgstr "קאדימליה: מילת חיפוש קצרה מדי" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -514,13 +515,18 @@ msgstr[0] "קרא %u יוצרי קשר ל קאד" msgstr[1] "קרא %u יוצרי קשר ל קאד" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/hr.po b/po/hr.po index 34fdfcbc..5a9f9e45 100644 --- a/po/hr.po +++ b/po/hr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule CVS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2004-04-08 00:30+0100\n" "Last-Translator: Tea Lorenzmeier \n" "Language-Team: www.aMule.org \n" @@ -123,12 +123,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -144,35 +144,35 @@ msgstr "" msgid "Unknown" msgstr "Nepoznat" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Zahtijevan:" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -182,7 +182,7 @@ msgstr[0] "" msgstr[1] "" "Fajl statistike za ovu misiju: Prihvaceno %d od %d zahtjeva, %s preneseno\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -192,11 +192,11 @@ msgstr[0] "" msgstr[1] "" "Fajl statistike za ovu misiju: Prihvaceno %d od %d zahtjeva, %s preneseno\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Zatrazen nepoznat fajl" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -508,7 +508,8 @@ msgstr "" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -516,13 +517,18 @@ msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/hu.po b/po/hu.po index f84fe4c1..25291ba8 100644 --- a/po/hu.po +++ b/po/hu.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-30 19:29+0100\n" "Last-Translator: Dévai Tamás \n" "Language-Team: \n" @@ -128,12 +128,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "FIGYELMEZTETÉS: %s fájl törlése sikertelen" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Megosztott fájlok lehozatala sikertelen a(z) '%s' felhasználótól" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -149,35 +149,35 @@ msgstr "Megosztott fájlok lehozatala sikertelen a(z) '%s' felhasználótól" msgid "Unknown" msgstr "Ismeretlen" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Hamis eMule %#x verzió)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Hamis eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Hamis eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (az eMule v0.%u alapján)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Becenév: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Kért: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -186,7 +186,7 @@ msgstr[0] "" "Fájlstatisztika ehhez a folyamathoz: %d kérés elfogadva %d-ből, %s " "átmásolva\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -195,11 +195,11 @@ msgstr[0] "" "Fájlstatisztika az összes folyamathoz: %d kérés elfogadva %d-ből, %s " "átmásolva\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Ismeretlen lekérdezett fájl" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "A %s kliens a(z) %s:%d IP:Port-on %s %s %s -t használ" @@ -514,19 +514,25 @@ msgstr "Kademlia: a keresési kulcsszó túl rövid" msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: A keresési kulcsszó már a keresési listán: " -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u Kad kapcsolat beolvasva" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Csak %d Kad kapcsolat elérhető, a nodes.dat fájl nem lett felülírva" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/it.po b/po/it.po index bc54bbde..357a9914 100644 --- a/po/it.po +++ b/po/it.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: it2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-13 17:04+0200\n" "Last-Translator: rik \n" "Language-Team: \n" @@ -141,12 +141,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "ATTENZIONE: impossibile eliminare %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Impossibile ricevere i file condivisi dall'utente '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -162,35 +162,35 @@ msgstr "Impossibile ricevere i file condivisi dall'utente '%s'" msgid "Unknown" msgstr "Sconosciuto" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (falso eMule versione %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (falso eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (falso eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basato su eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Nickname: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Richiesto: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -202,7 +202,7 @@ msgstr[1] "" "Statistiche file per questa sessione: Accettate %d di %d richieste, %s " "trasferiti\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -214,11 +214,11 @@ msgstr[1] "" "Statistiche file per tutte le sezioni: accettate %d di %d richieste, %s " "trasferite\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Richiesto file sconosciuto" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Client %s con IP:Porta %s:%d utilizza %s %s %s" @@ -533,7 +533,8 @@ msgstr "Kademlia: chiave di ricerca troppo corta" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -541,13 +542,18 @@ msgstr[0] "Letto %u contatto Kad" msgstr[1] "Letti %u contatti Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/it_CH.po b/po/it_CH.po index b66b4019..205a9ab8 100644 --- a/po/it_CH.po +++ b/po/it_CH.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: it_CH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-12 22:36+0100\n" "Last-Translator: Luca Pagliero \n" "Language-Team: Italian_CH\n" @@ -138,12 +138,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "ATTENZIONE: impossibile cancellare %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Impossibile ricevere i file condivisi dall'utente '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -159,35 +159,35 @@ msgstr "Impossibile ricevere i file condivisi dall'utente '%s'" msgid "Unknown" msgstr "Sconosciuto" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (falso eMule versione %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (falso eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (falso eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basato su eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Nickname: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Richiesto: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -199,7 +199,7 @@ msgstr[1] "" "Statistiche file per questa sessione: accettate %d di %d richieste, %s " "trasferite\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -211,11 +211,11 @@ msgstr[1] "" "Statistiche file per tutte le sessioni: accettate %d di %d richieste, %s " "trasferite\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Richiesto file sconosciuto" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Client %s con IP:Porta %s:%d utilizza %s %s %s" @@ -531,7 +531,8 @@ msgstr "Kademlia: chiave di ricerca troppo corta" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -539,13 +540,18 @@ msgstr[0] "Letto %u contatto Kad" msgstr[1] "Letti %u contatti Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/ja.po b/po/ja.po index 8121ea11..eecc210b 100644 --- a/po/ja.po +++ b/po/ja.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-05-31 01:09+0900\n" "Last-Translator: \n" "Language-Team: Japanese\n" @@ -124,12 +124,12 @@ msgstr "警告:バックアップ後、元の '%s' を削除することがで msgid "WARNING: Failed to delete %s" msgstr "警告: %s を削除することができませんでした" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "ユーザ '%s' から共有ファイルを取得することができませんでした" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -145,35 +145,35 @@ msgstr "ユーザ '%s' から共有ファイルを取得することができま msgid "Unknown" msgstr "不明" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr "(偽のeMuleバージョン %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "(偽のeMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule(偽のeMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x(eMule v0.%u に基づいています)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "NickName: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "要求:%s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -181,7 +181,7 @@ msgid_plural "" msgstr[0] "" "当セッションのファイル統計: %d / %d の要求を受け入れ、%s 転送された\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -189,11 +189,11 @@ msgid_plural "" msgstr[0] "" "全セッションのファイル統計: %d / %d の要求を受け入れ、%s 転送された\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "不明なファイルが要求されました" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "クライアント %s がIP:ポート %s:%d にいて、 %s %s %s を使用しています" @@ -505,19 +505,25 @@ msgstr "Kademlia: 検索キーワードが短すぎます" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u 個のKadコンタクトを読み込みました" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/ko_KR.po b/po/ko_KR.po index c5011b03..d53ee54f 100644 --- a/po/ko_KR.po +++ b/po/ko_KR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: ko_KR\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2007-09-12 16:04+0900\n" "Last-Translator: Hyunju Kang \n" "Language-Team: Korean \n" @@ -126,12 +126,12 @@ msgstr "경고: 백업을 생성한 후 원본 '%s'를 제거할수 없습니다 msgid "WARNING: Failed to delete %s" msgstr "경고: %s를 삭제하지 못했습니다." -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "사용자 %s로부터 공유파일을 찾지 못했습니다." -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -147,35 +147,35 @@ msgstr "사용자 %s로부터 공유파일을 찾지 못했습니다." msgid "Unknown" msgstr "알수없는" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (가짜 이뮬 버젼 %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (가짜 이뮬)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "엑스뮬(가짜 이뮬)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (이뮬 v0.%u 기반)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "별명: %s 아이디: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "요청됨:" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -185,7 +185,7 @@ msgstr[0] "" msgstr[1] "" "이 세션의 파일상태: %d가 수락되었습니다.(%d 요청의) %s에게 전달되었습니다.\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -197,11 +197,11 @@ msgstr[1] "" "모든 세션의 파일상태: %d가 수락되었습니다.(%d 요청의) %s에게 전달되었습니" "다.\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "알 수 없는 파일이 요청되었습니다." -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "클라이언트 %s, IP:포트 %s:%d, %s %s %s 사용" @@ -515,7 +515,8 @@ msgstr "카뎀리아: 검색어가 너무 짧습니다." msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -523,13 +524,18 @@ msgstr[0] "%u개의 Kad 접속을 읽었음" msgstr[1] "%u개의 Kad 접속을 읽었음" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/lt.po b/po/lt.po index 34da9915..47299daa 100644 --- a/po/lt.po +++ b/po/lt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: lt\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-08 10:44+0100\n" "Last-Translator: Dovydas Sankauskas \n" "Language-Team: Lithuanian \n" @@ -127,12 +127,12 @@ msgstr "Dėmesio: sukūrus atsarginę kopiją nepavyko pašalinti pradinio failo msgid "WARNING: Failed to delete %s" msgstr "Dėmesio: nepavyko pašalinti %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Nepavyko gauti dalinamų failų iš vartotojo „%s“" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -148,35 +148,35 @@ msgstr "Nepavyko gauti dalinamų failų iš vartotojo „%s“" msgid "Unknown" msgstr "Nežinoma" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (neteisinga eMule versija %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (neteisinga eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (neteisinga eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (paremta eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Slapyvardis: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Paprašė: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -188,7 +188,7 @@ msgstr[1] "" msgstr[2] "" "Šio seanso failų statistika: priimta %d iš %d prašymų, %s persiųsta\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -200,11 +200,11 @@ msgstr[1] "" msgstr[2] "" "Visų seansų failų statistika: priimta %d iš %d prašymų, %s persiųsta\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Paprašė nežinomo failo" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Naudotojas %s IP:prievadas %s:%d naudoja %s %s %s" @@ -520,7 +520,8 @@ msgstr "Kademlia: ieškomas žodis pernelyg trumpas" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -529,6 +530,11 @@ msgstr[1] "Nuskaityti %u Kad kontaktai" msgstr[2] "Nuskaityta %u Kad kontaktų" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" @@ -536,7 +542,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/nl.po b/po/nl.po index 4d17d4de..5ed20c49 100644 --- a/po/nl.po +++ b/po/nl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: nl\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-07 22:20+0200\n" "Last-Translator: Frank van der Loo \n" "Language-Team: Dutch \n" @@ -134,12 +134,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "WAARSCHUWING: Kon %s niet verwijderen" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Kon gedeelde bestanden niet ontvangen van gebruiker '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -155,35 +155,35 @@ msgstr "Kon gedeelde bestanden niet ontvangen van gebruiker '%s'" msgid "Unknown" msgstr "Onbekend" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Nep eMule versie %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Nep eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Nep eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (gebaseerd op eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "BijNaam: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Aangevraagd: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -195,7 +195,7 @@ msgstr[1] "" "Bestandsstatistieken voor deze sessie: Geaccepteerd %d van %d aanvragen, %s " "overgebracht\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -207,11 +207,11 @@ msgstr[1] "" "Bestandsstatistieken voor alle sessies: Geaccepteerd %d van %d aanvragen, %s " "overgebracht\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Aangevraagd bestand is onbekend" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Client %s op IP:Poort %s:%d gebruikt %s %s %s" @@ -528,7 +528,8 @@ msgstr "Kademlia: zoekwoord te kort" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -536,13 +537,18 @@ msgstr[0] "%u Kad contact gelezen" msgstr[1] "%u Kad contacten gelezen" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/nn.po b/po/nn.po index 22eb9729..a6ee7da3 100644 --- a/po/nn.po +++ b/po/nn.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: nn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-10 23:09+0200\n" "Last-Translator: Hallvor Brunstad \n" "Language-Team: \n" @@ -128,12 +128,12 @@ msgstr " msgid "WARNING: Failed to delete %s" msgstr "ÅTVARING: Greidde ikkje å slette %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Greidde ikkje å hente delte filer frå brukar '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -149,35 +149,35 @@ msgstr "Greidde ikkje msgid "Unknown" msgstr "Ukjend" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Falsk eMuleutgåve %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Falsk eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Falsk eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x·(basert på eMule·v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Brukarnamn: %s·ID:·%u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Etterspurt: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -188,7 +188,7 @@ msgstr[1] "" "Filstatistikk for denne økta: Godkjende %d av %d etterspurnader, %s " "overført\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -199,11 +199,11 @@ msgstr[1] "" "Filstatistikk for alle økter: Godkjende %d av %d etterspurnader, %s " "overført\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Etterspurt ukjend fil" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Klient %s·på·IP:Port·%s:%d·nyttar·%s·%s·%s" @@ -517,7 +517,8 @@ msgstr "Kademlia: for kort s msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -525,13 +526,18 @@ msgstr[0] "Las %u kadkontakt" msgstr[1] "Las %u kadkontaktar" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/pl.po b/po/pl.po index 9554956d..0baf8f3f 100644 --- a/po/pl.po +++ b/po/pl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pl\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-11 14:13+0200\n" "Last-Translator: Mateusz Butowski\n" "Language-Team: \n" @@ -131,12 +131,12 @@ msgstr "UWAGA: Nie można usunąć oryginału '%s' po wykonaniu kopii zapasowej" msgid "WARNING: Failed to delete %s" msgstr "UWAGA: Nie udało się usunąć pliku %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Nieudane pobieranie udostępnionych plików od użytkownika '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -152,35 +152,35 @@ msgstr "Nieudane pobieranie udostępnionych plików od użytkownika '%s'" msgid "Unknown" msgstr "Nieznany" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fałszywa wersja eMule %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Fałszywy eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Fałszywy eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (oparty na eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Użytkownik: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Zażądano: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -192,7 +192,7 @@ msgstr[1] "" msgstr[2] "" "Statystyki plików tej sesji: Zaakceptowano %d z %d żądań, %s przesłano\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -207,11 +207,11 @@ msgstr[2] "" "Statystyki plików dla wszystkich sesji: Zaakceptowano %d z %d żądań, %s " "przesłano\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Zażądano nieznany plik" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Klient %s na IP:Port %s:%d używający %s %s %s" @@ -525,7 +525,8 @@ msgstr "Kademlia: wyszukiwana fraza jest za krótka" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -534,6 +535,11 @@ msgstr[1] "Wczytaj %u kontakty Kad" msgstr[2] "Wczytaj %u kontaktów Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" @@ -541,7 +547,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/pt_BR.po b/po/pt_BR.po index ff32b40f..63fbb9ff 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: pt_BR\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-13 17:15-0300\n" "Last-Translator: felipe augusto \n" "Language-Team: Português (Brasileiro) \n" @@ -133,12 +133,12 @@ msgstr "AVISO: Não foi possível remover arquivo '%s' depois de criar o backup" msgid "WARNING: Failed to delete %s" msgstr "AVISO: Falha ao apagar %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Falha ao receber lista de compartilhamentos do usuário '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -154,35 +154,35 @@ msgstr "Falha ao receber lista de compartilhamentos do usuário '%s'" msgid "Unknown" msgstr "Desconhecido" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (versão de eMule FALSA %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (eMule Falso)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (eMule Falso)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseado no eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Nickname: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Solicitado: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -191,7 +191,7 @@ msgstr[0] "Estatísticas dessa sessão: Aceito %d de %d pedido, %s transferido\n msgstr[1] "" "Estatísticas dessa sessão: Aceitos %d de %d pedidos, %s transferidos\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -201,11 +201,11 @@ msgstr[0] "" msgstr[1] "" "Estatísticas de todas as sessões: Aceitos %d de %d pedidos, %s transferidos\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Solicitado um arquivo desconhecido" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Cliente %s em IP:Porta %s:%d usando %s %s %s" @@ -523,7 +523,8 @@ msgstr "Kademlia: chave de pesquisa muito curta" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -531,13 +532,18 @@ msgstr[0] "Lendo %u contato Kad" msgstr[1] "Lendo %u contatos Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/pt_PT.po b/po/pt_PT.po index 9d4bb808..b84f6355 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule 2.2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-04-15 02:00+0100\n" "Last-Translator: Miguel Almeida \n" "Language-Team: Portuguese \n" @@ -130,12 +130,12 @@ msgstr "AVISO: N msgid "WARNING: Failed to delete %s" msgstr "AVISO: falha ao remover %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Erro ão receber ficheiros partilhados do utilizador '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -151,35 +151,35 @@ msgstr "Erro msgid "Unknown" msgstr "desconhecido" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versão eMule Falsa %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (eMule falso)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (eMule falso)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseado no eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Alcunha: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Pedido: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -187,7 +187,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -195,11 +195,11 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Pedido um ficheiro desconhecido" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Cliente %s com IP:porta %s:%d utilizando %s %s %s" @@ -511,7 +511,8 @@ msgstr "Kademlia: palavra-chave de pesquisa demasiado curta" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -519,13 +520,18 @@ msgstr[0] "Ler %u contactos Kad" msgstr[1] "Ler %u contactos Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/ru.po b/po/ru.po index 1d23d5b8..3b3b5374 100644 --- a/po/ru.po +++ b/po/ru.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: amule_2007-08-29\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-06-25 17:16+0300\n" "Last-Translator: Morse \n" "Language-Team: Russian \n" @@ -137,12 +137,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "ПРЕДУПРЕЖДЕНИЕ: не удалось удалить %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Не удалось получить список доступных файлов от '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -158,35 +158,35 @@ msgstr "Не удалось получить список доступных ф msgid "Unknown" msgstr "Неизвестны" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Поддельная версия eMule %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (имитация eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (имитация eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (на основе eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Псевдоним: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Запрошено: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -198,7 +198,7 @@ msgstr[1] "" msgstr[2] "" "Статистика для текущего сеанса: принято %d из %d запросов, %s передано\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -210,11 +210,11 @@ msgstr[1] "" msgstr[2] "" "Статистика для всех сеансов: принято %d из %d запросов, %s передано\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Запрошен неизвестный файл" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Клиент %s на IP:порт %s:%d используя %s %s %s" @@ -528,7 +528,8 @@ msgstr "Kad: слово запроса лишком коротко" msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: ключевое слово поиска уже в списке поиска:" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -537,6 +538,11 @@ msgstr[1] "Считано %u контакта Kad" msgstr[2] "Считано %u контактов Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" @@ -544,7 +550,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/sl.po b/po/sl.po index aa429c70..2a99aabb 100644 --- a/po/sl.po +++ b/po/sl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: sl\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2007-08-30 22:58+0200\n" "Last-Translator: Aljoša Vidmar \n" "Language-Team: Slovenščina \n" @@ -129,12 +129,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "OPOZORILO: Ni bilo mogoče zbrisati %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Ni bilo mogoče dobiti deljenih datotek od uporabnika '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -150,35 +150,35 @@ msgstr "Ni bilo mogoče dobiti deljenih datotek od uporabnika '%s'" msgid "Unknown" msgstr "Neznano" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Lažna različica eMule %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Lažna eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Lažna eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (temelji na eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Vzdevek: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Zahtevano:" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -188,7 +188,7 @@ msgstr[0] "" msgstr[1] "" "Statistika datotek v tej seji: Sprejetih %d od %d zahtev, %s prenesenih\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -198,11 +198,11 @@ msgstr[0] "" msgstr[1] "" "Statistika datotek vseh sej: Sprejetih %d od %d zahtev, %s prenesenih\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Zahtevana neznana datoteka" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Odjemalec %s na IP:Vratih %s:%d uporablja %s %s %s" @@ -516,7 +516,8 @@ msgstr "Kademlia: iskalni niz je prekratek" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -524,13 +525,18 @@ msgstr[0] "Prebranih %u stikov Kad" msgstr[1] "Prebranih %u stikov Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/sq.po b/po/sq.po index f1253853..70af3286 100644 --- a/po/sq.po +++ b/po/sq.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: sq\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-04-20 20:41+0200\n" "Last-Translator: Fation \n" @@ -131,12 +131,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "KUJDES: Deshtoi ne fshirjen %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Deshtoi te rimarri failet e ndara nga perdoruesi '%s'" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -152,35 +152,35 @@ msgstr "Deshtoi te rimarri failet e ndara nga perdoruesi '%s'" msgid "Unknown" msgstr "E panjohur" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (eMule e falsifikuar versioni %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "(eMule e falsifikuar)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (eMule e falsifikuar)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (e bazuar ne eMule v0 %u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Emri: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "Kerkuar: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -192,7 +192,7 @@ msgstr[1] "" "Statistikat e failit per kete sesion: U pranuan %d nga %d kerkesat, %s te " "transferuara\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -204,11 +204,11 @@ msgstr[1] "" "Statistikat e faileve per te gjitha sesionet: U pranua %d nga %d kerkesat, %" "s te transferuara\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Po kerkoni nje faili te panjohur" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "Klienti %s ne porten IP: %s:%d po perdor %s %s %s" @@ -521,7 +521,8 @@ msgstr "Kademlia: fjala qe u kerkua eshte shume e shkurter" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -529,13 +530,18 @@ msgstr[0] "Po lexoj %u kontakt Kad" msgstr[1] "Po lexoj %u kontakte Kad" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/sv.po b/po/sv.po index 6cc046ef..4484d437 100644 --- a/po/sv.po +++ b/po/sv.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2007-03-12 22:49+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -122,12 +122,12 @@ msgstr "" msgid "WARNING: Failed to delete %s" msgstr "VARNING: Misslyckades med att ta bort %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -143,35 +143,35 @@ msgstr "" msgid "Unknown" msgstr "Okänd" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fake eMule version %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (Fake eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Fake eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baserad på eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Smeknamn: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -179,7 +179,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -187,11 +187,11 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "" @@ -503,7 +503,8 @@ msgstr "" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -511,13 +512,18 @@ msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/tr.po b/po/tr.po index 8e239a33..927d3a27 100644 --- a/po/tr.po +++ b/po/tr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: tr\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-07-23 19:00+0300\n" "Last-Translator: Atilla ÖNTAŞ \n" "Language-Team: Turkish \n" @@ -125,12 +125,12 @@ msgstr "UYARI: Yedekleme oluşturulduktan sonra özgün '%s' çıkartılamıyor" msgid "WARNING: Failed to delete %s" msgstr "UYARI: %s dosyası silinemiyor" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "'%s' kullanıcısının paylaşılmış dosyalarını alma başarısız" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -146,35 +146,35 @@ msgstr "'%s' kullanıcısının paylaşılmış dosyalarını alma başarısız" msgid "Unknown" msgstr "Bilinmiyor" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Sahte eMule sürümü %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr "(Sahte eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (Sahte eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (eMule s.0.%u üzerine kurulu)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "Rumuz: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "İstek: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -184,7 +184,7 @@ msgstr[0] "" msgstr[1] "" "Bu oturum için dosya durumu: Kabul edilen istek %d si %d nin, %s aktarıldı\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -196,11 +196,11 @@ msgstr[1] "" "Tüm oturumlar için dosya durumu: Kabul edilen istek %d si %d nin, %s " "aktarıldı\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "Bilinmeyen dosya istendi" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "%s Kullanıcısı IP:Port %s:%d üzerinde ve %s %s %s kullanıyor" @@ -515,7 +515,8 @@ msgstr "Kademlia: Arama sözcüğü çok kısa" msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Arama anahtar sözcüğü zaten arama listesinde var. " -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -523,13 +524,18 @@ msgstr[0] "%u adet Kademlia bağlantısı okundu" msgstr[1] "%u adet Kademlia bağlantısı okundu" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Sadece %d Kad bağlantısı var. Nodes.dat yazılamadı" msgstr[1] "Sadece %d adet Kad bağlantısı var. Nodes.dat yazılamadı" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/po/zh_CN.po b/po/zh_CN.po index 05ee7ae9..17f774f2 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: aMule 2.2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" -"PO-Revision-Date: 2008-06-08 23:30+0800\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" +"PO-Revision-Date: 2008-08-01 00:30+0800\n" "Last-Translator: 小桥 <29551030@qq.com>\n" -"Language-Team: 小桥 <29551030@qq.com>\n" +"Language-Team: Chinese <29551030@qq.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -124,12 +124,12 @@ msgstr "警告:为 '%s' 建立备份后无法删除原文件" msgid "WARNING: Failed to delete %s" msgstr "警告:无法删除 %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "无法获取用户%s的共享文件" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -145,35 +145,35 @@ msgstr "无法获取用户%s的共享文件" msgid "Unknown" msgstr "未知" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (假冒 eMule 版本 %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (假冒 eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (假冒 eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (基于 eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "昵称:%s ID:%u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "已请求: %s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -181,7 +181,7 @@ msgid_plural "" msgstr[0] "本次运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" msgstr[1] "本次运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -189,11 +189,11 @@ msgid_plural "" msgstr[0] "历史运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" msgstr[1] "历史运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "请求了未知文件" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "用户 %s 位于 %s:%d,使用 %s %s %s" @@ -503,9 +503,10 @@ msgstr "Kad:搜索关键词太短" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " -msgstr "" +msgstr "Kad:搜索关键词已经在搜索列表中:" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -513,13 +514,18 @@ msgstr[0] "读取 %u 个 Kad 联系人" msgstr[1] "读取 %u 个 Kad 联系人" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "只有%d个Kad联系人可用,nodes.dat没有写入" +msgstr[1] "只有%d个Kad联系人可用,nodes.dat没有写入" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" @@ -536,7 +542,7 @@ msgstr "网页客户端连接已被接受\n" #: src/webserver/src/WebServer.cpp:309 msgid "ERROR: cannot accept web client connection\n" -msgstr "" +msgstr "错误:无法接受网页客户端连接\n" #: src/webserver/src/WebServer.cpp:379 #, c-format @@ -1385,7 +1391,7 @@ msgstr "资源种子" #: src/DataToText.cpp:133 msgid "Search Result" -msgstr "" +msgstr "搜索结果" #: src/Preferences.cpp:654 msgid "System default" @@ -1529,19 +1535,19 @@ msgstr "土耳其语" #: src/Preferences.cpp:822 src/muuli_wdr.cpp:2223 msgid "- default -" -msgstr "" +msgstr "- 默认 -" #: src/Preferences.cpp:838 msgid "User:" -msgstr "" +msgstr "用户:" #: src/Preferences.cpp:864 msgid "System:" -msgstr "" +msgstr "系统:" #: src/Preferences.cpp:875 msgid "no options available" -msgstr "" +msgstr "无选项可用" #: src/Preferences.cpp:1693 msgid "" @@ -1733,35 +1739,35 @@ msgstr "快照:" msgid "" "'All-Platform' p2p client based on eMule \n" "\n" -msgstr "" +msgstr "基于eMule的“全平台”P2P客户端\n" #: src/amuleDlg.cpp:467 msgid "Website: http://www.amule.org \n" -msgstr "" +msgstr "网站:http://www.amule.org \n" #: src/amuleDlg.cpp:468 msgid "Forum: http://forum.amule.org \n" -msgstr "" +msgstr "论坛:http://forum.amule.org \n" #: src/amuleDlg.cpp:469 msgid "" "FAQ: http://wiki.amule.org \n" "\n" -msgstr "" +msgstr "FAQ: http://wiki.amule.org \n" #: src/amuleDlg.cpp:470 msgid "Contact: admin@amule.org (administrative issues) \n" -msgstr "" +msgstr "联系邮件:admin@amule.org (管理问题) \n" #: src/amuleDlg.cpp:471 msgid "" "Copyright (c) 2003-2008 aMule Team \n" "\n" -msgstr "" +msgstr "版权所有 (C) 2003-2008 aMule 团队 \n" #: src/amuleDlg.cpp:472 msgid "Part of aMule is based on \n" -msgstr "" +msgstr "aMule的一部分是基于 \n" #: src/amuleDlg.cpp:473 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" @@ -1769,11 +1775,11 @@ msgstr "Kademlia:基于异或算法的点对点路由。\n" #: src/amuleDlg.cpp:474 msgid " Copyright (C) 2002 Petar Maymounkov \n" -msgstr "" +msgstr "版权所有 (C) 2002 Petar Maymounkov\n" #: src/amuleDlg.cpp:475 msgid "http://kademlia.scs.cs.nyu.edu\n" -msgstr "" +msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:478 src/PrefsUnifiedDlg.cpp:515 #: src/PrefsUnifiedDlg.cpp:610 src/PrefsUnifiedDlg.cpp:692 src/KadDlg.cpp:177 @@ -1969,7 +1975,7 @@ msgstr "安全" #: src/PrefsUnifiedDlg.cpp:174 msgid "Interface" -msgstr "" +msgstr "接口" #: src/PrefsUnifiedDlg.cpp:176 msgid "Proxy" @@ -1977,7 +1983,7 @@ msgstr "代理" #: src/PrefsUnifiedDlg.cpp:177 msgid "Filters" -msgstr "" +msgstr "过滤" #: src/PrefsUnifiedDlg.cpp:178 msgid "Remote Controls" @@ -1989,7 +1995,7 @@ msgstr "在线统计" #: src/PrefsUnifiedDlg.cpp:180 msgid "Advanced" -msgstr "" +msgstr "高级" #: src/PrefsUnifiedDlg.cpp:181 msgid "Events" @@ -2018,6 +2024,8 @@ msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" +"您的自动更新服务器列表是可空的,\n" +"启动时自动更新服务器列表功能将被禁用。" #: src/PrefsUnifiedDlg.cpp:521 msgid "" @@ -2931,7 +2939,7 @@ msgstr "用户总数:%s | 文件总数:%s" #: src/DownloadListCtrl.cpp:187 msgid "Part" -msgstr "" +msgstr "块" #: src/DownloadListCtrl.cpp:190 src/ClientListCtrl.cpp:520 msgid "Transferred" @@ -3128,7 +3136,7 @@ msgstr "错误:part.met文件大小为0: %s ==> %s" #: src/PartFile.cpp:351 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" -msgstr "" +msgstr "错误:非法的part.met文件版本:%s ==> %s" #: src/PartFile.cpp:601 #, c-format @@ -3296,7 +3304,7 @@ msgstr "警告:known.net文件无法打开。" #: src/KnownFileList.cpp:86 msgid "WARNING: Known file list corrupted, contains invalid header." -msgstr "" +msgstr "警告:已知文件的列表已经损坏,包含有非法头部。" #: src/KnownFileList.cpp:112 #, c-format @@ -4737,6 +4745,8 @@ msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" +"像电影的话,您可以说明它的长度、情节和语言等等...\\n\\n如果文件是假冒的,您可" +"以提醒其它用户。" #: src/muuli_wdr.cpp:893 msgid "File Quality" @@ -4940,7 +4950,7 @@ msgstr "昵称" #: src/muuli_wdr.cpp:1585 msgid "http://www.aMule.org - the multi-platform Mule" -msgstr "" +msgstr "http://www.aMule.org - 支持多平台的骡子" #: src/muuli_wdr.cpp:1586 msgid "This is the name that other users will see when connecting to you." @@ -4948,7 +4958,7 @@ msgstr "这是其他用户看到的名字。" #: src/muuli_wdr.cpp:1594 msgid "Language: " -msgstr "" +msgstr "语言" #: src/muuli_wdr.cpp:1595 src/muuli_wdr.cpp:1629 src/muuli_wdr.cpp:1633 #: src/muuli_wdr.cpp:1637 @@ -4981,7 +4991,7 @@ msgstr "退出时确认" #: src/muuli_wdr.cpp:1615 msgid "Makes aMule prompt before exiting." -msgstr "" +msgstr "在aMule退出前进行询问" #: src/muuli_wdr.cpp:1618 msgid "Enable Tray Icon" @@ -5003,11 +5013,11 @@ msgstr "启用此选项将使aMule最小化到系统状态栏,而不是任务 #: src/muuli_wdr.cpp:1628 msgid "Tooltip delay time: " -msgstr "" +msgstr "提示延时:" #: src/muuli_wdr.cpp:1636 msgid "seconds" -msgstr "seconds" +msgstr "秒" #: src/muuli_wdr.cpp:1642 msgid "Browser Selection" @@ -5017,7 +5027,7 @@ msgstr "浏览器选择" msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." -msgstr "" +msgstr "在此处输入您的浏览器名称,如要使用系统默认浏览器则请留空。" #: src/muuli_wdr.cpp:1656 msgid "Open in new tab if possible" @@ -5033,11 +5043,11 @@ msgstr "录像播放器" #: src/muuli_wdr.cpp:1676 msgid "Create backup for preview" -msgstr "" +msgstr "为预览创建备份" #: src/muuli_wdr.cpp:1695 msgid "Bandwidth limits" -msgstr "" +msgstr "带宽限制" #: src/muuli_wdr.cpp:1710 msgid "Upload" @@ -5049,11 +5059,11 @@ msgstr "单用户上传速度" #: src/muuli_wdr.cpp:1732 msgid "Ports" -msgstr "" +msgstr "端口" #: src/muuli_wdr.cpp:1738 msgid "Standard TCP Port " -msgstr "" +msgstr "标准TCP端口 " #: src/muuli_wdr.cpp:1742 msgid "This is the standard eD2k port and cannot be disabled." @@ -5061,45 +5071,45 @@ msgstr "这是标准的eD2k端口,不能被禁用。" #: src/muuli_wdr.cpp:1745 msgid "UDP port for server requests (TCP+3):" -msgstr "" +msgstr "用户服务器请求的UDP端口(TCP+3):" #: src/muuli_wdr.cpp:1748 msgid "4665" -msgstr "" +msgstr "4665" #: src/muuli_wdr.cpp:1751 msgid "Extended UDP port (Kad / global search) " -msgstr "" +msgstr "扩展UDP端口(Kad / 全局搜索)" #: src/muuli_wdr.cpp:1755 msgid "This UDP port is used for extended eD2k requests and Kad network" -msgstr "" +msgstr "此UDP端口用于扩展eD2k请求和Kad网络" #: src/muuli_wdr.cpp:1758 msgid "Enable UPnP for router port forwarding" -msgstr "" +msgstr "启用UPnP以用于路由器端口转发" #: src/muuli_wdr.cpp:1763 msgid "UPnP TCP Port (Optional):" -msgstr "" +msgstr "UPnP的TCP端口(可选):" #: src/muuli_wdr.cpp:1776 msgid "Bind local address to IP (empty for any):" -msgstr "" +msgstr "为本地地址绑定IP(全部绑定则留空):" #: src/muuli_wdr.cpp:1780 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." -msgstr "" +msgstr "只限高级用户:如果您有多个网络接口,请输入aMule将要绑定接口的地址。" #: src/muuli_wdr.cpp:1788 msgid "Max sources per downloading file:" -msgstr "" +msgstr "每个下载文件的最大的源数量:" #: src/muuli_wdr.cpp:1794 msgid "Max simultaneous connections:" -msgstr "" +msgstr "最大同时连接:" #: src/muuli_wdr.cpp:1807 msgid "Kademlia" @@ -5163,15 +5173,15 @@ msgstr "设置用户输入的服务器为高优先级" #: src/muuli_wdr.cpp:1907 msgid "Intelligent Corruption Handling (I.C.H.)" -msgstr "" +msgstr "智能损坏数据处理 (I.C.H.)" #: src/muuli_wdr.cpp:1910 msgid "Enable" -msgstr "" +msgstr "启用" #: src/muuli_wdr.cpp:1914 msgid "Advanced I.C.H. trusts every hash (not recommended)" -msgstr "" +msgstr "高级I.C.H.,信任全部校验值(不推荐)" #: src/muuli_wdr.cpp:1922 msgid "Add files to download in pause mode" @@ -5187,7 +5197,7 @@ msgstr "尝试先下载文件的第一段和最后一段" #: src/muuli_wdr.cpp:1932 msgid "Start next paused file when a file completes" -msgstr "" +msgstr "当一个文件完成时开始下一个暂停的文件" #: src/muuli_wdr.cpp:1936 msgid "From the same category" @@ -5205,7 +5215,7 @@ msgstr "为新文件分配全部所需的磁盘空间,这样可以减少碎片 #: src/muuli_wdr.cpp:1946 msgid "Stop downloads when free disk space reaches " -msgstr "" +msgstr "停止下载当可用磁盘空间只有" #: src/muuli_wdr.cpp:1947 msgid "Select this if you want aMule to check your disk space" @@ -5229,15 +5239,15 @@ msgstr "添加新共享文件时设优先级为自动状态" #: src/muuli_wdr.cpp:1991 msgid "Destination folder for downloads" -msgstr "" +msgstr "下载文件存放文件夹" #: src/muuli_wdr.cpp:2002 msgid "Folder for temporary download files" -msgstr "" +msgstr "临时下载文件存放文件夹" #: src/muuli_wdr.cpp:2013 msgid "Shared folders" -msgstr "" +msgstr "共享的文件夹" #: src/muuli_wdr.cpp:2016 msgid "(Right click on folder icon for recursive share)" @@ -5265,15 +5275,15 @@ msgstr "连接图表尺寸:100 " #: src/muuli_wdr.cpp:2067 msgid "Download graph scale:" -msgstr "" +msgstr "下载图表尺寸:" #: src/muuli_wdr.cpp:2076 msgid "Upload graph scale:" -msgstr "" +msgstr "上传图表尺寸:" #: src/muuli_wdr.cpp:2090 msgid "Colours: " -msgstr "" +msgstr "颜色:" #: src/muuli_wdr.cpp:2095 msgid "Background" @@ -5333,7 +5343,7 @@ msgstr "选择" #: src/muuli_wdr.cpp:2121 msgid "Tree" -msgstr "" +msgstr "树" #: src/muuli_wdr.cpp:2132 msgid "Number of Client Versions shown (0=unlimited)" @@ -5374,11 +5384,11 @@ msgstr "服务器连接刷新周期:禁用" #: src/muuli_wdr.cpp:2218 msgid "Skin to use: " -msgstr "" +msgstr "要使用的皮肤:" #: src/muuli_wdr.cpp:2230 msgid "Show \"Fast eD2k Links Handler\" in every window." -msgstr "" +msgstr "在全部窗口都显示快捷eD2k连接处理栏。" #: src/muuli_wdr.cpp:2234 msgid "Show extended info on categories tabs" @@ -5390,15 +5400,15 @@ msgstr "标题栏显示传送速度" #: src/muuli_wdr.cpp:2241 msgid "Before application name" -msgstr "" +msgstr "程序名称之前" #: src/muuli_wdr.cpp:2244 msgid "After application name" -msgstr "" +msgstr "程序名称之后" #: src/muuli_wdr.cpp:2248 msgid "Show overhead bandwidth" -msgstr "" +msgstr "显示开销带宽" #: src/muuli_wdr.cpp:2252 msgid "Vertical toolbar orientation" @@ -5406,15 +5416,15 @@ msgstr "垂直显示工具栏" #: src/muuli_wdr.cpp:2255 msgid "Download Queue Files" -msgstr "" +msgstr "下载队列文件" #: src/muuli_wdr.cpp:2258 msgid "Show progress percentage" -msgstr "" +msgstr "显示进度百分比" #: src/muuli_wdr.cpp:2265 msgid "Show progress bar" -msgstr "" +msgstr "显示进度条" #: src/muuli_wdr.cpp:2269 msgid "Flat" @@ -5426,7 +5436,7 @@ msgstr "圆润" #: src/muuli_wdr.cpp:2280 msgid "Auto-sort files (high CPU)" -msgstr "" +msgstr "自动排序文件(高CPU占用)" #: src/muuli_wdr.cpp:2282 msgid "aMule will sort the columns in your download list automatically" @@ -5442,7 +5452,7 @@ msgstr "接受远程连接" #: src/muuli_wdr.cpp:2311 msgid "IP of the listening interface:" -msgstr "" +msgstr "监听借口的IP:" #: src/muuli_wdr.cpp:2315 msgid "" @@ -5452,7 +5462,7 @@ msgstr "在此输入正确的IP(格式:a.b.c.d)用于监听远程连接接 #: src/muuli_wdr.cpp:2323 src/muuli_wdr.cpp:2384 msgid "TCP port:" -msgstr "" +msgstr "TCP端口" #: src/muuli_wdr.cpp:2331 msgid "Enable UPnP port forwarding on the EC port" @@ -5464,7 +5474,7 @@ msgstr "Web服务器参数" #: src/muuli_wdr.cpp:2349 msgid "Run webserver on startup" -msgstr "" +msgstr "启动时运行Web服务器" #: src/muuli_wdr.cpp:2355 msgid "Web template" @@ -5484,11 +5494,11 @@ msgstr "低权限密码" #: src/muuli_wdr.cpp:2392 msgid "Enable UPnP port forwarding of the web server port" -msgstr "" +msgstr "为Web服务器端口启用UPnP端口转发" #: src/muuli_wdr.cpp:2397 msgid "Web server UPnP TCP port (Optional)" -msgstr "" +msgstr "Web服务器UPnP的TCP端口(可选)" #: src/muuli_wdr.cpp:2407 msgid "Page Refresh Time (in secs)" @@ -5688,7 +5698,7 @@ msgstr "没人" #: src/muuli_wdr.cpp:2963 msgid "Who can see my shared files:" -msgstr "" +msgstr "谁可查看我的共享文件:" #: src/muuli_wdr.cpp:2964 msgid "Select who can request to view a list of your shared files." @@ -5784,7 +5794,7 @@ msgstr "更改在线统计文件的更新频率(秒)。" #: src/muuli_wdr.cpp:3072 msgid "Save online signature file in: " -msgstr "" +msgstr "保存在线统计文件在:" #: src/muuli_wdr.cpp:3079 msgid "" @@ -5817,7 +5827,7 @@ msgstr "输入需过滤的词组" #: src/muuli_wdr.cpp:3120 msgid "Show received messages in the log" -msgstr "" +msgstr "在日志中显示接收的消息" #: src/muuli_wdr.cpp:3125 msgid "Comments" @@ -5841,7 +5851,7 @@ msgstr "启用/禁用用户名/密码验证" #: src/muuli_wdr.cpp:3163 msgid "Username: " -msgstr "" +msgstr "用户名:" #: src/muuli_wdr.cpp:3167 msgid "The username to use to connect to the proxy" @@ -5941,7 +5951,7 @@ msgstr "删除所选" #: src/muuli_wdr.cpp:3429 msgid "Event Types" -msgstr "" +msgstr "事件类型" #: src/muuli_wdr.cpp:3454 msgid "Connect to any server and/or Kad" @@ -6795,6 +6805,9 @@ msgid "" "Additionally, the browser settings have been reset to the system default. " "Please configure your browser options again if needed.\n" msgstr "" +"\n" +"\n" +"此外,浏览器设定已经被重设为系统默认,如有必要,请重新配置浏览器选项。\n" #: src/amule.cpp:1324 msgid "More information, support and new releases can found at our homepage,\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index 414566ec..1cf0d403 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aMule 2.2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-29 03:30+0200\n" +"POT-Creation-Date: 2008-08-02 03:30+0200\n" "PO-Revision-Date: 2008-05-31 00:00+0800\n" "Last-Translator: 小橋 <29551030@qq.com>\n" "Language-Team: Chinese <29551030@qq.com>\n" @@ -125,12 +125,12 @@ msgstr "警告:爲 '%s' 建立備份後無法刪除原文件" msgid "WARNING: Failed to delete %s" msgstr "警告:無法刪除 %s" -#: src/BaseClient.cpp:1308 +#: src/BaseClient.cpp:1309 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "無法獲取用戶 '%s' 的共享文件" -#: src/BaseClient.cpp:1722 src/BaseClient.cpp:2244 src/BaseClient.cpp:2518 +#: src/BaseClient.cpp:1723 src/BaseClient.cpp:2246 src/BaseClient.cpp:2520 #: src/HTTPDownload.cpp:81 src/DataToText.cpp:52 src/DataToText.cpp:68 #: src/DataToText.cpp:78 src/DataToText.cpp:114 src/DataToText.cpp:135 #: src/ExternalConn.cpp:251 src/Statistics.cpp:710 src/Statistics.cpp:891 @@ -146,35 +146,35 @@ msgstr "無法獲取用戶 '%s' 的共享文件" msgid "Unknown" msgstr "不明" -#: src/BaseClient.cpp:1739 +#: src/BaseClient.cpp:1740 #, c-format msgid " (Fake eMule version %#x)" msgstr " (假冒 eMule 版本 %#x)" -#: src/BaseClient.cpp:1750 +#: src/BaseClient.cpp:1751 msgid " (Fake eMule)" msgstr " (假冒 eMule)" -#: src/BaseClient.cpp:1752 +#: src/BaseClient.cpp:1753 msgid "xMule (Fake eMule)" msgstr "xMule (假冒 eMule)" -#: src/BaseClient.cpp:1791 +#: src/BaseClient.cpp:1792 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (基于 eMule v0.%u)" -#: src/BaseClient.cpp:1961 +#: src/BaseClient.cpp:1962 #, c-format msgid "NickName: %s ID: %u" msgstr "昵稱: %s ID: %u" -#: src/BaseClient.cpp:1963 +#: src/BaseClient.cpp:1964 #, c-format msgid "Requested: %s\n" msgstr "已請求:%s\n" -#: src/BaseClient.cpp:1965 +#: src/BaseClient.cpp:1966 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -182,7 +182,7 @@ msgid_plural "" msgstr[0] "本次執行檔案統計: 接受了 %d/%d 個請求,已傳送 %s\n" msgstr[1] "本次執行檔案統計: 接受了 %d/%d 個請求,已傳送 %s\n" -#: src/BaseClient.cpp:1968 +#: src/BaseClient.cpp:1969 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" @@ -190,11 +190,11 @@ msgid_plural "" msgstr[0] "曆史運行文件統計: 接受了%d個請求(總請求數%d),已傳送 %s\n" msgstr[1] "曆史運行文件統計: 接受了%d個請求(總請求數%d),已傳送 %s\n" -#: src/BaseClient.cpp:1971 +#: src/BaseClient.cpp:1972 msgid "Requested unknown file" msgstr "請求不名檔案" -#: src/BaseClient.cpp:2243 +#: src/BaseClient.cpp:2245 #, c-format msgid "Client %s on IP:Port %s:%d using %s %s %s" msgstr "客戶 %s 位于 %s:%d,使用 %s %s %s" @@ -506,7 +506,8 @@ msgstr "Kad:搜索關鍵詞太短" msgid "Kademlia: Search keyword is already on search list: " msgstr "" -#: src/kademlia/routing/RoutingZone.cpp:193 +#: src/kademlia/routing/RoutingZone.cpp:208 +#: src/kademlia/routing/RoutingZone.cpp:278 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" @@ -514,13 +515,18 @@ msgstr[0] "讀取 %u 個 Kad 聯系人" msgstr[1] "讀取 %u 個 Kad 聯系人" #: src/kademlia/routing/RoutingZone.cpp:215 +#: src/kademlia/routing/RoutingZone.cpp:282 +msgid "No contacts found, please bootstrap, or download a nodes.dat file." +msgstr "" + +#: src/kademlia/routing/RoutingZone.cpp:300 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" -#: src/kademlia/routing/RoutingZone.cpp:244 +#: src/kademlia/routing/RoutingZone.cpp:330 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" diff --git a/src/BaseClient.cpp b/src/BaseClient.cpp index a7587d1c..4a9ae51b 100644 --- a/src/BaseClient.cpp +++ b/src/BaseClient.cpp @@ -1087,7 +1087,8 @@ void CUpDownClient::SendHelloTypePacket(CMemFile* data) const uint32 uSupportsCryptLayer = thePrefs::IsClientCryptLayerSupported() ? 1 : 0; const uint32 uRequestsCryptLayer = thePrefs::IsClientCryptLayerRequested() ? 1 : 0; const uint32 uRequiresCryptLayer = thePrefs::IsClientCryptLayerRequired() ? 1 : 0; - const uint32 uSupportsSourceEx2 = 1; + const uint32 uSupportsSourceEx2 = 1; + const uint32 uSupportsCaptcha = 0; // No captcha support in aMule, at least for now // direct callback is only possible if connected to kad, tcp firewalled and verified UDP open (for example on a full cone NAT) const uint32 uDirectUDPCallback = (Kademlia::CKademlia::IsRunning() && Kademlia::CKademlia::IsFirewalled() && !Kademlia::CUDPFirewallTester::IsFirewalledUDP(true) && Kademlia::CUDPFirewallTester::IsVerified()) ? 1 : 0; @@ -1095,7 +1096,7 @@ void CUpDownClient::SendHelloTypePacket(CMemFile* data) CTagVarInt tagMisOptions2(CT_EMULE_MISCOPTIONS2, // (RESERVED ) (uDirectUDPCallback << 12) | -// (uSupportsCaptcha << 11) | // No captcha support in aMule + (uSupportsCaptcha << 11) | (uSupportsSourceEx2 << 10) | (uRequiresCryptLayer << 9) | (uRequestsCryptLayer << 8) | @@ -2234,7 +2235,8 @@ bool CUpDownClient::CheckHandshakeFinished(uint32 WXUNUSED(protocol), uint32 WXU } -wxString CUpDownClient::GetClientFullInfo() { +wxString CUpDownClient::GetClientFullInfo() +{ if (m_clientVerString.IsEmpty()) { ReGetClientSoft(); diff --git a/src/ClientTCPSocket.cpp b/src/ClientTCPSocket.cpp index beb189ae..a97faf50 100644 --- a/src/ClientTCPSocket.cpp +++ b/src/ClientTCPSocket.cpp @@ -1196,7 +1196,7 @@ bool CClientTCPSocket::ProcessExtPacket(const byte* buffer, uint32 size, uint8 o AddDebugLogLineM( false, logRemoteClient, wxT("Remote Client: OP_MULTIPACKET has OP_REQUESTSOURCES(2)") ); uint8 byRequestedVersion = 0; uint16 byRequestedOptions = 0; - if (opcode == OP_REQUESTSOURCES2){ // SX2 requests contains additional data + if (opcode_in == OP_REQUESTSOURCES2){ // SX2 requests contains additional data byRequestedVersion = data_in.ReadUInt8(); byRequestedOptions = data_in.ReadUInt16(); } @@ -1478,6 +1478,7 @@ bool CClientTCPSocket::ProcessExtPacket(const byte* buffer, uint32 size, uint8 o m_client->SetRemoteQueueRank(newrank); break; } + case OP_REQUESTSOURCES2: case OP_REQUESTSOURCES:{ AddDebugLogLineM( false, logRemoteClient, wxT("Remote Client: OP_REQUESTSOURCES from ") + m_client->GetFullIP() ); diff --git a/src/include/common/ClientVersion.h b/src/include/common/ClientVersion.h index f9c99b09..fcb95328 100644 --- a/src/include/common/ClientVersion.h +++ b/src/include/common/ClientVersion.h @@ -47,7 +47,7 @@ #define __SVN__ #ifndef VERSION - #define VERSION "2.2.1" + #define VERSION "2.3.0" #endif #ifdef __SVN__ @@ -57,8 +57,8 @@ #endif #define VERSION_MJR 2 -#define VERSION_MIN 2 -#define VERSION_UPDATE 1 +#define VERSION_MIN 3 +#define VERSION_UPDATE 0 #ifndef PACKAGE #define PACKAGE "amule" diff --git a/src/include/protocol/ed2k/Constants.h b/src/include/protocol/ed2k/Constants.h index 09df9b7d..103344f5 100644 --- a/src/include/protocol/ed2k/Constants.h +++ b/src/include/protocol/ed2k/Constants.h @@ -55,7 +55,7 @@ #define MIN_UP_CLIENTS_ALLOWED 2 // min. clients allowed to download regardless UPLOAD_CLIENT_DATARATE or any other factors. Don't set this too high -#define SOURCEEXCHANGE2_VERSION 4 // replaces the version sent in MISC_OPTIONS flag fro SX1 +#define SOURCEEXCHANGE2_VERSION 4 // replaces the version sent in MISC_OPTIONS flag from SX1 // MOD Note: end diff --git a/src/kademlia/kademlia/Kademlia.cpp b/src/kademlia/kademlia/Kademlia.cpp index e2258247..3d0384ff 100644 --- a/src/kademlia/kademlia/Kademlia.cpp +++ b/src/kademlia/kademlia/Kademlia.cpp @@ -67,7 +67,8 @@ time_t CKademlia::m_bootstrap; time_t CKademlia::m_consolidate; time_t CKademlia::m_externPortLookup; bool CKademlia::m_running = false; - +ContactList CKademlia::s_bootstrapList; +std::list CKademlia::m_statsEstUsersProbes; void CKademlia::Start(CPrefs *prefs) { @@ -152,6 +153,11 @@ void CKademlia::Stop() delete instance; instance = NULL; + for (ContactList::iterator it = s_bootstrapList.begin(); it != s_bootstrapList.end(); ++it) { + delete *it; + } + s_bootstrapList.clear(); + // Make sure all zones are removed. m_events.clear(); @@ -262,6 +268,15 @@ void CKademlia::Process() } } + if (!IsConnected() && !s_bootstrapList.empty() && (now - m_bootstrap > 10 || (GetRoutingZone()->GetNumContacts() == 0 && now - m_bootstrap >= 3))) { + CContact *contact = s_bootstrapList.front(); + s_bootstrapList.pop_front(); + m_bootstrap = now; + AddDebugLogLineM(false, logKadMain, wxT("Trying to bootstrap Kad from ") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(contact->GetIPAddress())) + wxT(", Distance: ") + contact->GetDistance().ToHexString() + wxString::Format(wxT(", %u contacts left"), s_bootstrapList.size())); + instance->m_udpListener->Bootstrap(contact->GetIPAddress(), contact->GetUDPPort(), contact->GetVersion() > 1, contact->GetVersion(), &contact->GetClientID()); + delete contact; + } + if (GetUDPListener() != NULL) { GetUDPListener()->ExpireClientSearch(); // function does only one compare in most cases, so no real need for a timer } @@ -339,6 +354,94 @@ void CKademlia::CancelClientSearch(CKadClientSearcher& fromRequester) CSearchManager::CancelNodeSpecial(&fromRequester); } +void CKademlia::StatsAddClosestDistance(const CUInt128& distance) +{ + if (distance.Get32BitChunk(0) > 0) { + uint32_t toAdd = (0xFFFFFFFF / distance.Get32BitChunk(0)) / 2; + std::list::iterator it = m_statsEstUsersProbes.begin(); + for (; it != m_statsEstUsersProbes.end(); ++it) { + if (*it == toAdd) { + break; + } + } + if (it == m_statsEstUsersProbes.end()) { + m_statsEstUsersProbes.push_front(toAdd); + } + } + if (m_statsEstUsersProbes.size() > 100) { + m_statsEstUsersProbes.pop_back(); + } +} + +uint32_t CKademlia::CalculateKadUsersNew() +{ + // the idea of calculating the user count with this method is simple: + // whenever we do a search for any NodeID (except in certain cases where the result is not usable), + // we remember the distance of the closest node we found. Because we assume all NodeIDs are distributed + // equally, we can calculate based on this distance how "filled" the possible NodesID room is and by this + // calculate how many users there are. Of course this only works if we have enough samples, because + // each single sample will be wrong, but the average of them should produce a usable number. To avoid + // drifts caused by a a single (or more) really close or really far away hits, we do use median-average instead through + + // doesn't work well if we have no files to index and nothing to download and the numbers seems to be a bit too low + // compared to our other method. So let's stay with the old one for now, but keep this here as an alternative + + if (m_statsEstUsersProbes.size() < 10) { + return 0; + } + uint32_t median = 0; + + std::list medianList; + for (std::list::iterator it1 = m_statsEstUsersProbes.begin(); it1 != m_statsEstUsersProbes.end(); ++it1) { + uint32_t probe = *it1; + bool inserted = false; + for (std::list::iterator it2 = medianList.begin(); it2 != medianList.end(); ++it2) { + if (*it2 > probe) { + medianList.insert(it2, probe); + inserted = true; + break; + } + } + if (!inserted) { + medianList.push_back(probe); + } + } + // cut away 1/3 of the values - 1/6 of the top and 1/6 of the bottom to avoid spikes having too much influence, build the average of the rest + std::list::size_type cut = medianList.size() / 6; + for (std::list::size_type i = 0; i != cut; ++i) { + medianList.pop_front(); + medianList.pop_back(); + } + uint64_t average = 0; + for (std::list::iterator it = medianList.begin(); it != medianList.end(); ++it) { + average += *it; + } + median = (uint32_t)(average / medianList.size()); + + // LowIDModififier + // Modify count by assuming 20% of the users are firewalled and can't be a contact for < 0.49b nodes + // Modify count by actual statistics of Firewalled ratio for >= 0.49b if we are not firewalled ourself + // Modify count by 40% for >= 0.49b if we are firewalled ourself (the actual Firewalled count at this date on kad is 35-55%) + const float firewalledModifyOld = 1.20; + float firewalledModifyNew = 0.0; + if (CUDPFirewallTester::IsFirewalledUDP(true)) { + firewalledModifyNew = 1.40; // we are firewalled and can't get the real statistics, assume 40% firewalled >=0.49b nodes + } else if (GetPrefs()->StatsGetFirewalledRatio(true) > 0) { + firewalledModifyNew = 1.0 + (CKademlia::GetPrefs()->StatsGetFirewalledRatio(true)); // apply the firewalled ratio to the modify + wxASSERT(firewalledModifyNew > 1.0 && firewalledModifyNew < 1.90); + } + float newRatio = CKademlia::GetPrefs()->StatsGetKadV8Ratio(); + float firewalledModifyTotal = 0.0; + if (newRatio > 0 && firewalledModifyNew > 0) { // weigth the old and the new modifier based on how many new contacts we have + firewalledModifyTotal = (newRatio * firewalledModifyNew) + ((1 - newRatio) * firewalledModifyOld); + } else { + firewalledModifyTotal = firewalledModifyOld; + } + wxASSERT(firewalledModifyTotal > 1.0 && firewalledModifyTotal < 1.90); + + return (uint32_t)((float)median * firewalledModifyTotal); +} + // Global function. #include "../../CryptoPP_Inc.h" diff --git a/src/kademlia/kademlia/Kademlia.h b/src/kademlia/kademlia/Kademlia.h index a6640900..0eeba6e5 100644 --- a/src/kademlia/kademlia/Kademlia.h +++ b/src/kademlia/kademlia/Kademlia.h @@ -42,6 +42,7 @@ there client on the eMule forum.. #include #include "../utils/UInt128.h" #include "Prefs.h" +#include "../routing/Maps.h" #include "../net/KademliaUDPListener.h" #include @@ -72,7 +73,8 @@ public: static bool IsConnected() throw() { return instance && instance->m_prefs ? instance->m_prefs->HasHadContact() : false; } static bool IsFirewalled() throw() { return instance && instance->m_prefs ? instance->m_prefs->GetFirewalled() : true; } static void RecheckFirewalled(); - static uint32_t GetKademliaUsers() throw() { return instance && instance->m_prefs ? instance->m_prefs->GetKademliaUsers() : 0; } + static uint32_t GetKademliaUsers(bool newMethod = false) throw() + { return instance && instance->m_prefs ? (newMethod ? CalculateKadUsersNew() : instance->m_prefs->GetKademliaUsers()) : 0; } static uint32_t GetKademliaFiles() throw() { return instance && instance->m_prefs ? instance->m_prefs->GetKademliaFiles() : 0; } static uint32_t GetTotalStoreKey() throw() { return instance && instance->m_prefs ? instance->m_prefs->GetTotalStoreKey() : 0; } static uint32_t GetTotalStoreSrc() throw() { return instance && instance->m_prefs ? instance->m_prefs->GetTotalStoreSrc() : 0; } @@ -82,7 +84,9 @@ public: static uint32_t GetIPAddress() throw() { return instance && instance->m_prefs ? instance->m_prefs->GetIPAddress() : 0; } static void Bootstrap(uint32_t ip, uint16_t port, bool kad2) { - if (instance && instance->m_udpListener && !IsConnected() && time(NULL) - m_bootstrap > MIN2S(1) ) { + time_t now = time(NULL); + if (instance && instance->m_udpListener && !IsConnected() && now - m_bootstrap > 10) { + m_bootstrap = now; instance->m_udpListener->Bootstrap(ip, port, kad2); } } @@ -92,13 +96,18 @@ public: static void AddEvent(CRoutingZone *zone) throw() { m_events[zone] = zone; } static void RemoveEvent(CRoutingZone *zone) { m_events.erase(zone); } static void Process(); + static void StatsAddClosestDistance(const CUInt128& distance); static bool FindNodeIDByIP(CKadClientSearcher& requester, uint32_t ip, uint16_t tcpPort, uint16_t udpPort); static bool FindIPByNodeID(CKadClientSearcher& requester, const uint8_t *nodeID); static void CancelClientSearch(CKadClientSearcher& fromRequester); + static ContactList s_bootstrapList; + private: CKademlia() {} + static uint32_t CalculateKadUsersNew(); + static CKademlia *instance; static EventMap m_events; static time_t m_nextSearchJumpStart; @@ -111,6 +120,7 @@ private: static time_t m_consolidate; static time_t m_externPortLookup; static bool m_running; + static std::list m_statsEstUsersProbes; CPrefs * m_prefs; CRoutingZone * m_routingZone; @@ -124,4 +134,3 @@ void KadGetKeywordHash(const wxString& rstrKeyword, Kademlia::CUInt128* pKadID); wxString KadGetKeywordBytes(const wxString& rstrKeywordW); #endif // __KAD_KADEMLIA_H__ -// File_checked_for_headers diff --git a/src/kademlia/kademlia/Search.cpp b/src/kademlia/kademlia/Search.cpp index 75201585..29f19be3 100644 --- a/src/kademlia/kademlia/Search.cpp +++ b/src/kademlia/kademlia/Search.cpp @@ -4,6 +4,7 @@ // Copyright (c) 2004-2008 Angel Vidal ( kry@amule.org ) // Copyright (c) 2004-2008 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003 Barry Dunne (http://www.emule-project.net) +// Copyright (c) 2004-2008 Merkur ( strEmail.Format("%s@%s", "devteam", "emule-project.net") / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their @@ -80,10 +81,30 @@ CSearch::CSearch() m_searchTermsData = NULL; m_searchTermsDataSize = 0; m_nodeSpecialSearchRequester = NULL; + m_closestDistantFound = 0; } CSearch::~CSearch() { + // remember the closest node we found and tried to contact (if any) during this search + // for statistical caluclations, but only if its a certain type + switch (m_type) { + case NODECOMPLETE: + case FILE: + case KEYWORD: + case NOTES: + case STOREFILE: + case STOREKEYWORD: + case STORENOTES: + case FINDSOURCE: // maybe also exclude + if (m_closestDistantFound != 0) { + CKademlia::StatsAddClosestDistance(m_closestDistantFound); + } + break; + default: // NODE, NODESPECIAL, NODEFWCHECKUDP, FINDBUDDY + break; + } + if (m_nodeSpecialSearchRequester != NULL) { // inform requester that our search failed m_nodeSpecialSearchRequester->KadSearchIPByNodeIDResult(KCSR_NOTFOUND, 0, 0); @@ -366,6 +387,10 @@ void CSearch::StorePacket() CUInt128 fromDistance(possible->first); CContact *from = possible->second; + if (fromDistance < m_closestDistantFound || m_closestDistantFound == 0) { + m_closestDistantFound = fromDistance; + } + // Make sure this is a valid node to store. if(thePrefs::FilterLanIPs() && fromDistance.Get32BitChunk(0) > SEARCHTOLERANCE) { AddDebugLogLineM(false, logKadSearch, wxT("Not stored: filtered lan ip")); diff --git a/src/kademlia/kademlia/Search.h b/src/kademlia/kademlia/Search.h index a942cb7f..ee1a2f36 100644 --- a/src/kademlia/kademlia/Search.h +++ b/src/kademlia/kademlia/Search.h @@ -136,6 +136,7 @@ private: ContactMap m_best; ContactList m_delete; ContactMap m_inUse; + CUInt128 m_closestDistantFound; // not used for the search itself, but for statistical data collecting }; } // End namespace diff --git a/src/kademlia/net/KademliaUDPListener.cpp b/src/kademlia/net/KademliaUDPListener.cpp index fcacaa7d..6fab98c4 100644 --- a/src/kademlia/net/KademliaUDPListener.cpp +++ b/src/kademlia/net/KademliaUDPListener.cpp @@ -4,6 +4,7 @@ // Copyright (c) 2004-2008 Angel Vidal ( kry@amule.org ) // Copyright (c) 2004-2008 aMule Project ( http://www.amule-project.net ) // Copyright (C)2003 Barry Dunne (http://www.emule-project.net) +// Copyright (C)2007-2008 Merkur ( strEmail.Format("%s@%s", "devteam", "emule-project.net") / http://www.emule-project.net ) // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -95,15 +96,18 @@ CKademliaUDPListener::~CKademliaUDPListener() } // Used by Kad1.0 and Kad2.0 -void CKademliaUDPListener::Bootstrap(uint32_t ip, uint16_t port, bool kad2) +void CKademliaUDPListener::Bootstrap(uint32_t ip, uint16_t port, bool kad2, uint8_t kadVersion, const CUInt128* cryptTargetID) { wxASSERT(ip); if (kad2) { DebugSend(Kad2BootstrapReq, ip, port); CMemFile bio(0); - // TODO: add possibility to encrypt bootstrap packets - SendPacket(bio, KADEMLIA2_BOOTSTRAP_REQ, ip, port, 0, NULL); + if (kadVersion >= 6) { + SendPacket(bio, KADEMLIA2_BOOTSTRAP_REQ, ip, port, 0, cryptTargetID); + } else { + SendPacket(bio, KADEMLIA2_BOOTSTRAP_REQ, ip, port, 0, NULL); + } } else { DebugSend(KadBootstrapReq, ip, port); SendMyDetails(KADEMLIA_BOOTSTRAP_REQ, ip, port, 0, 0, NULL, false); @@ -145,7 +149,17 @@ void CKademliaUDPListener::SendMyDetails(uint8_t opcode, uint32_t ip, uint16_t p } // packetdata.WriteTag(CKadTagUInt(TAG_USER_COUNT, CKademlia::GetPrefs()->GetKademliaUsers())); // packetdata.WriteTag(CKadTagUInt(TAG_FILE_COUNT, CKademlia::GetPrefs()->GetKademliaFiles())); - SendPacket(packetdata, opcode, ip, port, targetKey, cryptTargetID); + if (kadVersion >= 6) { + if (cryptTargetID == NULL || *cryptTargetID == 0) { + AddDebugLogLineM(false, logClientKadUDP, wxT("Sending hello response to crypt enabled Kad Node which provided an empty NodeID: ") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(ip)) + wxString::Format(wxT(" (%u)"), kadVersion)); + SendPacket(packetdata, opcode, ip, port, targetKey, NULL); + } else { + SendPacket(packetdata, opcode, ip, port, targetKey, cryptTargetID); + } + } else { + SendPacket(packetdata, opcode, ip, port, 0, NULL); + wxASSERT(targetKey.IsEmpty()); + } } else { wxASSERT(!requestAckPacket); packetdata.WriteUInt32(CKademlia::GetPrefs()->GetIPAddress()); @@ -597,6 +611,7 @@ void CKademliaUDPListener::ProcessBootstrapResponse(const uint8_t *packetData, u CHECK_PACKET_MIN_SIZE(27); CHECK_TRACKED_PACKET(KADEMLIA_BOOTSTRAP_REQ); + //AddDebugLogLineM(false, logClientKadUDP, wxT("Inc Kad1 Bootstrap packet from ") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(ip))); // How many contacts were given CMemFile bio(packetData, lenPacket); uint16_t numContacts = bio.ReadUInt16(); @@ -623,7 +638,15 @@ void CKademliaUDPListener::Process2BootstrapResponse(const uint8_t *packetData, CUInt128 contactID = bio.ReadUInt128(); uint16_t tport = bio.ReadUInt16(); uint8_t version = bio.ReadUInt8(); - routingZone->Add(contactID, ip, port, tport, version, senderKey, validReceiverKey, true, false, false); + // if we don't know any Contacts yet and try to Bootstrap, we assume that all contacts are verified, + // in order to speed up the connecting process. The attackvectors to exploit this are very small with no + // major effects, so that's a good trade + bool assumeVerified = CKademlia::GetRoutingZone()->GetNumContacts() == 0; + + if (CKademlia::s_bootstrapList.empty()) { + routingZone->Add(contactID, ip, port, tport, version, senderKey, validReceiverKey, true, false, false); + } + //AddDebugLogLineM(false, logClientKadUDP, wxT("Inc Kad2 Bootstrap packet from ") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(ip))); uint16_t numContacts = bio.ReadUInt16(); while (numContacts) { @@ -632,7 +655,7 @@ void CKademliaUDPListener::Process2BootstrapResponse(const uint8_t *packetData, port = bio.ReadUInt16(); tport = bio.ReadUInt16(); version = bio.ReadUInt8(); - bool verified = false; + bool verified = assumeVerified; routingZone->Add(contactID, ip, port, tport, version, 0, verified, false, false, false); numContacts--; } @@ -640,7 +663,7 @@ void CKademliaUDPListener::Process2BootstrapResponse(const uint8_t *packetData, // KADEMLIA_HELLO_REQ // Used in Kad1.0 only -void CKademliaUDPListener::ProcessHelloRequest (const uint8_t *packetData, uint32_t lenPacket, uint32_t ip, uint16_t port) +void CKademliaUDPListener::ProcessHelloRequest(const uint8_t *packetData, uint32_t lenPacket, uint32_t ip, uint16_t port) { // Verify packet is expected size CHECK_PACKET_EXACT_SIZE(25); @@ -672,7 +695,7 @@ void CKademliaUDPListener::Process2HelloRequest(const uint8_t *packetData, uint3 uint16_t dbgOldUDPPort = port; uint8_t contactVersion = 0; CUInt128 contactID; - bool addedOrUpdated = AddContact2(packetData, lenPacket, ip, port, &contactVersion, senderKey, validReceiverKey, true, true, NULL, &contactID); // might change (udp)port + bool addedOrUpdated = AddContact2(packetData, lenPacket, ip, port, &contactVersion, senderKey, validReceiverKey, true, true, NULL, &contactID); // might change (udp)port, validReceiverKey wxASSERT(contactVersion >= 1); #ifdef __DEBUG__ if (dbgOldUDPPort != port) { @@ -684,9 +707,9 @@ void CKademliaUDPListener::Process2HelloRequest(const uint8_t *packetData, uint3 // if this contact was added or updated (so with other words not filtered or invalid) to our routing table and did not already send a valid // receiver key or is already verified in the routing table, we request an additional ACK package to complete a three-way-handshake and // verify the remote IP - SendMyDetails(KADEMLIA2_HELLO_RES, ip, port, contactVersion, senderKey, NULL, addedOrUpdated && !validReceiverKey); + SendMyDetails(KADEMLIA2_HELLO_RES, ip, port, contactVersion, senderKey, &contactID, addedOrUpdated && !validReceiverKey); - if (addedOrUpdated && !validReceiverKey && contactVersion == 7) { + if (addedOrUpdated && !validReceiverKey && contactVersion == 7 && !HasActiveLegacyChallenge(ip)) { // Kad Version 7 doesn't support HELLO_RES_ACK but sender/receiver keys, so send a ping to validate DebugSend(Kad2Ping, ip, port); SendNullPacket(KADEMLIA2_PING, ip, port, senderKey, NULL); @@ -705,7 +728,7 @@ void CKademliaUDPListener::Process2HelloRequest(const uint8_t *packetData, uint3 SendNullPacket(KADEMLIA2_PING, ip, port, senderKey, NULL); } - if (addedOrUpdated && !validReceiverKey && contactVersion < 7) { + if (addedOrUpdated && !validReceiverKey && contactVersion < 7 && !HasActiveLegacyChallenge(ip)) { // we need to verify this contact but it doesn't support HELLO_RES_ACK nor keys, do a little workaround SendLegacyChallenge(ip, port, contactID, true); } @@ -755,6 +778,11 @@ void CKademliaUDPListener::Process2HelloResponseAck(const uint8_t *packetData, u if (!CKademlia::GetRoutingZone()->VerifyContact(remoteID, ip)) { AddDebugLogLineM(false, logKadRouting, wxT("Unable to find valid sender in routing table (sender: ") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(ip)) + wxT(")")); } +#ifdef __DEBUG__ + else { + AddDebugLogLineM(false, logKadRouting, wxT("Verified contact (") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(ip)) + wxT(") by HELLO_RES_ACK")); + } +#endif } // KADEMLIA2_HELLO_RES @@ -2276,6 +2304,10 @@ void CKademliaUDPListener::SendLegacyChallenge(uint32_t ip, uint16_t port, const } #endif + if (HasActiveLegacyChallenge(ip)) { + // don't send more than one challenge at a time + return; + } CMemFile packetdata(33); packetdata.WriteUInt8(KADEMLIA_FIND_VALUE); CUInt128 challenge; diff --git a/src/kademlia/net/KademliaUDPListener.h b/src/kademlia/net/KademliaUDPListener.h index 06fba724..dfbd6ea6 100644 --- a/src/kademlia/net/KademliaUDPListener.h +++ b/src/kademlia/net/KademliaUDPListener.h @@ -80,7 +80,7 @@ class CKademliaUDPListener : public CPacketTracking { public: ~CKademliaUDPListener(); - void Bootstrap(uint32_t ip, uint16_t port, bool kad2); + void Bootstrap(uint32_t ip, uint16_t port, bool kad2, uint8_t kadVersion = 0, const CUInt128* cryptTargetID = NULL); void FirewalledCheck(uint32_t ip, uint16_t port, const CKadUDPKey& senderKey, uint8_t kadVersion); void SendMyDetails(uint8_t opcode, uint32_t ip, uint16_t port, uint8_t kadVersion, const CKadUDPKey& targetKey, const CUInt128* cryptTargetID, bool requestAckPacket); void SendNullPacket(uint8_t opcode, uint32_t ip, uint16_t port, const CKadUDPKey& targetKey, const CUInt128* cryptTargetID); diff --git a/src/kademlia/net/PacketTracking.cpp b/src/kademlia/net/PacketTracking.cpp index 00f5340e..2dd76fa5 100644 --- a/src/kademlia/net/PacketTracking.cpp +++ b/src/kademlia/net/PacketTracking.cpp @@ -289,6 +289,7 @@ void CPacketTracking::AddLegacyChallenge(const CUInt128& contactID, const CUInt1 bool CPacketTracking::IsLegacyChallenge(const CUInt128& challengeID, uint32_t ip, uint8_t opcode, CUInt128& contactID) { uint32_t now = ::GetTickCount(); + bool warning = false; for (TrackChallengeList::iterator it = listChallengeRequests.begin(); it != listChallengeRequests.end();) { TrackChallengeList::iterator it2 = it++; if (it2->ip == ip && it2->opcode == opcode && now - it2->inserted < SEC2MS(180)) { @@ -298,9 +299,23 @@ bool CPacketTracking::IsLegacyChallenge(const CUInt128& challengeID, uint32_t ip listChallengeRequests.erase(it2); return true; } else { - AddDebugLogLineM(false, logKadPacketTracking, wxT("Wrong challenge answer received, client not verified (") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(ip)) + wxT(")")); + warning = true; } } } + if (warning) { + AddDebugLogLineM(false, logKadPacketTracking, wxT("Wrong challenge answer received, client not verified (") + Uint32toStringIP(wxUINT32_SWAP_ALWAYS(ip)) + wxT(")")); + } + return false; +} + +bool CPacketTracking::HasActiveLegacyChallenge(uint32_t ip) const +{ + uint32_t now = ::GetTickCount(); + for (TrackChallengeList::const_iterator it = listChallengeRequests.begin(); it != listChallengeRequests.end(); ++it) { + if (it->ip == ip && now - it->inserted <= SEC2MS(180)) { + return true; + } + } return false; } diff --git a/src/kademlia/net/PacketTracking.h b/src/kademlia/net/PacketTracking.h index 37315a9c..0a2a7a49 100644 --- a/src/kademlia/net/PacketTracking.h +++ b/src/kademlia/net/PacketTracking.h @@ -82,6 +82,7 @@ class CPacketTracking void InTrackListCleanup(); void AddLegacyChallenge(const CUInt128& contactID, const CUInt128& challengeID, uint32_t ip, uint8_t opcode); bool IsLegacyChallenge(const CUInt128& challengeID, uint32_t ip, uint8_t opcode, CUInt128& contactID); + bool HasActiveLegacyChallenge(uint32_t ip) const; private: static bool IsTrackedOutListRequestPacket(uint8_t opcode) throw(); diff --git a/src/kademlia/routing/RoutingZone.cpp b/src/kademlia/routing/RoutingZone.cpp index edc64689..47c1fda0 100644 --- a/src/kademlia/routing/RoutingZone.cpp +++ b/src/kademlia/routing/RoutingZone.cpp @@ -4,6 +4,7 @@ // Copyright (c) 2004-2008 Angel Vidal ( kry@amule.org ) // Copyright (c) 2004-2008 aMule Project ( http://www.amule-project.net ) // Copyright (C)2003 Barry Dunne (http://www.emule-project.net) +// Copyright (C)2007-2008 Merkur ( strEmail.Format("%s@%s", "devteam", "emule-project.net") / http://www.emule-project.net ) // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -142,6 +143,7 @@ void CRoutingZone::ReadFile(const wxString& specialNodesdat) // Read in the saved contact list try { uint32_t numContacts = 0; + uint32_t validContacts = 0; CFile file; if (CPath::FileExists(specialNodesdat.IsEmpty() ? m_filename : specialNodesdat) && file.Open(m_filename, CFile::read)) { // Get how many contacts in the saved list. @@ -150,62 +152,145 @@ void CRoutingZone::ReadFile(const wxString& specialNodesdat) numContacts = file.ReadUInt32(); uint32_t fileVersion = 0; if (numContacts == 0) { - fileVersion = file.ReadUInt32(); - if (fileVersion >= 1) { - numContacts = file.ReadUInt32(); + if (file.GetLength() >= 8) { + fileVersion = file.ReadUInt32(); + if (fileVersion == 3) { + uint32_t bootstrapEdition = file.ReadUInt32(); + if (bootstrapEdition == 1) { + // this is a special bootstrap-only nodes.dat, handle it in a separate reading function + ReadBootstrapNodesDat(file); + file.Close(); + return; + } + } + if (fileVersion >= 1 && fileVersion <= 3) { + numContacts = file.ReadUInt32(); + } } } - uint32_t validContacts = 0; - for (uint32_t i = 0; i < numContacts; i++) { - CUInt128 id = file.ReadUInt128(); - uint32_t ip = file.ReadUInt32(); - uint16_t udpPort = file.ReadUInt16(); - uint16_t tcpPort = file.ReadUInt16(); - uint8_t type = 0; - uint8_t contactVersion = 0; - if (fileVersion >= 1) { - contactVersion = file.ReadUInt8(); - } else { - type = file.ReadUInt8(); - } - CKadUDPKey kadUDPKey; - bool verified = false; - if (fileVersion >= 2) { - kadUDPKey.ReadFromFile(file); - verified = file.ReadUInt8() != 0; - if (verified) { - doHaveVerifiedContacts = true; + if (numContacts != 0 && numContacts * 25 <= (file.GetLength() - file.GetPosition())) { + for (uint32_t i = 0; i < numContacts; i++) { + CUInt128 id = file.ReadUInt128(); + uint32_t ip = file.ReadUInt32(); + uint16_t udpPort = file.ReadUInt16(); + uint16_t tcpPort = file.ReadUInt16(); + uint8_t type = 0; + uint8_t contactVersion = 0; + if (fileVersion >= 1) { + contactVersion = file.ReadUInt8(); + } else { + type = file.ReadUInt8(); } - } - // IP appears valid - if (type < 4) { - if(IsGoodIPPort(wxUINT32_SWAP_ALWAYS(ip),udpPort)) { - if (!theApp->ipfilter->IsFiltered(wxUINT32_SWAP_ALWAYS(ip)) && - !(udpPort == 53 && contactVersion <= 5 /*No DNS Port without encryption*/)) { - // This was not a dead contact, inc counter if add was successful - if (AddUnfiltered(id, ip, udpPort, tcpPort, contactVersion, kadUDPKey, verified, false, true, false)) { - validContacts++; + CKadUDPKey kadUDPKey; + bool verified = false; + if (fileVersion >= 2) { + kadUDPKey.ReadFromFile(file); + verified = file.ReadUInt8() != 0; + if (verified) { + doHaveVerifiedContacts = true; + } + } + // IP appears valid + if (type < 4) { + if(IsGoodIPPort(wxUINT32_SWAP_ALWAYS(ip),udpPort)) { + if (!theApp->ipfilter->IsFiltered(wxUINT32_SWAP_ALWAYS(ip)) && + !(udpPort == 53 && contactVersion <= 5 /*No DNS Port without encryption*/)) { + // This was not a dead contact, inc counter if add was successful + if (AddUnfiltered(id, ip, udpPort, tcpPort, contactVersion, kadUDPKey, verified, false, true, false)) { + validContacts++; + } } } } } } + file.Close(); AddLogLineM(false, wxString::Format(wxPLURAL("Read %u Kad contact", "Read %u Kad contacts", validContacts), validContacts)); + if (!doHaveVerifiedContacts) { + AddDebugLogLineM(false, logKadRouting, wxT("No verified contacts found in nodes.dat - might be an old file version. Setting all contacts verified for this time to speed up Kad bootstrapping.")); + SetAllContactsVerified(); + } } - if (numContacts == 0) { - AddDebugLogLineM(false, logKadRouting, wxT("Error while reading Kad contacts - 0 entries")); + if (validContacts == 0) { + AddLogLineM(true, _("No contacts found, please bootstrap, or download a nodes.dat file.")); } } catch (const CSafeIOException& e) { AddDebugLogLineM(false, logKadRouting, wxT("IO error in CRoutingZone::readFile: ") + e.what()); } - if (!doHaveVerifiedContacts) { - AddDebugLogLineM(false, logKadRouting, wxT("No verified contacts found in nodes.dat - might be an old file version. Setting all contacts verified for this time to speed up Kad bootstrapping.")); - SetAllContactsVerified(); +} + +void CRoutingZone::ReadBootstrapNodesDat(CFileDataIO& file) +{ + // Bootstrap versions of nodes.dat files are in the style of version 1 nodes.dats. The difference is that + // they will contain more contacts, 500-1000 instead of 50, and those contacts are not added into the routing table + // but used to sent Bootstrap packets to. The advantage is that on a list with a high ratio of dead nodes, + // we will be able to bootstrap faster than on a normal nodes.dat and more important, if we would deliver + // a normal nodes.dat with eMule, those 50 nodes would be kinda DDOSed because everyone adds them to their routing + // table, while with this style, we don't actually add any of the contacts to our routing table in the end and we + // ask only one of those 1000 contacts one time (well or more until we find an alive one). + if (!CKademlia::s_bootstrapList.empty()){ + wxFAIL; + return; + } + uint32_t numContacts = file.ReadUInt32(); + if (numContacts != 0 && numContacts * 25 == (file.GetLength() - file.GetPosition())) { + uint32_t validContacts = 0; + while (numContacts) { + CUInt128 id = file.ReadUInt128(); + uint32_t ip = file.ReadUInt32(); + uint16_t udpPort = file.ReadUInt16(); + uint16_t tcpPort = file.ReadUInt16(); + uint8_t contactVersion = file.ReadUInt8(); + + if (::IsGoodIPPort(wxUINT32_SWAP_ALWAYS(ip), udpPort)) { + if (!theApp->ipfilter->IsFiltered(wxUINT32_SWAP_ALWAYS(ip)) && + !(udpPort == 53 && contactVersion <= 5) && + (contactVersion > 1)) // only kad2 nodes + { + // we want the 50 nodes closest to our own ID (provides randomness between different users and gets has good chances to get a bootstrap with close Nodes which is a nice start for our routing table) + CUInt128 distance = me; + distance ^= id; + validContacts++; + // don't bother if we already have 50 and the farest distance is smaller than this contact + if (CKademlia::s_bootstrapList.size() < 50 || CKademlia::s_bootstrapList.back()->GetDistance() > distance) { + // look where to put this contact into the proper position + bool inserted = false; + CContact* contact = new CContact(id, ip, udpPort, tcpPort, contactVersion, 0, false, me); + for (ContactList::iterator it = CKademlia::s_bootstrapList.begin(); it != CKademlia::s_bootstrapList.end(); ++it) { + if ((*it)->GetDistance() > distance) { + CKademlia::s_bootstrapList.insert(it, contact); + inserted = true; + break; + } + } + if (!inserted) { + wxASSERT(CKademlia::s_bootstrapList.size() < 50); + CKademlia::s_bootstrapList.push_back(contact); + } else if (CKademlia::s_bootstrapList.size() > 50) { + delete CKademlia::s_bootstrapList.back(); + CKademlia::s_bootstrapList.pop_back(); + } + } + } + } + numContacts--; + } + AddLogLineM(false, wxString::Format(wxPLURAL("Read %u Kad contact", "Read %u Kad contacts", CKademlia::s_bootstrapList.size()), CKademlia::s_bootstrapList.size())); + AddDebugLogLineM(false, logKadRouting, wxString::Format(wxT("Loaded Bootstrap nodes.dat, selected %u out of %u valid contacts"), CKademlia::s_bootstrapList.size(), validContacts)); + } + if (CKademlia::s_bootstrapList.size() == 0) { + AddLogLineM(true, _("No contacts found, please bootstrap, or download a nodes.dat file.")); } } void CRoutingZone::WriteFile() { + // don't overwrite a bootstrap nodes.dat with an empty one, if we didn't finish probing + if (!CKademlia::s_bootstrapList.empty() && GetNumContacts() == 0) { + AddDebugLogLineM(false, logKadRouting, wxT("Skipped storing nodes.dat, because we have an unfinished bootstrap of the nodes.dat version and no contacts in our routing table")); + return; + } + // The bootstrap method gets a very nice sample of contacts to save. ContactList contacts; GetBootstrapContacts(&contacts, 200); @@ -223,6 +308,7 @@ void CRoutingZone::WriteFile() file.WriteUInt32(0); // Now tag it with a version which happens to be 2. file.WriteUInt32(2); + // file.WriteUInt32(0); // if we would use version >= 3 this would mean that this is a normal nodes.dat file.WriteUInt32(numContacts); for (ContactList::const_iterator it = contacts.begin(); it != contacts.end(); ++it) { CContact *c = *it; @@ -247,6 +333,55 @@ void CRoutingZone::WriteFile() } } +#if 0 +void CRoutingZone::WriteBootstrapFile() +{ + AddDebugLogLineM(true, logKadRouting, wxT("Writing special bootstrap nodes.dat - not intended for normal use")); + try { + // Write a saved contact list. + CUInt128 id; + CFile file; + if (file.Open(m_filename, CFile::write)) { + // The bootstrap method gets a very nice sample of contacts to save. + ContactMap mapContacts; + CUInt128 random(CUInt128((uint32_t)0), 0); + CUInt128 distance = random; + distance ^= me; + GetClosestTo(2, random, distance, 1200, &mapContacts, false, false); + // filter out Kad1 nodes + for (ContactMap::iterator it = mapContacts.begin(); it != mapContacts.end(); ) { + ContactMap::iterator itCur = it++; + CContact* contact = itCur->second; + if (contact->GetVersion() <= 1) { + mapContacts.erase(itCur); + } + } + // Start file with 0 to prevent older clients from reading it. + file.WriteUInt32(0); + // Now tag it with a version which happens to be 3. + file.WriteUInt32(3); + file.WriteUInt32(1); // using version >= 3, this means that this is not a normal nodes.dat + file.WriteUInt32((uint32_t)mapContacts.size()); + for (ContactMap::const_iterator it = mapContacts.begin(); it != mapContacts.end(); ++it) + { + CContact* contact = it->second; + file.WriteUInt128(contact->GetClientID()); + file.WriteUInt32(contact->GetIPAddress()); + file.WriteUInt16(contact->GetUDPPort()); + file.WriteUInt16(contact->GetTCPPort()); + file.WriteUInt8(contact->GetVersion()); + } + file.Close(); + AddDebugLogLineM(false, logKadRouting, wxString::Format(wxT("Wrote %u contacts to bootstrap file."), mapContacts.size())); + } else { + AddDebugLogLineM(true, logKadRouting, wxT("Unable to store Kad file: ") + m_filename); + } + } catch (const CIOFailureException& e) { + AddDebugLogLineM(false, logKadRouting, wxT("CFileException in CRoutingZone::writeFile") + e.what()); + } +} +#endif + bool CRoutingZone::CanSplit() const throw() { // Max levels allowed. diff --git a/src/kademlia/routing/RoutingZone.h b/src/kademlia/routing/RoutingZone.h index 0814ad5e..847fb0f4 100644 --- a/src/kademlia/routing/RoutingZone.h +++ b/src/kademlia/routing/RoutingZone.h @@ -42,6 +42,8 @@ there client on the eMule forum.. #include "Maps.h" #include "../utils/UInt128.h" +class CFileDataIO; + //////////////////////////////////////// namespace Kademlia { //////////////////////////////////////// @@ -102,6 +104,10 @@ private: CRoutingZone(CRoutingZone *super_zone, int level, const CUInt128& zone_index) { Init(super_zone, level, zone_index); } void Init(CRoutingZone *super_zone, int level, const CUInt128& zone_index); + void ReadBootstrapNodesDat(CFileDataIO& file); +#if 0 + void WriteBootstrapFile(); +#endif void WriteFile(); diff --git a/src/utils/fileview/KadFiles.cpp b/src/utils/fileview/KadFiles.cpp index 3c7d2ce4..05e3c3da 100644 --- a/src/utils/fileview/KadFiles.cpp +++ b/src/utils/fileview/KadFiles.cpp @@ -128,11 +128,14 @@ void DecodeNodesDat(const CFileDataIO& file) uint32_t numContacts = file.ReadUInt32(); uint32_t fileVersion = 0; - DoPrint(wxT("NumContacts #1: ")); Print(numContacts); DoPrint(wxT("\n")); + DoPrint(wxT("NumContacts #1 : ")); Print(numContacts); DoPrint(wxT("\n")); if (numContacts == 0) { - DoPrint(wxT("FileVersion : ")); Print(fileVersion = file.ReadUInt32()); DoPrint(wxT("\n")); - if (fileVersion >= 1) { - DoPrint(wxT("NumContacts #2: ")); Print(numContacts = file.ReadUInt32()); DoPrint(wxT("\n")); + DoPrint(wxT("FileVersion : ")); Print(fileVersion = file.ReadUInt32()); DoPrint(wxT("\n")); + if (fileVersion == 3) { + DoPrint(wxT("BootstrapEdition: ")); Print(file.ReadUInt32()); DoPrint(wxT("\n")); + } + if (fileVersion >= 1 && fileVersion <= 3) { + DoPrint(wxT("NumContacts #2 : ")); Print(numContacts = file.ReadUInt32()); DoPrint(wxT("\n")); } } for (uint32_t i = 0; i < numContacts; i++) { -- 2.11.4.GIT