Mercurial > pidgin
changeset 31180:6448e3f3ddd4
merge of '8f2d6c5138602b96aef4fbfbc5b47c202951201b'
and 'e8c1e8a79ad64bd73663a15cc0e802b06a8bc733'
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Wed, 02 Feb 2011 06:26:19 +0000 |
parents | 53096ba34fe6 (diff) 5ac05ae49c5c (current diff) |
children | 11be48c38c19 a92f4cb593a4 |
files | ChangeLog |
diffstat | 12 files changed, 379 insertions(+), 233 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed Feb 02 06:25:39 2011 +0000 +++ b/ChangeLog Wed Feb 02 06:26:19 2011 +0000 @@ -10,6 +10,8 @@ * Perl bindings now respect LDFLAGS. (Peter Volkov, Markos Chandras) (#12638) * Added AddTrust External Root CA. (#11554) + * Resolve some issues validating X.509 certificates signed off the CAcert + Class 3 intermediate cert when using the GnuTLS SSL/TLS plugin. Gadu-Gadu: * Don't drop whole messages when text is colored. (Jan Zachorowski) @@ -58,6 +60,8 @@ (Nikita Kozlov) (#13136) * Handle Connection: Close headers for BOSH, when the server does not terminate the connection itself. (#13008) + * Improved parsing for DIGEST-MD5, which should resolve issues + connecting to some jabberd2 servers. (#a14514) Yahoo!/Yahoo! JAPAN: * Fix a crash when an account disconnects before a p2p session is
--- a/libpurple/certificate.c Wed Feb 02 06:25:39 2011 +0000 +++ b/libpurple/certificate.c Wed Feb 02 06:26:19 2011 +0000 @@ -1602,7 +1602,7 @@ GSList *ca_crts, *cur; GByteArray *last_fpr, *ca_fpr; gboolean valid = FALSE; - gchar *ca_id; + gchar *ca_id, *ca2_id; peer_crt = (PurpleCertificate *) chain->data; @@ -1619,7 +1619,6 @@ return; } /* if (self signed) */ - /* Next, attempt to verify the last certificate against a CA */ ca = purple_certificate_find_pool(x509_tls_cached.scheme_name, "ca"); /* Next, check that the certificate chain is valid */ @@ -1669,6 +1668,9 @@ return; } /* if (signature chain not good) */ + /* Next, attempt to verify the last certificate is signed by a trusted + * CA, or is a trusted CA (based on fingerprint). + */ /* If, for whatever reason, there is no Certificate Authority pool loaded, we'll verify the subject name and then warn about thsi. */ if ( !ca ) { @@ -1684,27 +1686,31 @@ end_crt = g_list_last(chain)->data; - /* Attempt to look up the last certificate's issuer */ - ca_id = purple_certificate_get_issuer_unique_id(end_crt); + /* Attempt to look up the last certificate, and the last certificate's + * issuer. + */ + ca_id = purple_certificate_get_issuer_unique_id(end_crt); + ca2_id = purple_certificate_get_unique_id(end_crt); purple_debug_info("certificate/x509/tls_cached", "Checking for a CA with DN=%s\n", ca_id); - ca_crts = x509_ca_get_certs(ca_id); + purple_debug_info("certificate/x509/tls_cached", + "Also checking for a CA with DN=%s\n", + ca2_id); + ca_crts = g_slist_concat(x509_ca_get_certs(ca_id), x509_ca_get_certs(ca2_id)); + g_free(ca_id); + g_free(ca2_id); if ( NULL == ca_crts ) { flags |= PURPLE_CERTIFICATE_CA_UNKNOWN; purple_debug_warning("certificate/x509/tls_cached", - "Certificate Authority with DN='%s' not " - "found. I'll prompt the user, I guess.\n", - ca_id); - g_free(ca_id); + "No Certificate Authorities with either DN found " + "found. I'll prompt the user, I guess.\n"); x509_tls_cached_check_subject_name(vrq, flags); return; } - g_free(ca_id); - /* * Check the fingerprints; if they match, then this certificate *is* one * of the designated "trusted roots", and we don't need to verify the @@ -1714,10 +1720,6 @@ * * If the fingerprints don't match, we'll fall back to checking the * signature. - * - * GnuTLS doesn't seem to include the final root in the verification - * list, so this check will never succeed. NSS *does* include it in - * the list, so here we are. */ last_fpr = purple_certificate_get_fingerprint_sha1(end_crt); for (cur = ca_crts; cur; cur = cur->next) {
--- a/libpurple/protocols/jabber/Makefile.am Wed Feb 02 06:25:39 2011 +0000 +++ b/libpurple/protocols/jabber/Makefile.am Wed Feb 02 06:26:19 2011 +0000 @@ -11,6 +11,7 @@ auth.c \ auth.h \ auth_digest_md5.c \ + auth_digest_md5.h \ auth_plain.c \ auth_scram.c \ auth_scram.h \
--- a/libpurple/protocols/jabber/auth_digest_md5.c Wed Feb 02 06:25:39 2011 +0000 +++ b/libpurple/protocols/jabber/auth_digest_md5.c Wed Feb 02 06:26:19 2011 +0000 @@ -27,6 +27,7 @@ #include "util.h" #include "xmlnode.h" +#include "auth_digest_md5.h" #include "auth.h" #include "jabber.h" @@ -43,7 +44,7 @@ } /* Parts of this algorithm are inspired by stuff in libgsasl */ -static GHashTable* parse_challenge(const char *challenge) +GHashTable* jabber_auth_digest_md5_parse(const char *challenge) { const char *token_start, *val_start, *val_end, *cur; GHashTable *ret = g_hash_table_new_full(g_str_hash, g_str_equal, @@ -77,12 +78,12 @@ val_start++; val_end = cur; - while (val_end != val_start && (*val_end == ' ' || *val_end == ',' || *val_end == '\t' + while (val_end >= val_start && (*val_end == ' ' || *val_end == ',' || *val_end == '\t' || *val_end == '\r' || *val_end == '\n' || *val_end == '"' || *val_end == '\0')) val_end--; - if (val_start != val_end) + if (val_end - val_start + 1 >= 0) value = g_strndup(val_start, val_end - val_start + 1); } @@ -186,7 +187,7 @@ dec_in != NULL ? strlen(dec_in) : 0, dec_in != NULL ? dec_in : "(null)"); - parts = parse_challenge(dec_in); + parts = jabber_auth_digest_md5_parse(dec_in); if (g_hash_table_lookup(parts, "rspauth")) { char *rspauth = g_hash_table_lookup(parts, "rspauth");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/jabber/auth_digest_md5.h Wed Feb 02 06:26:19 2011 +0000 @@ -0,0 +1,39 @@ +/** + * @file auth_digest_md5.h Implementation of SASL DIGEST-MD5 authentication + * + * purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ +#ifndef PURPLE_JABBER_AUTH_DIGEST_MD5_H_ +#define PURPLE_JABBER_AUTH_DIGEST_MD5_H_ + +#include "internal.h" + +/* + * Every function in this file is ONLY exposed for tests. + * DO NOT USE ANYTHING HERE OR YOU WILL BE SENT TO THE PIT OF DESPAIR. + */ + +/* + * Parse a DIGEST-MD5 challenge. + */ +GHashTable *jabber_auth_digest_md5_parse(const char *challenge); + +#endif /* PURPLE_JABBER_AUTH_DIGEST_MD5_H_ */
--- a/libpurple/protocols/jabber/bosh.c Wed Feb 02 06:25:39 2011 +0000 +++ b/libpurple/protocols/jabber/bosh.c Wed Feb 02 06:26:19 2011 +0000 @@ -365,6 +365,8 @@ chosen = find_available_http_connection(conn); if (!chosen) { + if (type == PACKET_FLUSH) + return; /* * For non-ordinary traffic, we can't 'buffer' it, so use the * first connection. @@ -472,6 +474,8 @@ if (!bosh->pipelining) return; + purple_debug_info("jabber", "BOSH: Disabling pipelining on conn %p\n", + bosh); bosh->pipelining = FALSE; if (bosh->connections[1] == NULL) { bosh->connections[1] = jabber_bosh_http_connection_init(bosh);
--- a/libpurple/tests/Makefile.am Wed Feb 02 06:25:39 2011 +0000 +++ b/libpurple/tests/Makefile.am Wed Feb 02 06:26:19 2011 +0000 @@ -11,6 +11,7 @@ tests.h \ test_cipher.c \ test_jabber_caps.c \ + test_jabber_digest_md5.c \ test_jabber_jutil.c \ test_jabber_scram.c \ test_qq.c \
--- a/libpurple/tests/check_libpurple.c Wed Feb 02 06:25:39 2011 +0000 +++ b/libpurple/tests/check_libpurple.c Wed Feb 02 06:26:19 2011 +0000 @@ -85,6 +85,7 @@ srunner_add_suite(sr, cipher_suite()); srunner_add_suite(sr, jabber_caps_suite()); + srunner_add_suite(sr, jabber_digest_md5_suite()); srunner_add_suite(sr, jabber_jutil_suite()); srunner_add_suite(sr, jabber_scram_suite()); srunner_add_suite(sr, qq_suite());
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_jabber_digest_md5.c Wed Feb 02 06:26:19 2011 +0000 @@ -0,0 +1,59 @@ +#include <string.h> + +#include "tests.h" +#include "../util.h" +#include "../protocols/jabber/auth_digest_md5.h" +#include "../protocols/jabber/jutil.h" + +START_TEST(test_parsing) +{ + GHashTable *table; + + table = jabber_auth_digest_md5_parse("r=\"realm\",token= \" asdf\""); + fail_if(g_hash_table_lookup(table, "r") == NULL); + assert_string_equal("realm", g_hash_table_lookup(table, "r")); + fail_if(g_hash_table_lookup(table, "token") == NULL); + assert_string_equal("asdf", g_hash_table_lookup(table, "token")); + g_hash_table_destroy(table); + + table = jabber_auth_digest_md5_parse("r=\"a\", token= \" asdf\""); + fail_if(g_hash_table_lookup(table, "r") == NULL); + assert_string_equal("a", g_hash_table_lookup(table, "r")); + fail_if(g_hash_table_lookup(table, "token") == NULL); + assert_string_equal("asdf", g_hash_table_lookup(table, "token")); + g_hash_table_destroy(table); + + table = jabber_auth_digest_md5_parse("r=\"\", token= \" asdf\""); + fail_if(g_hash_table_lookup(table, "r") == NULL); + assert_string_equal("", g_hash_table_lookup(table, "r")); + fail_if(g_hash_table_lookup(table, "token") == NULL); + assert_string_equal("asdf", g_hash_table_lookup(table, "token")); + g_hash_table_destroy(table); + + table = jabber_auth_digest_md5_parse("realm=\"somerealm\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",charset=utf-8,algorithm=md5-sess"); + fail_if(g_hash_table_lookup(table, "realm") == NULL); + assert_string_equal("somerealm", g_hash_table_lookup(table, "realm")); + fail_if(g_hash_table_lookup(table, "nonce") == NULL); + assert_string_equal("OA6MG9tEQGm2hh", g_hash_table_lookup(table, "nonce")); + fail_if(g_hash_table_lookup(table, "qop") == NULL); + assert_string_equal("auth", g_hash_table_lookup(table, "qop")); + fail_if(g_hash_table_lookup(table, "charset") == NULL); + assert_string_equal("utf-8", g_hash_table_lookup(table, "charset")); + fail_if(g_hash_table_lookup(table, "algorithm") == NULL); + assert_string_equal("md5-sess", g_hash_table_lookup(table, "algorithm")); + + g_hash_table_destroy(table); + +} +END_TEST + +Suite * +jabber_digest_md5_suite(void) +{ + Suite *s = suite_create("Jabber SASL DIGEST-MD5 functions"); + + TCase *tc = tcase_create("Parsing Functionality"); + tcase_add_test(tc, test_parsing); + suite_add_tcase(s, tc); + return s; +}
--- a/libpurple/tests/tests.h Wed Feb 02 06:25:39 2011 +0000 +++ b/libpurple/tests/tests.h Wed Feb 02 06:26:19 2011 +0000 @@ -10,6 +10,7 @@ Suite * master_suite(void); Suite * cipher_suite(void); Suite * jabber_caps_suite(void); +Suite * jabber_digest_md5_suite(void); Suite * jabber_jutil_suite(void); Suite * jabber_scram_suite(void); Suite * qq_suite(void);
--- a/po/ca.po Wed Feb 02 06:25:39 2011 +0000 +++ b/po/ca.po Wed Feb 02 06:26:19 2011 +0000 @@ -3,7 +3,7 @@ # Copyright (C) unknown, Robert Millan <zeratul2@wanadoo.es> # Copyright (C) December 2003 (from 2003-12-12 until 2003-12-18), # January (2004-01-07,12), Xan <dxpublica@telefonica.net> -# Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010 +# Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com> # # This file is distributed under the same license as the Pidgin package. @@ -33,8 +33,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-23 07:57+0100\n" -"PO-Revision-Date: 2010-12-23 08:04+0100\n" +"POT-Creation-Date: 2011-01-30 11:04+0100\n" +"PO-Revision-Date: 2011-01-30 11:11+0100\n" "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n" "Language-Team: Catalan <tradgnome@softcatala.net>\n" "Language: ca\n" @@ -2387,9 +2387,12 @@ "Camí on desar els fitxers\n" "(introduïu tot el camí)" -msgid "Automatically reject from users not in buddy list" -msgstr "" -"Rebutja automàticament dels usuaris que no estiguin a la llista d'amics" +msgid "" +"When a file-transfer request arrives from a user who is\n" +"*not* on your buddy list:" +msgstr "" +"Quan arribi una sol·licitud de transferència d'un fitxer d'un\n" +"usuari que *no* és a la vostra llista d'amics:" msgid "" "Notify with a popup when an autoaccepted file transfer is complete\n" @@ -2402,6 +2405,10 @@ msgid "Create a new directory for each user" msgstr "Crea un directori nou per a cada usuari" +#, fuzzy +msgid "Escape the filenames" +msgstr "%s ha cancel·lat la transferència del fitxer" + msgid "Notes" msgstr "Notes" @@ -3859,7 +3866,10 @@ msgid "Server requires plaintext authentication over an unencrypted stream" msgstr "El servidor requereix autenticació de text sobre un flux no xifrat" -#. This should never happen! +#. This happens when the server sends back jibberish +#. * in the "additional data with success" case. +#. * Seen with Wildfire 3.0.1. +#. msgid "Invalid response from server" msgstr "La resposta del servidor no és vàlida" @@ -6201,6 +6211,20 @@ msgid "Retrieving User Information..." msgstr "S'està obtenint informació de l'usuari..." +#. you were kicked +msgid "You have been kicked from this MultiMX." +msgstr "Us han fet fora d'aquest MultiMX." + +msgid "was kicked" +msgstr "ha estat fet fora" + +msgid "_Room Name:" +msgstr "Nom de la _Sala:" + +#. Display system message in chat window +msgid "You have invited" +msgstr "Heu convidat" + msgid "Loading menu..." msgstr "S'està carregant el menú..." @@ -6229,20 +6253,6 @@ msgid "Enable splash-screen popup" msgstr "Habilita la pantalla de presentació emergent" -#. you were kicked -msgid "You have been kicked from this MultiMX." -msgstr "Us han fet fora d'aquest MultiMX." - -msgid "was kicked" -msgstr "ha estat fet fora" - -msgid "_Room Name:" -msgstr "Nom de la _Sala:" - -#. Display system message in chat window -msgid "You have invited" -msgstr "Heu convidat" - msgid "Last Online" msgstr "Darrer cop en línia" @@ -7917,75 +7927,6 @@ "necessari per poder enviar imatges instantànies. Atès que es revelarà la " "vostra adreça IP, això es pot considerar un risc de privadesa." -msgid "Invalid SNAC" -msgstr "SNAC invàlid" - -msgid "Server rate limit exceeded" -msgstr "S'ha excedit el límit de velocitat del servidor" - -msgid "Client rate limit exceeded" -msgstr "S'ha excedit el límit de velocitat del client" - -msgid "Service unavailable" -msgstr "Servei no disponible" - -msgid "Service not defined" -msgstr "Servei no definit" - -msgid "Obsolete SNAC" -msgstr "SNAC obsolet" - -msgid "Not supported by host" -msgstr "El servidor no ho permet" - -msgid "Not supported by client" -msgstr "El client no ho permet" - -msgid "Refused by client" -msgstr "Rebutjat pel client" - -msgid "Reply too big" -msgstr "Resposta massa gran" - -msgid "Responses lost" -msgstr "S'han perdut respostes" - -msgid "Request denied" -msgstr "Petició denegada" - -msgid "Busted SNAC payload" -msgstr "Càrrega SNAC malmesa" - -msgid "Insufficient rights" -msgstr "Drets insuficients" - -msgid "In local permit/deny" -msgstr "En la llista de permès/denegat local" - -msgid "Warning level too high (sender)" -msgstr "Nivell d'avís massa alt (remitent)" - -msgid "Warning level too high (receiver)" -msgstr "Nivell d'avís massa alt (receptor)" - -msgid "User temporarily unavailable" -msgstr "Usuari no disponible temporalment" - -msgid "No match" -msgstr "Cap coincidència" - -msgid "List overflow" -msgstr "Sobreeiximent de la llista" - -msgid "Request ambiguous" -msgstr "Petició ambigua" - -msgid "Queue full" -msgstr "Cua plena" - -msgid "Not while on AOL" -msgstr "No es pot fer mentre estigui a AOL" - #. Label msgid "Buddy Icon" msgstr "Icona de l'amic" @@ -8104,6 +8045,75 @@ msgid "Capabilities" msgstr "Capacitats" +msgid "Invalid SNAC" +msgstr "SNAC invàlid" + +msgid "Server rate limit exceeded" +msgstr "S'ha excedit el límit de velocitat del servidor" + +msgid "Client rate limit exceeded" +msgstr "S'ha excedit el límit de velocitat del client" + +msgid "Service unavailable" +msgstr "Servei no disponible" + +msgid "Service not defined" +msgstr "Servei no definit" + +msgid "Obsolete SNAC" +msgstr "SNAC obsolet" + +msgid "Not supported by host" +msgstr "El servidor no ho permet" + +msgid "Not supported by client" +msgstr "El client no ho permet" + +msgid "Refused by client" +msgstr "Rebutjat pel client" + +msgid "Reply too big" +msgstr "Resposta massa gran" + +msgid "Responses lost" +msgstr "S'han perdut respostes" + +msgid "Request denied" +msgstr "Petició denegada" + +msgid "Busted SNAC payload" +msgstr "Càrrega SNAC malmesa" + +msgid "Insufficient rights" +msgstr "Drets insuficients" + +msgid "In local permit/deny" +msgstr "En la llista de permès/denegat local" + +msgid "Warning level too high (sender)" +msgstr "Nivell d'avís massa alt (remitent)" + +msgid "Warning level too high (receiver)" +msgstr "Nivell d'avís massa alt (receptor)" + +msgid "User temporarily unavailable" +msgstr "Usuari no disponible temporalment" + +msgid "No match" +msgstr "Cap coincidència" + +msgid "List overflow" +msgstr "Sobreeiximent de la llista" + +msgid "Request ambiguous" +msgstr "Petició ambigua" + +msgid "Queue full" +msgstr "Cua plena" + +msgid "Not while on AOL" +msgstr "No es pot fer mentre estigui a AOL" + #. Translators: This string is a menu option that, if selected, will cause #. you to appear online to the chosen user even when your status is set to #. Invisible. @@ -8703,14 +8713,14 @@ msgid "Select Server" msgstr "Seleccioneu un servidor" -msgid "QQ2005" -msgstr "QQ2005" +msgid "QQ2008" +msgstr "QQ2008" msgid "QQ2007" msgstr "QQ2007" -msgid "QQ2008" -msgstr "QQ2008" +msgid "QQ2005" +msgstr "QQ2005" msgid "Connect by TCP" msgstr "Connecta amb TCP" @@ -12284,10 +12294,6 @@ msgid "Fatal Error" msgstr "Error fatal" -# Fixme -msgid "bug master" -msgstr "bug master" - msgid "artist" msgstr "artista" @@ -12469,6 +12475,9 @@ msgid "Maithili" msgstr "Maithili" +msgid "Meadow Mari" +msgstr "Txeremís oriental" + msgid "Macedonian" msgstr "Macedoni" @@ -15626,6 +15635,14 @@ msgid "You do not have permission to uninstall this application." msgstr "No tens permís per desinstal.lar aquesta aplicació." +#~ msgid "Automatically reject from users not in buddy list" +#~ msgstr "" +#~ "Rebutja automàticament dels usuaris que no estiguin a la llista d'amics" + +# Fixme +#~ msgid "bug master" +#~ msgstr "bug master" + #~ msgid "Error requesting %s" #~ msgstr "S'ha produït un error en sol·licitar %s"
--- a/po/fr.po Wed Feb 02 06:25:39 2011 +0000 +++ b/po/fr.po Wed Feb 02 06:26:19 2011 +0000 @@ -4,7 +4,7 @@ # Copyright (C) 2002, Stéphane Pontier <stephane.pontier@free.fr> # Copyright (C) 2002, Stéphane Wirtel <stephane.wirtel@belgacom.net> # Copyright (C) 2002, Loïc Jeannin <loic.jeannin@free.fr> -# Copyright (C) 2002-2010, Éric Boumaour <zongo_fr@users.sourceforge.net> +# Copyright (C) 2002-2011, Éric Boumaour <zongo_fr@users.sourceforge.net> # # This file is distributed under the same license as the Pidgin package. # @@ -21,14 +21,14 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-19 13:33-0500\n" -"PO-Revision-Date: 2010-12-16 23:25+0100\n" +"POT-Creation-Date: 2011-01-30 21:28+0100\n" +"PO-Revision-Date: 2011-01-30 21:14+0100\n" "Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n" "Language-Team: fr <fr@li.org>\n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: \n" "Plural-Forms: nplurals=2; plural=n>1;\n" #. Translators may want to transliterate the name. @@ -864,8 +864,8 @@ "System events will only be logged if the \"Log all status changes to system " "log\" preference is enabled." msgstr "" -"Les événements système ne seront archivés que si l'option « Archiver tous " -"les changements d'état dans les archives système » est activée." +"Les événements système ne seront archivés que si l'option « Archiver tous les " +"changements d'état dans les archives système » est activée." msgid "" "Instant messages will only be logged if the \"Log all instant messages\" " @@ -2372,9 +2372,12 @@ "Dossier où placer les fichiers\n" "(Veuillez fournir le chemin complet)" -msgid "Automatically reject from users not in buddy list" -msgstr "" -"Refuser automatiquement si l'utilisateur n'est pas dans ma liste de contacts" +msgid "" +"When a file-transfer request arrives from a user who is\n" +"*not* on your buddy list:" +msgstr "" +"Quand une demande de transfert arrive de quelqu'un qui\n" +"n'est *pas* dans la liste de contacts :" msgid "" "Notify with a popup when an autoaccepted file transfer is complete\n" @@ -2387,6 +2390,9 @@ msgid "Create a new directory for each user" msgstr "Créer un nouveau dossier pour chaque contact" +msgid "Escape the filenames" +msgstr "Encoder les noms des fichiers" + msgid "Notes" msgstr "Notes" @@ -2767,8 +2773,7 @@ msgstr "Message déconnecté" msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog" -msgstr "" -"Vous pouvez modifier ou supprimer l'alerte dans la fenêtre « Alertes »." +msgstr "Vous pouvez modifier ou supprimer l'alerte dans la fenêtre « Alertes »." msgid "Yes" msgstr "Oui" @@ -3859,7 +3864,10 @@ "Le serveur demande une authentification en texte non chiffré au travers d'un " "flux crypté." -#. This should never happen! +#. This happens when the server sends back jibberish +#. * in the "additional data with success" case. +#. * Seen with Wildfire 3.0.1. +#. msgid "Invalid response from server" msgstr "Réponse non valide du serveur" @@ -6197,6 +6205,20 @@ msgid "Retrieving User Information..." msgstr "Récupération des informations de l'utilisateur..." +#. you were kicked +msgid "You have been kicked from this MultiMX." +msgstr "Vous avez été expulsé de ce MultiMX." + +msgid "was kicked" +msgstr "a été expulsé" + +msgid "_Room Name:" +msgstr "_Salon :" + +#. Display system message in chat window +msgid "You have invited" +msgstr "Vous avez été invité" + msgid "Loading menu..." msgstr "Chargement du menu..." @@ -6224,20 +6246,6 @@ msgid "Enable splash-screen popup" msgstr "Activer l'affichage de la bannière" -#. you were kicked -msgid "You have been kicked from this MultiMX." -msgstr "Vous avez été expulsé de ce MultiMX." - -msgid "was kicked" -msgstr "a été expulsé" - -msgid "_Room Name:" -msgstr "_Salon :" - -#. Display system message in chat window -msgid "You have invited" -msgstr "Vous avez été invité" - msgid "Last Online" msgstr "En ligne dernièrement" @@ -7908,75 +7916,6 @@ "d'images. Votre adresse IP sera révélée et ceci peut être considéré comme " "une faille de sécurité." -msgid "Invalid SNAC" -msgstr "SNAC non valide" - -msgid "Server rate limit exceeded" -msgstr "Vitesse du serveur dépassée" - -msgid "Client rate limit exceeded" -msgstr "Vitesse du client dépassée" - -msgid "Service unavailable" -msgstr "Service non disponible" - -msgid "Service not defined" -msgstr "Service non défini" - -msgid "Obsolete SNAC" -msgstr "SNAC obsolète" - -msgid "Not supported by host" -msgstr "Non supporté par l'hôte" - -msgid "Not supported by client" -msgstr "Non supporté par le client" - -msgid "Refused by client" -msgstr "Refusé par le client" - -msgid "Reply too big" -msgstr "Réponse trop grosse" - -msgid "Responses lost" -msgstr "Réponses perdues" - -msgid "Request denied" -msgstr "Requête refusée" - -msgid "Busted SNAC payload" -msgstr "Charge SNAC incorrecte" - -msgid "Insufficient rights" -msgstr "Droits insuffisants" - -msgid "In local permit/deny" -msgstr "Dans l'autorisation/interdiction locale" - -msgid "Warning level too high (sender)" -msgstr "Niveau d'avertissement trop élevé (émission)" - -msgid "Warning level too high (receiver)" -msgstr "Niveau d'avertissement trop élevé (réception)" - -msgid "User temporarily unavailable" -msgstr "L'utilisateur est temporairement indisponible." - -msgid "No match" -msgstr "Aucun résultat" - -msgid "List overflow" -msgstr "Dépassement de liste" - -msgid "Request ambiguous" -msgstr "Requête ambiguë" - -msgid "Queue full" -msgstr "File d'attente pleine" - -msgid "Not while on AOL" -msgstr "Impossible sur AOL" - #. Label msgid "Buddy Icon" msgstr "Icône du contact" @@ -8095,6 +8034,75 @@ msgid "Capabilities" msgstr "Possibilités" +msgid "Invalid SNAC" +msgstr "SNAC non valide" + +msgid "Server rate limit exceeded" +msgstr "Vitesse du serveur dépassée" + +msgid "Client rate limit exceeded" +msgstr "Vitesse du client dépassée" + +msgid "Service unavailable" +msgstr "Service non disponible" + +msgid "Service not defined" +msgstr "Service non défini" + +msgid "Obsolete SNAC" +msgstr "SNAC obsolète" + +msgid "Not supported by host" +msgstr "Non supporté par l'hôte" + +msgid "Not supported by client" +msgstr "Non supporté par le client" + +msgid "Refused by client" +msgstr "Refusé par le client" + +msgid "Reply too big" +msgstr "Réponse trop grosse" + +msgid "Responses lost" +msgstr "Réponses perdues" + +msgid "Request denied" +msgstr "Requête refusée" + +msgid "Busted SNAC payload" +msgstr "Charge SNAC incorrecte" + +msgid "Insufficient rights" +msgstr "Droits insuffisants" + +msgid "In local permit/deny" +msgstr "Dans l'autorisation/interdiction locale" + +msgid "Warning level too high (sender)" +msgstr "Niveau d'avertissement trop élevé (émission)" + +msgid "Warning level too high (receiver)" +msgstr "Niveau d'avertissement trop élevé (réception)" + +msgid "User temporarily unavailable" +msgstr "L'utilisateur est temporairement indisponible." + +msgid "No match" +msgstr "Aucun résultat" + +msgid "List overflow" +msgstr "Dépassement de liste" + +msgid "Request ambiguous" +msgstr "Requête ambiguë" + +msgid "Queue full" +msgstr "File d'attente pleine" + +msgid "Not while on AOL" +msgstr "Impossible sur AOL" + #. Translators: This string is a menu option that, if selected, will cause #. you to appear online to the chosen user even when your status is set to #. Invisible. @@ -8686,14 +8694,14 @@ msgid "Select Server" msgstr "Choisir le serveur" -msgid "QQ2005" -msgstr "QQ2005" +msgid "QQ2008" +msgstr "QQ2008" msgid "QQ2007" msgstr "QQ2007" -msgid "QQ2008" -msgstr "QQ2008" +msgid "QQ2005" +msgstr "QQ2005" msgid "Connect by TCP" msgstr "Connexion par TCP" @@ -10445,8 +10453,8 @@ msgstr "" "Le serveur Yahoo! a demandé une méthode d'authentification non reconnue. " "Cette version de l'application n'arrivera probablement pas à se connecter au " -"service Yahoo!. Vous pouvez vérifier qu'une mise à jour est disponible sur " -"%s." +"service Yahoo!. Vous pouvez vérifier qu'une mise à jour est disponible sur %" +"s." msgid "Failed Yahoo! Authentication" msgstr "Échec de l'authentification Yahoo!" @@ -12257,9 +12265,6 @@ msgid "Fatal Error" msgstr "Erreur critique" -msgid "bug master" -msgstr "maitre des bogues" - msgid "artist" msgstr "artiste" @@ -12439,6 +12444,9 @@ msgid "Maithili" msgstr "Maïhili" +msgid "Meadow Mari" +msgstr "Mari des prairies" + msgid "Macedonian" msgstr "Macédonien" @@ -12559,8 +12567,8 @@ "to multiple messaging services at once. %s is written in C using GTK+. %s " "is released, and may be modified and redistributed, under the terms of the " "GPL version 2 (or later). A copy of the GPL is distributed with %s. %s is " -"copyrighted by its contributors, a list of whom is also distributed with " -"%s. There is no warranty for %s.<BR><BR>" +"copyrighted by its contributors, a list of whom is also distributed with %" +"s. There is no warranty for %s.<BR><BR>" msgstr "" "%s est un client de messagerie basé sur libpurple capable de se connecter à " "de multiples services de messageries instantanées. %s est écrit en C et " @@ -13115,16 +13123,16 @@ #, c-format msgid "" -"Are you sure you want to permanently delete the log of the conversation in " -"%s which started at %s?" +"Are you sure you want to permanently delete the log of the conversation in %" +"s which started at %s?" msgstr "" "Êtes-vous sûr de vouloir supprimer les archives de la conversation dans %s " "datée du %s ?" #, c-format msgid "" -"Are you sure you want to permanently delete the system log which started at " -"%s?" +"Are you sure you want to permanently delete the system log which started at %" +"s?" msgstr "Êtes-vous sûr de vouloir supprimer les archives système datées du %s ?" msgid "Delete Log?" @@ -14956,8 +14964,8 @@ "'Enter' in the entry box to send. Watch the debug window." msgstr "" "Permet d'envoyer des données brutes aux protocoles en mode texte (XMPP, MSN, " -"IRC, TOC). Tapez « Entrée » dans la boîte de saisie pour envoyer. Observez " -"le résultat dans la fenêtre de debug." +"IRC, TOC). Tapez « Entrée » dans la boîte de saisie pour envoyer. Observez le " +"résultat dans la fenêtre de debug." #, c-format msgid "You can upgrade to %s %s today." @@ -15485,13 +15493,13 @@ #, no-c-format msgid "" "Error Installing Spellchecking ($R3).$\\rIf retrying fails, manual " -"installation instructions are at: http://developer.pidgin.im/wiki/Installing" -"%20Pidgin#manual_win32_spellcheck_installation" +"installation instructions are at: http://developer.pidgin.im/wiki/Installing%" +"20Pidgin#manual_win32_spellcheck_installation" msgstr "" "Erreur lors de l'installation du correcteur orthographique ($R3).$\\rSi une " "nouvelle tentative échoue, veuillez suivre les instructions sur http://" -"developer.pidgin.im/wiki/Installing" -"%20Pidgin#manual_win32_spellcheck_installation" +"developer.pidgin.im/wiki/Installing%" +"20Pidgin#manual_win32_spellcheck_installation" #. Installer Subsection Text msgid "GTK+ Runtime (required if not present)" @@ -15570,6 +15578,14 @@ msgid "You do not have permission to uninstall this application." msgstr "Vous n'avez pas les permissions pour supprimer cette application." +#~ msgid "Automatically reject from users not in buddy list" +#~ msgstr "" +#~ "Refuser automatiquement si l'utilisateur n'est pas dans ma liste de " +#~ "contacts" + +#~ msgid "bug master" +#~ msgstr "maitre des bogues" + #~ msgid "An error occurred on the in-band bytestream transfer\n" #~ msgstr "Erreur lors du transfert dans le flux de données in-band.\n"