Mercurial > pidgin
changeset 24896:f977d7dfd1a0
merge of '5a35c52faacfbdaf503309fcdf10842cfd126c3f'
and 'ba6f2a0aa47088afe04b45a8eafd245fa72c9985'
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Fri, 02 Jan 2009 07:42:04 +0000 |
parents | 0ea515a3f70c (diff) b2206f3b8b24 (current diff) |
children | b26e8a41a937 |
files | |
diffstat | 49 files changed, 902 insertions(+), 538 deletions(-) [+] |
line wrap: on
line diff
--- a/AUTHORS Fri Dec 19 08:10:19 2008 +0000 +++ b/AUTHORS Fri Jan 02 07:42:04 2009 +0000 @@ -35,6 +35,7 @@ Crazy Patch Writers: ------------------- +Paul Aurich Felipe 'shx' Contreras Marcus 'malu' Lundblad Dennis 'EvilDennisR' Ristuccia
--- a/COPYRIGHT Fri Dec 19 08:10:19 2008 +0000 +++ b/COPYRIGHT Fri Jan 02 07:42:04 2009 +0000 @@ -63,6 +63,7 @@ Damien Carbery Michael Carlson Keegan Carruthers-Smith +Ludovico Cavedon Steve Cavilia Julien Cegarra Cerulean Studios, LLC @@ -228,6 +229,7 @@ Steve Láposi Daniel Larsson Peter Lawler +Vadim Lebedev Ho-seok Lee Jean-Yves Lefort Moses Lei @@ -345,6 +347,7 @@ Luciano Miguel Ferreira Rocha Andrew Rodland Miguel Rodríguez (migrax) +Martin Rosinski Bob Rossi Jason Roth Jean-Francois Roy @@ -473,6 +476,7 @@ Alex Willmer Matt Wilson Dan Winship +Michal Witkowski Scott Wolchok The Written Word, Inc. Kevin Wu Won
--- a/ChangeLog Fri Dec 19 08:10:19 2008 +0000 +++ b/ChangeLog Fri Jan 02 07:42:04 2009 +0000 @@ -1,6 +1,29 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -version 2.5.3 (12/18/2008): +version 2.5.4 (??/??/????): + libpurple: + * Fix a connection timeout with empty Gadu-Gady buddy lists. (Martin + Rosinski) + * Don't ignore namespace information when parsing XMPP data. (Michal + Witkowski) + * Fix a crash that occurred when retrieving certain Offline Messages + on MSN. + * Extended purple-url-handler to handle "gtalk" URI's. (Paul Aurich) + * Fix the hang on exit in Network Location Awareness for Windows XP + and Windows Vista. (Paul Aurich) + + XMPP: + * Support for XEP-0191 blocking. (Vijay Raghunathan) + * Don't put SASL PLAIN or IQ Auth passwords in debug logs. (Paul Aurich) + + Pidgin: + * Fix a crash in the Add Account dialog when changing protocols under + certain circumstances. + + Finch: + * Redirect stderr outputs to the debug window. + +version 2.5.3 (12/20/2008): libpurple: * The Buddy State Notification plugin no longer prints duplicate notifications when the same buddy is in multiple groups. (Florian @@ -27,7 +50,7 @@ * Fix a crash caused by authorization requests. (Florian Quèze) Gadu-Gadu: - * Add support for IM images. (Adam Strzelecki) + * Add support for IM images. (Tomasz Sałaciński, Adam Strzelecki) * Gadu-Gadu now checks that UID's are valid. (Adam Strzelecki) * Gadu-Gadu now does proper charset translations where needed. (Adam Strzelecki) @@ -120,7 +143,7 @@ if no custom smilies have previously been added using the smiley manager. * Improved support for some message formatting in conversations. - * Allow focusing the coversation history or userlist with F6. + * Allow focusing the conversation history or userlist with F6. * Fixed the Send Button plugin to avoid duplicate buttons in a single conversation. * Double-clicking a saved status will now activate it and close the
--- a/ChangeLog.API Fri Dec 19 08:10:19 2008 +0000 +++ b/ChangeLog.API Fri Jan 02 07:42:04 2009 +0000 @@ -1,6 +1,6 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -version 2.5.3 (12/18/2008): +version 2.5.3 (12/20/2008): libpurple Changed: * purple_util_fetch_url and purple_util_fetch_url_request can
--- a/ChangeLog.win32 Fri Dec 19 08:10:19 2008 +0000 +++ b/ChangeLog.win32 Fri Jan 02 07:42:04 2009 +0000 @@ -1,4 +1,6 @@ -version 2.5.3 (12/18/2008): +version 2.5.4 (??/??/????): + +version 2.5.3 (12/20/2008): * Upgrade SILC to use the 1.1.8 toolkit * Updated included Meanwhile library to include patch referenced in #7563
--- a/configure.ac Fri Dec 19 08:10:19 2008 +0000 +++ b/configure.ac Fri Jan 02 07:42:04 2009 +0000 @@ -46,7 +46,7 @@ m4_define([purple_lt_current], [5]) m4_define([purple_major_version], [2]) m4_define([purple_minor_version], [5]) -m4_define([purple_micro_version], [3]) +m4_define([purple_micro_version], [4]) m4_define([purple_version_suffix], [devel]) m4_define([purple_version], [purple_major_version.purple_minor_version.purple_micro_version]) @@ -55,7 +55,7 @@ m4_define([gnt_lt_current], [5]) m4_define([gnt_major_version], [2]) m4_define([gnt_minor_version], [5]) -m4_define([gnt_micro_version], [3]) +m4_define([gnt_micro_version], [4]) m4_define([gnt_version_suffix], [devel]) m4_define([gnt_version], [gnt_major_version.gnt_minor_version.gnt_micro_version])
--- a/doc/pidgin.1.in Fri Dec 19 08:10:19 2008 +0000 +++ b/doc/pidgin.1.in Fri Jan 02 07:42:04 2009 +0000 @@ -641,6 +641,8 @@ Our crazy patch writers include: .br + Paul Aurich +.br Felipe 'shx' Contreras .br Marcus 'malu' Lundblad
--- a/finch/finch.c Fri Dec 19 08:10:19 2008 +0000 +++ b/finch/finch.c Fri Jan 02 07:42:04 2009 +0000 @@ -229,7 +229,6 @@ gboolean opt_nologin = FALSE; gboolean opt_version = FALSE; char *opt_config_dir_arg = NULL; - char *opt_session_arg = NULL; gboolean debug_enabled = FALSE; struct option long_options[] = { @@ -237,7 +236,6 @@ {"debug", no_argument, NULL, 'd'}, {"help", no_argument, NULL, 'h'}, {"nologin", no_argument, NULL, 'n'}, - {"session", required_argument, NULL, 's'}, {"version", no_argument, NULL, 'v'}, {0, 0, 0, 0} }; @@ -256,7 +254,7 @@ opterr = 1; while ((opt = getopt_long(argc, argv, #ifndef _WIN32 - "c:dhn::s:v", + "c:dhn::v", #else "c:dhn::v", #endif @@ -275,10 +273,6 @@ case 'n': /* no autologin */ opt_nologin = TRUE; break; - case 's': /* use existing session ID */ - g_free(opt_session_arg); - opt_session_arg = g_strdup(optarg); - break; case 'v': /* version */ opt_version = TRUE; break;
--- a/finch/gntdebug.c Fri Dec 19 08:10:19 2008 +0000 +++ b/finch/gntdebug.c Fri Jan 02 07:42:04 2009 +0000 @@ -43,6 +43,48 @@ #define PREF_ROOT "/finch/debug" +static gboolean +handle_fprintf_stderr_cb(GIOChannel *source, GIOCondition cond, gpointer null) +{ + gssize size; + char message[1024]; + + size = read(g_io_channel_unix_get_fd(source), message, sizeof(message) - 1); + if (size <= 0) { + /* Something bad probably happened elsewhere ... let's ignore */ + } else { + message[size] = '\0'; + g_log("stderr", G_LOG_LEVEL_WARNING, "%s", message); + } + + return TRUE; +} + +static void +handle_fprintf_stderr(gboolean stop) +{ + GIOChannel *stderrch; + static int readhandle = -1; + int pipes[2]; + + if (stop) { + if (readhandle >= 0) { + g_source_remove(readhandle); + readhandle = -1; + } + return; + } + pipe(pipes); + dup2(pipes[1], STDERR_FILENO); + + stderrch = g_io_channel_unix_new(pipes[0]); + g_io_channel_set_close_on_unref(stderrch, TRUE); + readhandle = g_io_add_watch_full(stderrch, G_PRIORITY_HIGH, + G_IO_IN | G_IO_ERR | G_IO_PRI, + handle_fprintf_stderr_cb, NULL, NULL); + g_io_channel_unref(stderrch); +} + static struct { GntWidget *window; @@ -143,10 +185,6 @@ } static void -suppress_error_messages(const char *message) -{} - -static void toggle_pause(GntWidget *w, gpointer n) { debug.paused = !debug.paused; @@ -348,10 +386,11 @@ #ifdef USE_GSTREAMER REGISTER_G_LOG_HANDLER("GStreamer"); #endif + REGISTER_G_LOG_HANDLER("stderr"); g_set_print_handler(print_stderr); /* Redirect the debug messages to stderr */ if (!purple_debug_is_enabled()) - g_set_printerr_handler(suppress_error_messages); + handle_fprintf_stderr(FALSE); purple_prefs_add_none(PREF_ROOT); purple_prefs_add_string(PREF_ROOT "/filter", ""); @@ -365,5 +404,6 @@ void finch_debug_uninit() { + handle_fprintf_stderr(TRUE); }
--- a/libpurple/blist.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/blist.c Fri Jan 02 07:42:04 2009 +0000 @@ -1029,7 +1029,7 @@ return; dest = purple_find_group(new_name); - if (dest != NULL) { + if (dest != NULL && purple_utf8_strcasecmp(source->name, dest->name) != 0) { /* We're merging two groups */ PurpleBlistNode *prev, *child, *next;
--- a/libpurple/core.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/core.c Fri Jan 02 07:42:04 2009 +0000 @@ -219,6 +219,7 @@ purple_proxy_uninit(); purple_dnsquery_uninit(); purple_imgstore_uninit(); + purple_network_uninit(); purple_debug_info("main", "Unloading all plugins\n"); purple_plugins_destroy_all();
--- a/libpurple/network.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/network.c Fri Jan 02 07:42:04 2009 +0000 @@ -71,6 +71,11 @@ #elif defined _WIN32 static int current_network_count; + +/* Mutex for the other global vars */ +static GStaticMutex mutex = G_STATIC_MUTEX_INIT; +static gboolean network_initialized; +static HANDLE network_change_handle; #endif struct _PurpleNetworkListenData { @@ -535,8 +540,8 @@ static gpointer wpurple_network_change_thread(gpointer data) { - HANDLE h; WSAQUERYSET qs; + WSAEVENT *nla_event; time_t last_trigger = time(NULL); int (WSAAPI *MyWSANSPIoctl) ( @@ -549,23 +554,47 @@ return NULL; } + if ((nla_event = WSACreateEvent()) == WSA_INVALID_EVENT) { + int errorid = WSAGetLastError(); + gchar *msg = g_win32_error_message(errorid); + purple_debug_warning("network", "Couldn't create WSA event. " + "Message: %s (%d).\n", msg, errorid); + g_free(msg); + g_thread_exit(NULL); + return NULL; + } + while (TRUE) { int retval; DWORD retLen = 0; + WSACOMPLETION completion; + WSAOVERLAPPED overlapped; + + g_static_mutex_lock(&mutex); + if (network_initialized == FALSE) { + /* purple_network_uninit has been called */ + WSACloseEvent(nla_event); + g_static_mutex_unlock(&mutex); + g_thread_exit(NULL); + return NULL; + } memset(&qs, 0, sizeof(WSAQUERYSET)); qs.dwSize = sizeof(WSAQUERYSET); qs.dwNameSpace = NS_NLA; - if (WSALookupServiceBegin(&qs, 0, &h) == SOCKET_ERROR) { + if (WSALookupServiceBegin(&qs, 0, &network_change_handle) == SOCKET_ERROR) { int errorid = WSAGetLastError(); gchar *msg = g_win32_error_message(errorid); purple_debug_warning("network", "Couldn't retrieve NLA SP lookup handle. " "NLA service is probably not running. Message: %s (%d).\n", msg, errorid); g_free(msg); + WSACloseEvent(nla_event); + g_static_mutex_unlock(&mutex); g_thread_exit(NULL); return NULL; } + g_static_mutex_unlock(&mutex); /* Make sure at least 30 seconds have elapsed since the last * notification so we don't peg the cpu if this keeps changing. */ @@ -574,19 +603,40 @@ last_trigger = time(NULL); - /* This will block until there is a network change */ - if (MyWSANSPIoctl(h, SIO_NSP_NOTIFY_CHANGE, NULL, 0, NULL, 0, &retLen, NULL) == SOCKET_ERROR) { + memset(&completion, 0, sizeof(WSACOMPLETION)); + completion.Type = NSP_NOTIFY_EVENT; + overlapped.hEvent = nla_event; + completion.Parameters.Event.lpOverlapped = &overlapped; + + if (MyWSANSPIoctl(network_change_handle, SIO_NSP_NOTIFY_CHANGE, NULL, 0, NULL, 0, &retLen, &completion) == SOCKET_ERROR) { int errorid = WSAGetLastError(); - gchar *msg = g_win32_error_message(errorid); - purple_debug_warning("network", "Unable to wait for changes. Message: %s (%d).\n", - msg, errorid); - g_free(msg); + /* WSA_IO_PENDING indicates successful async notification will happen */ + if (errorid != WSA_IO_PENDING) { + gchar *msg = g_win32_error_message(errorid); + purple_debug_warning("network", "Unable to wait for changes. Message: %s (%d).\n", + msg, errorid); + g_free(msg); + } } - retval = WSALookupServiceEnd(h); + /* This will block until NLA notifies us */ + retval = WaitForSingleObjectEx(nla_event, WSA_INFINITE, TRUE); + + g_static_mutex_lock(&mutex); + if (network_initialized == FALSE) { + /* Time to die */ + WSACloseEvent(nla_event); + g_static_mutex_unlock(&mutex); + g_thread_exit(NULL); + return NULL; + } + + retval = WSALookupServiceEnd(network_change_handle); + network_change_handle = NULL; + WSAResetEvent(nla_event); + g_static_mutex_unlock(&mutex); purple_timeout_add(0, wpurple_network_change_thread_cb, NULL); - } g_thread_exit(NULL); @@ -714,6 +764,7 @@ GError *err = NULL; gint cnt = wpurple_get_connected_network_count(); + network_initialized = TRUE; if (cnt < 0) /* Assume there is a network */ current_network_count = 1; /* Don't listen for network changes if we can't tell anyway */ @@ -782,6 +833,25 @@ dbus_g_connection_unref(nm_conn); #endif +#ifdef _WIN32 + g_static_mutex_lock(&mutex); + network_initialized = FALSE; + if (network_change_handle != NULL) { + int retval; + /* Trigger the NLA thread to stop waiting for network changes. Not + * doing this can cause hangs on WSACleanup. */ + purple_debug_warning("network", "Terminating the NLA thread\n"); + if ((retval = WSALookupServiceEnd(network_change_handle)) == SOCKET_ERROR) { + int errorid = WSAGetLastError(); + gchar *msg = g_win32_error_message(errorid); + purple_debug_warning("network", "Unable to kill NLA thread. Message: %s (%d).\n", + msg, errorid); + g_free(msg); + } + } + g_static_mutex_unlock(&mutex); + +#endif purple_signal_unregister(purple_network_get_handle(), "network-configuration-changed"); }
--- a/libpurple/prefs.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/prefs.c Fri Jan 02 07:42:04 2009 +0000 @@ -693,12 +693,15 @@ char *name; GSList *l; - if(!pref || pref == &prefs) + if(!pref) return; while(pref->first_child) remove_pref(pref->first_child); + if(pref == &prefs) + return; + if(pref->parent->first_child == pref) { pref->parent->first_child = pref->sibling; } else { @@ -1452,4 +1455,8 @@ } purple_prefs_disconnect_by_handle(purple_prefs_get_handle()); + purple_prefs_destroy(); + g_hash_table_destroy(prefs_hash); + prefs_hash = NULL; + }
--- a/libpurple/protocols/bonjour/mdns_win32.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/bonjour/mdns_win32.c Fri Jan 02 07:42:04 2009 +0000 @@ -167,7 +167,11 @@ ResolveCallbackArgs *args = (ResolveCallbackArgs*) data; Win32BuddyImplData *idata = args->bb->mdns_impl_data; gboolean delete_buddy = FALSE; - PurpleBuddy *pb; + PurpleBuddy *pb = NULL; + + /* Make sure that the BonjourBuddy associated with this request is still around */ + if (g_slist_find(pending_buddies, args->bb) == NULL) + goto cleanup; if ((pb = purple_find_buddy(args->account, args->bb->name))) if (pb->proto_data != args->bb) @@ -209,6 +213,8 @@ } + cleanup: + /* free the hosts list*/ while (hosts != NULL) { hosts = g_slist_remove(hosts, hosts->data);
--- a/libpurple/protocols/gg/buddylist.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/gg/buddylist.c Fri Jan 02 07:42:04 2009 +0000 @@ -46,7 +46,7 @@ PurpleBuddy *buddy; uin_t *userlist = NULL; gchar *types = NULL; - int size = 0; + int size = 0, ret = 0; if ((blist = purple_get_blist()) == NULL) return; @@ -79,12 +79,12 @@ } } + ret = gg_notify_ex(info->session, userlist, types, size); + purple_debug_info("gg", "send: ret=%d; size=%d\n", ret, size); + if (userlist) { - int ret = gg_notify_ex(info->session, userlist, types, size); g_free(userlist); g_free(types); - - purple_debug_info("gg", "send: ret=%d; size=%d\n", ret, size); } } /* }}} */ @@ -216,13 +216,14 @@ PurpleBlistNode *gnode, *cnode, *bnode; PurpleGroup *group; PurpleBuddy *buddy; - - char *buddylist = g_strdup(""); + GString *buddylist; char *ptr; if ((blist = purple_get_blist()) == NULL) return NULL; + buddylist = g_string_sized_new(1024); + for (gnode = blist->root; gnode != NULL; gnode = gnode->next) { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; @@ -247,19 +248,16 @@ alias = buddy->alias ? buddy->alias : buddy->name; gname = group->name; - ptr = buddylist; - buddylist = g_strdup_printf( - "%s%s;%s;%s;%s;%s;%s;%s;%s%s\r\n", - ptr, alias, alias, alias, alias, + g_string_append_printf(buddylist, + "%s;%s;%s;%s;%s;%s;%s;%s%s\r\n", + alias, alias, alias, alias, "", gname, name, "", ""); - - g_free(ptr); } } } - ptr = charset_convert(buddylist, "UTF-8", "CP1250"); - g_free(buddylist); + ptr = charset_convert(buddylist->str, "UTF-8", "CP1250"); + g_string_free(buddylist, TRUE); return ptr; } /* }}} */
--- a/libpurple/protocols/jabber/disco.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/jabber/disco.c Fri Jan 02 07:42:04 2009 +0000 @@ -355,6 +355,11 @@ jabber_adhoc_server_get_list(js); } + /* If the server supports blocking, request the block list */ + if (js->server_caps & JABBER_CAP_BLOCKING) { + jabber_request_block_list(js); + } + /* If there are manually specified bytestream proxies, query them */ ft_proxies = purple_account_get_string(js->gc->account, "ft_proxies", NULL); if (ft_proxies) { @@ -454,6 +459,8 @@ jabber_google_roster_init(js); } else if (!strcmp("http://jabber.org/protocol/commands", var)) { js->server_caps |= JABBER_CAP_ADHOC; + } else if (!strcmp("urn:xmpp:blocking", var)) { + js->server_caps |= JABBER_CAP_BLOCKING; } }
--- a/libpurple/protocols/jabber/jabber.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/jabber/jabber.c Fri Jan 02 07:42:04 2009 +0000 @@ -31,6 +31,7 @@ #include "message.h" #include "notify.h" #include "pluginpref.h" +#include "privacy.h" #include "proxy.h" #include "prpl.h" #include "request.h" @@ -150,7 +151,7 @@ char hostname[256]; /* current hostname */ /* Empty resource == don't send any */ - if (*input == '\0') + if (input == NULL || *input == '\0') return NULL; if (strstr(input, "__HOSTNAME__") == NULL) @@ -350,9 +351,33 @@ { /* because printing a tab to debug every minute gets old */ - if(strcmp(data, "\t")) - purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s\n", - js->gsc ? " (ssl)" : "", data); + if(strcmp(data, "\t")) { + char *text = NULL, *last_part = NULL, *tag_start = NULL; + + /* Because debug logs with plaintext passwords make me sad */ + if(js->state != JABBER_STREAM_CONNECTED && + /* Either <auth> or <query><password>... */ + (((tag_start = strstr(data, "<auth ")) && + strstr(data, "xmlns='urn:ietf:params:xml:ns:xmpp-sasl'")) || + ((tag_start = strstr(data, "<query ")) && + strstr(data, "xmlns='jabber:iq:auth'>") && + (tag_start = strstr(tag_start, "<password>"))))) { + char *data_start, *tag_end = strchr(tag_start, '>'); + text = g_strdup(data); + + data_start = text + (tag_end - data) + 1; + + last_part = strchr(data_start, '<'); + *data_start = '\0'; + } + + purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s%s%s\n", + js->gsc ? " (ssl)" : "", text ? text : data, + last_part ? "password removed" : "", + last_part ? last_part : ""); + + g_free(text); + } /* If we've got a security layer, we need to encode the data, * splitting it on the maximum buffer length negotiated */ @@ -1454,6 +1479,106 @@ js->idle = idle ? time(NULL) - idle : idle; } +static void jabber_blocklist_parse(JabberStream *js, xmlnode *packet, gpointer data) +{ + xmlnode *blocklist, *item; + PurpleAccount *account; + + blocklist = xmlnode_get_child_with_namespace(packet, + "blocklist", "urn:xmpp:blocking"); + account = purple_connection_get_account(js->gc); + + if (blocklist == NULL) + return; + + item = xmlnode_get_child(blocklist, "item"); + while (item != NULL) { + const char *jid = xmlnode_get_attrib(item, "jid"); + + purple_privacy_deny_add(account, jid, TRUE); + item = xmlnode_get_next_twin(item); + } +} + +void jabber_request_block_list(JabberStream *js) +{ + JabberIq *iq; + xmlnode *blocklist; + + iq = jabber_iq_new(js, JABBER_IQ_GET); + + blocklist = xmlnode_new_child(iq->node, "blocklist"); + xmlnode_set_namespace(blocklist, "urn:xmpp:blocking"); + + jabber_iq_set_callback(iq, jabber_blocklist_parse, NULL); + + jabber_iq_send(iq); +} + +void jabber_add_deny(PurpleConnection *gc, const char *who) +{ + JabberStream *js; + JabberIq *iq; + xmlnode *block, *item; + + js = gc->proto_data; + if (js == NULL) + return; + + if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) + { + jabber_google_roster_add_deny(gc, who); + return; + } + + if (!(js->server_caps & JABBER_CAP_BLOCKING)) + { + purple_notify_error(NULL, _("Server doesn't support blocking"), + _("Server doesn't support blocking"), NULL); + return; + } + + iq = jabber_iq_new(js, JABBER_IQ_SET); + + block = xmlnode_new_child(iq->node, "block"); + xmlnode_set_namespace(block, "urn:xmpp:blocking"); + + item = xmlnode_new_child(block, "item"); + xmlnode_set_attrib(item, "jid", who); + + jabber_iq_send(iq); +} + +void jabber_rem_deny(PurpleConnection *gc, const char *who) +{ + JabberStream *js; + JabberIq *iq; + xmlnode *unblock, *item; + + js = gc->proto_data; + if (js == NULL) + return; + + if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) + { + jabber_google_roster_rem_deny(gc, who); + return; + } + + if (!(js->server_caps & JABBER_CAP_BLOCKING)) + return; + + iq = jabber_iq_new(js, JABBER_IQ_SET); + + unblock = xmlnode_new_child(iq->node, "unblock"); + xmlnode_set_namespace(unblock, "urn:xmpp:blocking"); + + item = xmlnode_new_child(unblock, "item"); + xmlnode_set_attrib(item, "jid", who); + + jabber_iq_send(iq); +} + void jabber_add_feature(const char *shortname, const char *namespace, JabberFeatureEnabled cb) { JabberFeature *feat;
--- a/libpurple/protocols/jabber/jabber.h Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/jabber/jabber.h Fri Jan 02 07:42:04 2009 +0000 @@ -42,7 +42,8 @@ JABBER_CAP_PING = 1 << 11, JABBER_CAP_ADHOC = 1 << 12, - + JABBER_CAP_BLOCKING = 1 << 13, + JABBER_CAP_RETRIEVED = 1 << 31 } JabberCapabilities; @@ -294,6 +295,9 @@ void jabber_login(PurpleAccount *account); void jabber_close(PurpleConnection *gc); void jabber_idle_set(PurpleConnection *gc, int idle); +void jabber_request_block_list(JabberStream *js); +void jabber_add_deny(PurpleConnection *gc, const char *who); +void jabber_rem_deny(PurpleConnection *gc, const char *who); void jabber_keepalive(PurpleConnection *gc); void jabber_register_gateway(JabberStream *js, const char *gateway); void jabber_register_account(PurpleAccount *account);
--- a/libpurple/protocols/jabber/libxmpp.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/jabber/libxmpp.c Fri Jan 02 07:42:04 2009 +0000 @@ -77,9 +77,9 @@ jabber_roster_remove_buddy, /* remove_buddy */ NULL, /* remove_buddies */ NULL, /* add_permit */ - jabber_google_roster_add_deny, /* add_deny */ + jabber_add_deny, /* add_deny */ NULL, /* rem_permit */ - jabber_google_roster_rem_deny, /* rem_deny */ + jabber_rem_deny, /* rem_deny */ NULL, /* set_permit_deny */ jabber_chat_join, /* join_chat */ NULL, /* reject_chat */
--- a/libpurple/protocols/jabber/message.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/jabber/message.c Fri Jan 02 07:42:04 2009 +0000 @@ -291,27 +291,28 @@ PurpleAccount *account; PurpleConversation *c; char *username, *str; - + /* Delayed buzz MUST NOT be accepted */ if(jm->delayed) return; - + /* Reject buzz when it's not enabled */ if(!jm->js->allowBuzz) return; - + account = purple_connection_get_account(jm->js->gc); - - if ((buddy = purple_find_buddy(account, jm->from)) != NULL) - username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1); - else + + if ((buddy = purple_find_buddy(account, jm->from)) == NULL) return; /* Do not accept buzzes from unknown people */ - c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, jm->from); + c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, jm->from, account); + if (c == NULL) + c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, jm->from); - str = g_strdup_printf(_("%s has buzzed you!"), username); - - purple_conversation_write(c, NULL, str, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL)); + username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1); + /* xmpp only has 1 attention type, so index is 0 */ + purple_prpl_got_attention(jm->js->gc, username, 0); + g_free(username); g_free(str); }
--- a/libpurple/protocols/jabber/parser.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/jabber/parser.c Fri Jan 02 07:42:04 2009 +0000 @@ -37,7 +37,7 @@ { JabberStream *js = user_data; xmlnode *node; - int i; + int i, j; if(!element_name) { return; @@ -57,7 +57,7 @@ g_free(js->stream_id); js->stream_id = attrib; } else { - g_free(attrib); + g_free(attrib); } } if(js->protocol_version == JABBER_PROTO_0_9) @@ -72,8 +72,21 @@ else node = xmlnode_new((const char*) element_name); xmlnode_set_namespace(node, (const char*) namespace); + xmlnode_set_prefix(node, (const char *)prefix); + if (nb_namespaces != 0) { + node->namespace_map = g_hash_table_new_full( + g_str_hash, g_str_equal, g_free, g_free); + + for (i = 0, j = 0; i < nb_namespaces; i++, j += 2) { + const char *key = (const char *)namespaces[j]; + const char *val = (const char *)namespaces[j + 1]; + g_hash_table_insert(node->namespace_map, + g_strdup(key ? key : ""), g_strdup(val ? val : "")); + } + } for(i=0; i < nb_attributes * 5; i+=5) { + const char *prefix = (const char *)attributes[i + 1]; char *txt; int attrib_len = attributes[i+4] - attributes[i+3]; char *attrib = g_malloc(attrib_len + 1); @@ -90,6 +103,9 @@ attrib = purple_unescape_html(txt); g_free(txt); xmlnode_set_attrib_with_namespace(node, (const char*) attributes[i], attrib_ns, attrib); + if (prefix && *prefix) { + node->prefix = g_strdup(prefix); + } g_free(attrib); g_free(attrib_ns); }
--- a/libpurple/protocols/msn/error.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/msn/error.c Fri Jan 02 07:42:04 2009 +0000 @@ -27,191 +27,178 @@ const char * msn_error_get_text(unsigned int type, gboolean *debug) { - static char msg[MSN_BUF_LEN]; + static char msg[256]; + const char *result; *debug = FALSE; switch (type) { case 0: - g_snprintf(msg, sizeof(msg), - _("Unable to parse message")); + result = _("Unable to parse message"); *debug = TRUE; break; case 200: - g_snprintf(msg, sizeof(msg), - _("Syntax Error (probably a client bug)")); + result = _("Syntax Error (probably a client bug)"); *debug = TRUE; break; case 201: - g_snprintf(msg, sizeof(msg), - _("Invalid email address")); + result = _("Invalid email address"); break; case 205: - g_snprintf(msg, sizeof(msg), _("User does not exist")); + result = _("User does not exist"); break; case 206: - g_snprintf(msg, sizeof(msg), - _("Fully qualified domain name missing")); + result = _("Fully qualified domain name missing"); break; case 207: - g_snprintf(msg, sizeof(msg), _("Already logged in")); + result = _("Already logged in"); break; case 208: - g_snprintf(msg, sizeof(msg), _("Invalid username")); + result = _("Invalid username"); break; case 209: - g_snprintf(msg, sizeof(msg), _("Invalid friendly name")); + result = _("Invalid friendly name"); break; case 210: - g_snprintf(msg, sizeof(msg), _("List full")); + result = _("List full"); break; case 215: - g_snprintf(msg, sizeof(msg), _("Already there")); + result = _("Already there"); *debug = TRUE; break; case 216: - g_snprintf(msg, sizeof(msg), _("Not on list")); + result = _("Not on list"); break; case 217: - g_snprintf(msg, sizeof(msg), _("User is offline")); + result = _("User is offline"); break; case 218: - g_snprintf(msg, sizeof(msg), _("Already in the mode")); + result = _("Already in the mode"); *debug = TRUE; break; case 219: - g_snprintf(msg, sizeof(msg), _("Already in opposite list")); + result = _("Already in opposite list"); *debug = TRUE; break; case 223: - g_snprintf(msg, sizeof(msg), _("Too many groups")); + result = _("Too many groups"); break; case 224: - g_snprintf(msg, sizeof(msg), _("Invalid group")); + result = _("Invalid group"); break; case 225: - g_snprintf(msg, sizeof(msg), _("User not in group")); + result = _("User not in group"); break; case 229: - g_snprintf(msg, sizeof(msg), _("Group name too long")); + result = _("Group name too long"); break; case 230: - g_snprintf(msg, sizeof(msg), _("Cannot remove group zero")); + result = _("Cannot remove group zero"); *debug = TRUE; break; case 231: - g_snprintf(msg, sizeof(msg), - _("Tried to add a user to a group " - "that doesn't exist")); + result = _("Tried to add a user to a group that doesn't exist"); break; case 280: - g_snprintf(msg, sizeof(msg), _("Switchboard failed")); + result = _("Switchboard failed"); *debug = TRUE; break; case 281: - g_snprintf(msg, sizeof(msg), _("Notify transfer failed")); + result = _("Notify transfer failed"); *debug = TRUE; break; case 300: - g_snprintf(msg, sizeof(msg), _("Required fields missing")); + result = _("Required fields missing"); *debug = TRUE; break; case 301: - g_snprintf(msg, sizeof(msg), _("Too many hits to a FND")); + result = _("Too many hits to a FND"); *debug = TRUE; break; case 302: - g_snprintf(msg, sizeof(msg), _("Not logged in")); + result = _("Not logged in"); break; case 500: - g_snprintf(msg, sizeof(msg), - _("Service temporarily unavailable")); + result = _("Service temporarily unavailable"); break; case 501: - g_snprintf(msg, sizeof(msg), _("Database server error")); + result = _("Database server error"); *debug = TRUE; break; case 502: - g_snprintf(msg, sizeof(msg), _("Command disabled")); + result = _("Command disabled"); *debug = TRUE; break; case 510: - g_snprintf(msg, sizeof(msg), _("File operation error")); + result = _("File operation error"); *debug = TRUE; break; case 520: - g_snprintf(msg, sizeof(msg), _("Memory allocation error")); + result = _("Memory allocation error"); *debug = TRUE; break; case 540: - g_snprintf(msg, sizeof(msg), - _("Wrong CHL value sent to server")); + result = _("Wrong CHL value sent to server"); *debug = TRUE; break; case 600: - g_snprintf(msg, sizeof(msg), _("Server busy")); + result = _("Server busy"); break; case 601: - g_snprintf(msg, sizeof(msg), _("Server unavailable")); + result = _("Server unavailable"); break; case 602: - g_snprintf(msg, sizeof(msg), - _("Peer notification server down")); + result = _("Peer notification server down"); *debug = TRUE; break; case 603: - g_snprintf(msg, sizeof(msg), _("Database connect error")); + result = _("Database connect error"); *debug = TRUE; break; case 604: - g_snprintf(msg, sizeof(msg), - _("Server is going down (abandon ship)")); + result = _("Server is going down (abandon ship)"); break; case 605: - g_snprintf(msg, sizeof(msg), _("Server unavailable")); + result = _("Server unavailable"); break; case 707: - g_snprintf(msg, sizeof(msg), - _("Error creating connection")); + result = _("Error creating connection"); *debug = TRUE; break; case 710: - g_snprintf(msg, sizeof(msg), - _("CVR parameters are either unknown " - "or not allowed")); + result = _("CVR parameters are either unknown or not allowed"); *debug = TRUE; break; case 711: - g_snprintf(msg, sizeof(msg), _("Unable to write")); + result = _("Unable to write"); break; case 712: - g_snprintf(msg, sizeof(msg), _("Session overload")); + result = _("Session overload"); *debug = TRUE; break; case 713: - g_snprintf(msg, sizeof(msg), _("User is too active")); + result = _("User is too active"); break; case 714: - g_snprintf(msg, sizeof(msg), _("Too many sessions")); + result = _("Too many sessions"); break; case 715: - g_snprintf(msg, sizeof(msg), _("Passport not verified")); + result = _("Passport not verified"); break; case 717: - g_snprintf(msg, sizeof(msg), _("Bad friend file")); + result = _("Bad friend file"); *debug = TRUE; break; case 731: - g_snprintf(msg, sizeof(msg), _("Not expected")); + result = _("Not expected"); *debug = TRUE; break; case 800: - g_snprintf(msg, sizeof(msg), - _("Friendly name changes too rapidly")); + result = _("Friendly name changes too rapidly"); break; case 910: @@ -220,37 +207,34 @@ case 919: case 921: case 922: - g_snprintf(msg, sizeof(msg), _("Server too busy")); + result = _("Server too busy"); break; case 911: case 917: - g_snprintf(msg, sizeof(msg), _("Authentication failed")); + result = _("Authentication failed"); break; case 913: - g_snprintf(msg, sizeof(msg), _("Not allowed when offline")); + result = _("Not allowed when offline"); break; case 914: case 915: case 916: - g_snprintf(msg, sizeof(msg), _("Server unavailable")); + result = _("Server unavailable"); break; case 920: - g_snprintf(msg, sizeof(msg), _("Not accepting new users")); + result = _("Not accepting new users"); break; case 923: - g_snprintf(msg, sizeof(msg), - _("Kids Passport without parental consent")); + result = _("Kids Passport without parental consent"); break; case 924: - g_snprintf(msg, sizeof(msg), - _("Passport account not yet verified")); + result = _("Passport account not yet verified"); break; case 927: - g_snprintf(msg, sizeof(msg), - _("Passport account suspended")); + result = _("Passport account suspended"); break; case 928: - g_snprintf(msg, sizeof(msg), _("Bad ticket")); + result = _("Bad ticket"); *debug = TRUE; break; @@ -258,23 +242,25 @@ g_snprintf(msg, sizeof(msg), _("Unknown Error Code %d"), type); *debug = TRUE; + result = msg; break; } - return msg; + return result; } void msn_error_handle(MsnSession *session, unsigned int type) { - char buf[MSN_BUF_LEN]; + char *buf; gboolean debug; - g_snprintf(buf, sizeof(buf), _("MSN Error: %s\n"), - msn_error_get_text(type, &debug)); + buf = g_strdup_printf(_("MSN Error: %s\n"), + msn_error_get_text(type, &debug)); if (debug) purple_debug_warning("msn", "error %d: %s\n", type, buf); else purple_notify_error(session->account->gc, NULL, buf, NULL); + g_free(buf); }
--- a/libpurple/protocols/msn/oim.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/msn/oim.c Fri Jan 02 07:42:04 2009 +0000 @@ -596,6 +596,7 @@ MsnMessage *message; const char *date; const char *from; + const char *boundary; char *decode_msg = NULL; gsize body_len; char **tokens; @@ -608,27 +609,14 @@ MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM); purple_debug_info("msn", "oim body:{%s}\n", message->body); - if (!strcmp(msn_message_get_attr(message, "X-OIMProxy"), "MOSMS")) { - char *boundary; + boundary = msn_message_get_attr(message, "boundary"); + + if (boundary != NULL) { + char *bounds; char **part; - from = msn_message_get_attr(message, "X-OIM-originatingSource"); - - /* Match number to user's mobile number, FROM is a phone number - if the other side pages you using your phone number */ - if (!strncmp(from, "tel:+", 5)) { - MsnUser *user = msn_userlist_find_user_with_mobile_phone( - rdata->oim->session->userlist, from + 4); - - if (user && user->passport) - passport = g_strdup(user->passport); - } - if (passport == NULL) - passport = g_strdup(from); - - boundary = g_strdup_printf("--%s" MSG_OIM_LINE_DEM, - msn_message_get_attr(message, "boundary")); - tokens = g_strsplit(message->body, boundary, 0); + bounds = g_strdup_printf("--%s" MSG_OIM_LINE_DEM, boundary); + tokens = g_strsplit(message->body, bounds, 0); /* tokens+1 to skip the "This is a multipart message..." text */ for (part = tokens+1; *part != NULL; part++) { @@ -648,18 +636,33 @@ } g_strfreev(tokens); - g_free(boundary); + g_free(bounds); if (decode_msg == NULL) { purple_debug_error("msn", "Couldn't find text/plain OIM message.\n"); - g_free(passport); + msn_message_destroy(message); return; } } else { + decode_msg = (char *)purple_base64_decode(message->body, &body_len); + } + + from = msn_message_get_attr(message, "X-OIM-originatingSource"); + + /* Match number to user's mobile number, FROM is a phone number + if the other side pages you using your phone number */ + if (!strncmp(from, "tel:+", 5)) { + MsnUser *user = msn_userlist_find_user_with_mobile_phone( + rdata->oim->session->userlist, from + 4); + + if (user && user->passport) + passport = g_strdup(user->passport); + } + + if (passport == NULL) { char *start, *end; from = msn_message_get_attr(message, "From"); - decode_msg = (char *)purple_base64_decode(message->body, &body_len); tokens = g_strsplit(from, " ", 2); if (tokens[1] != NULL) @@ -687,6 +690,7 @@ g_free(passport); g_free(decode_msg); + msn_message_destroy(message); } /* Parse the XML data,
--- a/libpurple/protocols/myspace/myspace.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/myspace/myspace.c Fri Jan 02 07:42:04 2009 +0000 @@ -211,7 +211,6 @@ /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */ purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n", username ? username : "(NULL)"); - /* TODO: where is cloned message freed? Should be in _cb. */ msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg)); return TRUE; /* not sure of status yet - haven't sent! */ } @@ -1923,8 +1922,7 @@ msim_process(session, msg); - /* TODO: Free copy cloned from msim_preprocess_incoming(). */ - /* msim_msg_free(msg); */ + msim_msg_free(msg); msim_msg_free(body); } @@ -2731,9 +2729,15 @@ * doesn't seem like it would be necessary, but the official client * does it) */ - if (!msim_update_blocklist_for_buddy(session, buddy->name, FALSE, FALSE)) + if (!msim_update_blocklist_for_buddy(session, buddy->name, FALSE, FALSE)) { purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("blocklist command failed")); + return; + } + if (buddy->proto_data) { + msim_user_free(buddy->proto_data); + buddy->proto_data = NULL; + } } /** @@ -2823,6 +2827,13 @@ msim_update_blocklist_for_buddy(session, name, FALSE, FALSE); } +static void +msim_buddy_free(PurpleBuddy *buddy) +{ + msim_user_free(buddy->proto_data); + buddy->proto_data = NULL; +} + /** * Returns a string of a username in canonical form. Basically removes all the * spaces, lowercases the string, and looks up user IDs to usernames. @@ -3039,7 +3050,7 @@ NULL, /* alias_buddy */ NULL, /* group_buddy */ NULL, /* rename_group */ - NULL, /* buddy_free */ + msim_buddy_free, /* buddy_free */ NULL, /* convo_closed */ msim_normalize, /* normalize */ NULL, /* set_buddy_icon */
--- a/libpurple/protocols/myspace/session.h Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/myspace/session.h Fri Jan 02 07:42:04 2009 +0000 @@ -35,7 +35,7 @@ guint userid; /**< This user's numeric user ID */ gchar *username; /**< This user's unique username */ gboolean show_only_to_list; - int privacy_mode; + int privacy_mode; /**< This is a bitmask */ int offline_message_mode; gint fd; /**< File descriptor to/from server */
--- a/libpurple/protocols/myspace/user.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/myspace/user.c Fri Jan 02 07:42:04 2009 +0000 @@ -55,10 +55,9 @@ if (!buddy->proto_data) { /* No MsimUser for this buddy; make one. */ - /* TODO: where is this freed? */ user = g_new0(MsimUser, 1); user->buddy = buddy; - user->id = purple_blist_node_get_int(&buddy->node, "UserID"); + user->id = purple_blist_node_get_int((PurpleBlistNode*)buddy, "UserID"); buddy->proto_data = (gpointer)user; } @@ -67,6 +66,23 @@ return user; } +void msim_user_free(MsimUser *user) +{ + if (!user) + return; + + g_free(user->client_info); + g_free(user->gender); + g_free(user->location); + g_free(user->headline); + g_free(user->display_name); + g_free(user->username); + g_free(user->band_name); + g_free(user->song_name); + g_free(user->image_url); + g_free(user); +} + /** * Find and return an MsimUser * representing a user on the buddy list, or NULL. */ @@ -406,10 +422,11 @@ } if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN && - msim_msg_get_integer(msg, "lid") == MG_OWN_IM_INFO_LID) { + msim_msg_get_integer(msg, "lid") == MG_OWN_IM_INFO_LID) + { /* * Some of this info will be available on the buddy list if the - * has themselves as their own buddy. + * user has themselves as their own buddy. * * Much of the info is already available in MsimSession, * stored in msim_we_are_logged_on(). @@ -431,7 +448,7 @@ "idlist", MSIM_TYPE_STRING, g_strdup_printf("w%d|c%d", session->show_only_to_list ? 1 : 0, - session->privacy_mode), + session->privacy_mode & 1), NULL); } else if (msim_msg_get_integer(msg, "dsn") == MG_OWN_MYSPACE_INFO_DSN && msim_msg_get_integer(msg, "lid") == MG_OWN_MYSPACE_INFO_LID) {
--- a/libpurple/protocols/myspace/user.h Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/myspace/user.h Fri Jan 02 07:42:04 2009 +0000 @@ -47,6 +47,7 @@ typedef void (*MSIM_USER_LOOKUP_CB)(MsimSession *session, const MsimMessage *userinfo, gpointer data); MsimUser *msim_get_user_from_buddy(PurpleBuddy *buddy); +void msim_user_free(MsimUser *user); MsimUser *msim_find_user(MsimSession *session, const gchar *username); void msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full); gboolean msim_store_user_info(MsimSession *session, const MsimMessage *msg, MsimUser *user);
--- a/libpurple/protocols/oscar/odc.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/oscar/odc.c Fri Jan 02 07:42:04 2009 +0000 @@ -567,6 +567,7 @@ { purple_debug_info("oscar", "Unknown ODC frame type 0x%04hx, " "subtype 0x%04hx.\n", frame->type, frame->subtype); + g_free(frame); return; } @@ -607,6 +608,7 @@ g_free(tmp); peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL); + g_free(frame); return; }
--- a/libpurple/protocols/qq/AUTHORS Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/qq/AUTHORS Fri Jan 02 07:42:04 2009 +0000 @@ -1,7 +1,7 @@ Code Contributors ========= puzzlebird : original author -gfhuang : patches for libpurple 2.0.0beta2, maintainer +gfhuang(poppyer): patches for libpurple 2.0.0beta2, maintainer Yuan Qingyun : patches for libpurple 1.5.0, maintainer henryouly : file transfer, udp sock5 proxy and qq_show, maintainer hzhr : maintainer
--- a/libpurple/protocols/qq/ChangeLog Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/qq/ChangeLog Fri Jan 02 07:42:04 2009 +0000 @@ -1,3 +1,10 @@ +2008.12.25 - flos <lonicerae(at)gmail.com> + * References #7821 + * Updated authors + +2008.12.17 - flos <lonicerae(at)gmail.com> + * Minor fixed in buddy_info.c + 2008.12.06 - flos <lonicerae(at)gmail.com> * Removed version checking script in Makefiles since our developers all migrated to monotone * Use our development revision as OPENQ_VERSION in qq.c
--- a/libpurple/protocols/qq/buddy_info.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/qq/buddy_info.c Fri Jan 02 07:42:04 2009 +0000 @@ -790,7 +790,7 @@ bytes += qq_get32(&onlineTime, data + bytes); bytes += qq_get16(&level, data + bytes); bytes += qq_get16(&timeRemainder, data + bytes); - purple_debug_info("QQ", "level: %d, uid %d, tmOnline: %d, tmRemainder: %d\n", + purple_debug_info("QQ", "level: %d, uid %u, tmOnline: %d, tmRemainder: %d\n", level, uid, onlineTime, timeRemainder); bd = qq_buddy_data_find(gc, uid); @@ -825,12 +825,12 @@ bytes += qq_get32(&onlineTime, data + bytes); bytes += qq_get16(&level, data + bytes); bytes += qq_get16(&timeRemainder, data + bytes); - purple_debug_info("QQ", "level: %d, uid %d, tmOnline: %d, tmRemainder: %d\n", + purple_debug_info("QQ", "level: %d, uid %u, tmOnline: %d, tmRemainder: %d\n", level, uid, onlineTime, timeRemainder); bd = qq_buddy_data_find(gc, uid); if (bd == NULL) { - purple_debug_error("QQ", "Got levels of %d not in my buddy list\n", uid); + purple_debug_error("QQ", "Got levels of %u not in my buddy list\n", uid); return; }
--- a/libpurple/protocols/qq/group_internal.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/qq/group_internal.c Fri Jan 02 07:42:04 2009 +0000 @@ -30,7 +30,7 @@ #include "group_internal.h" #include "utils.h" -static qq_room_data *room_data_new(guint32 id, guint32 ext_id, gchar *title) +static qq_room_data *room_data_new(guint32 id, guint32 ext_id, const gchar *title) { qq_room_data *rmd; @@ -62,9 +62,9 @@ value = g_hash_table_lookup(data, QQ_ROOM_KEY_INTERNAL_ID); id = value ? strtoul(value, NULL, 10) : 0; - value= g_hash_table_lookup(data, QQ_ROOM_KEY_EXTERNAL_ID); + value = g_hash_table_lookup(data, QQ_ROOM_KEY_EXTERNAL_ID); ext_id = value ? strtoul(value, NULL, 10) : 0; - value = g_strdup(g_hash_table_lookup(data, QQ_ROOM_KEY_TITLE_UTF8)); + value = g_hash_table_lookup(data, QQ_ROOM_KEY_TITLE_UTF8); rmd = room_data_new(id, ext_id, value); rmd->my_role = QQ_ROOM_ROLE_YES;
--- a/libpurple/protocols/qq/group_opt.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/qq/group_opt.c Fri Jan 02 07:42:04 2009 +0000 @@ -416,11 +416,6 @@ bytes += qq_get_vstr(&reason, QQ_CHARSET_DEFAULT, data + bytes); - add_req = g_new0(qq_room_req, 1); - add_req->gc = gc; - add_req->id = id; - add_req->member = member_id; - purple_debug_info("QQ", "%u requested to join room, ext id %u\n", member_id, ext_id); rmd = qq_room_data_find(gc, id); @@ -442,6 +437,11 @@ who = uid_to_purple_name(member_id); msg = g_strdup_printf(_("%u request to join Qun %u"), member_id, ext_id); + add_req = g_new0(qq_room_req, 1); + add_req->gc = gc; + add_req->id = id; + add_req->member = member_id; + purple_request_action(gc, _("QQ Qun Operation"), msg, reason, PURPLE_DEFAULT_ACTION_NONE,
--- a/libpurple/protocols/qq/qq.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/qq/qq.c Fri Jan 02 07:42:04 2009 +0000 @@ -626,7 +626,7 @@ g_string_append(info, "puzzlebird<br>\n"); g_string_append(info, "<br>\n"); g_string_append(info, _("<p><b>Code Contributors</b>:<br>\n")); - g_string_append(info, "gfhuang : patches for libpurple 2.0.0beta2, maintainer<br>\n"); + g_string_append(info, "gfhuang(poppyer) : patches for libpurple 2.0.0beta2, maintainer<br>\n"); g_string_append(info, "Yuan Qingyun : patches for libpurple 1.5.0, maintainer<br>\n"); g_string_append(info, "henryouly : file transfer, udp sock5 proxy and qq_show, maintainer<br>\n"); g_string_append(info, "hzhr : maintainer<br>\n");
--- a/libpurple/protocols/qq/qq_network.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/qq/qq_network.c Fri Jan 02 07:42:04 2009 +0000 @@ -468,7 +468,7 @@ static void udp_pending(gpointer data, gint source, PurpleInputCondition cond) { - PurpleConnection *gc = (PurpleConnection *) data; + PurpleConnection *gc = NULL; qq_data *qd; guint8 *buf; gint buf_len;
--- a/libpurple/protocols/sametime/sametime.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/protocols/sametime/sametime.c Fri Jan 02 07:42:04 2009 +0000 @@ -3724,7 +3724,6 @@ gc->flags |= PURPLE_CONNECTION_NO_IMAGES; user = g_strdup(purple_account_get_username(account)); - pass = g_strdup(purple_account_get_password(account)); host = strrchr(user, ':'); if(host) { @@ -3741,10 +3740,12 @@ if(! host || ! *host) { /* somehow, we don't have a host to connect to. Well, we need one to actually continue, so let's ask the user directly. */ + g_free(user); prompt_host(gc); return; } + pass = g_strdup(purple_account_get_password(account)); port = purple_account_get_int(account, MW_KEY_PORT, MW_PLUGIN_DEFAULT_PORT); DEBUG_INFO("user: '%s'\n", user);
--- a/libpurple/purple-url-handler Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/purple-url-handler Fri Jan 02 07:42:04 2009 +0000 @@ -299,6 +299,31 @@ else: goim(account, screenname) +def gtalk(uri): + protocol = "prpl-jabber" + match = re.match(r"^gtalk:([^?]*)(\?(.*))", uri) + if not match: + print "Invalid gtalk URI: %s" % uri + return + + command = urllib.unquote_plus(match.group(1)) + paramstring = match.group(3) + params = {} + if paramstring: + for param in paramstring.split("&"): + key, value = extendlist(param.split("=", 1), 2, "") + params[key] = urllib.unquote_plus(value) + accountname = params.get("from_jid", "") + jid = params.get("jid", "") + + account = findaccount(protocol, accountname) + + if command.lower() == "chat": + goim(account, jid) + elif command.lower() == "call": + # XXX V&V prompt to establish call + goim(account, jid) + def ymsgr(uri): protocol = "prpl-yahoo" match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri) @@ -355,6 +380,8 @@ sip(uri) elif type == "xmpp": xmpp(uri) + elif type == "gtalk": + gtalk(uri) elif type == "ymsgr": ymsgr(uri) else:
--- a/libpurple/server.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/server.c Fri Jan 02 07:42:04 2009 +0000 @@ -804,7 +804,7 @@ { PurpleAccount *account; char buf2[BUF_LONG]; - struct chat_invite_data *cid = g_new0(struct chat_invite_data, 1); + struct chat_invite_data *cid; int plugin_return; account = purple_connection_get_account(gc); @@ -817,6 +817,8 @@ } } + cid = g_new0(struct chat_invite_data, 1); + plugin_return = GPOINTER_TO_INT(purple_signal_emit_return_1( purple_conversations_get_handle(), "chat-invited", account, who, name, message, data));
--- a/libpurple/util.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/util.c Fri Jan 02 07:42:04 2009 +0000 @@ -1676,20 +1676,18 @@ size = "xx-small"; break; case 2: - size = "x-small"; + size = "small"; break; case 3: - size = "small"; + size = "medium"; break; case 4: - size = "medium"; + size = "large"; break; case 5: - size = "large"; + size = "x-large"; break; case 6: - size = "x-large"; - break; case 7: size = "xx-large"; break;
--- a/libpurple/value.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/value.c Fri Jan 02 07:42:04 2009 +0000 @@ -320,6 +320,7 @@ purple_value_set_string(PurpleValue *value, const char *data) { g_return_if_fail(value != NULL); + g_return_if_fail(data == NULL || g_utf8_validate(data, -1, NULL)); g_free(value->data.string_data); value->data.string_data = g_strdup(data);
--- a/libpurple/win32/libc_interface.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/win32/libc_interface.c Fri Jan 02 07:42:04 2009 +0000 @@ -31,13 +31,7 @@ #include "config.h" #include "debug.h" #include "libc_internal.h" -#if GLIB_CHECK_VERSION(2,6,0) -# include <glib/gstdio.h> -#else -#define g_remove remove -#define g_rename rename -#define g_stat stat -#endif +#include <glib/gstdio.h> #ifdef ENABLE_NLS # include <locale.h> @@ -58,6 +52,9 @@ # define dngettext(Domain, Singular, Plural, Number) ((Number == 1) ? ((const char *)Singular) : ((const char *)Plural)) #endif +#ifndef S_ISDIR +# define S_ISDIR(m) (((m)&S_IFDIR)==S_IFDIR) +#endif static char errbuf[1024];
--- a/libpurple/xmlnode.c Fri Dec 19 08:10:19 2008 +0000 +++ b/libpurple/xmlnode.c Fri Jan 02 07:42:04 2009 +0000 @@ -662,7 +662,7 @@ vsnprintf(errmsg, sizeof(errmsg), msg, args); va_end(args); - purple_debug_error("xmlnode", "Error parsing xml file: %s\n", errmsg); + purple_debug_error("xmlnode", "Error parsing xml file: %s", errmsg); } static xmlSAXHandler xmlnode_parser_libxml = {
--- a/pidgin/gtkaccount.c Fri Dec 19 08:10:19 2008 +0000 +++ b/pidgin/gtkaccount.c Fri Jan 02 07:42:04 2009 +0000 @@ -286,25 +286,27 @@ screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) { GdkColor color = {0, 34952, 35466, 34181}; - GHashTable *table; - const char *label; - - table = dialog->prpl_info->get_account_text_table(NULL); - label = g_hash_table_lookup(table, "login_label"); - - if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') { - /* We have to avoid hitting the screenname_changed_cb function - * because it enables buttons we don't want enabled yet ;) - */ - g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); - gtk_entry_set_text(GTK_ENTRY(widget), label); - /* Make sure we can hit it again */ - g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); - gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color); + GHashTable *table = NULL; + const char *label = NULL; + + if(PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(dialog->prpl_info, get_account_text_table)) { + table = dialog->prpl_info->get_account_text_table(NULL); + label = g_hash_table_lookup(table, "login_label"); + + if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') { + /* We have to avoid hitting the screenname_changed_cb function + * because it enables buttons we don't want enabled yet ;) + */ + g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); + gtk_entry_set_text(GTK_ENTRY(widget), label); + /* Make sure we can hit it again */ + g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); + gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color); + } + + g_hash_table_destroy(table); } - g_hash_table_destroy(table); - return FALSE; }
--- a/pidgin/gtkblist.c Fri Dec 19 08:10:19 2008 +0000 +++ b/pidgin/gtkblist.c Fri Jan 02 07:42:04 2009 +0000 @@ -602,7 +602,7 @@ break; case PURPLE_BLIST_GROUP_NODE: dest = purple_find_group(arg2); - if (dest != NULL && strcmp(arg2, ((PurpleGroup*) node)->name)) { + if (dest != NULL && purple_utf8_strcasecmp(arg2, ((PurpleGroup*) node)->name)) { pidgin_dialogs_merge_groups((PurpleGroup*) node, arg2); } else purple_blist_rename_group((PurpleGroup*)node, arg2); @@ -7655,6 +7655,7 @@ GtkAccelGroup *accel_group = NULL; GList *l = NULL, *accounts = NULL; gboolean disabled_accounts = FALSE; + gboolean enabled_accounts = FALSE; if (accountmenu == NULL) return; @@ -7708,10 +7709,16 @@ G_CALLBACK(enable_account_cb), account); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); gtk_widget_show(menuitem); + } else { + enabled_accounts = TRUE; } } + if (!enabled_accounts) + return; + pidgin_separator(accountmenu); + accel_group = gtk_menu_get_accel_group(GTK_MENU(accountmenu)); for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) { char *buf = NULL; @@ -7723,67 +7730,63 @@ PurplePlugin *plugin = NULL; account = accounts->data; - accel_group = gtk_menu_get_accel_group(GTK_MENU(accountmenu)); - - if(purple_account_get_enabled(account, PIDGIN_UI)) { - buf = g_strconcat(purple_account_get_username(account), " (", - purple_account_get_protocol_name(account), ")", NULL); - menuitem = gtk_image_menu_item_new_with_label(buf); - accel_path_buf = g_strconcat(N_("<PurpleMain>/Accounts/"), buf, NULL); - g_free(buf); - pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL); - if (pixbuf != NULL) - { - if (!purple_account_is_connected(account)) - gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, - 0.0, FALSE); - image = gtk_image_new_from_pixbuf(pixbuf); - g_object_unref(G_OBJECT(pixbuf)); - gtk_widget_show(image); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); - } - gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); + + if (!purple_account_get_enabled(account, PIDGIN_UI)) + continue; + + buf = g_strconcat(purple_account_get_username(account), " (", + purple_account_get_protocol_name(account), ")", NULL); + menuitem = gtk_image_menu_item_new_with_label(buf); + accel_path_buf = g_strconcat(N_("<PurpleMain>/Accounts/"), buf, NULL); + g_free(buf); + pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL); + if (pixbuf != NULL) { + if (!purple_account_is_connected(account)) + gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, + 0.0, FALSE); + image = gtk_image_new_from_pixbuf(pixbuf); + g_object_unref(G_OBJECT(pixbuf)); + gtk_widget_show(image); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); + } + gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); + gtk_widget_show(menuitem); + + submenu = gtk_menu_new(); + gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); + gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf); + g_free(accel_path_buf); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); + gtk_widget_show(submenu); + + + menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account")); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(modify_account_cb), account); + gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); + gtk_widget_show(menuitem); + + pidgin_separator(submenu); + + gc = purple_account_get_connection(account); + plugin = gc && PURPLE_CONNECTION_IS_CONNECTED(gc) ? gc->prpl : NULL; + if (plugin && PURPLE_PLUGIN_HAS_ACTIONS(plugin)) { + build_plugin_actions(submenu, plugin, gc); + } else { + menuitem = gtk_menu_item_new_with_label(_("No actions available")); + gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); + gtk_widget_set_sensitive(menuitem, FALSE); gtk_widget_show(menuitem); - - submenu = gtk_menu_new(); - gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); - gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf); - g_free(accel_path_buf); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); - gtk_widget_show(submenu); - - - menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account")); - g_signal_connect(G_OBJECT(menuitem), "activate", - G_CALLBACK(modify_account_cb), account); - gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); - gtk_widget_show(menuitem); - - pidgin_separator(submenu); - - gc = purple_account_get_connection(account); - plugin = gc && PURPLE_CONNECTION_IS_CONNECTED(gc) ? gc->prpl : NULL; - if (plugin && PURPLE_PLUGIN_HAS_ACTIONS(plugin)) { - build_plugin_actions(submenu, plugin, gc); - } else { - menuitem = gtk_menu_item_new_with_label(_("No actions available")); - gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); - gtk_widget_set_sensitive(menuitem, FALSE); - gtk_widget_show(menuitem); - } - - pidgin_separator(submenu); - - menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable")); - g_signal_connect(G_OBJECT(menuitem), "activate", - G_CALLBACK(disable_account_cb), account); - gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); - gtk_widget_show(menuitem); - } else { - disabled_accounts = TRUE; } - } - + + pidgin_separator(submenu); + + menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable")); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(disable_account_cb), account); + gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); + gtk_widget_show(menuitem); + } } static GList *plugin_submenus = NULL;
--- a/pidgin/gtkdialogs.c Fri Dec 19 08:10:19 2008 +0000 +++ b/pidgin/gtkdialogs.c Fri Jan 02 07:42:04 2009 +0000 @@ -100,6 +100,7 @@ /* Order: Alphabetical by Last Name */ static const struct developer patch_writers[] = { + {"Paul Aurich", NULL, NULL }, {"Marcus 'malu' Lundblad", NULL, NULL}, {"Dennis 'EvilDennisR' Ristuccia", N_("Senior Contributor/QA"), NULL}, {"Peter 'Fmoo' Ruibal", NULL, NULL},
--- a/pidgin/gtkimhtml.c Fri Dec 19 08:10:19 2008 +0000 +++ b/pidgin/gtkimhtml.c Fri Jan 02 07:42:04 2009 +0000 @@ -3117,15 +3117,15 @@ else if (g_ascii_strcasecmp(size, "smaller") == 0 || g_ascii_strcasecmp(size, "x-small") == 0) font->size = 2; - else if (g_ascii_strcasecmp(size, "larger") == 0 - || g_ascii_strcasecmp(size, "medium") == 0) + else if (g_ascii_strcasecmp(size, "medium") == 0) + font->size = 3; + else if (g_ascii_strcasecmp(size, "large") == 0 + || g_ascii_strcasecmp(size, "larger") == 0) font->size = 4; - else if (g_ascii_strcasecmp(size, "large") == 0) + else if (g_ascii_strcasecmp(size, "x-large") == 0) font->size = 5; - else if (g_ascii_strcasecmp(size, "x-large") == 0) + else if (g_ascii_strcasecmp(size, "xx-large") == 0) font->size = 6; - else if (g_ascii_strcasecmp(size, "xx-large") == 0) - font->size = 7; /* * TODO: Handle other values, like percentages, or
--- a/po/ca.po Fri Dec 19 08:10:19 2008 +0000 +++ b/po/ca.po Fri Jan 02 07:42:04 2009 +0000 @@ -33,8 +33,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-17 21:51+0100\n" -"PO-Revision-Date: 2008-12-15 02:34+0100\n" +"POT-Creation-Date: 2008-12-19 17:53+0100\n" +"PO-Revision-Date: 2008-12-20 17:15+0100\n" "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n" "Language-Team: Catalan <tradgnome@softcatala.net>\n" "MIME-Version: 1.0\n" @@ -442,7 +442,7 @@ msgstr "Els grups buits" msgid "Offline buddies" -msgstr "Els amics desconnectats" +msgstr "Amics desconnectats" msgid "Sort" msgstr "Ordena" @@ -1530,10 +1530,10 @@ msgstr "Fora de línia" msgid "Online Buddies" -msgstr "Els amics desconnectats" +msgstr "Amics connectats" msgid "Offline Buddies" -msgstr "Els amics desconnectats" +msgstr "Amics desconnectats" msgid "Online/Offline" msgstr "En línia/fora de línia" @@ -4021,7 +4021,7 @@ msgstr "Directori de cerca" msgid "_Room:" -msgstr "Sa_la:" +msgstr "_Sala:" msgid "_Server:" msgstr "_Servidor:" @@ -10512,7 +10512,7 @@ "Introduïu la informació necessària sobre el xat al qual vulgueu entrar.\n" msgid "_Account:" -msgstr "_Compte:" +msgstr "C_ompte:" msgid "_Block" msgstr "_Bloca" @@ -10568,7 +10568,7 @@ #. join button msgid "_Join" -msgstr "En_tra" +msgstr "_Entra" msgid "Auto-Join" msgstr "Entra automàticament" @@ -10615,7 +10615,7 @@ msgstr "/Amics/_Visualitza el registre de l'usuari..." msgid "/Buddies/Sh_ow" -msgstr "/Amics/M_ostra" +msgstr "/Amics/Mos_tra" msgid "/Buddies/Show/_Offline Buddies" msgstr "/Amics/Mostra/Amics des_connectats" @@ -10669,7 +10669,7 @@ msgstr "/Eines/_Connectors" msgid "/Tools/Pr_eferences" -msgstr "/Eines/Preferè_ncies" +msgstr "/Eines/Pre_ferències" msgid "/Tools/Pr_ivacy" msgstr "/Eines/_Privadesa" @@ -10678,7 +10678,7 @@ msgstr "/Eines/Em_oticona" msgid "/Tools/_File Transfers" -msgstr "/Eines/Transferència de _fitxers" +msgstr "/Eines/_Transferència de fitxers" msgid "/Tools/R_oom List" msgstr "/Eines/_Llista de sales" @@ -10897,13 +10897,13 @@ "la llista d'amics.\n" msgid "A_lias:" -msgstr "À_lies:" +msgstr "Àl_ies:" msgid "Auto_join when account becomes online." -msgstr "Entra _automàticament quant el compte estigui connectat." +msgstr "_Entra automàticament quant el compte estigui connectat." msgid "_Remain in chat after window is closed." -msgstr "_Continua al xat quan la finestra es tanqui." +msgstr "Co_ntinua al xat quan la finestra es tanqui." msgid "Please enter the name of the group to be added." msgstr "Introduïu el nom del grup que vulgueu afegir." @@ -11787,7 +11787,7 @@ msgstr "Temps restant:" msgid "Close this window when all transfers _finish" -msgstr "Tanca aquesta finestra quan totes les transferències hagin _finalitzat" +msgstr "Tanca aquesta _finestra quan totes les transferències hagin finalitzat" msgid "C_lear finished transfers" msgstr "_Neteja les transferències acabades" @@ -12315,7 +12315,7 @@ msgstr "<b>Nom del fitxer:</b>" msgid "Configure Pl_ugin" -msgstr "Config_ura el connector" +msgstr "_Configura el connector" msgid "<b>Plugin Details</b>" msgstr "<b>Detalls del connector</b>" @@ -12329,46 +12329,46 @@ msgstr "Avisa dels Whom" msgid "_Buddy name:" -msgstr "Nom de l'_amic:" +msgstr "_Nom de l'amic:" msgid "Si_gns on" -msgstr "Es _connecti" +msgstr "Es conn_ecti" msgid "Signs o_ff" -msgstr "Es _desconnecti" +msgstr "Es de_sconnecti" msgid "Goes a_way" msgstr "Passi a _absent" msgid "Ret_urns from away" -msgstr "To_rni a estar present" +msgstr "_Torni a estar present" msgid "Becomes _idle" msgstr "Passi a _inactiu" msgid "Is no longer i_dle" -msgstr "Ja no estigui i_nactiu" +msgstr "_Ja no estigui inactiu" msgid "Starts _typing" -msgstr "Comenci a _escriure" +msgstr "Comenci a esc_riure" msgid "P_auses while typing" -msgstr "S'_aturi mentre tecleja" +msgstr "S'at_uri mentre tecleja" msgid "Stops t_yping" -msgstr "Pari d'e_scriure" +msgstr "_Pari d'escriure" msgid "Sends a _message" msgstr "Enviï un _missatge" msgid "Ope_n an IM window" -msgstr "Obre u_na finestra de MI" +msgstr "Obre una _finestra de MI" msgid "_Pop up a notification" -msgstr "Mostra una _notificació emergent" +msgstr "Mostra una notificació emer_gent" msgid "Send a _message" -msgstr "Envia un _missatge" +msgstr "En_via un missatge" msgid "E_xecute a command" msgstr "E_xecuta una ordre" @@ -12376,17 +12376,21 @@ msgid "P_lay a sound" msgstr "Reproduei_x un so" +# Sense accelerador expressament (josep) msgid "Brows_e..." -msgstr "Nav_ega..." - +msgstr "Navega..." + +# Sense accelerador expressament (josep) msgid "Br_owse..." -msgstr "Na_vega..." - +msgstr "Navega..." + +# Sense accelerador expressament (josep) msgid "Pre_view" -msgstr "Pre_visualitza" - +msgstr "Previsualitza" + +# Sense accelerador expressament (josep) msgid "P_ounce only when my status is not Available" -msgstr "Avisa n_omés quan el meu estat no sigui disponible" +msgstr "Avisa només quan el meu estat no estigui disponible" msgid "_Recurring" msgstr "_Recurrent" @@ -12420,7 +12424,7 @@ msgstr "Icona d'estat" msgid "_Show system tray icon:" -msgstr "Mostra la icona d'estat:" +msgstr "_Mostra la icona d'estat:" msgid "On unread messages" msgstr "Si hi ha missatges sense llegir" @@ -12440,10 +12444,10 @@ msgstr "Pestanyes" msgid "Show IMs and chats in _tabbed windows" -msgstr "Mostra MI i xats en finestres amb _pestanyes" +msgstr "Mostra MI i _xats en finestres amb pestanyes" msgid "Show close b_utton on tabs" -msgstr "Mosta el b_otó de tancar a les pestanyes" +msgstr "Mosta el _botó de tancar a les pestanyes" msgid "_Placement:" msgstr "_Posicionament:" @@ -12467,10 +12471,10 @@ msgstr "Vertical dret" msgid "N_ew conversations:" -msgstr "Converses noves:" +msgstr "Converses _noves:" msgid "Show _formatting on incoming messages" -msgstr "Mostra el format dels missatges entrants" +msgstr "Mostra el _format dels missatges entrants" msgid "Close IMs immediately when the tab is closed" msgstr "Tanca la missatgeria quan es tanqui la pestanya" @@ -12485,10 +12489,10 @@ msgstr "_Notifica als amics quan els escrigui" msgid "Highlight _misspelled words" -msgstr "Ressalta les paraules _mal escrites" +msgstr "_Ressalta les paraules mal escrites" msgid "Use smooth-scrolling" -msgstr "Utilitza el desplaçament suau" +msgstr "Empra el desplaçament suau" msgid "F_lash window when IMs are received" msgstr "_Fes que la finestra faci un flaix quan hi arribin missatges" @@ -12503,13 +12507,13 @@ msgstr "Tipus de lletra" msgid "Use document font from _theme" -msgstr "Empra el tipus de lletra del document del _tema" +msgstr "_Empra el tipus de lletra del document del tema" msgid "Use font from _theme" msgstr "Empra el tipus de lletra del _tema" msgid "Conversation _font:" -msgstr "_Tipus de lletra de la conversa:" +msgstr "Tipus de _lletra de la conversa:" msgid "Default Formatting" msgstr "Format per defecte" @@ -12519,7 +12523,7 @@ "that support formatting." msgstr "" "Així és com els missatges de text sortints apareixeran quan feu servir " -"protocols que implementin el text formatat." +"protocols que permetin el text formatat." msgid "Cannot start proxy configuration program." msgstr "" @@ -12538,7 +12542,7 @@ msgstr "Detecta l'_adreça IP automàticament" msgid "Public _IP:" -msgstr "_IP pública:" +msgstr "IP _pública:" msgid "Ports" msgstr "Ports" @@ -12547,7 +12551,7 @@ msgstr "_Habilita la desviació automàtica de ports de l'encaminador" msgid "_Manually specify range of ports to listen on" -msgstr "Especifica _manualment el rang de ports on escoltar" +msgstr "_Especifica manualment el rang de ports on escoltar" msgid "_Start port:" msgstr "Port _inicial:" @@ -12654,13 +12658,13 @@ msgstr "_Format del registre:" msgid "Log all _instant messages" -msgstr "_Registra tots els missatges instantanis" +msgstr "Registra tots els _missatges instantanis" msgid "Log all c_hats" msgstr "Registra tots els _xats" msgid "Log all _status changes to system log" -msgstr "Regi_stra tots els canvis d'estat al registre del sistema" +msgstr "Registra tots els _canvis d'estat al registre del sistema" msgid "Sound Selection" msgstr "Selecció de sons" @@ -12707,10 +12711,10 @@ "(%s per al nom de fitxer)" msgid "M_ute sounds" -msgstr "In_habilita els sons" +msgstr "_Inhabilita els sons" msgid "Sounds when conversation has _focus" -msgstr "Sons quan la conversa tingui el _focus" +msgstr "_Sons quan la conversa tingui el focus" msgid "_Enable sounds:" msgstr "_Habilita els sons:" @@ -12722,13 +12726,13 @@ msgstr "Reprodueix" msgid "_Browse..." -msgstr "Nav_ega..." +msgstr "_Navega..." msgid "_Reset" msgstr "_Reinicia" msgid "_Report idle time:" -msgstr "Informa del _temps d'inactivitat:" +msgstr "_Informa del temps d'inactivitat:" msgid "Based on keyboard or mouse use" msgstr "Basat en l'ús del teclat o el ratolí" @@ -12744,23 +12748,23 @@ msgstr "Auto-absència" msgid "Change status when _idle" -msgstr "Canvia l'estat quan estigui _inactiu" +msgstr "_Canvia l'estat quan estigui inactiu" msgid "_Minutes before becoming idle:" msgstr "_Minuts abans de passar a inactiu:" msgid "Change _status to:" -msgstr "Canvia l'e_stat a:" +msgstr "Canvia l'_estat a:" #. Signon status stuff msgid "Status at Startup" msgstr "L'estat en iniciar" msgid "Use status from last _exit at startup" -msgstr "_En iniciar, empra el mateix estat que en sortir per darrer cop" +msgstr "En i_niciar, empra el mateix estat que en sortir per darrer cop" msgid "Status to a_pply at startup:" -msgstr "Es_tatus a utilitzar en iniciar:" +msgstr "Estat a _utilitzar en iniciar:" msgid "Interface" msgstr "Interfície" @@ -12800,7 +12804,7 @@ #. Remove All button msgid "Remove Al_l" -msgstr "Suprimeix-ho _tot" +msgstr "S_uprimeix-ho tot" msgid "Permit User" msgstr "Permet l'usuari" @@ -12859,11 +12863,11 @@ #. list button msgid "_Get List" -msgstr "_Aconsegueix la llista" +msgstr "Aconsegueix la _llista" #. add button msgid "_Add Chat" -msgstr "_Afegeix el xat" +msgstr "Afegeix el _xat" # He omès "saved", que sembla que no hi cal (josep) msgid "Are you sure you want to delete the selected saved statuses?" @@ -13075,7 +13079,7 @@ msgstr "Tanca les _pestanyes" msgid "_Get Info" -msgstr "_Aconsegueix informació" +msgstr "Aconsegueix _informació" msgid "_Invite" msgstr "Conv_ida" @@ -13226,7 +13230,7 @@ msgstr "Missatges ressaltats" msgid "System Messages" -msgstr "Missatge del sistema" +msgstr "Missatges del sistema" msgid "Sent Messages" msgstr "Missatges enviats" @@ -13349,10 +13353,9 @@ msgid "New Person" msgstr "Nova persona" -# FIXME: seleccioneu un amic? #. "Select Buddy" button msgid "Select Buddy" -msgstr "Seleccioneu un amic" +msgstr "Selecciona" #. Add the label. msgid ""
--- a/po/ca@valencia.po Fri Dec 19 08:10:19 2008 +0000 +++ b/po/ca@valencia.po Fri Jan 02 07:42:04 2009 +0000 @@ -33,8 +33,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-17 21:53+0100\n" -"PO-Revision-Date: 2008-12-15 02:34+0100\n" +"POT-Creation-Date: 2008-12-19 17:53+0100\n" +"PO-Revision-Date: 2008-12-20 17:15+0100\n" "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n" "Language-Team: Catalan <tradgnome@softcatala.net>\n" "MIME-Version: 1.0\n" @@ -100,7 +100,7 @@ msgstr "No hi ha connectors de protocol instal·lats." msgid "(You probably forgot to 'make install'.)" -msgstr "(Segurament vos heu oblidat de fer un «make install».)" +msgstr "(Segurament us heu oblidat de fer un «make install».)" msgid "Modify Account" msgstr "Modifica el compte" @@ -412,8 +412,8 @@ "Please enter the username or alias of the person whose log you would like to " "view." msgstr "" -"Introduïu el nom d'usuari o l'àlies de la persona de la qual vulgueu vore el " -"registre." +"Introduïu el nom d'usuari o l'àlies de la persona de la qual vulgueu veure " +"el registre." #. Create the "Options" frame. msgid "Options" @@ -441,7 +441,7 @@ msgstr "Els grups buits" msgid "Offline buddies" -msgstr "Els amics desconnectats" +msgstr "Amics desconnectats" msgid "Sort" msgstr "Ordena" @@ -992,7 +992,7 @@ msgid "" "Please open the debug window and try again to see the exact error message." msgstr "" -"Obriu la finestra de depuració i proveu de nou si podeu vore el missatge " +"Obriu la finestra de depuració i proveu de nou si podeu veure el missatge " "d'error exacte." msgid "Select plugin to install" @@ -1112,11 +1112,11 @@ #, c-format msgid "%s has started typing to you (%s)" -msgstr "%s vos ha començat a escriure (%s)" +msgstr "%s us ha començat a escriure (%s)" #, c-format msgid "%s has paused while typing to you (%s)" -msgstr "%s s'ha aturat mentre vos escrivia (%s)" +msgstr "%s s'ha aturat mentre us escrivia (%s)" #, c-format msgid "%s has signed on (%s)" @@ -1132,7 +1132,7 @@ #, c-format msgid "%s has stopped typing to you (%s)" -msgstr "%s ha deixat d'escriure-vos (%s)" +msgstr "%s ha deixat d'escriure-us (%s)" #, c-format msgid "%s has signed off (%s)" @@ -1148,7 +1148,7 @@ #, c-format msgid "%s has sent you a message. (%s)" -msgstr "%s vos ha enviat un missatge. (%s)" +msgstr "%s us ha enviat un missatge. (%s)" #, c-format msgid "Unknown pounce event. Please report this!" @@ -1450,7 +1450,7 @@ #, c-format msgid "%s sent you a message" -msgstr "%s vos ha enviat un missatge" +msgstr "%s us ha enviat un missatge" #, c-format msgid "%s said your nick in %s" @@ -1458,7 +1458,7 @@ #, c-format msgid "%s sent a message in %s" -msgstr "%s vos ha enviat un missatge a %s" +msgstr "%s us ha enviat un missatge a %s" msgid "Buddy signs on/off" msgstr "Un amic es connecte/desconnecti" @@ -1528,10 +1528,10 @@ msgstr "Fora de línia" msgid "Online Buddies" -msgstr "Els amics desconnectats" +msgstr "Amics connectats" msgid "Offline Buddies" -msgstr "Els amics desconnectats" +msgstr "Amics desconnectats" msgid "Online/Offline" msgstr "En línia/fora de línia" @@ -1736,7 +1736,7 @@ "could mean that you are not connecting to the service you believe you are." msgstr "" "El certificat de «%s» sembla indicar que és de «%s». Això podria voler dir que " -"vos esteu connectant a un servici diferent del que vos penseu." +"us esteu connectant a un servici diferent del que us penseu." #. Make messages #, c-format @@ -1806,7 +1806,7 @@ #, c-format msgid "You are now known as %s" -msgstr "Ara vos feu dir %s" +msgstr "Ara us feu dir %s" #, c-format msgid "%s is now known as %s" @@ -1917,11 +1917,11 @@ #, c-format msgid "%s wants to send you %s (%s)" -msgstr "%s vos vol enviar %s (%s)" +msgstr "%s us vol enviar %s (%s)" #, c-format msgid "%s wants to send you a file" -msgstr "%s vos vol enviar un fitxer" +msgstr "%s us vol enviar un fitxer" #, c-format msgid "Accept file transfer request from %s?" @@ -1939,7 +1939,7 @@ #, c-format msgid "%s is offering to send file %s" -msgstr "%s vos oferix enviar el fitxer %s" +msgstr "%s us oferix enviar el fitxer %s" #, c-format msgid "%s is not a valid filename.\n" @@ -2345,7 +2345,7 @@ #. * summary #. * description msgid "Allows control by entering commands in a file." -msgstr "Vos permet controlar introduint ordes en un fitxer." +msgstr "Us permet controlar introduint ordes en un fitxer." msgid "Minutes" msgstr "Minuts" @@ -2379,7 +2379,7 @@ msgstr "Desestablix el temps d'inactivitat de tots els comptes inactius" msgid "Allows you to hand-configure how long you've been idle" -msgstr "Vos permet configurar a mà durant quant de temps heu estat inactiu" +msgstr "Us permet configurar a mà durant quant de temps heu estat inactiu" #. *< type #. *< ui_requirement @@ -2484,7 +2484,7 @@ msgid "" "You are currently disconnected. Messages will not be received unless you are " "logged in." -msgstr "Esteu desconnectat. No rebreu missatges a no ser que vos connecteu." +msgstr "Esteu desconnectat. No rebreu missatges a no ser que us connecteu." msgid "Message could not be sent because the maximum length was exceeded." msgstr "" @@ -2681,8 +2681,8 @@ "Causes conversation windows to appear as other users begin to message you. " "This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" msgstr "" -"Fa que apareguen finestres de conversa així que altres usuaris vos comencen " -"a enviar missatges. Funciona per a AIM, ICQ, XMPP, Sametime, i Yahoo!" +"Fa que apareguen finestres de conversa així que altres usuaris us comencen a " +"enviar missatges. Funciona per a AIM, ICQ, XMPP, Sametime, i Yahoo!" msgid "You feel a disturbance in the force..." msgstr "Sentireu un certa pertorbació en la força..." @@ -2713,7 +2713,7 @@ #. * summary #. * description msgid "Test to see that all signals are working properly." -msgstr "Prova per vore si tots els senyals funcionen correctament." +msgstr "Prova per veure si tots els senyals funcionen correctament." #. *< type #. *< ui_requirement @@ -2729,7 +2729,7 @@ #. * summary #. * description msgid "Tests to see that most things are working." -msgstr "Proves per vore si la majoria de coses funcionen." +msgstr "Proves per veure si la majoria de coses funcionen." #. Scheme name msgid "X.509 Certificates" @@ -3170,7 +3170,7 @@ msgstr "el tema actual és: %s" msgid "No topic is set" -msgstr "No hi ha cap tema establert" +msgstr "No hi ha cap tema establit" msgid "File Transfer Failed" msgstr "Ha fallat la transferència del fitxer" @@ -3273,7 +3273,7 @@ #, c-format msgid "Ban on %s by %s, set %s ago" -msgstr "Bandejament a %s de %s, establert fa %s" +msgstr "Bandejament a %s de %s, establit fa %s" #, c-format msgid "Ban on %s" @@ -3284,7 +3284,7 @@ #, c-format msgid "You are banned from %s." -msgstr "Vos han bandejat de %s" +msgstr "Us han bandejat de %s" msgid "Banned" msgstr "Bandejat" @@ -3374,12 +3374,12 @@ #, c-format msgid "You have been kicked by %s: (%s)" -msgstr "%s vos ha fet fora: (%s)" +msgstr "%s us ha fet fora: (%s)" #. Remove user from channel #, c-format msgid "Kicked by %s (%s)" -msgstr "%s vos ha fet fora (%s)" +msgstr "%s us ha fet fora (%s)" #, c-format msgid "mode (%s %s) by %s" @@ -3730,7 +3730,7 @@ "All items below are optional. Enter only the information with which you feel " "comfortable." msgstr "" -"Les dades següents són opcionals. Introduïu només la informació que vos " +"Les dades següents són opcionals. Introduïu només la informació que us " "sembli." msgid "Client" @@ -4018,7 +4018,7 @@ msgstr "Directori de cerca" msgid "_Room:" -msgstr "Sa_la:" +msgstr "_Sala:" msgid "_Server:" msgstr "_Servidor:" @@ -4484,7 +4484,7 @@ #, c-format msgid "%s has buzzed you!" -msgstr "%s vos ha botzinat!" +msgstr "%s us ha botzinat!" #, c-format msgid "Buzzing %s..." @@ -4541,7 +4541,7 @@ msgstr "ping <jid>:\tfa ping a un usuari/component/servidor." msgid "buzz: Buzz a user to get their attention" -msgstr "buzz: fa sonar una botzina a un usuari per tal de que vos pare atenció" +msgstr "buzz: fa sonar una botzina a un usuari per tal de que us pare atenció" #. *< type #. *< ui_requirement @@ -4696,7 +4696,7 @@ "This information is visible to all contacts on your contact list, so choose " "something appropriate." msgstr "" -"Esta informació la poden vore tots els contactes de la vostra llista " +"Esta informació la poden veure tots els contactes de la vostra llista " "d'amics, escolliu quelcom apropiat." msgid "Set Nickname..." @@ -4978,7 +4978,7 @@ #, c-format msgid "%s has nudged you!" -msgstr "%s vos ha donat un cop de colze!" +msgstr "%s us ha donat un cop de colze!" #, c-format msgid "Nudging %s..." @@ -4994,7 +4994,7 @@ msgstr "Establiu el vostre nom amistós." msgid "This is the name that other MSN buddies will see you as." -msgstr "Este és el nom amb el que els amics de l'MSN vos veuran." +msgstr "Este és el nom amb el que els amics de l'MSN us veuran." msgid "Set your home phone number." msgstr "Establix el número de telèfon de casa." @@ -5049,7 +5049,7 @@ msgstr "Treballant" msgid "Has you" -msgstr "Vos té" +msgstr "Us té" msgid "Home Phone Number" msgstr "Número de telèfon de casa" @@ -5306,7 +5306,7 @@ msgstr "Mostra emoticones personalitzades" msgid "nudge: nudge a user to get their attention" -msgstr "nudge: doneu un cop de colze a un usuari perquè vos pare atenció" +msgstr "nudge: doneu un cop de colze a un usuari perquè us pare atenció" msgid "Windows Live ID authentication:Unable to connect" msgstr "Autenticació amb el Windows Live ID: no s'ha pogut connectar" @@ -5327,7 +5327,7 @@ #, c-format msgid "%s just sent you a Nudge!" -msgstr "%s vos ha donat un cop de colze!" +msgstr "%s us ha donat un cop de colze!" #. char *adl = g_strndup(payload, len); #, c-format @@ -5389,16 +5389,16 @@ "sign in." msgstr[0] "" "El servidor d'MSN es reiniciarà per raons de manteniment d'ací a %d minut. " -"Se vos desconnectarà automàticament al cap d'este temps. Finalitzeu " -"qualsevol conversa en actiu.\n" -"\n" -"Després que el manteniment s'haja completat, vos podreu tornar a connectar." +"Se us desconnectarà automàticament al cap d'este temps. Finalitzeu qualsevol " +"conversa en actiu.\n" +"\n" +"Després que el manteniment s'haja completat, us podreu tornar a connectar." msgstr[1] "" "El servidor d'MSN es reiniciarà per raons de manteniment d'ací a %d minuts. " -"Se vos desconnectarà automàticament al cap d'este temps. Finalitzeu " -"qualsevol conversa en actiu.\n" -"\n" -"Després que el manteniment s'haja completat, vos podreu tornar a connectar." +"Se us desconnectarà automàticament al cap d'este temps. Finalitzeu qualsevol " +"conversa en actiu.\n" +"\n" +"Després que el manteniment s'haja completat, us podreu tornar a connectar." msgid "" "Message was not sent because the system is unavailable. This normally " @@ -5444,7 +5444,7 @@ msgstr "S'ha produït un error en analitzar HTTP." msgid "You have signed on from another location." -msgstr "Vos heu connectat des d'un altre lloc." +msgstr "Us heu connectat des d'un altre lloc." msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" @@ -5531,11 +5531,11 @@ #, c-format msgid "%s has added you to his or her buddy list." -msgstr "%s vos ha afegit a la seua llista d'amics." +msgstr "%s us ha afegit a la seua llista d'amics." #, c-format msgid "%s has removed you from his or her buddy list." -msgstr "%s vos ha suprimit de la seua llista d'amics." +msgstr "%s us ha suprimit de la seua llista d'amics." msgid "Delete Buddy from Address Book?" msgstr "Voleu suprimir l'amic de la llibreta d'adreces?" @@ -5767,7 +5767,7 @@ msgstr "Este nom d'usuari està disponible. Voleu fer-lo servir?" msgid "ONCE SET, THIS CANNOT BE CHANGED!" -msgstr "Un cop l'hagueu establert no el podreu canviar!" +msgstr "Un cop l'hagueu establit no el podreu canviar!" msgid "MySpaceIM - Please Set a Username" msgstr "MySpaceIM - Establiu un nom d'usuari" @@ -5796,7 +5796,7 @@ #, fuzzy, c-format msgid "%s has zapped you!" -msgstr "%s vos ha afegit [%s]" +msgstr "%s us ha afegit [%s]" #, fuzzy, c-format msgid "Zapping %s..." @@ -5809,7 +5809,7 @@ #, fuzzy, c-format msgid "%s has whacked you!" -msgstr "%s vos ha afegit [%s]" +msgstr "%s us ha afegit [%s]" #, fuzzy, c-format msgid "Whacking %s..." @@ -5823,7 +5823,7 @@ #, c-format msgid "%s has torched you!" -msgstr "%s vos ha calat foc!" +msgstr "%s us ha calat foc!" #, c-format msgid "Torching %s..." @@ -5836,7 +5836,7 @@ # Sí, sembla que siguem a l'època victoriana... (josep) #, c-format msgid "%s has smooched you!" -msgstr "%s vos ha morrejat!" +msgstr "%s us ha morrejat!" #, c-format msgid "Smooching %s..." @@ -5848,7 +5848,7 @@ #, c-format msgid "%s has hugged you!" -msgstr "%s vos ha abraçat!" +msgstr "%s us ha abraçat!" #, c-format msgid "Hugging %s..." @@ -5860,7 +5860,7 @@ #, c-format msgid "%s has slapped you!" -msgstr "%s vos ha bufetejat!" +msgstr "%s us ha bufetejat!" #, c-format msgid "Slapping %s..." @@ -5872,7 +5872,7 @@ #, c-format msgid "%s has goosed you!" -msgstr "%s vos ha pessigat el cul!" +msgstr "%s us ha pessigat el cul!" #, c-format msgid "Goosing %s..." @@ -6009,7 +6009,7 @@ msgstr "La versió del protocol no és compatible" msgid "The user has blocked you" -msgstr "L'usuari vos ha blocat" +msgstr "L'usuari us ha blocat" msgid "" "This evaluation version does not allow more than ten users to log in at one " @@ -6165,7 +6165,7 @@ msgid "You have been logged out because you logged in at another workstation." msgstr "" -"Se vos ha desconnectat perquè heu entrat a través d'una altra estació de " +"Se us ha desconnectat perquè heu entrat a través d'una altra estació de " "treball." #, c-format @@ -6180,7 +6180,7 @@ "to connect to." msgstr "" "No s'ha pogut connectar al servidor. Introduïu l'adreça del servidor al qual " -"vos vulgueu connectar." +"us vulgueu connectar." msgid "Error. SSL support is not installed." msgstr "Error. No hi ha instal·lades les biblioteques per a SSL." @@ -6277,15 +6277,15 @@ msgstr "No s'ha pogut establir una connexió amb l'usuari remot." msgid "Direct IM established" -msgstr "S'ha establert una connexió directa de MI" +msgstr "S'ha establit una connexió directa de MI" #, c-format msgid "" "%s tried to send you a %s file, but we only allow files up to %s over Direct " "IM. Try using file transfer instead.\n" msgstr "" -"%s vos ha intentat enviar un fitxer %s, però ara mateix només permetem " -"enviar fitxers de fins a %s a través de MI directa. Proveu-ho fent servir la " +"%s us ha intentat enviar un fitxer %s, però ara mateix només permetem enviar " +"fitxers de fins a %s a través de MI directa. Proveu-ho fent servir la " "transferència de fitxers.\n" # FIXME @@ -6574,7 +6574,7 @@ "You may be disconnected shortly. You may want to use TOC until this is " "fixed. Check %s for updates." msgstr "" -"Se vos pot desconnectar d'ací a poc temps. Si voleu, podeu emprar TOC fins " +"Se us pot desconnectar d'ací a poc temps. Si voleu, podeu emprar TOC fins " "que això es resolgui. Comproveu si hi ha actualitzacions a %s." # FIXME: hash (josep) @@ -6584,8 +6584,8 @@ #, c-format msgid "You may be disconnected shortly. Check %s for updates." msgstr "" -"Se vos pot desconnectar d'ací a poc temps. Comproveu si hi ha " -"actualitzacions a %s." +"Se us pot desconnectar d'ací a poc temps. Comproveu si hi ha actualitzacions " +"a %s." msgid "Unable to get a valid login hash." msgstr "No s'ha pogut obtindre un hash d'entrada vàlid." @@ -6597,7 +6597,7 @@ msgstr "No s'ha pogut inicialitzar la connexió" msgid "Please authorize me so I can add you to my buddy list." -msgstr "Autoritzeu-me perquè vos puga afegir a la meua llista d'amics." +msgstr "Autoritzeu-me perquè us puga afegir a la meua llista d'amics." msgid "Authorization Request Message:" msgstr "Missatge de petició d'autorització:" @@ -6617,7 +6617,7 @@ "following reason:\n" "%s" msgstr "" -"L'usuari %u vos ha denegat la vostra sol·licitud d'afegir-lo a la vostra " +"L'usuari %u us ha denegat la vostra sol·licitud d'afegir-lo a la vostra " "llista d'amics pel següent motiu:\n" "%s" @@ -6627,7 +6627,7 @@ #. Someone has granted you authorization #, c-format msgid "The user %u has granted your request to add them to your buddy list." -msgstr "L'usuari %u vos ha permés afegir-lo a la vostra llista d'amics." +msgstr "L'usuari %u us ha permés afegir-lo a la vostra llista d'amics." #, c-format msgid "" @@ -6667,7 +6667,7 @@ #, c-format msgid "ICQ user %u has sent you a buddy: %s (%s)" -msgstr "L'usuari %u d'ICQ vos ha enviat un amic: %s (%s)" +msgstr "L'usuari %u d'ICQ us ha enviat un amic: %s (%s)" msgid "Do you want to add this buddy to your buddy list?" msgstr "Voleu afegir este amic a la vostra llista d'amics?" @@ -6768,7 +6768,7 @@ #, c-format msgid "You have been disconnected from chat room %s." -msgstr "Se vos ha desconnectat de la conversa %s." +msgstr "Se us ha desconnectat de la conversa %s." msgid "Mobile Phone" msgstr "Telèfon mòbil" @@ -6890,7 +6890,7 @@ "fully connected." msgstr "" "Probablement heu demanat establir el vostre perfil abans d'acabar amb el " -"procés de connexió. El vostre perfil seguix sense estar establert; intenteu " +"procés de connexió. El vostre perfil seguix sense estar establit; intenteu " "establir-lo de nou quan el procés de connexió haja finalitzat." #, c-format @@ -6971,7 +6971,7 @@ "The user %s has given you permission to add him or her to your buddy list. " "Do you want to add this user?" msgstr "" -"L'usuari %s vos ha donat permís perquè l'afegiu a la vostra llista d'amics. " +"L'usuari %s us ha donat permís perquè l'afegiu a la vostra llista d'amics. " "Voleu afegir-lo?" msgid "Authorization Given" @@ -6980,7 +6980,7 @@ #. Granted #, c-format msgid "The user %s has granted your request to add them to your buddy list." -msgstr "L'usuari %s vos ha permés afegir-lo a la vostra llista d'amics." +msgstr "L'usuari %s us ha permés afegir-lo a la vostra llista d'amics." msgid "Authorization Granted" msgstr "S'ha concedit l'autorització" @@ -6992,7 +6992,7 @@ "following reason:\n" "%s" msgstr "" -"L'usuari %s vos ha denegat la petició d'afegir-lo a la vostra llista d'amics " +"L'usuari %s us ha denegat la petició d'afegir-lo a la vostra llista d'amics " "pels motius següents:\n" "%s" @@ -7261,7 +7261,7 @@ msgstr "Número de telèfon" msgid "Authorize adding" -msgstr "Autoritzar que vos afegisquen" +msgstr "Autoritzar que us afegisquen" msgid "Cellphone Number" msgstr "Número de mòbil" @@ -7369,7 +7369,7 @@ #, c-format msgid "Failed removing me from %d's buddy list" -msgstr "No vos heu pogut suprimir de la llista d'amics de %d" +msgstr "No us heu pogut suprimir de la llista d'amics de %d" msgid "No reason given" msgstr "No s'ha indicat cap motiu" @@ -7377,7 +7377,7 @@ #. only need to get value #, c-format msgid "You have been added by %s" -msgstr "%s vos ha afegit" +msgstr "%s us ha afegit" msgid "Would you like to add him?" msgstr "Voleu afegir-lo?" @@ -7453,7 +7453,7 @@ #, c-format msgid "Qun %u denied from joining" -msgstr "No se vos ha permés entrar al Qun %u" +msgstr "No se us ha permés entrar al Qun %u" msgid "QQ Qun Operation" msgstr "Operació Qun QQ" @@ -7506,8 +7506,7 @@ #, c-format msgid "<b>Joining Qun %u is approved by admin %u for %s</b>" -msgstr "" -"<b>L'administrador %2$u vos ha permés unir-vos al Qun %1$u per %3$s</b>" +msgstr "<b>L'administrador %2$u us ha permés unir-vos al Qun %1$u per %3$s</b>" #, c-format msgid "<b>Removed buddy %u.</b>" @@ -7633,7 +7632,6 @@ msgid "<p><i>And, all the boys in the backroom...</i><br>\n" msgstr "<p><i>I tothom que ho ha fet possible...<i><br>\n" -#, fuzzy msgid "<i>Feel free to join us!</i> :)" msgstr "<i>No dubteu a col·laborar amb nosaltres!</i> :)" @@ -8488,8 +8486,8 @@ "able to join." msgstr "" "L'autenticació del canal es fa servir per evitar-ne l'accés no autoritzat. " -"L'autenticació es pot basar en frases clau i signatures. Si s'ha establert " -"una frase clau, serà necessària per a poder-hi entrar. Si s'han establert " +"L'autenticació es pot basar en frases clau i signatures. Si s'ha establit " +"una frase clau, serà necessària per a poder-hi entrar. Si s'han establit " "claus públiques del canal, només els usuaris que tinguen les seues claus " "públiques llistades al canal hi podran entrar." @@ -8641,15 +8639,15 @@ #, c-format msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)" -msgstr "<I>%2$s</I> vos ha fet fora de <I>%1$s</I> (%3$s)" +msgstr "<I>%2$s</I> us ha fet fora de <I>%1$s</I> (%3$s)" #, c-format msgid "You have been killed by %s (%s)" -msgstr "%s vos ha matat (%s)" +msgstr "%s us ha matat (%s)" #, c-format msgid "Killed by %s (%s)" -msgstr "%s vos ha matat (%s)" +msgstr "%s us ha matat (%s)" msgid "Server signoff" msgstr "Desconnexió del servidor" @@ -8832,7 +8830,7 @@ msgstr "El tipus de la clau pública no està suportat" msgid "Disconnected by server" -msgstr "El servidor vos ha desconnectat" +msgstr "El servidor us ha desconnectat" msgid "Error during connecting to SILC Server" msgstr "S'ha produït un error en connectar al servidor SILC" @@ -8929,7 +8927,7 @@ msgstr "" "Podeu permetre que altres usuaris vegin informació sobre el vostre estat en " "línia, així com informació personal. Empleneu la informació que vulgueu que " -"altres usuaris puguen vore." +"altres usuaris puguen veure." msgid "Message of the Day" msgstr "Frase del dia" @@ -9346,7 +9344,7 @@ msgstr "El connector per al protocol SIP/SIMPLE" msgid "Publish status (note: everyone may watch you)" -msgstr "Publica l'estat (nota: tothom vos pot estar observant)" +msgstr "Publica l'estat (nota: tothom us pot estar observant)" msgid "Use UDP" msgstr "Utilitza UDP" @@ -9410,7 +9408,7 @@ #, c-format msgid "You missed an IM from %s because it was too big." -msgstr "Vos heu perdut un missatge instantani de %s perquè era massa gran." +msgstr "Us heu perdut un missatge instantani de %s perquè era massa gran." #, c-format msgid "You missed an IM from %s because it was sent too fast." @@ -9475,7 +9473,7 @@ "You have been connecting and disconnecting too frequently. Wait ten minutes " "and try again. If you continue to try, you will need to wait even longer." msgstr "" -"Vos heu estat connectant i desconnectant amb massa freqüència. Espereu deu " +"Us heu estat connectant i desconnectant amb massa freqüència. Espereu deu " "minuts i torneu-ho a provar. Si continueu intentant-ho, haureu d'esperar " "encara més." @@ -9537,7 +9535,7 @@ #, c-format msgid "%s requests you to send them a file" -msgstr "%s vos demana que li envieu un fitxer" +msgstr "%s us demana que li envieu un fitxer" #. *< type #. *< ui_requirement @@ -9555,8 +9553,8 @@ #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." msgstr "" -"%s vos ha enviat una invitació a la seua càmera web, però això encara no " -"està implementat." +"%s us ha enviat una invitació a la seua càmera web, però això encara no està " +"implementat." msgid "Your Yahoo! message did not get sent." msgstr "No s'ha pogut enviar el vostre missatge de Yahoo!" @@ -9570,15 +9568,14 @@ "%s has (retroactively) denied your request to add them to your list for the " "following reason: %s." msgstr "" -"%s vos ha denegat (retroactivament) la petició d'afegir-lo a la vostra " -"llista pel següent motiu:\n" +"%s us ha denegat (retroactivament) la petició d'afegir-lo a la vostra llista " +"pel següent motiu:\n" "%s" #, c-format msgid "%s has (retroactively) denied your request to add them to your list." msgstr "" -"%s vos ha denegat (retroactivament) la petició d'afegir-lo a la vostra " -"llista." +"%s us ha denegat (retroactivament) la petició d'afegir-lo a la vostra llista." msgid "Add buddy rejected" msgstr "S'ha rebutjat afegir l'amic" @@ -9590,7 +9587,7 @@ "Check %s for updates." msgstr "" "El servidor Yahoo ha demanat l'ús d'un mètode d'autenticació que no és " -"reconegut. Probablement no vos podreu connectar al Yahoo. Comproveu si hi ha " +"reconegut. Probablement no us podreu connectar al Yahoo. Comproveu si hi ha " "actualitzacions a %s." msgid "Failed Yahoo! Authentication" @@ -9700,7 +9697,7 @@ msgstr "Quin ID voleu activar?" msgid "Join whom in chat?" -msgstr "A qui vos voleu unir al xat?" +msgstr "A qui us voleu unir al xat?" msgid "Activate ID..." msgstr "Activa l'ID..." @@ -9804,7 +9801,7 @@ "If you wish to view this profile, you will need to visit this link in your " "web browser:" msgstr "" -"Si voleu vore este perfil, haureu de visitar este enllaç amb el navegador:" +"Si voleu veure este perfil, haureu de visitar este enllaç amb el navegador:" msgid "Yahoo! ID" msgstr "ID de Yahoo!" @@ -10087,7 +10084,7 @@ #, c-format msgid "%s has requested your attention!" -msgstr "%s vos ha demanat l'atenció!" +msgstr "%s us ha demanat l'atenció!" #. * #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons. @@ -10411,7 +10408,7 @@ #. This is an easter egg. See the comment on the previous line in the source. msgid "you can see the butterflies mating" -msgstr "podreu vore les papallones aparellant-se" +msgstr "podreu veure les papallones aparellant-se" msgid "Proxy Options" msgstr "Opcions del servidor intermediari" @@ -10505,7 +10502,7 @@ "Introduïu la informació necessària sobre el xat al qual vulgueu entrar.\n" msgid "_Account:" -msgstr "_Compte:" +msgstr "C_ompte:" msgid "_Block" msgstr "_Bloca" @@ -10561,7 +10558,7 @@ #. join button msgid "_Join" -msgstr "En_tra" +msgstr "_Entra" msgid "Auto-Join" msgstr "Entra automàticament" @@ -10608,7 +10605,7 @@ msgstr "/Amics/_Visualitza el registre de l'usuari..." msgid "/Buddies/Sh_ow" -msgstr "/Amics/M_ostra" +msgstr "/Amics/Mos_tra" msgid "/Buddies/Show/_Offline Buddies" msgstr "/Amics/Mostra/Amics des_connectats" @@ -10662,7 +10659,7 @@ msgstr "/Eines/_Connectors" msgid "/Tools/Pr_eferences" -msgstr "/Eines/Preferè_ncies" +msgstr "/Eines/Pre_ferències" msgid "/Tools/Pr_ivacy" msgstr "/Eines/_Privadesa" @@ -10671,7 +10668,7 @@ msgstr "/Eines/Em_oticona" msgid "/Tools/_File Transfers" -msgstr "/Eines/Transferència de _fitxers" +msgstr "/Eines/_Transferència de fitxers" msgid "/Tools/R_oom List" msgstr "/Eines/_Llista de sales" @@ -10812,9 +10809,9 @@ msgid_plural "" "%d accounts were disabled because you signed on from another location:" msgstr[0] "" -"S'ha inhabilitat %d compte perquè vos heu connectat des d'un altre lloc:" +"S'ha inhabilitat %d compte perquè us heu connectat des d'un altre lloc:" msgstr[1] "" -"S'han inhabilitat %d comptes perquè vos heu connectat des d'un altre lloc:" +"S'han inhabilitat %d comptes perquè us heu connectat des d'un altre lloc:" msgid "<b>Username:</b>" msgstr "<b>Nom d'usuari:</b>" @@ -10890,13 +10887,13 @@ "la llista d'amics.\n" msgid "A_lias:" -msgstr "À_lies:" +msgstr "Àl_ies:" msgid "Auto_join when account becomes online." -msgstr "Entra _automàticament quant el compte estiga connectat." +msgstr "_Entra automàticament quant el compte estiga connectat." msgid "_Remain in chat after window is closed." -msgstr "_Continua al xat quan la finestra es tanque." +msgstr "Co_ntinua al xat quan la finestra es tanque." msgid "Please enter the name of the group to be added." msgstr "Introduïu el nom del grup que vulgueu afegir." @@ -11340,7 +11337,7 @@ msgstr "Català" msgid "Valencian-Catalan" -msgstr "Valencià-català" +msgstr "Valencià (català meridional)" msgid "Czech" msgstr "Txec" @@ -11560,7 +11557,7 @@ "(versió 2 o posterior). Hi ha una còpia de la GPL dins del fitxer «COPYING» " "que es distribuix amb el %s. Els drets d'autor del %s pertanyen als seus " "col·laboradors. El fitxer «COPYRIGHT» conté una llista completa de tots els " -"contribuïdors. No vos proporcionem cap mena de garantia amb este programa." +"contribuïdors. No us proporcionem cap mena de garantia amb este programa." "<BR><BR>" #, c-format @@ -11601,7 +11598,7 @@ "Please enter the username or alias of the person whose info you would like " "to view." msgstr "" -"Introduïu el nom d'usuari o àlies de la persona de la qual vulgueu vore la " +"Introduïu el nom d'usuari o àlies de la persona de la qual vulgueu veure la " "informació." msgid "View User Log" @@ -11780,7 +11777,7 @@ msgstr "Temps restant:" msgid "Close this window when all transfers _finish" -msgstr "Tanca esta finestra quan totes les transferències hagen _finalitzat" +msgstr "Tanca esta _finestra quan totes les transferències hagen finalitzat" msgid "C_lear finished transfers" msgstr "_Neteja les transferències acabades" @@ -12308,7 +12305,7 @@ msgstr "<b>Nom del fitxer:</b>" msgid "Configure Pl_ugin" -msgstr "Config_ura el connector" +msgstr "_Configura el connector" msgid "<b>Plugin Details</b>" msgstr "<b>Detalls del connector</b>" @@ -12322,46 +12319,46 @@ msgstr "Avisa dels Whom" msgid "_Buddy name:" -msgstr "Nom de l'_amic:" +msgstr "_Nom de l'amic:" msgid "Si_gns on" -msgstr "Es _connecte" +msgstr "Es conn_ecti" msgid "Signs o_ff" -msgstr "Es _desconnecte" +msgstr "Es de_sconnecti" msgid "Goes a_way" msgstr "Passe a _absent" msgid "Ret_urns from away" -msgstr "To_rni a estar present" +msgstr "_Torne a estar present" msgid "Becomes _idle" msgstr "Passe a _inactiu" msgid "Is no longer i_dle" -msgstr "Ja no estiga i_nactiu" +msgstr "_Ja no estiga inactiu" msgid "Starts _typing" -msgstr "Comence a _escriure" +msgstr "Comence a esc_riure" msgid "P_auses while typing" -msgstr "S'_ature mentre tecleja" +msgstr "S'at_uri mentre tecleja" msgid "Stops t_yping" -msgstr "Pare d'e_scriure" +msgstr "_Pare d'escriure" msgid "Sends a _message" msgstr "Envie un _missatge" msgid "Ope_n an IM window" -msgstr "Obri u_na finestra de MI" +msgstr "Obri una _finestra de MI" msgid "_Pop up a notification" -msgstr "Mostra una _notificació emergent" +msgstr "Mostra una notificació emer_gent" msgid "Send a _message" -msgstr "Envia un _missatge" +msgstr "En_via un missatge" msgid "E_xecute a command" msgstr "E_xecuta una orde" @@ -12369,17 +12366,21 @@ msgid "P_lay a sound" msgstr "Reproduei_x un so" +# Sense accelerador expressament (josep) msgid "Brows_e..." -msgstr "Nav_ega..." - +msgstr "Navega..." + +# Sense accelerador expressament (josep) msgid "Br_owse..." -msgstr "Na_vega..." - +msgstr "Navega..." + +# Sense accelerador expressament (josep) msgid "Pre_view" -msgstr "Pre_visualitza" - +msgstr "Previsualitza" + +# Sense accelerador expressament (josep) msgid "P_ounce only when my status is not Available" -msgstr "Avisa n_omés quan el meu estat no siga disponible" +msgstr "Avisa només quan el meu estat no estiga disponible" msgid "_Recurring" msgstr "_Recurrent" @@ -12413,7 +12414,7 @@ msgstr "Icona d'estat" msgid "_Show system tray icon:" -msgstr "Mostra la icona d'estat:" +msgstr "_Mostra la icona d'estat:" msgid "On unread messages" msgstr "Si hi ha missatges sense llegir" @@ -12433,10 +12434,10 @@ msgstr "Pestanyes" msgid "Show IMs and chats in _tabbed windows" -msgstr "Mostra MI i xats en finestres amb _pestanyes" +msgstr "Mostra MI i _xats en finestres amb pestanyes" msgid "Show close b_utton on tabs" -msgstr "Mosta el b_otó de tancar a les pestanyes" +msgstr "Mosta el _botó de tancar a les pestanyes" msgid "_Placement:" msgstr "_Posicionament:" @@ -12460,10 +12461,10 @@ msgstr "Vertical dret" msgid "N_ew conversations:" -msgstr "Converses noves:" +msgstr "Converses _noves:" msgid "Show _formatting on incoming messages" -msgstr "Mostra el format dels missatges entrants" +msgstr "Mostra el _format dels missatges entrants" msgid "Close IMs immediately when the tab is closed" msgstr "Tanca la missatgeria quan es tanque la pestanya" @@ -12478,10 +12479,10 @@ msgstr "_Notifica als amics quan els escriga" msgid "Highlight _misspelled words" -msgstr "Ressalta les paraules _mal escrites" +msgstr "_Ressalta les paraules mal escrites" msgid "Use smooth-scrolling" -msgstr "Utilitza el desplaçament suau" +msgstr "Empra el desplaçament suau" msgid "F_lash window when IMs are received" msgstr "_Fes que la finestra faci un flaix quan hi arriben missatges" @@ -12496,13 +12497,13 @@ msgstr "Tipus de lletra" msgid "Use document font from _theme" -msgstr "Empra el tipus de lletra del document del _tema" +msgstr "_Empra el tipus de lletra del document del tema" msgid "Use font from _theme" msgstr "Empra el tipus de lletra del _tema" msgid "Conversation _font:" -msgstr "_Tipus de lletra de la conversa:" +msgstr "Tipus de _lletra de la conversa:" msgid "Default Formatting" msgstr "Format per defecte" @@ -12512,7 +12513,7 @@ "that support formatting." msgstr "" "Així és com els missatges de text eixints apareixeran quan feu servir " -"protocols que implementen el text formatat." +"protocols que permeten el text formatat." msgid "Cannot start proxy configuration program." msgstr "" @@ -12531,7 +12532,7 @@ msgstr "Detecta l'_adreça IP automàticament" msgid "Public _IP:" -msgstr "_IP pública:" +msgstr "IP _pública:" msgid "Ports" msgstr "Ports" @@ -12540,7 +12541,7 @@ msgstr "_Habilita la desviació automàtica de ports de l'encaminador" msgid "_Manually specify range of ports to listen on" -msgstr "Especifica _manualment el rang de ports on escoltar" +msgstr "_Especifica manualment el rang de ports on escoltar" msgid "_Start port:" msgstr "Port _inicial:" @@ -12647,13 +12648,13 @@ msgstr "_Format del registre:" msgid "Log all _instant messages" -msgstr "_Registra tots els missatges instantanis" +msgstr "Registra tots els _missatges instantanis" msgid "Log all c_hats" msgstr "Registra tots els _xats" msgid "Log all _status changes to system log" -msgstr "Regi_stra tots els canvis d'estat al registre del sistema" +msgstr "Registra tots els _canvis d'estat al registre del sistema" msgid "Sound Selection" msgstr "Selecció de sons" @@ -12700,10 +12701,10 @@ "(%s per al nom de fitxer)" msgid "M_ute sounds" -msgstr "In_habilita els sons" +msgstr "_Inhabilita els sons" msgid "Sounds when conversation has _focus" -msgstr "Sons quan la conversa tinga el _focus" +msgstr "_Sons quan la conversa tinga el focus" msgid "_Enable sounds:" msgstr "_Habilita els sons:" @@ -12715,13 +12716,13 @@ msgstr "Reproduix" msgid "_Browse..." -msgstr "Nav_ega..." +msgstr "_Navega..." msgid "_Reset" msgstr "_Reinicia" msgid "_Report idle time:" -msgstr "Informa del _temps d'inactivitat:" +msgstr "_Informa del temps d'inactivitat:" msgid "Based on keyboard or mouse use" msgstr "Basat en l'ús del teclat o el ratolí" @@ -12737,23 +12738,23 @@ msgstr "Auto-absència" msgid "Change status when _idle" -msgstr "Canvia l'estat quan estiga _inactiu" +msgstr "_Canvia l'estat quan estiga inactiu" msgid "_Minutes before becoming idle:" msgstr "_Minuts abans de passar a inactiu:" msgid "Change _status to:" -msgstr "Canvia l'e_stat a:" +msgstr "Canvia l'_estat a:" #. Signon status stuff msgid "Status at Startup" msgstr "L'estat en iniciar" msgid "Use status from last _exit at startup" -msgstr "_En iniciar, empra el mateix estat que en eixir per darrer cop" +msgstr "En i_niciar, empra el mateix estat que en eixir per darrer cop" msgid "Status to a_pply at startup:" -msgstr "Es_tatus a utilitzar en iniciar:" +msgstr "Estat a _utilitzar en iniciar:" msgid "Interface" msgstr "Interfície" @@ -12793,27 +12794,27 @@ #. Remove All button msgid "Remove Al_l" -msgstr "Suprimix-ho _tot" +msgstr "S_uprimix-ho tot" msgid "Permit User" msgstr "Permet l'usuari" msgid "Type a user you permit to contact you." -msgstr "Escriviu quin usuari permeteu que vos contacti." +msgstr "Escriviu quin usuari permeteu que us contacti." msgid "Please enter the name of the user you wish to be able to contact you." -msgstr "Introduïu el nom de l'usuari que vulgueu que vos puga contactar." +msgstr "Introduïu el nom de l'usuari que vulgueu que us puga contactar." msgid "_Permit" msgstr "_Permet" #, c-format msgid "Allow %s to contact you?" -msgstr "Voleu permetre que %s vos puga contactar?" +msgstr "Voleu permetre que %s us puga contactar?" #, c-format msgid "Are you sure you wish to allow %s to contact you?" -msgstr "Esteu segur que voleu permetre que %s vos puga contactar?" +msgstr "Esteu segur que voleu permetre que %s us puga contactar?" msgid "Block User" msgstr "Bloca un usuari" @@ -12852,11 +12853,11 @@ #. list button msgid "_Get List" -msgstr "_Aconseguix la llista" +msgstr "Aconseguix la _llista" #. add button msgid "_Add Chat" -msgstr "_Afig el xat" +msgstr "Afig el _xat" # He omès "saved", que sembla que no hi cal (josep) msgid "Are you sure you want to delete the selected saved statuses?" @@ -13068,7 +13069,7 @@ msgstr "Tanca les _pestanyes" msgid "_Get Info" -msgstr "_Aconseguix informació" +msgstr "Aconseguix _informació" msgid "_Invite" msgstr "Conv_ida" @@ -13196,14 +13197,14 @@ msgid "" "Allows for controlling the values associated with different buddy states." msgstr "" -"Vos permet canviar els valors associats als diferents estats dels amics." +"Us permet canviar els valors associats als diferents estats dels amics." #. *< description msgid "" "Allows for changing the point values of idle/away/offline states for buddies " "in contact priority computations." msgstr "" -"Vos permet canviar els valors dels estats inactiu, absent i desconnectat pel " +"Us permet canviar els valors dels estats inactiu, absent i desconnectat pel " "càlcul de la prioritat dels amics." msgid "Conversation Colors" @@ -13219,7 +13220,7 @@ msgstr "Missatges ressaltats" msgid "System Messages" -msgstr "Missatge del sistema" +msgstr "Missatges del sistema" msgid "Sent Messages" msgstr "Missatges enviats" @@ -13342,10 +13343,9 @@ msgid "New Person" msgstr "Nova persona" -# FIXME: seleccioneu un amic? #. "Select Buddy" button msgid "Select Buddy" -msgstr "Seleccioneu un amic" +msgstr "Selecciona" #. Add the label. msgid "" @@ -13442,7 +13442,7 @@ #. * description msgid "Test to see that all ui signals are working properly." msgstr "" -"Prova per vore si tots els senyals de la interfície d'usuari funcionen " +"Prova per veure si tots els senyals de la interfície d'usuari funcionen " "correctament." #, c-format @@ -13631,7 +13631,7 @@ #. * description msgid "Provides a variety of ways of notifying you of unread messages." msgstr "" -"Vos proporciona diferents maneres de notificar-vos la presència de missatges " +"Us proporciona diferents maneres de notificar-vos la presència de missatges " "sense llegir." #. *< type @@ -13657,7 +13657,7 @@ "- It sends a message to people on your list immediately when they sign on" msgstr "" "Este és un connector realment interessant que fa moltes coses:\n" -"- mostra qui ha escrit el programa quan vos connecteu\n" +"- mostra qui ha escrit el programa quan us connecteu\n" "- escriu a l'inrevés tots els missatges rebuts\n" "- envia un missatge a tots els amics immediatament després que es connecten" @@ -13754,19 +13754,19 @@ msgstr "En brut" msgid "Lets you send raw input to text-based protocols." -msgstr "Vos permet enviar dades en brut als protocols en mode text." +msgstr "Us permet enviar dades en brut als protocols en mode text." msgid "" "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit " "'Enter' in the entry box to send. Watch the debug window." msgstr "" -"Vos permet enviar dades en brut als protocols en mode text (XMPP, MSN, IRC, " +"Us permet enviar dades en brut als protocols en mode text (XMPP, MSN, IRC, " "TOC). Premeu la tecla de retorn del quadre d'entrada per enviar-les. " "Observeu la finestra de depuració." #, c-format msgid "You can upgrade to %s %s today." -msgstr "Podeu actualitzar-vos a %s %s avui." +msgstr "Podeu actualitzar-vos a %s %s hui." msgid "New Version Available" msgstr "Nova versió disponible" @@ -13797,7 +13797,7 @@ "Checks periodically for new releases and notifies the user with the " "ChangeLog." msgstr "" -"Comprova periòdicament si hi ha versions noves i vos ho notifica juntament " +"Comprova periòdicament si hi ha versions noves i us ho notifica juntament " "amb el seu registre de canvis." #. *< major version @@ -13874,7 +13874,7 @@ msgid "Replaces text in outgoing messages according to user-defined rules." msgstr "" "Substituix el text dels missatges que s'envien emprant les regles que hàgeu " -"establert." +"establit." # FIXME (josep) #. *< type