Mercurial > pidgin
changeset 27352:69511e781717
merge of '46a46162666e1d23ae6161df2639044132cb894f'
and 'ada690f0424ce05fc000d5e97d25079fc1909318'
author | Etan Reisner <pidgin@unreliablesource.net> |
---|---|
date | Sun, 05 Jul 2009 15:08:20 +0000 |
parents | 5b07c7253ba4 (current diff) c7a80c1c40c7 (diff) |
children | d137b369eb9c |
files | ChangeLog ChangeLog.API |
diffstat | 22 files changed, 1265 insertions(+), 1464 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sun Jul 05 06:51:35 2009 +0000 +++ b/ChangeLog Sun Jul 05 15:08:20 2009 +0000 @@ -12,6 +12,8 @@ * Fixed NTLM authentication on big-endian systems. * The Pidgin and Purple perl modules are no longer installed into @INC, this should hopefulll prevent some minor confusion. + * Use GLib's implementations of SHA1, SHA256, and MD5 when available. + (GLib 2.14 or higher) libpurple: * Various memory cleanups when unloading libpurple. (Nick Hebner) @@ -26,6 +28,10 @@ PURPLE_GNUTLS_DEBUG environment variable, which is an integer between 0 and 9 (higher is more verbose). Higher values may reveal sensitive information. + * PURPLE_VERBOSE_DEBUG environment variable. Currently this is an "on" or + "off" variable. Set it to any value to turn it on and unset it to turn + it off. This will optionally be used to only show less useful debug + information on an as-needed basis. Gadu-Gadu: * Accounts can specify a server to which to connect.
--- a/ChangeLog.API Sun Jul 05 06:51:35 2009 +0000 +++ b/ChangeLog.API Sun Jul 05 15:08:20 2009 +0000 @@ -30,6 +30,10 @@ * purple_connection_set_protocol_data * purple_contact_destroy * purple_conv_chat_invite_user + * purple_debug_is_unsafe + * purple_debug_is_verbose + * purple_debug_set_unsafe + * purple_debug_set_verbose * purple_global_proxy_set_info * purple_group_destroy * purple_log_get_activity_score
--- a/libpurple/cipher.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/cipher.c Sun Jul 05 15:08:20 2009 +0000 @@ -61,11 +61,144 @@ #include "signals.h" #include "value.h" +#if GLIB_CHECK_VERSION(2,16,0) +static void +purple_g_checksum_init(PurpleCipherContext *context, GChecksumType type) +{ + GChecksum *checksum; + + checksum = g_checksum_new(type); + purple_cipher_context_set_data(context, checksum); +} + +static void +purple_g_checksum_reset(PurpleCipherContext *context, GChecksumType type) +{ + GChecksum *checksum; + + checksum = purple_cipher_context_get_data(context); + g_return_if_fail(checksum != NULL); + +#if GLIB_CHECK_VERSION(2,18,0) + g_checksum_reset(checksum); +#else + g_checksum_free(checksum); + checksum = g_checksum_new(type); + purple_cipher_context_set_data(context, checksum); +#endif +} + +static void +purple_g_checksum_uninit(PurpleCipherContext *context) +{ + GChecksum *checksum; + + checksum = purple_cipher_context_get_data(context); + g_return_if_fail(checksum != NULL); + + g_checksum_free(checksum); +} + +static void +purple_g_checksum_append(PurpleCipherContext *context, const guchar *data, + gsize len) +{ + GChecksum *checksum; + + checksum = purple_cipher_context_get_data(context); + g_return_if_fail(checksum != NULL); + + while (len >= G_MAXSSIZE) { + g_checksum_update(checksum, data, G_MAXSSIZE); + len -= G_MAXSSIZE; + data += G_MAXSSIZE; + } + + if (len) + g_checksum_update(checksum, data, len); +} + +static gboolean +purple_g_checksum_digest(PurpleCipherContext *context, GChecksumType type, + gsize len, guchar *digest, gsize *out_len) +{ + GChecksum *checksum; + const gssize required_length = g_checksum_type_get_length(type); + + checksum = purple_cipher_context_get_data(context); + + g_return_val_if_fail(len >= required_length, FALSE); + g_return_val_if_fail(checksum != NULL, FALSE); + + g_checksum_get_digest(checksum, digest, &len); + + purple_cipher_context_reset(context, NULL); + + if (out_len) + *out_len = len; + + return TRUE; +} +#endif + + /******************************************************************************* * MD5 ******************************************************************************/ #define MD5_HMAC_BLOCK_SIZE 64 +static size_t +md5_get_block_size(PurpleCipherContext *context) +{ + /* This does not change (in this case) */ + return MD5_HMAC_BLOCK_SIZE; +} + +#if GLIB_CHECK_VERSION(2,16,0) + +static void +md5_init(PurpleCipherContext *context, void *extra) +{ + purple_g_checksum_init(context, G_CHECKSUM_MD5); +} + +static void +md5_reset(PurpleCipherContext *context, void *extra) +{ + purple_g_checksum_reset(context, G_CHECKSUM_MD5); +} + +static gboolean +md5_digest(PurpleCipherContext *context, gsize in_len, guchar digest[16], + size_t *out_len) +{ + return purple_g_checksum_digest(context, G_CHECKSUM_MD5, in_len, + digest, out_len); +} + +static PurpleCipherOps MD5Ops = { + NULL, /* Set Option */ + NULL, /* Get Option */ + md5_init, /* init */ + md5_reset, /* reset */ + purple_g_checksum_uninit, /* uninit */ + NULL, /* set iv */ + purple_g_checksum_append, /* append */ + md5_digest, /* digest */ + NULL, /* encrypt */ + NULL, /* decrypt */ + NULL, /* set salt */ + NULL, /* get salt size */ + NULL, /* set key */ + NULL, /* get key size */ + NULL, /* set batch mode */ + NULL, /* get batch mode */ + md5_get_block_size, /* get block size */ + NULL /* set key with len */ +}; + +#else /* GLIB_CHECK_VERSION(2,16,0) */ + struct MD5Context { guint32 total[2]; guint32 state[4]; @@ -327,13 +460,6 @@ return TRUE; } -static size_t -md5_get_block_size(PurpleCipherContext *context) -{ - /* This does not change (in this case) */ - return MD5_HMAC_BLOCK_SIZE; -} - static PurpleCipherOps MD5Ops = { NULL, /* Set option */ NULL, /* Get option */ @@ -355,6 +481,8 @@ NULL /* set key with len */ }; +#endif /* GLIB_CHECK_VERSION(2,16,0) */ + /******************************************************************************* * MD4 ******************************************************************************/ @@ -1613,6 +1741,61 @@ * SHA-1 ******************************************************************************/ #define SHA1_HMAC_BLOCK_SIZE 64 + +static size_t +sha1_get_block_size(PurpleCipherContext *context) +{ + /* This does not change (in this case) */ + return SHA1_HMAC_BLOCK_SIZE; +} + + +#if GLIB_CHECK_VERSION(2,16,0) + +static void +sha1_init(PurpleCipherContext *context, void *extra) +{ + purple_g_checksum_init(context, G_CHECKSUM_SHA1); +} + +static void +sha1_reset(PurpleCipherContext *context, void *extra) +{ + purple_g_checksum_reset(context, G_CHECKSUM_SHA1); +} + +static gboolean +sha1_digest(PurpleCipherContext *context, gsize in_len, guchar digest[20], + gsize *out_len) +{ + return purple_g_checksum_digest(context, G_CHECKSUM_SHA1, in_len, + digest, out_len); +} + +static PurpleCipherOps SHA1Ops = { + NULL, /* Set Option */ + NULL, /* Get Option */ + sha1_init, /* init */ + sha1_reset, /* reset */ + purple_g_checksum_uninit, /* uninit */ + NULL, /* set iv */ + purple_g_checksum_append, /* append */ + sha1_digest, /* digest */ + NULL, /* encrypt */ + NULL, /* decrypt */ + NULL, /* set salt */ + NULL, /* get salt size */ + NULL, /* set key */ + NULL, /* get key size */ + NULL, /* set batch mode */ + NULL, /* get batch mode */ + sha1_get_block_size, /* get block size */ + NULL /* set key with len */ +}; + +#else /* GLIB_CHECK_VERSION(2,16,0) */ + +#define SHA1_HMAC_BLOCK_SIZE 64 #define SHA1_ROTL(X,n) ((((X) << (n)) | ((X) >> (32-(n)))) & 0xFFFFFFFF) struct SHA1Context { @@ -1833,13 +2016,6 @@ return TRUE; } -static size_t -sha1_get_block_size(PurpleCipherContext *context) -{ - /* This does not change (in this case) */ - return SHA1_HMAC_BLOCK_SIZE; -} - static PurpleCipherOps SHA1Ops = { sha1_set_opt, /* Set Option */ sha1_get_opt, /* Get Option */ @@ -1861,10 +2037,65 @@ NULL /* set key with len */ }; +#endif /* GLIB_CHECK_VERSION(2,16,0) */ + /******************************************************************************* * SHA-256 ******************************************************************************/ #define SHA256_HMAC_BLOCK_SIZE 64 + +static size_t +sha256_get_block_size(PurpleCipherContext *context) +{ + /* This does not change (in this case) */ + return SHA256_HMAC_BLOCK_SIZE; +} + +#if GLIB_CHECK_VERSION(2,16,0) + +static void +sha256_init(PurpleCipherContext *context, void *extra) +{ + purple_g_checksum_init(context, G_CHECKSUM_SHA256); +} + +static void +sha256_reset(PurpleCipherContext *context, void *extra) +{ + purple_g_checksum_reset(context, G_CHECKSUM_SHA256); +} + +static gboolean +sha256_digest(PurpleCipherContext *context, gsize in_len, guchar digest[20], + gsize *out_len) +{ + return purple_g_checksum_digest(context, G_CHECKSUM_SHA256, in_len, + digest, out_len); +} + +static PurpleCipherOps SHA256Ops = { + NULL, /* Set Option */ + NULL, /* Get Option */ + sha256_init, /* init */ + sha256_reset, /* reset */ + purple_g_checksum_uninit, /* uninit */ + NULL, /* set iv */ + purple_g_checksum_append, /* append */ + sha256_digest, /* digest */ + NULL, /* encrypt */ + NULL, /* decrypt */ + NULL, /* set salt */ + NULL, /* get salt size */ + NULL, /* set key */ + NULL, /* get key size */ + NULL, /* set batch mode */ + NULL, /* get batch mode */ + sha256_get_block_size, /* get block size */ + NULL /* set key with len */ +}; + +#else /* GLIB_CHECK_VERSION(2,16,0) */ + #define SHA256_ROTR(X,n) ((((X) >> (n)) | ((X) << (32-(n)))) & 0xFFFFFFFF) static const guint32 sha256_K[64] = @@ -2088,13 +2319,6 @@ return TRUE; } -static size_t -sha256_get_block_size(PurpleCipherContext *context) -{ - /* This does not change (in this case) */ - return SHA256_HMAC_BLOCK_SIZE; -} - static PurpleCipherOps SHA256Ops = { sha256_set_opt, /* Set Option */ sha256_get_opt, /* Get Option */ @@ -2116,6 +2340,8 @@ NULL /* set key with len */ }; +#endif /* GLIB_CHECK_VERSION(2,16,0) */ + /******************************************************************************* * RC4 ******************************************************************************/
--- a/libpurple/debug.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/debug.c Sun Jul 05 15:08:20 2009 +0000 @@ -36,12 +36,20 @@ * * It doesn't make sense to make this a normal Purple preference * because it's a command line option. This will always be FALSE, - * unless the user explicitly started Purple with the -d flag. + * unless the user explicitly started the UI with the -d flag. * It doesn't matter what this value was the last time Purple was * started, so it doesn't make sense to save it in prefs. */ static gboolean debug_enabled = FALSE; +/* + * These determine whether verbose or unsafe debugging are desired. I + * don't want to make these purple preferences because their values should + * not be remembered across instances of the UI. + */ +static gboolean debug_verbose = FALSE; +static gboolean debug_unsafe = FALSE; + static void purple_debug_vargs(PurpleDebugLevel level, const char *category, const char *format, va_list args) @@ -175,6 +183,30 @@ debug_ui_ops = ops; } +gboolean +purple_debug_is_verbose() +{ + return debug_verbose; +} + +void +purple_debug_set_verbose(gboolean verbose) +{ + debug_verbose = verbose; +} + +gboolean +purple_debug_is_unsafe() +{ + return debug_unsafe; +} + +void +purple_debug_set_unsafe(gboolean unsafe) +{ + debug_unsafe = unsafe; +} + PurpleDebugUiOps * purple_debug_get_ui_ops(void) { @@ -184,6 +216,13 @@ void purple_debug_init(void) { + /* Read environment variables once per init */ + if(g_getenv("PURPLE_UNSAFE_DEBUG")) + purple_debug_set_unsafe(TRUE); + + if(g_getenv("PURPLE_VERBOSE_DEBUG")) + purple_debug_set_verbose(TRUE); + purple_prefs_add_none("/purple/debug"); /* @@ -193,3 +232,4 @@ */ purple_prefs_add_bool("/purple/debug/timestamps", TRUE); } +
--- a/libpurple/debug.h Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/debug.h Sun Jul 05 15:08:20 2009 +0000 @@ -151,10 +151,50 @@ /** * Check if console debug output is enabled. * - * @return TRUE if debuggin is enabled, FALSE if it is not. + * @return TRUE if debugging is enabled, FALSE if it is not. */ gboolean purple_debug_is_enabled(void); +/** + * Enable or disable verbose debugging. This ordinarily should only be called + * by #purple_debug_init, but there are cases where this can be useful for + * plugins. + * + * @param verbose TRUE to enable verbose debugging or FALSE to disable it. + * + * @since 2.6.0 + */ +void purple_debug_set_verbose(gboolean verbose); + +/** + * Check if verbose logging is enabled. + * + * @return TRUE if verbose debugging is enabled, FALSE if it is not. + * + * @since 2.6.0 + */ +gboolean purple_debug_is_verbose(void); + +/** + * Enable or disable verbose debugging. This ordinarily should only be called + * by #purple_debug_init, but there are cases where this can be useful for + * plugins. + * + * @param unsafe TRUE to enable verbose debugging or FALSE to disable it. + * + * @since 2.6.0 + */ +void purple_debug_set_unsafe(gboolean unsafe); + +/** + * Check if unsafe debugging is enabled. + * + * @return TRUE if verbose debugging is enabled, FALSE if it is not. + * + * @since 2.6.0 + */ +gboolean purple_debug_is_unsafe(void); + /*@}*/ /**************************************************************************/
--- a/libpurple/internal.h Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/internal.h Sun Jul 05 15:08:20 2009 +0000 @@ -148,6 +148,14 @@ # endif #endif +#ifndef G_MAXSSIZE +# if GLIB_SIZEOF_LONG == 8 +# define G_MAXSSIZE ((gssize) 0x7fffffffffffffff) +# else +# define G_MAXSSIZE ((gssize) 0x7fffffff) +# endif +#endif + #if GLIB_CHECK_VERSION(2,6,0) # include <glib/gstdio.h> #endif
--- a/libpurple/protocols/jabber/buddy.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/jabber/buddy.c Sun Jul 05 15:08:20 2009 +0000 @@ -650,16 +650,88 @@ g_free(jbi); } +static void +add_jbr_info(JabberBuddyInfo *jbi, const char *resource, + JabberBuddyResource *jbr) +{ + JabberBuddyInfoResource *jbir; + PurpleNotifyUserInfo *user_info; + + jbir = g_hash_table_lookup(jbi->resources, resource); + user_info = jbi->user_info; + + if (jbr && jbr->client.name) { + char *tmp = + g_strdup_printf("%s%s%s", jbr->client.name, + (jbr->client.version ? " " : ""), + (jbr->client.version ? jbr->client.version : "")); + purple_notify_user_info_prepend_pair(user_info, _("Client"), tmp); + g_free(tmp); + + if (jbr->client.os) + purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); + } + + if (jbr && jbr->tz_off != PURPLE_NO_TZ_OFF) { + time_t now_t; + struct tm *now; + char *timestamp; + time(&now_t); + now_t += jbr->tz_off; + now = gmtime(&now_t); + + timestamp = + g_strdup_printf("%s %c%02d%02d", purple_time_format(now), + jbr->tz_off < 0 ? '-' : '+', + abs(jbr->tz_off / (60*60)), + abs((jbr->tz_off % (60*60)) / 60)); + purple_notify_user_info_prepend_pair(user_info, _("Local Time"), timestamp); + g_free(timestamp); + } + + if (jbir && jbir->idle_seconds > 0) { + char *idle = purple_str_seconds_to_string(jbir->idle_seconds); + purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle); + g_free(idle); + } + + if (jbr) { + char *purdy = NULL; + char *tmp; + char priority[12]; + const char *status_name = jabber_buddy_state_get_name(jbr->state); + + if (jbr->status) { + purdy = purple_strdup_withhtml(jbr->status); + + if (purple_strequal(status_name, purdy)) + status_name = NULL; + } + + tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), + ((status_name && purdy) ? ": " : ""), + (purdy ? purdy : "")); + purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp); + + g_snprintf(priority, sizeof(priority), "%d", jbr->priority); + purple_notify_user_info_prepend_pair(user_info, _("Priority"), priority); + + g_free(tmp); + g_free(purdy); + } else { + purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown")); + } +} + static void jabber_buddy_info_show_if_ready(JabberBuddyInfo *jbi) { - char *resource_name, *tmp; + char *resource_name; JabberBuddyResource *jbr; - JabberBuddyInfoResource *jbir = NULL; GList *resources; PurpleNotifyUserInfo *user_info; /* not yet */ - if(jbi->ids) + if (jbi->ids) return; user_info = jbi->user_info; @@ -669,377 +741,24 @@ if (purple_notify_user_info_get_entries(user_info)) purple_notify_user_info_prepend_section_break(user_info); - /* Prepend the primary buddy info to user_info so that it goes before the vcard. */ - if(resource_name) { + /* Add the information about the user's resource(s) */ + if (resource_name) { jbr = jabber_buddy_find_resource(jbi->jb, resource_name); - jbir = g_hash_table_lookup(jbi->resources, resource_name); - if(jbr && jbr->client.name) { - tmp = g_strdup_printf("%s%s%s", jbr->client.name, - (jbr->client.version ? " " : ""), - (jbr->client.version ? jbr->client.version : "")); - purple_notify_user_info_add_pair(user_info, _("Client"), tmp); - g_free(tmp); - - if(jbr->client.os) { - purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); - } - } - if (jbr && jbr->tz_off != PURPLE_NO_TZ_OFF) { - time_t now_t; - struct tm *now; - char *timestamp; - time(&now_t); - now_t += jbr->tz_off; - now = gmtime(&now_t); - - timestamp = g_strdup_printf("%s %c%02d%02d", purple_time_format(now), - jbr->tz_off < 0 ? '-' : '+', - abs(jbr->tz_off / (60*60)), - abs((jbr->tz_off % (60*60)) / 60)); - purple_notify_user_info_prepend_pair(user_info, _("Local Time"), timestamp); - g_free(timestamp); - } - if(jbir) { - if(jbir->idle_seconds > 0) { - char *idle = purple_str_seconds_to_string(jbir->idle_seconds); - purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle); - g_free(idle); - } - } - if(jbr) { - char *purdy = NULL; - const char *status_name = jabber_buddy_state_get_name(jbr->state); - if(jbr->status) - purdy = purple_strdup_withhtml(jbr->status); - if(status_name && purdy && !strcmp(status_name, purdy)) - status_name = NULL; - - tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), - ((status_name && purdy) ? ": " : ""), - (purdy ? purdy : "")); - purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp); - g_free(tmp); - g_free(purdy); - } else { - purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown")); - } -#if 0 - /* #if 0 this for now; I think this would be far more useful if we limited this to a particular set of features - * of particular interest (-vv jumps out as one). As it is now, I don't picture people getting all excited: "Oh sweet crap! - * So-and-so supports 'jabber:x:data' AND 'Collaborative Data Objects'!" - */ - - if(jbr && jbr->caps) { - GString *tmp = g_string_new(""); - GList *iter; - for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { - const char *feature = iter->data; - - if(!strcmp(feature, "jabber:iq:last")) - feature = _("Last Activity"); - else if(!strcmp(feature, "http://jabber.org/protocol/disco#info")) - feature = _("Service Discovery Info"); - else if(!strcmp(feature, "http://jabber.org/protocol/disco#items")) - feature = _("Service Discovery Items"); - else if(!strcmp(feature, "http://jabber.org/protocol/address")) - feature = _("Extended Stanza Addressing"); - else if(!strcmp(feature, "http://jabber.org/protocol/muc")) - feature = _("Multi-User Chat"); - else if(!strcmp(feature, "http://jabber.org/protocol/muc#user")) - feature = _("Multi-User Chat Extended Presence Information"); - else if(!strcmp(feature, "http://jabber.org/protocol/ibb")) - feature = _("In-Band Bytestreams"); - else if(!strcmp(feature, "http://jabber.org/protocol/commands")) - feature = _("Ad-Hoc Commands"); - else if(!strcmp(feature, "http://jabber.org/protocol/pubsub")) - feature = _("PubSub Service"); - else if(!strcmp(feature, "http://jabber.org/protocol/bytestreams")) - feature = _("SOCKS5 Bytestreams"); - else if(!strcmp(feature, "jabber:x:oob")) - feature = _("Out of Band Data"); - else if(!strcmp(feature, "http://jabber.org/protocol/xhtml-im")) - feature = _("XHTML-IM"); - else if(!strcmp(feature, "jabber:iq:register")) - feature = _("In-Band Registration"); - else if(!strcmp(feature, "http://jabber.org/protocol/geoloc")) - feature = _("User Location"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0084.html")) - feature = _("User Avatar"); - else if(!strcmp(feature, "http://jabber.org/protocol/chatstates")) - feature = _("Chat State Notifications"); - else if(!strcmp(feature, "jabber:iq:version")) - feature = _("Software Version"); - else if(!strcmp(feature, "http://jabber.org/protocol/si")) - feature = _("Stream Initiation"); - else if(!strcmp(feature, "http://jabber.org/protocol/si/profile/file-transfer")) - feature = _("File Transfer"); - else if(!strcmp(feature, "http://jabber.org/protocol/mood")) - feature = _("User Mood"); - else if(!strcmp(feature, "http://jabber.org/protocol/activity")) - feature = _("User Activity"); - else if(!strcmp(feature, "http://jabber.org/protocol/caps")) - feature = _("Entity Capabilities"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html")) - feature = _("Encrypted Session Negotiations"); - else if(!strcmp(feature, "http://jabber.org/protocol/tune")) - feature = _("User Tune"); - else if(!strcmp(feature, "http://jabber.org/protocol/rosterx")) - feature = _("Roster Item Exchange"); - else if(!strcmp(feature, "http://jabber.org/protocol/reach")) - feature = _("Reachability Address"); - else if(!strcmp(feature, "http://jabber.org/protocol/profile")) - feature = _("User Profile"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0166.html#ns")) - feature = _("Jingle"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0167.html#ns")) - feature = _("Jingle Audio"); - else if(!strcmp(feature, "http://jabber.org/protocol/nick")) - feature = _("User Nickname"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-udp")) - feature = _("Jingle ICE UDP"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-tcp")) - feature = _("Jingle ICE TCP"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0177.html#ns")) - feature = _("Jingle Raw UDP"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0180.html#ns")) - feature = _("Jingle Video"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0181.html#ns")) - feature = _("Jingle DTMF"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0184.html#ns")) - feature = _("Message Receipts"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0189.html#ns")) - feature = _("Public Key Publishing"); - else if(!strcmp(feature, "http://jabber.org/protocol/chatting")) - feature = _("User Chatting"); - else if(!strcmp(feature, "http://jabber.org/protocol/browsing")) - feature = _("User Browsing"); - else if(!strcmp(feature, "http://jabber.org/protocol/gaming")) - feature = _("User Gaming"); - else if(!strcmp(feature, "http://jabber.org/protocol/viewing")) - feature = _("User Viewing"); - else if(!strcmp(feature, "urn:xmpp:ping")) - feature = _("Ping"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0200.html#ns")) - feature = _("Stanza Encryption"); - else if(!strcmp(feature, "urn:xmpp:time")) - feature = _("Entity Time"); - else if(!strcmp(feature, "urn:xmpp:delay")) - feature = _("Delayed Delivery"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0204.html#ns")) - feature = _("Collaborative Data Objects"); - else if(!strcmp(feature, "http://jabber.org/protocol/fileshare")) - feature = _("File Repository and Sharing"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0215.html#ns")) - feature = _("STUN Service Discovery for Jingle"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html#ns")) - feature = _("Simplified Encrypted Session Negotiation"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0219.html#ns")) - feature = _("Hop Check"); - else if(g_str_has_suffix(feature, "+notify")) - feature = NULL; - if(feature) - g_string_append_printf(tmp, "%s<br/>", feature); - } - - if(strlen(tmp->str) > 0) - purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str); - - g_string_free(tmp, TRUE); - } -#endif + add_jbr_info(jbi, resource_name, jbr); } else { - gboolean multiple_resources = jbi->jb->resources && jbi->jb->resources->next; - - for(resources = jbi->jb->resources; resources; resources = resources->next) { - char *purdy = NULL; - const char *status_name = NULL; - + for (resources = jbi->jb->resources; resources; resources = resources->next) { jbr = resources->data; /* put a section break between resources, this is not needed if we are at the first, because one was already added for the vcard section */ - if (resources != jbi->jb->resources) { + if (resources != jbi->jb->resources) purple_notify_user_info_prepend_section_break(user_info); - } - - if(jbr->client.name) { - tmp = g_strdup_printf("%s%s%s", jbr->client.name, - (jbr->client.version ? " " : ""), - (jbr->client.version ? jbr->client.version : "")); - purple_notify_user_info_prepend_pair(user_info, - _("Client"), tmp); - g_free(tmp); - - if(jbr->client.os) { - purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); - } - } - - if (jbr->tz_off != PURPLE_NO_TZ_OFF) { - time_t now_t; - struct tm *now; - char *timestamp; - time(&now_t); - now_t += jbr->tz_off; - now = gmtime(&now_t); - - timestamp = g_strdup_printf("%s %c%02d%02d", purple_time_format(now), - jbr->tz_off < 0 ? '-' : '+', - abs(jbr->tz_off / (60*60)), - abs((jbr->tz_off % (60*60)) / 60)); - purple_notify_user_info_prepend_pair(user_info, _("Local Time"), timestamp); - g_free(timestamp); - } - - if(jbr->name && (jbir = g_hash_table_lookup(jbi->resources, jbr->name))) { - if(jbir->idle_seconds > 0) { - char *idle = purple_str_seconds_to_string(jbir->idle_seconds); - purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle); - g_free(idle); - } - } - - status_name = jabber_buddy_state_get_name(jbr->state); - if(jbr->status) - purdy = purple_strdup_withhtml(jbr->status); - if(status_name && purdy && !strcmp(status_name, purdy)) - status_name = NULL; - - tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), - ((status_name && purdy) ? ": " : ""), - (purdy ? purdy : "")); - purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp); - g_free(tmp); - g_free(purdy); - - if(multiple_resources) { - tmp = g_strdup_printf("%d", jbr->priority); - purple_notify_user_info_prepend_pair(user_info, _("Priority"), tmp); - g_free(tmp); - } - - if(jbr->name) - purple_notify_user_info_prepend_pair(user_info, _("Resource"), jbr->name); -#if 0 - if(jbr && jbr->caps) { - GString *tmp = g_string_new(""); - GList *iter; - for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { - const char *feature = iter->data; - if(!strcmp(feature, "jabber:iq:last")) - feature = _("Last Activity"); - else if(!strcmp(feature, "http://jabber.org/protocol/disco#info")) - feature = _("Service Discovery Info"); - else if(!strcmp(feature, "http://jabber.org/protocol/disco#items")) - feature = _("Service Discovery Items"); - else if(!strcmp(feature, "http://jabber.org/protocol/address")) - feature = _("Extended Stanza Addressing"); - else if(!strcmp(feature, "http://jabber.org/protocol/muc")) - feature = _("Multi-User Chat"); - else if(!strcmp(feature, "http://jabber.org/protocol/muc#user")) - feature = _("Multi-User Chat Extended Presence Information"); - else if(!strcmp(feature, "http://jabber.org/protocol/ibb")) - feature = _("In-Band Bytestreams"); - else if(!strcmp(feature, "http://jabber.org/protocol/commands")) - feature = _("Ad-Hoc Commands"); - else if(!strcmp(feature, "http://jabber.org/protocol/pubsub")) - feature = _("PubSub Service"); - else if(!strcmp(feature, "http://jabber.org/protocol/bytestreams")) - feature = _("SOCKS5 Bytestreams"); - else if(!strcmp(feature, "jabber:x:oob")) - feature = _("Out of Band Data"); - else if(!strcmp(feature, "http://jabber.org/protocol/xhtml-im")) - feature = _("XHTML-IM"); - else if(!strcmp(feature, "jabber:iq:register")) - feature = _("In-Band Registration"); - else if(!strcmp(feature, "http://jabber.org/protocol/geoloc")) - feature = _("User Location"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0084.html")) - feature = _("User Avatar"); - else if(!strcmp(feature, "http://jabber.org/protocol/chatstates")) - feature = _("Chat State Notifications"); - else if(!strcmp(feature, "jabber:iq:version")) - feature = _("Software Version"); - else if(!strcmp(feature, "http://jabber.org/protocol/si")) - feature = _("Stream Initiation"); - else if(!strcmp(feature, "http://jabber.org/protocol/si/profile/file-transfer")) - feature = _("File Transfer"); - else if(!strcmp(feature, "http://jabber.org/protocol/mood")) - feature = _("User Mood"); - else if(!strcmp(feature, "http://jabber.org/protocol/activity")) - feature = _("User Activity"); - else if(!strcmp(feature, "http://jabber.org/protocol/caps")) - feature = _("Entity Capabilities"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html")) - feature = _("Encrypted Session Negotiations"); - else if(!strcmp(feature, "http://jabber.org/protocol/tune")) - feature = _("User Tune"); - else if(!strcmp(feature, "http://jabber.org/protocol/rosterx")) - feature = _("Roster Item Exchange"); - else if(!strcmp(feature, "http://jabber.org/protocol/reach")) - feature = _("Reachability Address"); - else if(!strcmp(feature, "http://jabber.org/protocol/profile")) - feature = _("User Profile"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0166.html#ns")) - feature = _("Jingle"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0167.html#ns")) - feature = _("Jingle Audio"); - else if(!strcmp(feature, "http://jabber.org/protocol/nick")) - feature = _("User Nickname"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-udp")) - feature = _("Jingle ICE UDP"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0176.html#ns-tcp")) - feature = _("Jingle ICE TCP"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0177.html#ns")) - feature = _("Jingle Raw UDP"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0180.html#ns")) - feature = _("Jingle Video"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0181.html#ns")) - feature = _("Jingle DTMF"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0184.html#ns")) - feature = _("Message Receipts"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0189.html#ns")) - feature = _("Public Key Publishing"); - else if(!strcmp(feature, "http://jabber.org/protocol/chatting")) - feature = _("User Chatting"); - else if(!strcmp(feature, "http://jabber.org/protocol/browsing")) - feature = _("User Browsing"); - else if(!strcmp(feature, "http://jabber.org/protocol/gaming")) - feature = _("User Gaming"); - else if(!strcmp(feature, "http://jabber.org/protocol/viewing")) - feature = _("User Viewing"); - else if(!strcmp(feature, "urn:xmpp:ping")) - feature = _("Ping"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0200.html#ns")) - feature = _("Stanza Encryption"); - else if(!strcmp(feature, "urn:xmpp:time")) - feature = _("Entity Time"); - else if(!strcmp(feature, "urn:xmpp:delay")) - feature = _("Delayed Delivery"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0204.html#ns")) - feature = _("Collaborative Data Objects"); - else if(!strcmp(feature, "http://jabber.org/protocol/fileshare")) - feature = _("File Repository and Sharing"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0215.html#ns")) - feature = _("STUN Service Discovery for Jingle"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0116.html#ns")) - feature = _("Simplified Encrypted Session Negotiation"); - else if(!strcmp(feature, "http://www.xmpp.org/extensions/xep-0219.html#ns")) - feature = _("Hop Check"); - else if(g_str_has_suffix(feature, "+notify")) - feature = NULL; + add_jbr_info(jbi, jbr->name, jbr); - if(feature) - g_string_append_printf(tmp, "%s\n", feature); - } - if(strlen(tmp->str) > 0) - purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str); - - g_string_free(tmp, TRUE); - } -#endif + if (jbr->name) + purple_notify_user_info_prepend_pair(user_info, _("Resource"), jbr->name); } } @@ -1047,13 +766,13 @@ /* the buddy is offline */ gchar *status = g_strdup_printf("%s%s%s", _("Offline"), - jbi->last_message ? ": " : "", - jbi->last_message ? jbi->last_message : ""); + jbi->last_message ? ": " : "", + jbi->last_message ? jbi->last_message : ""); if (jbi->last_seconds > 0) { char *last = purple_str_seconds_to_string(jbi->last_seconds); gchar *message = g_strdup_printf(_("%s ago"), last); purple_notify_user_info_prepend_pair(user_info, - _("Logged off"), message); + _("Logged Off"), message); g_free(last); g_free(message); } @@ -1065,7 +784,7 @@ purple_notify_userinfo(jbi->js->gc, jbi->jid, user_info, NULL, NULL); - while(jbi->vcard_imgids) { + while (jbi->vcard_imgids) { purple_imgstore_unref_by_id(GPOINTER_TO_INT(jbi->vcard_imgids->data)); jbi->vcard_imgids = g_slist_delete_link(jbi->vcard_imgids, jbi->vcard_imgids); }
--- a/libpurple/protocols/msn/soap.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/msn/soap.c Sun Jul 05 15:08:20 2009 +0000 @@ -80,7 +80,7 @@ conn->session = session; conn->host = g_strdup(host); conn->queue = g_queue_new(); - conn->unsafe_debug = g_getenv("PURPLE_UNSAFE_DEBUG") != NULL; + conn->unsafe_debug = purple_debug_is_unsafe(); return conn; }
--- a/libpurple/protocols/yahoo/util.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/yahoo/util.c Sun Jul 05 15:08:20 2009 +0000 @@ -354,7 +354,7 @@ else if ((match = (char *) g_hash_table_lookup(ht, tmp->str))) g_string_append(s, match); else { - purple_debug(PURPLE_DEBUG_ERROR, "yahoo", + purple_debug_error("yahoo", "Unknown ansi code 'ESC[%sm'.\n", tmp->str); g_string_free(tmp, TRUE); break; @@ -423,7 +423,7 @@ ret = s->str; g_string_free(s, FALSE); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "yahoo_codes_to_html: Returning string: '%s'.\n", ret); + purple_debug_misc("yahoo", "yahoo_codes_to_html: Returning string: '%s'.\n", ret); return ret; } @@ -822,7 +822,7 @@ g_string_free(dest, FALSE); esc = g_strescape(ret, NULL); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "yahoo_html_to_codes: Returning string: '%s'.\n", esc); + purple_debug_misc("yahoo", "yahoo_html_to_codes: Returning string: '%s'.\n", esc); g_free(esc); yahoo_htc_queue_cleanup(colors);
--- a/libpurple/protocols/yahoo/yahoo.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Sun Jul 05 15:08:20 2009 +0000 @@ -390,7 +390,7 @@ b = i->data; g = purple_buddy_get_group(b); if (!purple_utf8_strcasecmp(group, purple_group_get_name(g))) { - purple_debug(PURPLE_DEBUG_MISC, "yahoo", + purple_debug_misc("yahoo", "Oh good, %s is in the right group (%s).\n", name, group); list = g_slist_delete_link(list, i); onlist = 1; @@ -399,7 +399,7 @@ } if (!onlist) { - purple_debug(PURPLE_DEBUG_MISC, "yahoo", + purple_debug_misc("yahoo", "Uhoh, %s isn't on the list (or not in this group), adding him to group %s.\n", name, group); if (!(g = purple_find_group(group))) { g = purple_group_new(group); @@ -427,7 +427,7 @@ for (i = list; i; i = i->next) { b = i->data; g = purple_buddy_get_group(b); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, + purple_debug_misc("yahoo", "Deleting Buddy %s from group %s.\n", name, purple_group_get_name(g)); purple_blist_remove_buddy(b); } @@ -801,9 +801,8 @@ PurpleBuddy *bud = purple_find_buddy(account, from); if (!bud) { - purple_debug(PURPLE_DEBUG_WARNING, "yahoo", - "%s is playing a game, and doesn't want " - "you to know.\n", from); + purple_debug_warning("yahoo", + "%s is playing a game, and doesn't want you to know.\n", from); } f = yahoo_friend_find(gc, from); @@ -1943,8 +1942,7 @@ name = g_strdup(purple_buddy_get_name(buddy)); account = purple_buddy_get_account(buddy); - purple_debug(PURPLE_DEBUG_INFO, "blist", - "Removing '%s' from buddy list.\n", name); + purple_debug_info("yahoo", "blist: Removing '%s' from buddy list.\n", name); purple_account_remove_buddy(account, buddy, group); purple_blist_remove_buddy(buddy); @@ -2382,14 +2380,14 @@ pos += 2; pktlen = yahoo_get16(buf + pos); pos += 2; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "p2p: %d bytes to read\n", len); + purple_debug_misc("yahoo", "p2p: %d bytes to read\n", len); pkt = yahoo_packet_new(0, 0, 0); pkt->service = yahoo_get16(buf + pos); pos += 2; pkt->status = yahoo_get32(buf + pos); pos += 4; pkt->id = yahoo_get32(buf + pos); pos += 4; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "p2p: Yahoo Service: 0x%02x Status: %d\n",pkt->service, pkt->status); + purple_debug_misc("yahoo", "p2p: Yahoo Service: 0x%02x Status: %d\n",pkt->service, pkt->status); yahoo_packet_read(pkt, buf + pos, pktlen); /* packet processing */ @@ -2909,8 +2907,7 @@ break; default: - purple_debug(PURPLE_DEBUG_ERROR, "yahoo", - "Unhandled service 0x%02x\n", pkt->service); + purple_debug_error("yahoo", "Unhandled service 0x%02x\n", pkt->service); break; } } @@ -2979,8 +2976,7 @@ pos += 2; pktlen = yahoo_get16(yd->rxqueue + pos); pos += 2; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen); + purple_debug_misc("yahoo", "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen); if (yd->rxlen < (YAHOO_PACKET_HDRLEN + pktlen)) return; @@ -2991,8 +2987,7 @@ pkt->service = yahoo_get16(yd->rxqueue + pos); pos += 2; pkt->status = yahoo_get32(yd->rxqueue + pos); pos += 4; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "Yahoo Service: 0x%02x Status: %d\n", + purple_debug_misc("yahoo", "Yahoo Service: 0x%02x Status: %d\n", pkt->service, pkt->status); pkt->id = yahoo_get32(yd->rxqueue + pos); pos += 4; @@ -4882,8 +4877,7 @@ gc = purple_conversation_get_gc(conv); yd = gc->proto_data; id = yd->conf_id; - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "Trying to join %s \n", args[0]); + purple_debug_info("yahoo", "Trying to join %s \n", args[0]); comp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); g_hash_table_replace(comp, g_strdup("room"), g_ascii_strdown(args[0], -1)); @@ -4920,8 +4914,8 @@ g_return_val_if_fail(c != NULL, FALSE); - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "Sending <ding> on account %s to buddy %s.\n", username, c->name); + purple_debug_info("yahoo", "Sending <ding> on account %s to buddy %s.\n", + username, c->name); purple_conv_im_send_with_flags(PURPLE_CONV_IM(c), "<ding>", PURPLE_MESSAGE_INVISIBLE); return TRUE;
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_filexfer.c Sun Jul 05 15:08:20 2009 +0000 @@ -156,8 +156,8 @@ PurpleXfer *xfer; struct yahoo_xfer_data *xd; - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "AAA - in yahoo_receivefile_connected\n"); + purple_debug_info("yahoo", "in yahoo_receivefile_connected\n"); + if (!(xfer = data)) return; if (!(xd = xfer->data)) @@ -235,8 +235,8 @@ PurpleAccount *account; struct yahoo_data *yd; - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "AAA - in yahoo_sendfile_connected\n"); + purple_debug_info("yahoo", "in yahoo_sendfile_connected\n"); + if (!(xfer = data)) return; if (!(xd = xfer->data))
--- a/libpurple/protocols/yahoo/yahoo_packet.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_packet.c Sun Jul 05 15:08:20 2009 +0000 @@ -187,15 +187,12 @@ pos = x; pkt->hash = g_slist_prepend(pkt->hash, pair); -#ifdef DEBUG - { + if (purple_debug_is_verbose()) { char *esc; esc = g_strescape(pair->value, NULL); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "Key: %d \tValue: %s\n", pair->key, esc); + purple_debug_misc("yahoo", "Key: %d \tValue: %s\n", pair->key, esc); g_free(esc); } -#endif /* DEBUG */ } else { g_free(pair); } @@ -253,35 +250,35 @@ #ifdef YAHOO_DEBUG int i; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc("yahoo", ""); for (i = 0; i + 1 < len; i += 2) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02x%02x ", data[i], data[i + 1]); + purple_debug_misc(NULL, "%02x%02x ", data[i], data[i + 1]); } if (i < len) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02x", data[i]); + purple_debug_misc(NULL, "%02x", data[i]); - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); for (i = 0; i < len; i++) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } if (g_ascii_isprint(data[i])) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%c ", data[i]); + purple_debug_misc(NULL, "%c ", data[i]); else - purple_debug(PURPLE_DEBUG_MISC, NULL, ". "); + purple_debug_misc(NULL, ". "); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); + purple_debug_misc(NULL, "\n"); #endif /* YAHOO_DEBUG */ }
--- a/libpurple/protocols/yahoo/yahoochat.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoochat.c Sun Jul 05 15:08:20 2009 +0000 @@ -648,7 +648,7 @@ } if (!msg) { - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Got a message packet with no message.\nThis probably means something important, but we're ignoring it.\n"); + purple_debug_misc("yahoo", "Got a message packet with no message.\nThis probably means something important, but we're ignoring it.\n"); return; } msg2 = yahoo_string_decode(gc, msg, utf8);
--- a/libpurple/protocols/yahoo/ycht.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/protocols/yahoo/ycht.c Sun Jul 05 15:08:20 2009 +0000 @@ -196,35 +196,35 @@ #ifdef YAHOO_YCHT_DEBUG int i; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc("yahoo", ""); for (i = 0; i + 1 < len; i += 2) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02hhx%02hhx ", data[i], data[i + 1]); + purple_debug_misc(NULL, "%02hhx%02hhx ", data[i], data[i + 1]); } if (i < len) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02hhx", data[i]); + purple_debug_misc(NULL, "%02hhx", data[i]); - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); for (i = 0; i < len; i++) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } if (g_ascii_isprint(data[i])) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%c ", data[i]); + purple_debug_misc(NULL, "%c ", data[i]); else - purple_debug(PURPLE_DEBUG_MISC, NULL, ". "); + purple_debug_misc(NULL, ". "); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); + purple_debug_misc(NULL, "\n"); #endif /* YAHOO_YCHT_DEBUG */ } @@ -507,16 +507,15 @@ service = yahoo_get32(ycht->rxqueue + pos); pos += 4; status = yahoo_get16(ycht->rxqueue + pos); pos += 2; pktlen = yahoo_get16(ycht->rxqueue + pos); pos += 2; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "ycht: %d bytes to read, rxlen is %d\n", pktlen, ycht->rxlen); + purple_debug_misc("yahoo", "ycht: %d bytes to read, rxlen is %d\n", + pktlen, ycht->rxlen); if (ycht->rxlen < (YCHT_HEADER_LEN + pktlen)) return; purple_debug_misc("yahoo", "--==Incoming YCHT packet==--\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "YCHT Service: 0x%02x Version: 0x%02x Status: 0x%02x\n", - service, version, status); + purple_debug_misc("yahoo", "YCHT Service: 0x%02x Version: 0x%02x Status: 0x%02x\n", + service, version, status); ycht_packet_dump(ycht->rxqueue, YCHT_HEADER_LEN + pktlen); pkt = ycht_packet_new(version, service, status);
--- a/libpurple/tests/test_cipher.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/tests/test_cipher.c Sun Jul 05 15:08:20 2009 +0000 @@ -168,6 +168,11 @@ purple_cipher_context_destroy(context); \ } +START_TEST(test_sha1_empty_string) { + SHA1_TEST("", "da39a3ee5e6b4b0d3255bfef95601890afd80709"); +} +END_TEST + START_TEST(test_sha1_a) { SHA1_TEST("a", "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"); } @@ -190,6 +195,66 @@ END_TEST /****************************************************************************** + * SHA-256 Tests + *****************************************************************************/ +#define SHA256_TEST(data, digest) { \ + PurpleCipher *cipher = NULL; \ + PurpleCipherContext *context = NULL; \ + gchar cdigest[65]; \ + gboolean ret = FALSE; \ + \ + cipher = purple_ciphers_find_cipher("sha256"); \ + context = purple_cipher_context_new(cipher, NULL); \ + \ + if((data)) { \ + purple_cipher_context_append(context, (guchar *)(data), strlen((data))); \ + } else { \ + gint j; \ + guchar buff[1000]; \ + \ + memset(buff, 'a', 1000); \ + \ + for(j = 0; j < 1000; j++) \ + purple_cipher_context_append(context, buff, 1000); \ + } \ + \ + ret = purple_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \ + NULL); \ + \ + fail_unless(ret == TRUE, NULL); \ + \ + fail_unless(strcmp((digest), cdigest) == 0, NULL); \ + \ + purple_cipher_context_destroy(context); \ +} + +START_TEST(test_sha256_empty_string) { + SHA256_TEST("", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); +} +END_TEST + +START_TEST(test_sha256_a) { + SHA256_TEST("a", "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"); +} +END_TEST + +START_TEST(test_sha256_abc) { + SHA256_TEST("abc", "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"); +} +END_TEST + +START_TEST(test_sha256_abcd_gibberish) { + SHA256_TEST("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); +} +END_TEST + +START_TEST(test_sha256_1000_as_1000_times) { + SHA256_TEST(NULL, "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0"); +} +END_TEST + +/****************************************************************************** * DES Tests *****************************************************************************/ #define DES_TEST(in, keyz, out, len) { \ @@ -726,12 +791,22 @@ /* sha1 tests */ tc = tcase_create("SHA1"); + tcase_add_test(tc, test_sha1_empty_string); tcase_add_test(tc, test_sha1_a); tcase_add_test(tc, test_sha1_abc); tcase_add_test(tc, test_sha1_abcd_gibberish); tcase_add_test(tc, test_sha1_1000_as_1000_times); suite_add_tcase(s, tc); + /* sha256 tests */ + tc = tcase_create("SHA256"); + tcase_add_test(tc, test_sha256_empty_string); + tcase_add_test(tc, test_sha256_a); + tcase_add_test(tc, test_sha256_abc); + tcase_add_test(tc, test_sha256_abcd_gibberish); + tcase_add_test(tc, test_sha256_1000_as_1000_times); + suite_add_tcase(s, tc); + /* des tests */ tc = tcase_create("DES"); tcase_add_test(tc, test_des_12345678);
--- a/libpurple/util.c Sun Jul 05 06:51:35 2009 +0000 +++ b/libpurple/util.c Sun Jul 05 15:08:20 2009 +0000 @@ -979,8 +979,8 @@ buf[buflen] = '\0'; pln = buf; - len = 2; - while(isdigit((gint) text[len])) len++; + len = (*(text+2) == 'x' ? 3 : 2); + while(isxdigit((gint) text[len])) len++; if(text[len] == ';') len++; } else @@ -4042,7 +4042,7 @@ } } - if(g_getenv("PURPLE_UNSAFE_DEBUG")) + if(purple_debug_is_unsafe()) purple_debug_misc("util", "Request: '%s'\n", gfud->request); else purple_debug_misc("util", "request constructed\n"); @@ -4159,7 +4159,7 @@ g_return_val_if_fail(url != NULL, NULL); g_return_val_if_fail(callback != NULL, NULL); - if(g_getenv("PURPLE_UNSAFE_DEBUG")) + if(purple_debug_is_unsafe()) purple_debug_info("util", "requested to fetch (%s), full=%d, user_agent=(%s), http11=%d\n", url, full, user_agent?user_agent:"(null)", http11);
--- a/pidgin/gtkdialogs.c Sun Jul 05 06:51:35 2009 +0000 +++ b/pidgin/gtkdialogs.c Sun Jul 05 15:08:20 2009 +0000 @@ -231,7 +231,7 @@ {N_("Turkish"), "tr", "Serdar Soytetir", "tulliana@gmail.com"}, {N_("Urdu"), "ur", "RKVS Raman", "rkvsraman@gmail.com"}, {N_("Vietnamese"), "vi", N_("T.M.Thanh and the Gnome-Vi Team"), "gnomevi-list@lists.sf.net"}, - {N_("Simplified Chinese"), "zh_CN", "Funda Wang", "fundawang@linux.net.cn"}, + {N_("Simplified Chinese"), "zh_CN", "Aron Xu", "aronmalache@163.com"}, {N_("Hong Kong Chinese"), "zh_HK", "Abel Cheung", "abelindsay@gmail.com"}, {N_("Hong Kong Chinese"), "zh_HK", "Ambrose C. Li", "acli@ada.dhs.org"}, {N_("Hong Kong Chinese"), "zh_HK", "Paladin R. Liu", "paladin@ms1.hinet.net"}, @@ -294,6 +294,7 @@ {N_("Swedish"), "sv", "Christian Rose", NULL}, {N_("Turkish"), "tr", "Ahmet Alp BALKAN", NULL}, {N_("Simplified Chinese"), "zh_CN", "Hashao, Rocky S. Lee", NULL}, + {N_("Simplified Chinese"), "zh_CN", "Funda Wang", "fundawang@linux.net.cn"}, {N_("Traditional Chinese"), "zh_TW", "Hashao, Rocky S. Lee", NULL}, {NULL, NULL, NULL, NULL} };
--- a/po/ChangeLog Sun Jul 05 06:51:35 2009 +0000 +++ b/po/ChangeLog Sun Jul 05 15:08:20 2009 +0000 @@ -2,9 +2,13 @@ version 2.6.0 * Armenian translation added (David Avsharyan) + * Catalan translation updated (Josep Puigdemont) + * Finnish translation updated (Timo Jyrinki) + * German translation updated (Jochen Kemnade and Björn Voigt) * Lao translation updated (Anousak Souphavah) * Slovenian translation updated (Martin Srebotnjak) * Swahili translation added (Paul Msegeya) + * Simplified Chinese translation updated under new translator (Aron Xu) version 2.5.8 * No changes
--- a/po/de.po Sun Jul 05 06:51:35 2009 +0000 +++ b/po/de.po Sun Jul 05 15:08:20 2009 +0000 @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-04 12:30+0200\n" -"PO-Revision-Date: 2009-07-04 12:30+0200\n" +"POT-Creation-Date: 2009-07-05 13:02+0200\n" +"PO-Revision-Date: 2009-07-05 13:02+0200\n" "Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n" "Language-Team: Deutsch <de@li.org>\n" "MIME-Version: 1.0\n" @@ -2191,9 +2191,8 @@ msgid "(%s) %s <AUTO-REPLY>: %s\n" msgstr "(%s) %s <AUTO-REPLY>: %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "Fehler beim Herstellen der Verbindung" +msgstr "Fehler beim Erstellen der Konferenz" #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2600,7 +2599,6 @@ "Mitschnittsbetrachter an." #. * description -#, fuzzy msgid "" "When viewing logs, this plugin will include logs from other IM clients. " "Currently, this includes Adium, MSN Messenger, aMSN, and Trillian.\n" @@ -2609,8 +2607,8 @@ "at your own risk!" msgstr "" "Dieses Plugin zeigt auch die Mitschnitte anderer Sofortnachrichtenprogramme " -"im Mitschnittsbetrachter an. Momentan sind das Adium, MSN Messenger und " -"Trillian.\n" +"im Mitschnittsbetrachter an. Momentan sind das Adium, MSN Messenger, aMSN " +"und Trillian.\n" "WARNUNG: Dieses Plugin ist immer noch im Alpha-Stadium und kann oft " "abstürzen. Benutzung auf eigene Gefahr!" @@ -2657,12 +2655,11 @@ msgid "Save messages sent to an offline user as pounce." msgstr "Sichert Nachrichten an einen Offline-Benutzer als Alarm." -#, fuzzy msgid "" "The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." msgstr "" -"Die folgenden Nachrichten werden als Alarm gesichert. Sie können den Alarm " +"Die folgenden Nachrichten werden als Alarme gesichert. Sie können den Alarm " "im `Buddy-Alarm'-Dialog ändern oder löschen." #, c-format @@ -3863,159 +3860,6 @@ msgid "Local Time" msgstr "Lokale Zeit" -msgid "Last Activity" -msgstr "Letzte Aktivität" - -msgid "Service Discovery Info" -msgstr "Information zur Dienstsuche" - -msgid "Service Discovery Items" -msgstr "Elemente der Dienstsuche" - -msgid "Extended Stanza Addressing" -msgstr "Erweiterte Blockadressierung" - -msgid "Multi-User Chat" -msgstr "Mehrbenutzer-Chat" - -msgid "Multi-User Chat Extended Presence Information" -msgstr "Erweiterte Anwesenheitsinformation im Mehrbenutzer-Chat" - -msgid "In-Band Bytestreams" -msgstr "Bandinterner Bytestrom(" - -msgid "Ad-Hoc Commands" -msgstr "Ad Hoc-Kommando" - -msgid "PubSub Service" -msgstr "PubSub-Dienst" - -msgid "SOCKS5 Bytestreams" -msgstr "SOCKS5-Bytestrom" - -msgid "Out of Band Data" -msgstr "Bandexterne Daten" - -msgid "XHTML-IM" -msgstr "XHTML-IM" - -msgid "In-Band Registration" -msgstr "Bandinterne Registrierung" - -msgid "User Location" -msgstr "Benutzerort" - -msgid "User Avatar" -msgstr "Benutzer-Avatar" - -msgid "Chat State Notifications" -msgstr "Chat-Status-Benachrichtigung" - -msgid "Software Version" -msgstr "Software-Version" - -msgid "Stream Initiation" -msgstr "Strom-Initialisierung" - -msgid "File Transfer" -msgstr "Dateiübertragung" - -msgid "User Mood" -msgstr "Benutzerstimmung" - -msgid "User Activity" -msgstr "Benutzeraktivität" - -msgid "Entity Capabilities" -msgstr "Instanz-Fähigkeiten" - -msgid "Encrypted Session Negotiations" -msgstr "Aushandlung einer verschlüsselten Sitzung" - -msgid "User Tune" -msgstr "Benutzer anpassen" - -msgid "Roster Item Exchange" -msgstr "Mitgliedsverzeichnis-Eintragsaustausch" - -msgid "Reachability Address" -msgstr "Erreichbare Adresse" - -msgid "User Profile" -msgstr "Benutzerprofil" - -msgid "Jingle" -msgstr "Jingle" - -msgid "Jingle Audio" -msgstr "Jingle-Klang" - -msgid "User Nickname" -msgstr "Benutzer-Spitzname" - -msgid "Jingle ICE UDP" -msgstr "Jingle ICE UDP" - -msgid "Jingle ICE TCP" -msgstr "Jingle ICE TCP" - -msgid "Jingle Raw UDP" -msgstr "Jingle Raw UDP" - -msgid "Jingle Video" -msgstr "Jingle-Video" - -msgid "Jingle DTMF" -msgstr "Jingle DTMF" - -msgid "Message Receipts" -msgstr "Nachrichtempfänge" - -msgid "Public Key Publishing" -msgstr "Öffentliche Schlüssel-Veröffentlichung" - -msgid "User Chatting" -msgstr "Benutzer, die chatten" - -msgid "User Browsing" -msgstr "Benutzer, die im Web surfen" - -msgid "User Gaming" -msgstr "Benutzer, die spielen" - -msgid "User Viewing" -msgstr "Benutzer, die schauen" - -msgid "Ping" -msgstr "Ping" - -msgid "Stanza Encryption" -msgstr "Blockverschlüsselung" - -msgid "Entity Time" -msgstr "Instanzzeit" - -msgid "Delayed Delivery" -msgstr "Verzögerte Lieferung" - -msgid "Collaborative Data Objects" -msgstr "Kooperative Datenobjekte" - -msgid "File Repository and Sharing" -msgstr "Speicherbereich und gemeinsame Benutzung von Dateien" - -msgid "STUN Service Discovery for Jingle" -msgstr "STUN-Dienstsuche für Jingle" - -msgid "Simplified Encrypted Session Negotiation" -msgstr "Vereinfachte Aushandlung der verschlüsselten Sitzung" - -msgid "Hop Check" -msgstr "Hop-Überprüfung" - -msgid "Capabilities" -msgstr "Fähigkeiten" - msgid "Priority" msgstr "Priorität" @@ -4026,7 +3870,7 @@ msgid "%s ago" msgstr "vor %s" -msgid "Logged off" +msgid "Logged Off" msgstr "Abgemeldet" msgid "Middle Name" @@ -5095,10 +4939,11 @@ msgid "Non-IM Contacts" msgstr "Nicht-IM-Kontakte" -#, fuzzy, c-format +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "" -"%s hat Ihnen eine Webcam-Einladung gesendet, die noch nicht unterstützt wird." +"%s hat Ihnen eine Audiochat-Einladung gesendet, die noch nicht unterstützt " +"wird." msgid "Nudge" msgstr "Anstoßen" @@ -6317,7 +6162,6 @@ "%s scheint offline zu sein und hat die Nachricht, die Sie gerade gesendet " "haben, nicht empfangen." -#, fuzzy msgid "" "Unable to connect to server. Please enter the address of the server to which " "you wish to connect." @@ -6352,9 +6196,8 @@ msgid "Server port" msgstr "Server-Port" -#, fuzzy msgid "Received unexpected response from " -msgstr "Ungültige HTTP-Antwort vom Server empfangen." +msgstr "Unerwartete Antwort erhalten von" #. username connecting too frequently msgid "" @@ -6916,6 +6759,9 @@ msgid "Member Since" msgstr "Mitglied seit" +msgid "Capabilities" +msgstr "Fähigkeiten" + msgid "Profile" msgstr "Profil" @@ -8167,6 +8013,9 @@ msgid "Video Camera" msgstr "Videokamera" +msgid "File Transfer" +msgstr "Dateiübertragung" + msgid "Supports" msgstr "Unterstützt" @@ -8992,6 +8841,9 @@ msgid "Network Statistics" msgstr "Netzwerkstatistik" +msgid "Ping" +msgstr "Ping" + msgid "Ping failed" msgstr "Ping fehlgeschlagen" @@ -11004,7 +10856,7 @@ msgstr "Hintergrundfarbe" msgid "The background color for the buddy list" -msgstr "" +msgstr "Die Hintergrundfarbe für die Buddy-Liste" #, fuzzy msgid "Layout" @@ -11019,28 +10871,28 @@ msgstr "Hintergrundfarbe" msgid "The background color of an expanded group" -msgstr "" +msgstr "Die Hintergrundfarbe für eine ausgeklappte Gruppe" #, fuzzy msgid "Expanded Text" msgstr "A_usklappen" msgid "The text information for when a group is expanded" -msgstr "" +msgstr "Die Textinformation für eine ausgeklappte Gruppe" #, fuzzy msgid "Collapsed Background Color" msgstr "Hintergrundfarbe auswählen" msgid "The background color of a collapsed group" -msgstr "" +msgstr "Die Hintergrundfarbe für eine zusammengeklappte Gruppe" #, fuzzy msgid "Collapsed Text" msgstr "_Zusammenklappen" msgid "The text information for when a group is collapsed" -msgstr "" +msgstr "Die Textinformation für eine zusammengeklappte Gruppe" #. Buddy #, fuzzy @@ -11055,41 +10907,41 @@ msgstr "Verknüpfter Text" msgid "The text information for when a contact is expanded" -msgstr "" +msgstr "Die Textinformation für einen ausgeklappten Kontakt" #, fuzzy msgid "On-line Text" msgstr "Online" msgid "The text information for when a buddy is online" -msgstr "" +msgstr "Die Textinformation für einen Online-Buddy" #, fuzzy msgid "Away Text" msgstr "Abwesend" msgid "The text information for when a buddy is away" -msgstr "" +msgstr "Die Textinformation für einen abwesenden Buddy" #, fuzzy msgid "Off-line Text" msgstr "Offline" msgid "The text information for when a buddy is off-line" -msgstr "" +msgstr "Die Textinformation für einen Offline-Buddy" #, fuzzy msgid "Idle Text" msgstr "Stimmungstext" msgid "The text information for when a buddy is idle" -msgstr "" +msgstr "Die Textinformation für einen untätigen Buddy" msgid "Message Text" msgstr "Nachrichtentext" msgid "The text information for when a buddy has an unread message" -msgstr "" +msgstr "Die Textinformation für einen Buddy mit ungelesenen Nachrichten" msgid "Message (Nick Said) Text" msgstr "" @@ -11098,10 +10950,11 @@ "The text information for when a chat has an unread message that mentions " "your nick" msgstr "" - -#, fuzzy +"Die Textinformation für einen Chat mit einer ungelesenen Nachricht, in der " +"Ihr Nickname vorkommt" + msgid "The text information for a buddy's status" -msgstr "Ändere die Benutzerinformation für %s" +msgstr "Die Textinformation für den Status eines Buddys" msgid "Type the host name for this certificate." msgstr "Geben Sie einen Hostnamen für dieses Zertifikat an." @@ -12093,7 +11946,6 @@ msgid "Typing notification color" msgstr "Farbe der Tipp-Benachrichtigung" -#, fuzzy msgid "The color to use for the typing notification" msgstr "" "Die Farbe, die für die Tipp-Benachrichtigungsmeldung benutzt werden soll" @@ -13907,7 +13759,6 @@ msgstr "Musik-Nachrichten-Plugin zum gemeinschaftlichen Komponieren." #. * summary -#, fuzzy msgid "" "The Music Messaging Plugin allows a number of users to simultaneously work " "on a piece of music by editing a common score in real-time." @@ -14067,9 +13918,8 @@ msgid "GTK+ Text Shortcut Theme" msgstr "GTK+ Text Shortcut-Thema" -#, fuzzy msgid "Disable Typing Notification Text" -msgstr "Tipp-Benachrichtigung aktivieren" +msgstr "Tipp-Benachrichtigungstext deaktivieren" msgid "GTK+ Theme Control Settings" msgstr "Themenkontroll-Einstellungen für GTK+" @@ -14166,7 +14016,6 @@ msgstr "Senden-Knopf für das Gesprächsfenster." #. *< summary -#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for use when no physical keyboard is present." @@ -14225,13 +14074,11 @@ msgstr "" "Ersetzt Text in ausgehenden Nachrichten durch benutzerdefinierte Regeln." -#, fuzzy msgid "Just logged in" -msgstr "Nicht angemeldet" - -#, fuzzy +msgstr "Gerade angemeldet" + msgid "Just logged out" -msgstr "Nicht angemeldet" +msgstr "Gerade abgemeldet" msgid "" "Icon for Contact/\n" @@ -14242,9 +14089,8 @@ msgid "Icon for Chat" msgstr "Chat betreten" -#, fuzzy msgid "Ignored" -msgstr "Ignorieren" +msgstr "Ignoriert" #, fuzzy msgid "Founder" @@ -14257,63 +14103,52 @@ msgid "Half Operator" msgstr "" -#, fuzzy msgid "Authorization dialog" -msgstr "Autorisierung wurde gegeben" - -#, fuzzy +msgstr "Autorisierungsdialog" + msgid "Error dialog" -msgstr "Fehler " - -#, fuzzy +msgstr "Fehlerdialog" + msgid "Information dialog" -msgstr "Information" +msgstr "Informationsdialog" msgid "Mail dialog" -msgstr "" +msgstr "Mail-Dialog" #, fuzzy msgid "Question dialog" msgstr "Anfrage-Dialog" -#, fuzzy msgid "Warning dialog" -msgstr "Warnstufe" +msgstr "Warnungdialog" msgid "What kind of dialog is this?" -msgstr "" - -# -#, fuzzy +msgstr "Welche Art von Dialog ist dies?" + msgid "Status Icons" -msgstr "Status für %s" +msgstr "Status-Icons" #, fuzzy msgid "Chatroom Emblems" msgstr "Chatraum-Gebiet" -#, fuzzy msgid "Dialog Icons" -msgstr "Icon ändern" - -#, fuzzy +msgstr "Dialog-Icons" + msgid "Pidgin Icon Theme Editor" -msgstr "Pidgin GTK+ Themenkontrolle" - -#, fuzzy +msgstr "Pidgin Icon-Themen-Editor" + msgid "Contact" -msgstr "Kontakt-Info" - -#, fuzzy +msgstr "Kontakt" + msgid "Pidgin Buddylist Theme Editor" -msgstr "Buddy-Listen-Thema" - -#, fuzzy +msgstr "Pidgin Buddy-Listen-Thema-Editor" + msgid "Edit Buddylist Theme" -msgstr "Buddy-Listen-Thema" +msgstr "Buddy-Listen-Thema bearbeiten" msgid "Edit Icon Theme" -msgstr "" +msgstr "Icon-Thema bearbeiten" #. *< type #. *< ui_requirement @@ -14322,16 +14157,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "Pidgin GTK+ Themenkontrolle" +msgstr "Pidgin Themen-Editor" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "Pidgin GTK+ Themenkontrolle" +msgstr "Pidgin Themen-Editor" #. *< type #. *< ui_requirement @@ -14499,7 +14332,6 @@ msgid "Options specific to Pidgin for Windows." msgstr "Optionen für Pidgin unter Windows." -#, fuzzy msgid "" "Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr ""
--- a/po/fi.po Sun Jul 05 06:51:35 2009 +0000 +++ b/po/fi.po Sun Jul 05 15:08:20 2009 +0000 @@ -1,4 +1,4 @@ -# Pidgin Finnish translation +# Piidgin Finnish translation # Copyright (C) 2002 Tero Kuusela <teroajk@subdimension.com> # Copyright (C) 2003-2005 Arto Alakulju <arto@alakulju.net> # Copyright (C) 2005-2009 Timo Jyrinki <timo.jyrinki@iki.fi> @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-02 01:34-0700\n" -"PO-Revision-Date: 2009-04-28 16:31+0300\n" +"POT-Creation-Date: 2009-07-05 01:14+0300\n" +"PO-Revision-Date: 2009-07-05 01:14+0300\n" "Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -2176,9 +2176,8 @@ msgid "(%s) %s <AUTO-REPLY>: %s\n" msgstr "(%s) %s <AUTOMAATTIVASTAUS>: %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "Virhe luotaessa yhteyttä" +msgstr "Virhe luotaessa konferenssia." #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2581,16 +2580,17 @@ #. * description msgid "" "When viewing logs, this plugin will include logs from other IM clients. " -"Currently, this includes Adium, MSN Messenger, and Trillian.\n" +"Currently, this includes Adium, MSN Messenger, aMSN, and Trillian.\n" "\n" "WARNING: This plugin is still alpha code and may crash frequently. Use it " "at your own risk!" msgstr "" "Katsottaessa lokeja tämä liitännäinen sisällyttää niihin myös muiden " "pikaviestinohjelmien lokit. Tällä hetkellä tuettuina ovat Adium, MSN " -"Messenger ja Trillian.\n" -"\n" -"Varoitus: Tämä liitännäinen on vielä kehitysasteella ja voi kaatua usein." +"Messenger, aMSN ja Trillian.\n" +"\n" +"Varoitus: Tämä liitännäinen on vielä kehitysasteella ja voi kaatua usein. " +"Käytä sitä omalla vastuulla!" msgid "Mono Plugin Loader" msgstr "Mono-liitännäisen lataaja" @@ -2638,11 +2638,11 @@ "tuttavailmoittimen avulla." msgid "" -"The rest of the messages will be saved as pounce. You can edit/delete the " +"The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." msgstr "" -"Loput viesteistä tallennetaan ilmoittimeen. Voit muokata/poistaa sen " -"\"Tuttavailmoittimet\"-valintaikkunasta." +"Loput viesteistä tallennetaan ilmoittimina. Voit muokata/poistaa sen " +"ilmoittimen ”Tuttavailmoittimet”-valintaikkunasta." #, c-format msgid "" @@ -2696,6 +2696,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Mahdollistaa tilikohtaisen tallentamattomien salasanojen käytön vain yhteen " +"onnistuneeseen yhteyteen.\n" +"Huomioitavaa: Tilin salasanaa ei tule tallentaa, jotta tämä toimisi." #. *< type #. *< ui_requirement @@ -3156,9 +3159,8 @@ msgstr "Keskustelunimi:" #. should this be a settings error? -#, fuzzy msgid "Unable to resolve server" -msgstr "Ei kyetty selvittämään isännän nimeä." +msgstr "Ei kyetty selvittämään palvelimen nimeä." msgid "Chat error" msgstr "Keskusteluvirhe" @@ -3208,9 +3210,8 @@ msgid "Gadu-Gadu User" msgstr "Gadu-Gadu-käyttäjä" -#, fuzzy msgid "GG server" -msgstr "Haetaan palvelinta" +msgstr "GG-palvelin" #, c-format msgid "Unknown command: %s" @@ -3254,9 +3255,8 @@ msgid "_Password:" msgstr "_Salasana:" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "IRC-kutsumanimissä ei tule olla välilyöntejä" +msgstr "IRC-kutsumanimissä ja -palvelimissa ei saa olla välilyöntejä" #. 1. connect to server #. connect to the server @@ -3737,21 +3737,16 @@ msgstr "SASL-virhe" msgid "The BOSH connection manager terminated your session." -msgstr "" - -#, fuzzy +msgstr "BOSH-yhteyshallinta lopetti istunnon." + msgid "No session ID given" -msgstr "Syytä ei annettu" - -#, fuzzy +msgstr "Istuntotunnistetta ei annettu" + msgid "Unsupported version of BOSH protocol" -msgstr "Versiota ei tueta" - -#, fuzzy +msgstr "Tukematon versio BOSH-yhteyskäytännöstä" + msgid "Unable to establish a connection with the server" -msgstr "" -"Yhteyttä palvelimeen ei voi muodostaa:\n" -"%s" +msgstr "Yhteyttä palvelimeen ei voi muodostaa" #, c-format msgid "" @@ -3761,9 +3756,8 @@ "Yhteyttä palvelimeen ei voi muodostaa:\n" "%s" -#, fuzzy msgid "Unable to establish SSL connection" -msgstr "Yhteyden luominen epäonnistui" +msgstr "SSL-yhteyden muodostaminen ei onnistu" msgid "Unable to create socket" msgstr "Pistokkeen luonti epäonnistui" @@ -4001,11 +3995,10 @@ #, c-format msgid "%s ago" -msgstr "" - -#, fuzzy +msgstr "%s sitten" + msgid "Logged off" -msgstr "Kirjautumisesta aikaa" +msgstr "Kirjautunut ulos" msgid "Middle Name" msgstr "Muut etunimet" @@ -4173,17 +4166,14 @@ msgid "Find Rooms" msgstr "Etsi huoneita" -#, fuzzy msgid "Affiliations:" -msgstr "Lempinimi:" - -#, fuzzy +msgstr "Kytkökset:" + msgid "No users found" -msgstr "Käyttäjistä ei löytynyt osumia" - -#, fuzzy +msgstr "Käyttäjiä ei löytynyt" + msgid "Roles:" -msgstr "Asema" +msgstr "Roolit:" msgid "Ping timeout" msgstr "Pingin aikakatkaisu" @@ -4196,6 +4186,8 @@ "Could not find alternative XMPP connection methods after failing to connect " "directly.\n" msgstr "" +"Vaihtoehtoisia XMPP-yhteystapoja ei löytynyt suoran yhdistämisen " +"epäonnistumisen jälkeen.\n" msgid "Invalid XMPP ID" msgstr "Epäkelpo XMPP-ID" @@ -4203,9 +4195,8 @@ msgid "Invalid XMPP ID. Domain must be set." msgstr "Epäkelpo XMPP-ID. Verkkoalue pitää olla asetettu." -#, fuzzy msgid "Malformed BOSH URL" -msgstr "Palvelimeen ei saatu yhteyttä." +msgstr "Viallisesti muodostettu BOSH-URL" #, c-format msgid "Registration of %s@%s successful" @@ -4273,9 +4264,8 @@ msgid "Change Registration" msgstr "Muuta rekisteröitymistä" -#, fuzzy msgid "Malformed BOSH Connect Server" -msgstr "Palvelimeen ei saatu yhteyttä." +msgstr "Virheellisesti muodostettu BOSH-yhteyspalvein" msgid "Error unregistering account" msgstr "Virhe poistettaessa käyttäjätilin rekisteröitymistä" @@ -4642,20 +4632,18 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <käyttäjä> [syy]: Estä käyttäjä huoneesta." -#, fuzzy msgid "" "affiliate <owner|admin|member|outcast|none> [nick1] [nick2] ...: Get " "the users with an affiliation or set users' affiliation with the room." msgstr "" -"affiliate <user> <owner|admin|member|outcast|none>: Aseta " +"affiliate <owner|admin|member|outcast|none> [nimi1] [nimi2] ...: Aseta " "käyttäjän käyttäjäluokka tälle huoneelle." -#, fuzzy msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <user> <moderator|participant|visitor|none>: Aseta " +"role <moderator|participant|visitor|none> [nimi1] [nimi2] ...: Aseta " "käyttäjän rooli huoneessa." msgid "invite <user> [message]: Invite a user to the room." @@ -4718,7 +4706,7 @@ msgstr "Tiedostonsiirron välipalvelimet" msgid "BOSH URL" -msgstr "" +msgstr "BOSH-URL" #. this should probably be part of global smiley theme settings later on, #. shared with MSN @@ -4782,7 +4770,7 @@ msgid "Error in chat %s" msgstr "Virhe ryhmäkeskustelussa: %s" -msgid "An error occured on the in-band bytestream transfer\n" +msgid "An error occurred on the in-band bytestream transfer\n" msgstr "Kaistansisäisessä tavuvirtasiirrossa tapahtui virhe\n" msgid "Transfer was closed." @@ -5115,9 +5103,9 @@ msgid "Non-IM Contacts" msgstr "Pikaviestittömät yhteystiedot" -#, fuzzy, c-format +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." -msgstr "%s on lähettänyt webkamera-kutsun, mikä ei ole vielä tuettuna." +msgstr "%s on lähettänyt puhekeskustelukutsun, mitä ei vielä tueta." msgid "Nudge" msgstr "Tönäise" @@ -5465,9 +5453,9 @@ msgid "%s just sent you a Nudge!" msgstr "Käyttäjä %s lähetti sinulle juuri tönäisyn!" -#, fuzzy, c-format +#, c-format msgid "Unknown error (%d): %s" -msgstr "Tuntematon virhe (%d)" +msgstr "Tuntematon virhe (%d): %s" msgid "Unable to add user" msgstr "Käyttäjää ei voi lisätä" @@ -5589,9 +5577,9 @@ msgid "Retrieving buddy list" msgstr "Noudetaan tuttavia" -#, fuzzy, c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." -msgstr "%s on lähettänyt webkamera-kutsun, mikä ei ole vielä tuettuna." +msgstr "%s on lähettänyt pyynnön nähdä webkamerasi, mutta tätä ei vielä tueta." #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." @@ -5789,16 +5777,15 @@ msgid "Protocol error, code %d: %s" msgstr "Yhteyskäytäntövirhe, virhekoodi %d: %s" -#, fuzzy, c-format +#, c-format msgid "" "%s Your password is %zu characters, which is longer than the maximum length " "of %d. Please shorten your password at http://profileedit.myspace.com/index." "cfm?fuseaction=accountSettings.changePassword and try again." msgstr "" -"%s Salasanasi on %d merkkiä, mikä on enemmän kuin MySpaceIM:n odottama " -"suurin mahdollinen %d merkkiä. Lyhennä salasanaasi osoitteessa http://" -"profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword " -"ja yritä uudelleen." +"%s Salasanasi on %zu merkkiä, mikä on enemmän kuin suurin mahdollinen %d. " +"Lyhennä salasanaasi osoitteessa http://profileedit.myspace.com/index.cfm?" +"fuseaction=accountSettings.changePassword ja yritä uudelleen." msgid "Incorrect username or password" msgstr "Virheellinen käyttäjänimi tai salasana" @@ -6302,8 +6289,8 @@ "%s näyttää olevan poissa linjoilta eikä saanut viestiä jonka juuri lähetit." msgid "" -"Unable to connect to server. Please enter the address of the server you wish " -"to connect to." +"Unable to connect to server. Please enter the address of the server to which " +"you wish to connect." msgstr "" "Palvelimeen ei voi yhdistää. Ole hyvä, syötä palvelimen osoite jolle haluat " "yhdistää." @@ -6333,9 +6320,8 @@ msgid "Server port" msgstr "Palvelimen portti" -#, fuzzy msgid "Received unexpected response from " -msgstr "Odottamaton HTTP-vastaus palvelimelta." +msgstr "Odottamaton vastaus palvelimelta " #. username connecting too frequently msgid "" @@ -6346,15 +6332,15 @@ "ja yritä uudelleen. Jos jatkat yrittämistä, joudut odottamaan vielä " "pidempään." -#, fuzzy, c-format +#, c-format msgid "Error requesting " -msgstr "Virhe pyydettäessä kirjautumispolettia" +msgstr "Virhe pyydettäessä " msgid "Incorrect password." msgstr "Virheellinen salasana." msgid "AOL does not allow your screen name to authenticate via this site." -msgstr "" +msgstr "AOL ei salli näyttönimen todentamista tämän sivuston kautta." msgid "Could not join chat room" msgstr "Keskusteluhuoneeseen ei voi liittyä" @@ -6682,9 +6668,9 @@ msgstr "Saatiin lupa" #. Unregistered username -#. uid is not exist -msgid "Invalid username." -msgstr "Epäkelpo käyttäjänimi." +#. the username does not exist +msgid "Username does not exist" +msgstr "Käyttäjänimeä ei ole" #. Suspended account msgid "Your account is currently suspended." @@ -6699,14 +6685,12 @@ msgstr "Asiakasohjelmasi versio on liian vanha. Päivitä osoitteessa %s" #. IP address connecting too frequently -#, fuzzy msgid "" "You have been connecting and disconnecting too frequently. Wait a minute and " "try again. If you continue to try, you will need to wait even longer." msgstr "" -"Olet ottanut ja katkaissut yhteyden liian tiheästi. Odota kymmenen minuuttia " -"ja yritä uudelleen. Jos jatkat yrittämistä, joudut odottamaan vielä " -"pidempään." +"Olet ottanut ja katkaissut yhteyden liian tiheästi. Odota jonkin aikaa ja " +"yritä uudelleen. Jos jatkat yrittämistä, joudut odottamaan vielä pidempään." msgid "The SecurID key entered is invalid." msgstr "Syötetty SecurID-avain on virheellinen." @@ -7256,9 +7240,8 @@ msgid "Search for Buddy by Information" msgstr "Etsi tuttavaa tietojen perusteella" -#, fuzzy msgid "Use clientLogin" -msgstr "Käyttäjä ei ole kirjautuneena sisään" +msgstr "Käytä clientLoginia" msgid "" "Always use AIM/ICQ proxy server for\n" @@ -7916,6 +7899,10 @@ msgid "Enter the text from the image" msgstr "Syötä teksti kuvasta" +#. uid is not exist +msgid "Invalid username." +msgstr "Epäkelpo käyttäjänimi." + #, c-format msgid "Unknown reply when checking password (0x%02X)" msgstr "Tuntematon vastaus tarkistettaessa salasanaa (0x%02X)" @@ -9542,42 +9529,31 @@ msgstr "Tuttavan lisääminen estetty" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "Palvelimeen yhdistettäessä vastaanotettiin virheellisiä tietoja." - -#. Password incorrect -#, fuzzy +msgstr "Vastaanotettiin virheellisiä tietoja" + msgid "Incorrect Password" msgstr "Virheellinen salasana" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts.\n" "Logging into the Yahoo! website may fix this." msgstr "" -"Tuntematon viesti numero %d. Kirjautumalla Yahoo! verkkosivuille saattaa " -"korjata tämän." - -#. the username does not exist -#, fuzzy -msgid "Username does not exist" -msgstr "Käyttäjää ei ole" +"Käyttäjätili lukittu: liian monta epäonnistuttu kirjautumisyritystä.\n" +"Yahoo!-WWW-sivustolle kirjautuminen saatta korjata tämän." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason.\n" "Logging into the Yahoo! website may fix this." msgstr "" -"Tuntematon viesti numero %d. Kirjautumalla Yahoo! verkkosivuille saattaa " -"korjata tämän." +"Käyttäjätili lukittu: tuntematon syy.\n" +"Yahoo!-WWW-sivustolle kirjautuminen saatta korjata tämän." #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "Virheellinen käyttäjänimi tai salasana" +msgstr "Puuttuva käyttäjänimi tai salasana" #, c-format msgid "" @@ -9693,7 +9669,7 @@ msgstr "Aloita piirtely" msgid "Select the ID you want to activate" -msgstr "" +msgstr "Valitse aktivoitava tunnus (ID)" msgid "Join whom in chat?" msgstr "Kenen seuraan liitytään ryhmäkeskustelussa?" @@ -10478,9 +10454,8 @@ msgid "Please update the necessary fields." msgstr "Päivitä tarvittavat kentät." -#, fuzzy msgid "A_ccount" -msgstr "_Käyttäjätili:" +msgstr "_Käyttäjätili" msgid "" "Please enter the appropriate information about the chat you would like to " @@ -10929,114 +10904,98 @@ msgid "Background Color" msgstr "Taustaväri" -#, fuzzy msgid "The background color for the buddy list" -msgstr "Tämä ryhmä on lisätty tuttaviisi" - -#, fuzzy +msgstr "Tuttavaluettelon taustaväri" + msgid "Layout" -msgstr "lao" +msgstr "Asettelu" msgid "The layout of icons, name, and status of the blist" -msgstr "" +msgstr "Tuttavien kuvakkeiden, nimien ja tilojen asettelu" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "Taustaväri" - -#, fuzzy +msgstr "Laajennettu taustaväri" + msgid "The background color of an expanded group" -msgstr "Taustavärin nimi" - -#, fuzzy +msgstr "Laajennetun ryhmän taustavärin" + msgid "Expanded Text" -msgstr "Laajentajan koko" +msgstr "Laajennettu teksti" msgid "The text information for when a group is expanded" -msgstr "" - -#, fuzzy +msgstr "Tekstitieto ryhmää laajennettaessa" + msgid "Collapsed Background Color" -msgstr "Valitse taustaväri" - -#, fuzzy +msgstr "Supistettu taustaväri" + msgid "The background color of a collapsed group" -msgstr "Taustaväri GdkColor-tyyppisenä" - -#, fuzzy +msgstr "Supistetun ryhmän taustaväri" + msgid "Collapsed Text" -msgstr "_Pienennä" +msgstr "Supistettu teksti" msgid "The text information for when a group is collapsed" -msgstr "" +msgstr "Tekstitieto ryhmää supistettaessa" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "Valitse taustaväri" - -#, fuzzy +msgstr "Yhteystiedon/keskustelun taustaväri" + msgid "The background color of a contact or chat" -msgstr "Taustaväri GdkColor-tyyppisenä" - -#, fuzzy +msgstr "Yhteystiedon tai keskustelun taustaväri" + msgid "Contact Text" -msgstr "Oikotien teksti" +msgstr "Yhteystiedon teksti" msgid "The text information for when a contact is expanded" -msgstr "" - -#, fuzzy +msgstr "Tekstitieto yhteystietoa laajennettaessa" + msgid "On-line Text" -msgstr "Linjoilla" - -#, fuzzy +msgstr "Linjoilla-teksti" + msgid "The text information for when a buddy is online" -msgstr "Hae tietoja valitusta tuttavasta" - -#, fuzzy +msgstr "Tekstitieto tuttavan ollessa linjoilla" + msgid "Away Text" -msgstr "Poissa" - -#, fuzzy +msgstr "Poissa-teksti" + msgid "The text information for when a buddy is away" -msgstr "Hae tietoja valitusta tuttavasta" - -#, fuzzy +msgstr "Tekstitieto tuttavan ollessa poissa" + msgid "Off-line Text" -msgstr "Poissa linjoilta" - -#, fuzzy +msgstr "Poissa linjoilta -teksti" + msgid "The text information for when a buddy is off-line" -msgstr "Hae tietoja valitusta tuttavasta" - -#, fuzzy +msgstr "Tekstitieto tuttavan ollessa poissa linjoilta" + msgid "Idle Text" -msgstr "Mielialan teksti" - -#, fuzzy +msgstr "Joutenoloteksti" + msgid "The text information for when a buddy is idle" -msgstr "Hae tietoja valitusta tuttavasta" +msgstr "Tekstitieto tuttavan ollessa jouten" msgid "Message Text" msgstr "Viestin teksti" msgid "The text information for when a buddy has an unread message" -msgstr "" - -#, fuzzy +msgstr "Tekstitieto kun tuttavalla on lukematon viesti" + msgid "Message (Nick Said) Text" -msgstr "Viestin teksti" +msgstr "Viestin (henkilö sanoi) teksti" msgid "" "The text information for when a chat has an unread message that mentions " "your nick" msgstr "" - -#, fuzzy +"Tekstitieto kun keskustelussa on lukematon viesti, jossa mainitaan " +"kutsumanimesi" + msgid "The text information for a buddy's status" -msgstr "Vaihda käyttäjätietoja - %s" +msgstr "Tekstitieto tuttavan tilalle" + +msgid "Type the host name for this certificate." +msgstr "Kirjoita isäntänimi tälle varmenteelle." #. Widget creation function msgid "SSL Servers" @@ -11534,9 +11493,8 @@ msgid "Hungarian" msgstr "unkari" -#, fuzzy msgid "Armenian" -msgstr "romania" +msgstr "armenia" msgid "Indonesian" msgstr "indonesia" @@ -11635,7 +11593,7 @@ msgstr "ruotsi" msgid "Swahili" -msgstr "" +msgstr "swahili" msgid "Tamil" msgstr "tamil" @@ -11969,7 +11927,7 @@ msgid "Hyperlink visited color" msgstr "Vieraillun hyperlinkin väri" -msgid "Color to draw hyperlinks after it has been visited (or activated)." +msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "Väri jolla piirretään vierailtu (tai aktivoitu) hyperlinkki." msgid "Hyperlink prelight color" @@ -12005,14 +11963,20 @@ msgid "Action Message Name Color for Whispered Message" msgstr "Toimintoviestin nimen väri kuiskatulle viestille" +msgid "Color to draw the name of a whispered action message." +msgstr "Väri jolla näytetään kuiskatun toimintoviestin nimi." + msgid "Whisper Message Name Color" msgstr "Kuiskatun viestin nimen väri" +msgid "Color to draw the name of a whispered message." +msgstr "Väri jolla näytetään kuiskatun viestin nimi." + msgid "Typing notification color" msgstr "Kirjoittamishuomautuksen väri" -msgid "The color to use for the typing notification font" -msgstr "Väri jota käytetään kirjoittamishuomautuksen kirjasimessa" +msgid "The color to use for the typing notification" +msgstr "Väri jota käytetään kirjoittamishuomautuksessa" msgid "Typing notification font" msgstr "Kirjoittamishuomautuksen kirjasin" @@ -12405,6 +12369,9 @@ "The 'Manual' browser command has been chosen, but no command has been set." msgstr "Oma selainkomento -asetus valittu, mutta komentoa ei ole asetettu." +msgid "No message" +msgstr "Ei viestiä" + msgid "Open All Messages" msgstr "Avaa kaikki viestit" @@ -12420,9 +12387,6 @@ msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>" msgstr "<span weight=\"bold\" size=\"larger\">Uusi ilmoitus</span>" -msgid "No message" -msgstr "Ei viestiä" - msgid "The following plugins will be unloaded." msgstr "Seuraavat liitännäiset otetaan pois käytöstä." @@ -12591,17 +12555,14 @@ msgid "Unknown.... Please report this!" msgstr "Tuntematon... Raportoi tästä!" -#, fuzzy msgid "Theme failed to unpack." -msgstr "Hymiöteeman purkaminen epäonnistui." - -#, fuzzy +msgstr "Teeman purkaminen epäonnistui." + msgid "Theme failed to load." -msgstr "Hymiöteeman purkaminen epäonnistui." - -#, fuzzy +msgstr "Teeman lataaminen epäonnistui." + msgid "Theme failed to copy." -msgstr "Hymiöteeman purkaminen epäonnistui." +msgstr "Teeman kopioiminen epäonnistui." msgid "Install Theme" msgstr "Asenna teema" @@ -12740,8 +12701,9 @@ msgid "<span style=\"italic\">Example: stunserver.org</span>" msgstr "<span style=\"italic\">Esimerkki: stunserver.org</span>" -msgid "_Autodetect IP address" -msgstr "_Hae IP-osoite automaattisesti" +#, c-format +msgid "Use _automatically detected IP address: %s" +msgstr "Käytä _automaattisesti tunnistettua IP-osoitetta: %s" msgid "Public _IP:" msgstr "Julkinen _IP:" @@ -13108,32 +13070,17 @@ msgid "Status for %s" msgstr "%s:n tila" -#. -#. * TODO: We should enable/disable the add button based on -#. * whether the user has entered all required data. That -#. * would eliminate the need for this check and provide a -#. * better user experience. -#. +#, c-format +msgid "" +"A custom smiley for '%s' already exists. Please use a different shortcut." +msgstr "Oikotielle ”%s” on jo oma hymiö. Valitse toinen oikotie." + msgid "Custom Smiley" msgstr "Oma hymiö" -msgid "More Data needed" -msgstr "Lisää tietoja tarvitaan" - -msgid "Please provide a shortcut to associate with the smiley." -msgstr "Syötä hymiöön liitettävä oikotie." - -#, fuzzy, c-format -msgid "" -"A custom smiley for '%s' already exists. Please use a different shortcut." -msgstr "Valitulle oikotielle on jo oma hymiö. Valitse toisenlainen oikotie." - msgid "Duplicate Shortcut" msgstr "Monista oikotie" -msgid "Please select an image for the smiley." -msgstr "Valitse hymiölle kuva." - msgid "Edit Smiley" msgstr "Muokkaa hymiötä" @@ -13156,9 +13103,8 @@ msgid "Custom Smiley Manager" msgstr "Omien hymiöiden hallinta" -#, fuzzy msgid "Select Buddy Icon" -msgstr "Valitse tuttava" +msgstr "Valitse tuttavakuvake" msgid "Click to change your buddyicon for this account." msgstr "Napsauta muuttaaksesi tämän käyttäjätilin tuttavakuvaketta." @@ -13245,10 +13191,10 @@ msgstr "Käynnistintä ei voi lähettää" msgid "" -"You dragged a desktop launcher. Most likely you wanted to send whatever this " -"launcher points to instead of this launcher itself." -msgstr "" -"Raahasit työpöytäkäynnistimen. Luultavasti halusit lähettää tiedoston johon " +"You dragged a desktop launcher. Most likely you wanted to send the target of " +"this launcher instead of this launcher itself." +msgstr "" +"Raahasit työpöytäkäynnistimen. Luultavasti halusit lähettää kohteen johon " "käynnistin osoittaa, käynnistimen itsensä sijaan." #, c-format @@ -13381,81 +13327,65 @@ msgid "Displays statistical information about your buddies' availability" msgstr "Näyttää tilastotietoja tuttavien läsnäolosta" -#, fuzzy msgid "Server name request" -msgstr "Palvelimen osoite" - -#, fuzzy +msgstr "Palvelinnimen pyyntö" + msgid "Enter an XMPP Server" -msgstr "Syötä konferenssipalvelin" - -#, fuzzy +msgstr "Syötä XMPP-palvelin" + msgid "Select an XMPP server to query" -msgstr "Valitse konferenssipalvelin" - -#, fuzzy +msgstr "Valitse XMPP-palvelin johon kysely lähetetään" + msgid "Find Services" -msgstr "Online-palvelut" - -#, fuzzy +msgstr "Etsi palveluita" + msgid "Add to Buddy List" -msgstr "Lähetä tuttavat" - -#, fuzzy +msgstr "Lisää tuttaviin" + msgid "Gateway" -msgstr "poistuu" - -#, fuzzy +msgstr "Yhdyskäytävä" + msgid "Directory" -msgstr "Lokihakemisto" - -#, fuzzy +msgstr "Hakemisto" + msgid "PubSub Collection" -msgstr "Äänivalinta" - -#, fuzzy +msgstr "PubSub-kokoelma" + msgid "PubSub Leaf" -msgstr "PubSub-palvelu" - -#, fuzzy +msgstr "PubSub-lehti" + msgid "" "\n" "<b>Description:</b> " msgstr "" "\n" -"<b>Kuvaus:</b> Aavemainen" +"<b>Kuvaus:</b> " #. Create the window. -#, fuzzy msgid "Service Discovery" -msgstr "Palvelulöytötiedot" - -#, fuzzy +msgstr "Palveluiden löytö" + msgid "_Browse" -msgstr "_Selain:" - -#, fuzzy +msgstr "_Selaa" + msgid "Server does not exist" -msgstr "Käyttäjää ei ole" - -#, fuzzy +msgstr "Palvelinta ei ole" + msgid "Server does not support service discovery" -msgstr "Palvelin ei tue estämistä" - -#, fuzzy +msgstr "Palvelin ei palveluiden löytämistä" + msgid "XMPP Service Discovery" -msgstr "Palvelulöytötiedot" +msgstr "XMPP-palveluiden löytö" msgid "Allows browsing and registering services." -msgstr "" - -#, fuzzy +msgstr "Sallii palveluiden selaamisen ja rekisteröimisen." + msgid "" "This plugin is useful for registering with legacy transports or other XMPP " "services." msgstr "" -"Tätä liitännäistä voidaan käyttää XMPP-palvelimien tai -asiakasohjelmien " -"virheenjäljitykseen." +"Tätä liitännäistä voidaan käyttää vanhojen siirtotapojen tai muiden XMPP-" +"palveluiden rekisteröimiseen." msgid "Buddy is idle" msgstr "Tuttava on jouten" @@ -13845,7 +13775,7 @@ #. * summary msgid "" "The Music Messaging Plugin allows a number of users to simultaneously work " -"on a piece of music by editting a common score in real-time." +"on a piece of music by editing a common score in real-time." msgstr "" "Musiikkiviestintäliitännäinen sallii usean käyttäjän työskennellä yhtä aikaa " "musiikkikappaleen parissa, muokkaamalla samaa sävellystä yhdessä, " @@ -13968,7 +13898,6 @@ msgid "Highlighted Message Name Color" msgstr "Korostetun viestin nimen väri" -#, fuzzy msgid "Typing Notification Color" msgstr "Kirjoittamishuomautuksen väri" @@ -14001,23 +13930,20 @@ msgid "GTK+ Text Shortcut Theme" msgstr "GTK+-tekstioikopolkuteema" -#, fuzzy msgid "Disable Typing Notification Text" -msgstr "Ota kirjoittamishuomautus käyttöön" - -#, fuzzy +msgstr "Ota kirjoittamishuomautus pois käytöstä" + msgid "GTK+ Theme Control Settings" -msgstr "Pidgin GTK+-teemanhallinta" - -#, fuzzy +msgstr "GTK+-teemanhallinta" + msgid "Colors" -msgstr "Sulje" +msgstr "Värit" msgid "Fonts" msgstr "Kirjasimet" msgid "Miscellaneous" -msgstr "" +msgstr "Sekalaiset" msgid "Gtkrc File Tools" msgstr "Gtkrc-tiedostotyökalut" @@ -14106,7 +14032,7 @@ #. *< summary msgid "" "Adds a Send button to the entry area of the conversation window. Intended " -"for when no physical keyboard is present." +"for use when no physical keyboard is present." msgstr "" "Lisää keskusteluikkunan kirjoitusalueelle Lähetä-painikkeen. Tarkoitettu " "käytettäväksi, kun fyysistä näppäimistöä ei ole käytettävissä." @@ -14162,94 +14088,78 @@ msgid "Replaces text in outgoing messages according to user-defined rules." msgstr "Korvaa lähetettävän tekstin käyttäjän määritelmän mukaan." -#, fuzzy msgid "Just logged in" -msgstr "Et ole kirjautunut sisään." - -#, fuzzy +msgstr "Juuri kirjautunut sisään" + msgid "Just logged out" -msgstr "%s kirjautui ulos." +msgstr "Juuri kirjautunus ulos" msgid "" "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"Kuvake yhteystiedolle/\n" +"kuvake tuntemattomalle henkilölle" + msgid "Icon for Chat" -msgstr "Liity ryhmäkeskusteluun" - -#, fuzzy +msgstr "Kuvake ryhmäkeskustelulle" + msgid "Ignored" -msgstr "Jätä huomiotta" - -#, fuzzy +msgstr "Jätetty huomiotta" + msgid "Founder" -msgstr "Äänekkäämpi" - -#, fuzzy +msgstr "Perustaja" + msgid "Operator" -msgstr "Opera" +msgstr "Operaattori" msgid "Half Operator" -msgstr "" - -#, fuzzy +msgstr "Puolioperaattori" + msgid "Authorization dialog" -msgstr "Valtuutus annettu" - -#, fuzzy +msgstr "Valtuutusvalintaikkuna" + msgid "Error dialog" -msgstr "Virheet " - -#, fuzzy +msgstr "Virhevalintaikkuna" + msgid "Information dialog" -msgstr "Tiedot" +msgstr "Tietovalintaikkuna" msgid "Mail dialog" -msgstr "" - -#, fuzzy +msgstr "Sähköpostin valintaikkuna" + msgid "Question dialog" -msgstr "Pyyntövalintaikkuna" - -#, fuzzy +msgstr "Kysymysvalintaikkuna" + msgid "Warning dialog" -msgstr "Varoitustaso" +msgstr "Varoitusvalintaikkuna" msgid "What kind of dialog is this?" -msgstr "" - -#, fuzzy +msgstr "Minkä tyyppinen valintaikkuna tämä on?" + msgid "Status Icons" -msgstr "%s:n tila" - -#, fuzzy +msgstr "Tilakuvakkeet" + msgid "Chatroom Emblems" -msgstr "Keskusteluhuoneen paikallisasetus" - -#, fuzzy +msgstr "Keskusteluhuoneiden tunnuskuvat" + msgid "Dialog Icons" -msgstr "Vaihda kuvake" - -#, fuzzy +msgstr "Valintaikkunan kuvakkeet" + msgid "Pidgin Icon Theme Editor" -msgstr "Pidgin GTK+-teemanhallinta" - -#, fuzzy +msgstr "Pidginin kuvaketeemaeditori" + msgid "Contact" -msgstr "Yhteystiedot" - -#, fuzzy +msgstr "Yhteystieto" + msgid "Pidgin Buddylist Theme Editor" -msgstr "Tuttavaluettelon teema" - -#, fuzzy +msgstr "Pidginin tuttavaluettelon teemaeditori" + msgid "Edit Buddylist Theme" -msgstr "Tuttavaluettelon teema" +msgstr "Muokkaa tuttavaluettelon teemaa" msgid "Edit Icon Theme" -msgstr "" +msgstr "Muokkaa kuvaketeemaa" #. *< type #. *< ui_requirement @@ -14258,16 +14168,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "Pidgin GTK+-teemanhallinta" +msgstr "Pidginin teemaeditori" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "Pidgin GTK+-teemanhallinta" +msgstr "Pidginin teemaeditori." #. *< type #. *< ui_requirement @@ -14442,9 +14350,9 @@ msgstr "Asetukset jotka liittyvät erityisesti Pidginin Windows-versioon " msgid "" -"Provides options specific to Pidgin for Windows , such as buddy list docking." -msgstr "" -"Tarjoaa Windows Pidgin -sidonnaisia valintoja, kuten tuttavat-ikkunan " +"Provides options specific to Pidgin for Windows, such as buddy list docking." +msgstr "" +"Tarjoaa Windows Pidgin -sidonnaisia valintoja, kuten Tuttavat-ikkunan " "telakoinnin." msgid "<font color='#777777'>Logged out.</font>" @@ -14486,6 +14394,15 @@ "Tätä liitännäistä voidaan käyttää XMPP-palvelimien tai -asiakasohjelmien " "virheenjäljitykseen." +#~ msgid "More Data needed" +#~ msgstr "Lisää tietoja tarvitaan" + +#~ msgid "Please provide a shortcut to associate with the smiley." +#~ msgstr "Syötä hymiöön liitettävä oikotie." + +#~ msgid "Please select an image for the smiley." +#~ msgstr "Valitse hymiölle kuva." + #~ msgid "Activate which ID?" #~ msgstr "Mikä tunnus (ID) aktivoidaan?"
--- a/po/sl.po Sun Jul 05 06:51:35 2009 +0000 +++ b/po/sl.po Sun Jul 05 15:08:20 2009 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Pidgin 2.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-02 01:34-0700\n" +"POT-Creation-Date: 2009-07-04 15:07-0700\n" "PO-Revision-Date: 2009-05-02 16:54+0100\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: Martin Srebotnjak <miles@filmsi.net>\n" @@ -2611,9 +2611,10 @@ "dnevnika." #. * description +#, fuzzy msgid "" "When viewing logs, this plugin will include logs from other IM clients. " -"Currently, this includes Adium, MSN Messenger, and Trillian.\n" +"Currently, this includes Adium, MSN Messenger, aMSN, and Trillian.\n" "\n" "WARNING: This plugin is still alpha code and may crash frequently. Use it " "at your own risk!" @@ -2667,8 +2668,9 @@ msgid "Save messages sent to an offline user as pounce." msgstr "Shrani sporočila, poslana neprijavljenemu uporabniku, kot opozorilo." -msgid "" -"The rest of the messages will be saved as pounce. You can edit/delete the " +#, fuzzy +msgid "" +"The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." msgstr "" "Preostanek sporočila bo shranjen kot opozorilo. Opozorilo lahko uredite/" @@ -4809,7 +4811,8 @@ msgid "Error in chat %s" msgstr "Napaka v pomenku %s" -msgid "An error occured on the in-band bytestream transfer\n" +#, fuzzy +msgid "An error occurred on the in-band bytestream transfer\n" msgstr "V notranje pasovnem zlogovnem pretoku je prišlo do napake\n" msgid "Transfer was closed." @@ -6347,9 +6350,10 @@ "%s appears to be offline and did not receive the message that you just sent." msgstr "%s ni na zvezi in ni sprejel sporočila, ki ste ga pravkar poslali." -msgid "" -"Unable to connect to server. Please enter the address of the server you wish " -"to connect to." +#, fuzzy +msgid "" +"Unable to connect to server. Please enter the address of the server to which " +"you wish to connect." msgstr "" "Ni se mogoče povezati na strežnik. Vnesite naslov strežnika, na katerega se " "želite povezati." @@ -6727,9 +6731,10 @@ msgstr "Ponovno zahtevaj pooblastitev" #. Unregistered username -#. uid is not exist -msgid "Invalid username." -msgstr "Neveljavno uporabniško ime." +#. the username does not exist +#, fuzzy +msgid "Username does not exist" +msgstr "Uporabnik ne obstaja" #. Suspended account msgid "Your account is currently suspended." @@ -7998,6 +8003,10 @@ msgid "Enter the text from the image" msgstr "Vnesite besedilo s slike" +#. uid is not exist +msgid "Invalid username." +msgstr "Neveljavno uporabniško ime." + #, c-format msgid "Unknown reply when checking password (0x%02X)" msgstr "Neznan odgovor pri preverjanju gesla (0x%02X)" @@ -9625,7 +9634,6 @@ msgid "Received invalid data" msgstr "Na povezavi s strežnikom prejeti neveljavni podatki." -#. Password incorrect #, fuzzy msgid "Incorrect Password" msgstr "Neveljavno geslo" @@ -9639,11 +9647,6 @@ "Neznana številka napake %d. Prijavljanje v spletno stran Yahoo! lahko to " "odpravi." -#. the username does not exist -#, fuzzy -msgid "Username does not exist" -msgstr "Uporabnik ne obstaja" - #. indicates a lock of some description #, fuzzy msgid "" @@ -11132,6 +11135,10 @@ msgid "The text information for a buddy's status" msgstr "Spremeni podatke za uporabika %s" +#, fuzzy +msgid "Type the host name for this certificate." +msgstr "Vnesite ime gostitelja, kateremu je namenjeno to digitalno potrdilo." + #. Widget creation function msgid "SSL Servers" msgstr "Strežniki SSL" @@ -12067,7 +12074,8 @@ msgid "Hyperlink visited color" msgstr "Barva obiskane povezave" -msgid "Color to draw hyperlinks after it has been visited (or activated)." +#, fuzzy +msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "Barva za izpis hiperpovezav, ki ste jih že obiskali (ali aktivirali)." msgid "Hyperlink prelight color" @@ -12104,13 +12112,22 @@ msgid "Action Message Name Color for Whispered Message" msgstr "Ime barve sporočila dejanja za šepetano sporočilo" +#, fuzzy +msgid "Color to draw the name of a whispered action message." +msgstr "Barva izrisa imena na sporočilo dejanja." + msgid "Whisper Message Name Color" msgstr "Barva imena šepetanega sporočila" +#, fuzzy +msgid "Color to draw the name of a whispered message." +msgstr "Barva izrisa imena na sporočilo dejanja." + msgid "Typing notification color" msgstr "Barva obvestila o tipkanju" -msgid "The color to use for the typing notification font" +#, fuzzy +msgid "The color to use for the typing notification" msgstr "Barva pisave za obvestilo o tipkanju" msgid "Typing notification font" @@ -12510,6 +12527,9 @@ "Vašega brskalnika ni bilo mogoče zagnati, ker ste v nastavitvah izbrali " "poljuben brskalnik, a niste nastavili ukaza." +msgid "No message" +msgstr "Ni sporočil" + msgid "Open All Messages" msgstr "Odpri vsa sporočila" @@ -12526,9 +12546,6 @@ msgstr "" "<span weight=\"bold\" size=\"larger\">Dobili ste opozorilo prijatelja!</span>" -msgid "No message" -msgstr "Ni sporočil" - msgid "The following plugins will be unloaded." msgstr "Odloženi bodo naslednji vtičniki." @@ -12846,7 +12863,8 @@ msgid "<span style=\"italic\">Example: stunserver.org</span>" msgstr "<span style=\"italic\">Primer: stunserver.org</span>" -msgid "_Autodetect IP address" +#, fuzzy, c-format +msgid "Use _automatically detected IP address: %s" msgstr "_Samozaznaj naslov IP" msgid "Public _IP:" @@ -13216,32 +13234,17 @@ msgid "Status for %s" msgstr "Stanje za %s" -#. -#. * TODO: We should enable/disable the add button based on -#. * whether the user has entered all required data. That -#. * would eliminate the need for this check and provide a -#. * better user experience. -#. -msgid "Custom Smiley" -msgstr "Smejček po meri" - -msgid "More Data needed" -msgstr "Potrebnih je več podatkov" - -msgid "Please provide a shortcut to associate with the smiley." -msgstr "Podajte tipke za bližnjico, ki bodo povezane s smejčkom." - #, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "Smejček po meri za '%s' že obstaja. Navedite druge tipke za bližnjico." +msgid "Custom Smiley" +msgstr "Smejček po meri" + msgid "Duplicate Shortcut" msgstr "Podvojena tipka za bližnjico" -msgid "Please select an image for the smiley." -msgstr "Izberite sliko smejčka." - msgid "Edit Smiley" msgstr "Uredi smejčka" @@ -13350,9 +13353,10 @@ msgid "Cannot send launcher" msgstr "Ni mogoče poslati zaganjalnika" -msgid "" -"You dragged a desktop launcher. Most likely you wanted to send whatever this " -"launcher points to instead of this launcher itself." +#, fuzzy +msgid "" +"You dragged a desktop launcher. Most likely you wanted to send the target of " +"this launcher instead of this launcher itself." msgstr "" "Povlekli ste namizni zaganjalnik. Najverjetneje ste želeli namesto samega " "zaganjalnika poslati tisto, na kar ta zaganjalnik kaže." @@ -13947,9 +13951,10 @@ msgstr "Vtičnik za glasbeno sporočanje - za skupinsko skladanje." #. * summary +#, fuzzy msgid "" "The Music Messaging Plugin allows a number of users to simultaneously work " -"on a piece of music by editting a common score in real-time." +"on a piece of music by editing a common score in real-time." msgstr "" "Vtičnik za glasbeno sporočanje omogoča več uporabnikom hkratno sodelovanju " "pri glasbenem ustvarjanju kompozicije v resničnem času." @@ -14212,9 +14217,10 @@ msgstr "Gumb Pošlji okna pogovora" #. *< summary +#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " -"for when no physical keyboard is present." +"for use when no physical keyboard is present." msgstr "" "Doda gumb Pošlji v vnosno območje pogovornega okna. Namenjeno za primere, ko " "fizična tipkovnica ni prisotna." @@ -14544,8 +14550,9 @@ msgid "Options specific to Pidgin for Windows." msgstr "Nastavitve, specifične za %s v okolju Windows." -msgid "" -"Provides options specific to Pidgin for Windows , such as buddy list docking." +#, fuzzy +msgid "" +"Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr "" "Ponuja nastavitve, specifične za %s v okolju Windows, kot je sidranje " "seznama prijateljev." @@ -14591,6 +14598,15 @@ #~ msgid "Activate which ID?" #~ msgstr "Kateri ID naj bo aktiviran?" +#~ msgid "More Data needed" +#~ msgstr "Potrebnih je več podatkov" + +#~ msgid "Please provide a shortcut to associate with the smiley." +#~ msgstr "Podajte tipke za bližnjico, ki bodo povezane s smejčkom." + +#~ msgid "Please select an image for the smiley." +#~ msgstr "Izberite sliko smejčka." + #~ msgid "Cursor Color" #~ msgstr "Barva kazalke"
--- a/po/zh_CN.po Sun Jul 05 06:51:35 2009 +0000 +++ b/po/zh_CN.po Sun Jul 05 15:08:20 2009 +0000 @@ -1,20 +1,21 @@ -# pidgin 软件包的简体中文翻译。 -# Copyright (C) 2003 pidgin team. +# Pidgin 软件包的简体中文翻译。 +# Copyright (C) 2009 pidgin team. # This file is distributed under the same license as the pidgin package. # Funda Wang <fundawang@linux.net.cn>, 2003, 2004. +# liyuekui <liyuekui@gmail.com>, 2009. +# Aron Xu <aronmalache@163.com>, 2009. # msgid "" msgstr "" "Project-Id-Version: pidgin HEAD\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-02 01:34-0700\n" -"PO-Revision-Date: 2007-05-20 20:22+0800\n" -"Last-Translator: Funda Wang <fundawang@linux.net.cn>\n" -"Language-Team: zh_CN <i18n-translation@lists.linux.net.cn>\n" +"POT-Creation-Date: 2009-07-04 15:17-0700\n" +"PO-Revision-Date: 2009-04-23 00:32+0800\n" +"Last-Translator: Aron Xu <aronmalache@163.com>\n" +"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" #. Translators may want to transliterate the name. #. It is not to be translated. @@ -25,7 +26,7 @@ msgid "%s. Try `%s -h' for more information.\n" msgstr "%s。试试“%s -h”查看帮助。\n" -#, fuzzy, c-format +#, c-format msgid "" "%s\n" "Usage: %s [OPTION]...\n" @@ -60,7 +61,6 @@ msgid "Account was not added" msgstr "账户未添加" -#, fuzzy msgid "Username of an account must be non-empty." msgstr "账户的用户名必须非空。" @@ -70,7 +70,6 @@ msgid "Remember password" msgstr "记住密码" -#, fuzzy msgid "There are no protocol plugins installed." msgstr "未安装协议插件。" @@ -86,9 +85,8 @@ msgid "Protocol:" msgstr "协议:" -#, fuzzy msgid "Username:" -msgstr "用户名(_U):" +msgstr "用户名:" msgid "Password:" msgstr "密码:" @@ -97,7 +95,6 @@ msgstr "别名:" #. Register checkbox -#, fuzzy msgid "Create this account on the server" msgstr "在服务器上创建此新帐户" @@ -179,7 +176,6 @@ msgid "Default" msgstr "默认" -#, fuzzy msgid "You must provide a username for the buddy." msgstr "您必须提供好友的用户名。" @@ -198,13 +194,11 @@ msgid "Username" msgstr "用户名" -#, fuzzy msgid "Alias (optional)" -msgstr "给联系人起名" - -#, fuzzy +msgstr "联系人别名(可选)" + msgid "Add in group" -msgstr "添加组" +msgstr "添加到组" msgid "Account" msgstr "账户" @@ -346,9 +340,8 @@ msgid "Plugins" msgstr "插件" -#, fuzzy msgid "Block/Unblock" -msgstr "取消屏蔽" +msgstr "屏蔽/取消屏蔽" msgid "Block" msgstr "屏蔽" @@ -356,11 +349,10 @@ msgid "Unblock" msgstr "取消屏蔽" -#, fuzzy msgid "" "Please enter the username or alias of the person you would like to Block/" "Unblock." -msgstr "您想要跟谁聊?请输入他/她的用户名或别名。" +msgstr "清输入你想要屏蔽/解除屏蔽的用户名活别名。" #. Not multiline #. Not masked? @@ -371,7 +363,6 @@ msgid "New Instant Message" msgstr "新即时消息" -#, fuzzy msgid "Please enter the username or alias of the person you would like to IM." msgstr "您想要跟谁聊?请输入他/她的用户名或别名。" @@ -387,11 +378,10 @@ msgid "Join" msgstr "加入" -#, fuzzy msgid "" "Please enter the username or alias of the person whose log you would like to " "view." -msgstr "您想要查看谁的日志?请输入他/她的用户名或别名。" +msgstr "您想要查看和谁聊天的日志?请输入他/她的用户名或别名。" #. Create the "Options" frame. msgid "Options" @@ -400,20 +390,17 @@ msgid "Send IM..." msgstr "发送消息..." -#, fuzzy msgid "Block/Unblock..." -msgstr "取消屏蔽" +msgstr "屏蔽/取消屏蔽..." msgid "Join Chat..." msgstr "加入聊天..." -#, fuzzy msgid "View Log..." -msgstr "查看日志" - -#, fuzzy +msgstr "查看日志..." + msgid "View All Logs" -msgstr "查看日志" +msgstr "查看全部日志" msgid "Show" msgstr "显示" @@ -436,19 +423,17 @@ msgid "By Log Size" msgstr "按日志大小" -#, fuzzy msgid "Buddy" -msgstr "好友(_B):" +msgstr "好友" msgid "Chat" msgstr "聊天" -#, fuzzy msgid "Grouping" -msgstr "组" +msgstr "分组" msgid "Certificate Import" -msgstr "证书导入" +msgstr "导入证书" msgid "Specify a hostname" msgstr "指定主机名" @@ -503,17 +488,17 @@ msgstr "" msgid "SSL Host Certificate" -msgstr "" +msgstr "SSL 主机证书" #, c-format msgid "Really delete certificate for %s?" -msgstr "" +msgstr "确实要删除 %s 的证书吗?" msgid "Confirm certificate delete" -msgstr "" +msgstr "确认删除证书" msgid "Certificate Manager" -msgstr "" +msgstr "证书管理器" #. Creating the user splits msgid "Hostname" @@ -615,7 +600,6 @@ msgid "Add Buddy Pounce..." msgstr "添加好友千里眼..." -#, fuzzy msgid "Invite..." msgstr "邀请" @@ -631,7 +615,8 @@ #, fuzzy, c-format msgid "List of %d user:\n" msgid_plural "List of %d users:\n" -msgstr[0] "用户列表:\n" +msgstr[0] "%d 个用户的列表:\n" +msgstr[1] "%d 个用户的列表:\n" msgid "Supported debug options are: version" msgstr "支持的调试选项有: version" @@ -650,7 +635,7 @@ msgid "" "%s is not a valid message class. See '/help msgcolor' for valid message " "classes." -msgstr "" +msgstr "%s 不是有效的信息类型。查看'/help msgcolor' 已查找有效的信息" #, c-format msgid "%s is not a valid color. See '/help msgcolor' for valid colors." @@ -727,6 +712,7 @@ msgid "File Transfers - %d%% of %d file" msgid_plural "File Transfers - %d%% of %d files" msgstr[0] "文件传送 - 已完成 %d%%,共 %d 个文件" +msgstr[1] "文件传送 - 已完成 %d%%,共 %d 个文件" #. Create the window. msgid "File Transfers" @@ -773,13 +759,11 @@ msgid "%.2f KiB/s" msgstr "%.2f KB/秒" -#, fuzzy msgid "Sent" -msgstr "设置(_S)" - -#, fuzzy +msgstr "已发送" + msgid "Received" -msgstr "收到的消息" +msgstr "已收到" msgid "Finished" msgstr "已完成" @@ -788,21 +772,20 @@ msgid "The file was saved as %s." msgstr "文件已另存为 %s。" -#, fuzzy msgid "Sending" -msgstr "发送" - -#, fuzzy +msgstr "正在发送" + msgid "Receiving" -msgstr "剩余" - -#, fuzzy, c-format +msgstr "正在接收" + +# c-format +#, c-format msgid "Conversation in %s on %s" -msgstr "与 %s 的对话" - -#, fuzzy, c-format +msgstr "在 %s 中与 %s 的对话" + +#, c-format msgid "Conversation with %s on %s" -msgstr "与 %s 的对话" +msgstr "与 %s 在 %s 的对话" msgid "%B %Y" msgstr "%Y年%m月" @@ -839,16 +822,14 @@ msgid "Conversations with %s" msgstr "与 %s 的对话" -#, fuzzy msgid "All Conversations" -msgstr "对话" +msgstr "全部对话" msgid "System Log" msgstr "系统日志" -#, fuzzy msgid "Calling ... " -msgstr "正在计算..." +msgstr "正在呼叫..." msgid "Hangup" msgstr "" @@ -874,12 +855,11 @@ msgid "%s is trying to start an unsupported media session type with you." msgstr "" -#, fuzzy msgid "You have rejected the call." -msgstr "您已经参与了频道%s%s" +msgstr "您已经拒绝呼叫" msgid "call: Make an audio call." -msgstr "" +msgstr "呼叫:音频呼叫。" msgid "Emails" msgstr "电子邮件" @@ -893,10 +873,11 @@ msgid "Subject" msgstr "主题" -#, c-format +#, fuzzy, c-format msgid "%s (%s) has %d new message." msgid_plural "%s (%s) has %d new messages." msgstr[0] "%s(%s) 有 %d 封新邮件。" +msgstr[1] "%s(%s) 有 %d 封新邮件。" msgid "New Mail" msgstr "新邮件" @@ -920,16 +901,14 @@ msgid "(none)" msgstr "(无)" -#, fuzzy msgid "URI" -msgstr "UIN" +msgstr "URI" msgid "ERROR" -msgstr "" - -#, fuzzy +msgstr "错误" + msgid "loading plugin failed" -msgstr "Ping 失败" +msgstr "载入插件失败" msgid "unloading plugin failed" msgstr "" @@ -966,9 +945,8 @@ "Please open the debug window and try again to see the exact error message." msgstr "" -#, fuzzy msgid "Select plugin to install" -msgstr "选择文件" +msgstr "选择插件以安装" msgid "You can (un)load plugins from the following list." msgstr "您可以卸载以下列表中的插件。" @@ -1059,16 +1037,14 @@ msgid "Play a sound" msgstr "播放声音" -#, fuzzy msgid "Pounce only when my status is not Available" -msgstr "仅当我的状态不可用时才监视(_O)" +msgstr "仅当我的状态不可用时才监视" msgid "Recurring" msgstr "再现" -#, fuzzy msgid "Cannot create pounce" -msgstr "无法更改昵称" +msgstr "无法创建监视" msgid "You do not have any accounts." msgstr "您没有帐户。" @@ -1174,13 +1150,11 @@ msgid "Logging" msgstr "日志" -#, fuzzy msgid "You must fill all the required fields." -msgstr "填入注册字段。" - -#, fuzzy +msgstr "您必须填入注册字段。" + msgid "The required fields are underlined." -msgstr "所需插件 %s 无法装入。" +msgstr "所需区域已用下划线标出。" msgid "Not implemented yet." msgstr "未实现。" @@ -1191,16 +1165,14 @@ msgid "Open File..." msgstr "打开文件..." -#, fuzzy msgid "Choose Location..." -msgstr "位置" +msgstr "选择位置..." msgid "Hit 'Enter' to find more rooms of this category." -msgstr "" - -#, fuzzy +msgstr "按'Enter'以寻找更多此分类下的聊天室。" + msgid "Get" -msgstr "设置(_S)" +msgstr "获取" #. Create the window. msgid "Room List" @@ -1233,9 +1205,8 @@ msgid "Others talk in chat" msgstr "别人在聊天中发言" -#, fuzzy msgid "Someone says your username in chat" -msgstr "别人在聊天中提到您的名字" +msgstr "有人在聊天中提到您的名字" msgid "GStreamer Failure" msgstr "GStreamer 失败" @@ -1273,7 +1244,7 @@ msgid "Method: " msgstr "方式:" -#, fuzzy, c-format +#, c-format msgid "" "Sound Command\n" "(%s for filename)" @@ -1297,9 +1268,8 @@ msgid "Only when not available" msgstr "仅当不可用时" -#, fuzzy msgid "Volume(0-100):" -msgstr "音量:" +msgstr "音量(0-100):" #. Sound events msgid "Sound Events" @@ -1492,24 +1462,20 @@ msgid "Offline" msgstr "离线" -#, fuzzy msgid "Online Buddies" -msgstr "离线好友" - -#, fuzzy +msgstr "在线好友" + msgid "Offline Buddies" msgstr "离线好友" -#, fuzzy msgid "Online/Offline" -msgstr "上线时间" +msgstr "在线/离线" msgid "Meebo" msgstr "" -#, fuzzy msgid "No Grouping" -msgstr "无声音" +msgstr "未分组" msgid "Nested Subgroup" msgstr "" @@ -1517,12 +1483,11 @@ msgid "Nested Grouping (experimental)" msgstr "" -#, fuzzy msgid "Provides alternate buddylist grouping options." -msgstr "提供与 Evolution 的集成。" +msgstr "提供其他分组选项。" msgid "Lastlog" -msgstr "Lastlog" +msgstr "最近日志" #. Translator Note: The "backlog" is the conversation buffer/history. msgid "lastlog: Searches for a substring in the backlog." @@ -1547,12 +1512,11 @@ msgid "TinyURL (or other) address prefix" msgstr "" -#, fuzzy msgid "TinyURL" -msgstr "URL" +msgstr "TinyURL" msgid "TinyURL plugin" -msgstr "" +msgstr "TinyURL 插件" msgid "When receiving a message with URL(s), TinyURL for easier copying" msgstr "" @@ -1647,13 +1611,13 @@ msgstr "" #. Make messages -#, fuzzy, c-format +#, c-format msgid "Accept certificate for %s?" -msgstr "接受聊天邀请吗?" +msgstr "接受 %s 的聊天邀请吗?" #. TODO: Find what the handle ought to be msgid "SSL Certificate Verification" -msgstr "" +msgstr "SSL 证书验证" msgid "_View Certificate..." msgstr "查看证书(_V)..." @@ -1725,16 +1689,14 @@ msgstr "" #. TODO: Find what the handle ought to be -#, fuzzy msgid "Certificate Information" -msgstr "服务器信息" +msgstr "证书信息" msgid "Registration Error" msgstr "注册错误" -#, fuzzy msgid "Unregistration Error" -msgstr "注册错误" +msgstr "解除注册错误" #, c-format msgid "+++ %s signed on" @@ -1792,7 +1754,6 @@ msgid "%s left the room (%s)." msgstr "%s 离开了聊天室(%s)。" -#, fuzzy msgid "Invite to chat" msgstr "邀请会议" @@ -2166,9 +2127,9 @@ msgid "Unable to load your plugin." msgstr "无法装入您的插件。" -#, fuzzy, c-format +#, c-format msgid "%s requires %s, but it failed to unload." -msgstr "依赖的插件 %s 装入失败。" +msgstr "%s 依赖的插件 %s 卸载失败。" msgid "Autoaccept" msgstr "自动接受" @@ -2224,9 +2185,8 @@ "(only when there's no conversation with the sender)" msgstr "" -#, fuzzy msgid "Create a new directory for each user" -msgstr "选择要搜索的用户目录" +msgstr "为每个用户创建新目录" msgid "Notes" msgstr "备注" @@ -2516,9 +2476,10 @@ msgstr "在日志查看器中包含其它即时通讯客户的日志。" #. * description +#, fuzzy msgid "" "When viewing logs, this plugin will include logs from other IM clients. " -"Currently, this includes Adium, MSN Messenger, and Trillian.\n" +"Currently, this includes Adium, MSN Messenger, aMSN, and Trillian.\n" "\n" "WARNING: This plugin is still alpha code and may crash frequently. Use it " "at your own risk!" @@ -2571,7 +2532,7 @@ msgstr "" msgid "" -"The rest of the messages will be saved as pounce. You can edit/delete the " +"The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." msgstr "" @@ -2856,9 +2817,8 @@ msgstr "Purple 联系人" #. Creating the options for the protocol -#, fuzzy msgid "Local Port" -msgstr "地区" +msgstr "本地端口" msgid "Bonjour" msgstr "Bonjour" @@ -2879,9 +2839,8 @@ msgid "Could not listen on socket" msgstr "无法在套接字上监听" -#, fuzzy msgid "Error communicating with local mDNSResponder." -msgstr "与服务器通讯出错" +msgstr "与本地 DNS 服务通讯出错" msgid "Invalid proxy settings" msgstr "无效的代理设置" @@ -2906,9 +2865,9 @@ msgid "Buddylist saved successfully!" msgstr "好友列表成功保存!" -#, fuzzy, c-format +#, c-format msgid "Couldn't write buddy list for %s to %s" -msgstr "无法装入好友列表" +msgstr "无法为 %s 写入 %s 好友列表" msgid "Couldn't load buddylist" msgstr "无法装入好友列表" @@ -3246,13 +3205,12 @@ msgid "Ban on %s by %s, set %s ago" msgstr "" -#, fuzzy, c-format +#, c-format msgid "Ban on %s" -msgstr "原因: %s" - -#, fuzzy +msgstr "屏蔽: %s" + msgid "End of ban list" -msgstr "未列出" +msgstr "屏蔽列表结束" #, c-format msgid "You are banned from %s." @@ -3373,13 +3331,12 @@ #. We only want to do the following dance if the connection #. has not been successfully completed. If it has, just #. notify the user that their /nick command didn't go. -#, fuzzy, c-format +#, c-format msgid "The nickname \"%s\" is already being used." -msgstr "此聊天名已经在使用中" - -#, fuzzy +msgstr "昵称 \"%s\" 已被使用。" + msgid "Nickname in use" -msgstr "昵称" +msgstr "昵称已被使用" msgid "Cannot change nick" msgstr "无法更改昵称" @@ -3398,9 +3355,9 @@ msgid "PING reply -- Lag: %lu seconds" msgstr "PING 响应 -- 延后: %lu 秒" -#, fuzzy, c-format +#, c-format msgid "Cannot join %s: Registration is required." -msgstr "需要注册" +msgstr "无法加入 %s:需要注册" msgid "Cannot join channel" msgstr "无法加入频道" @@ -3597,9 +3554,8 @@ msgid "Server requires TLS/SSL for login. No TLS/SSL support found." msgstr "服务器需要 TLS/SSL 才能登录。没有找到 TLS/SSL 支持。" -#, fuzzy msgid "You require encryption, but no TLS/SSL support found." -msgstr "服务器需要 TLS/SSL 才能登录。没有找到 TLS/SSL 支持。" +msgstr "您要求 TLS/SSL 登录,但没有找到 TLS/SSL 支持。" msgid "Server requires plaintext authentication over an unencrypted stream" msgstr "服务器需要在不加密流上使用纯文本验证" @@ -3631,19 +3587,14 @@ msgid "The BOSH connection manager terminated your session." msgstr "" -#, fuzzy msgid "No session ID given" -msgstr "没有给出理由。" - -#, fuzzy +msgstr "没有给出会话 ID" + msgid "Unsupported version of BOSH protocol" -msgstr "不支持的版本" - -#, fuzzy +msgstr "不支持 BOSH 协议的版本" + msgid "Unable to establish a connection with the server" -msgstr "" -"无法建立与服务器:\n" -"%s" +msgstr "无法与服务器建立连接" #, c-format msgid "" @@ -3653,9 +3604,8 @@ "无法建立与服务器:\n" "%s" -#, fuzzy msgid "Unable to establish SSL connection" -msgstr "无法初始化连接" +msgstr "无法建立 SSL 连接" msgid "Unable to create socket" msgstr "无法创建套接字" @@ -3727,12 +3677,11 @@ msgid "Operating System" msgstr "操作系统" -#, fuzzy msgid "Local Time" -msgstr "本地文件:" +msgstr "本地时间" msgid "Last Activity" -msgstr "" +msgstr "最近活动" msgid "Service Discovery Info" msgstr "服务目录信息" @@ -3744,9 +3693,8 @@ msgid "Extended Stanza Addressing" msgstr "额外地址" -#, fuzzy msgid "Multi-User Chat" -msgstr "给聊天起名" +msgstr "多用户聊天" #, fuzzy msgid "Multi-User Chat Extended Presence Information" @@ -3775,17 +3723,15 @@ msgid "In-Band Registration" msgstr "注册错误" -#, fuzzy msgid "User Location" -msgstr "位置" +msgstr "用户位置" #, fuzzy msgid "User Avatar" msgstr "用户搜索" -#, fuzzy msgid "Chat State Notifications" -msgstr "好友状态通知" +msgstr "聊天状态通知" msgid "Software Version" msgstr "软件版本" @@ -3822,9 +3768,8 @@ msgid "Reachability Address" msgstr "电子邮件地址" -#, fuzzy msgid "User Profile" -msgstr "个人资料" +msgstr "用户资料" #, fuzzy msgid "Jingle" @@ -3833,9 +3778,8 @@ msgid "Jingle Audio" msgstr "" -#, fuzzy msgid "User Nickname" -msgstr "用户名" +msgstr "用户昵称" msgid "Jingle ICE UDP" msgstr "" @@ -3956,13 +3900,11 @@ msgid "Unsubscribe" msgstr "退订" -#, fuzzy msgid "Log In" -msgstr "已登入" - -#, fuzzy +msgstr "登录" + msgid "Log Out" -msgstr "记录聊天" +msgstr "退出" msgid "Chatty" msgstr "唠叨" @@ -4009,9 +3951,8 @@ msgid "Email Address" msgstr "电子邮件地址" -#, fuzzy msgid "Search for XMPP users" -msgstr "搜索用户" +msgstr "搜索 XMPP 用户" #. "Search" msgid "Search" @@ -4096,17 +4037,14 @@ msgid "Affiliations:" msgstr "别名:" -#, fuzzy msgid "No users found" msgstr "未找到匹配的用户" -#, fuzzy msgid "Roles:" -msgstr "职务" - -#, fuzzy +msgstr "角色:" + msgid "Ping timeout" -msgstr "纯文本" +msgstr "Ping 超时" msgid "Read Error" msgstr "读取错误" @@ -4131,9 +4069,9 @@ msgid "Registration of %s@%s successful" msgstr "%s@%s 注册成功" -#, fuzzy, c-format +#, c-format msgid "Registration to %s successful" -msgstr "%s@%s 注册成功" +msgstr "%s 注册成功" msgid "Registration Successful" msgstr "注册成功" @@ -4141,17 +4079,15 @@ msgid "Registration Failed" msgstr "注册失败" -#, fuzzy, c-format +#, c-format msgid "Registration from %s successfully removed" -msgstr "%s@%s 注册成功" - -#, fuzzy +msgstr "%s 取消注册成功" + msgid "Unregistration Successful" -msgstr "注册成功" - -#, fuzzy +msgstr "取消注册成功" + msgid "Unregistration Failed" -msgstr "注册失败" +msgstr "取消注册失败" msgid "State" msgstr "州/省" @@ -4171,7 +4107,6 @@ msgid "Unregister" msgstr "取消注册" -#, fuzzy msgid "" "Please fill out the information below to change your account registration." msgstr "请在下面填入信息以注册您新的账户。" @@ -4179,24 +4114,22 @@ msgid "Please fill out the information below to register your new account." msgstr "请在下面填入信息以注册您新的账户。" -#, fuzzy msgid "Register New XMPP Account" -msgstr "注册新的 Jabber 账户" +msgstr "注册新的 XMPP 账户" msgid "Register" msgstr "注册" -#, fuzzy, c-format +#, c-format msgid "Change Account Registration at %s" -msgstr "更改 %s 的用户信息" - -#, fuzzy, c-format +msgstr "更改在 %s 的用户信息" + +#, c-format msgid "Register New Account at %s" -msgstr "注册新的 Jabber 账户" - -#, fuzzy +msgstr "在 %s 注册新账户" + msgid "Change Registration" -msgstr "注册错误" +msgstr "更改帐户" #, fuzzy msgid "Malformed BOSH Connect Server" @@ -4206,16 +4139,14 @@ msgid "Error unregistering account" msgstr "更改账户信息出错" -#, fuzzy msgid "Account successfully unregistered" -msgstr "您成功创建了一个群" +msgstr "取消帐户注册成功" msgid "Initializing Stream" msgstr "初始化流" -#, fuzzy msgid "Initializing SSL/TLS" -msgstr "初始化流" +msgstr "初始化 SSL/TLS" msgid "Authenticating" msgstr "正在认证" @@ -4306,9 +4237,8 @@ msgid "Password (again)" msgstr "再次输入新密码" -#, fuzzy msgid "Change XMPP Password" -msgstr "更改密码" +msgstr "更改 XMPP 密码" msgid "Please enter your new password" msgstr "请输入您的新密码" @@ -4496,9 +4426,9 @@ msgid "Unable to kick user %s" msgstr "无法踢出用户 %s" -#, fuzzy, c-format +#, c-format msgid "Unable to ping user %s" -msgstr "无法屏蔽用户 %s" +msgstr "无法 ping 用户 %s" #, fuzzy, c-format msgid "Unable to buzz, because there is nothing known about %s." @@ -4620,14 +4550,12 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "XMPP Protocol Plugin" -msgstr "MSN 协议插件" +msgstr "XMPP 协议插件" #. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im -#, fuzzy msgid "Domain" -msgstr "罗马尼亚语" +msgstr "域" msgid "Require SSL/TLS" msgstr "" @@ -4647,22 +4575,20 @@ msgid "Connect server" msgstr "连接服务器" -#, fuzzy msgid "File transfer proxies" -msgstr "文件传送端口" +msgstr "文件传送代理" msgid "BOSH URL" msgstr "" #. this should probably be part of global smiley theme settings later on, #. shared with MSN -#, fuzzy msgid "Show Custom Smileys" -msgstr "显示自定义如下:" - -#, fuzzy, c-format +msgstr "显示自定义表情" + +#, c-format msgid "%s has left the conversation." -msgstr "%s 已经关闭了对话。" +msgstr "%s 已经离开了对话。" #, c-format msgid "Message from %s" @@ -4680,11 +4606,10 @@ msgid "Message delivery to %s failed: %s" msgstr "投递到 %s 的消息失败: %s" -#, fuzzy msgid "XMPP Message Error" -msgstr "Jabber 消息错误" - -#, fuzzy, c-format +msgstr "XMPP 消息错误" + +#, c-format msgid "(Code %s)" msgstr " (代码 %s)" @@ -4717,7 +4642,7 @@ msgstr "聊天 %s 出错" #, fuzzy -msgid "An error occured on the in-band bytestream transfer\n" +msgid "An error occurred on the in-band bytestream transfer\n" msgstr "打开文件时发生了错误。" #, fuzzy @@ -5437,7 +5362,7 @@ msgid "Mobile message was not sent because it was too long." msgstr "消息未发出,因为您尚未登入。" -#, c-format +#, fuzzy, c-format msgid "" "The MSN server will shut down for maintenance in %d minute. You will " "automatically be signed out at that time. Please finish any conversations " @@ -5457,6 +5382,11 @@ "现在进行中的对话。\n" "\n" "维护完成后,您将能够成功登入。" +msgstr[1] "" +"MSN 服务器即将于 %d 分钟后关闭进行维护。到那时,您将会被自动登出。请尽快关闭" +"现在进行中的对话。\n" +"\n" +"维护完成后,您将能够成功登入。" msgid "" "Message was not sent because the system is unavailable. This normally " @@ -6260,9 +6190,10 @@ "%s appears to be offline and did not receive the message that you just sent." msgstr "%s 显示为离线,因此未接受到您刚刚发出的消息。" -msgid "" -"Unable to connect to server. Please enter the address of the server you wish " -"to connect to." +#, fuzzy +msgid "" +"Unable to connect to server. Please enter the address of the server to which " +"you wish to connect." msgstr "无法连接到服务器。请输入您想要连接的服务器的地址。" msgid "Error. SSL support is not installed." @@ -6482,7 +6413,7 @@ #. Label msgid "Buddy Icon" -msgstr "好友图标" +msgstr "用户头像" msgid "Voice" msgstr "语音" @@ -6629,10 +6560,10 @@ msgstr "收到的认证" #. Unregistered username -#. uid is not exist -#, fuzzy -msgid "Invalid username." -msgstr "名称无效" +#. the username does not exist +#, fuzzy +msgid "Username does not exist" +msgstr "用户不存在" #. Suspended account msgid "Your account is currently suspended." @@ -6757,40 +6688,46 @@ msgid "_Decline" msgstr "拒绝(_D)" -#, c-format +#, fuzzy, c-format msgid "You missed %hu message from %s because it was invalid." msgid_plural "You missed %hu messages from %s because they were invalid." msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因是这些消息无效。" - -#, c-format +msgstr[1] "您错过了 %2$s 的 %1$hu 条消息,原因是这些消息无效。" + +#, fuzzy, c-format msgid "You missed %hu message from %s because it was too large." msgid_plural "You missed %hu messages from %s because they were too large." msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因是这些消息太大。" - -#, c-format +msgstr[1] "您错过了 %2$s 的 %1$hu 条消息,原因是这些消息太大。" + +#, fuzzy, c-format msgid "" "You missed %hu message from %s because the rate limit has been exceeded." msgid_plural "" "You missed %hu messages from %s because the rate limit has been exceeded." msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因是达到了等级限制。" +msgstr[1] "您错过了 %2$s 的 %1$hu 条消息,原因是达到了等级限制。" #, fuzzy, c-format msgid "" "You missed %hu message from %s because his/her warning level is too high." msgid_plural "" "You missed %hu messages from %s because his/her warning level is too high." -msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因是他/她太可恶了。" +msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因是他/她的警告级别过高。" +msgstr[1] "您错过了 %2$s 的 %1$hu 条消息,原因是他/她的警告级别过高。" #, fuzzy, c-format msgid "You missed %hu message from %s because your warning level is too high." msgid_plural "" "You missed %hu messages from %s because your warning level is too high." -msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因是您太可恶了。" - -#, c-format +msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因是您的警告级别过高。" +msgstr[1] "您错过了 %2$s 的 %1$hu 条消息,原因是您的警告级别过高。" + +#, fuzzy, c-format msgid "You missed %hu message from %s for an unknown reason." msgid_plural "You missed %hu messages from %s for an unknown reason." msgstr[0] "您错过了 %2$s 的 %1$hu 条消息,原因未知。" +msgstr[1] "您错过了 %2$s 的 %1$hu 条消息,原因未知。" #. Data is assumed to be the destination bn #, c-format @@ -6945,7 +6882,7 @@ "您在登录过程完成之前请求设定配置文件。您的配置文件尚未设定;请在您完全连接后" "再试一次。" -#, c-format +#, fuzzy, c-format msgid "" "The maximum profile length of %d byte has been exceeded. It has been " "truncated for you." @@ -6953,11 +6890,12 @@ "The maximum profile length of %d bytes has been exceeded. It has been " "truncated for you." msgstr[0] "已经超过了配置文件的最大长度 %d 字节。程序为您自动截断了。" +msgstr[1] "已经超过了配置文件的最大长度 %d 字节。程序为您自动截断了。" msgid "Profile too long." msgstr "配置文件太长。" -#, c-format +#, fuzzy, c-format msgid "" "The maximum away message length of %d byte has been exceeded. It has been " "truncated for you." @@ -6965,6 +6903,7 @@ "The maximum away message length of %d bytes has been exceeded. It has been " "truncated for you." msgstr[0] "已经超过了离开消息的最大长度 %d 字节。程序自动为您截断了消息。" +msgstr[1] "已经超过了离开消息的最大长度 %d 字节。程序自动为您截断了消息。" msgid "Away message too long." msgstr "离开消息太长。" @@ -7904,6 +7843,11 @@ msgid "Enter the text from the image" msgstr "请输入组名称" +#. uid is not exist +#, fuzzy +msgid "Invalid username." +msgstr "名称无效" + #, c-format msgid "Unknown reply when checking password (0x%02X)" msgstr "" @@ -9489,7 +9433,6 @@ msgid "Received invalid data" msgstr "在与服务器的连接中收到了无效的数据。" -#. Password incorrect #, fuzzy msgid "Incorrect Password" msgstr "密码不对" @@ -9501,11 +9444,6 @@ "Logging into the Yahoo! website may fix this." msgstr "位置错误号 %d。登录到 Yahoo! 网站可能修复。" -#. the username does not exist -#, fuzzy -msgid "Username does not exist" -msgstr "用户不存在" - #. indicates a lock of some description #, fuzzy msgid "" @@ -10124,35 +10062,41 @@ msgid "Unknown." msgstr "未知。" -#, c-format +#, fuzzy, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d 秒" - -#, c-format +msgstr[1] "%d 秒" + +#, fuzzy, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 天" - -#, c-format +msgstr[1] "%d 天" + +#, fuzzy, c-format msgid "%s, %d hour" msgid_plural "%s, %d hours" msgstr[0] "%s %d 小时" - -#, c-format +msgstr[1] "%s %d 小时" + +#, fuzzy, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d 小时" - -#, c-format +msgstr[1] "%d 小时" + +#, fuzzy, c-format msgid "%s, %d minute" msgid_plural "%s, %d minutes" msgstr[0] "%s %d 分" - -#, c-format +msgstr[1] "%s %d 分" + +#, fuzzy, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d 分" +msgstr[1] "%d 分" #, c-format msgid "Could not open %s: Redirected too many times" @@ -10273,7 +10217,7 @@ #. Buddy icon msgid "Use this buddy _icon for this account:" -msgstr "此账户使用此好友图标(_I):" +msgstr "用作当前账户头像(_I):" msgid "_Advanced" msgstr "高级(_A)" @@ -10370,11 +10314,12 @@ "如果您想要回到此窗口以便添加、编辑或删除帐户,可以从好友列表中窗口中选择<b>帐" "户->添加/编辑</b>" -#, c-format +#, fuzzy, c-format msgid "You have %d contact named %s. Would you like to merge them?" msgid_plural "" "You currently have %d contacts named %s. Would you like to merge them?" msgstr[0] "您已经有名为 %2$s 的 %1$d 位联系人。您是否想要合并?" +msgstr[1] "您已经有名为 %2$s 的 %1$d 位联系人。您是否想要合并?" msgid "" "Merging these contacts will cause them to share a single entry on the buddy " @@ -10384,11 +10329,9 @@ "合并联系人将会使得这些联系人在好友列表中只显示单一的一项,并且使用单一的对话" "窗口。如果您想再解散合并后的联系人,可以从联系人的快捷菜单中选择“展开”" -#, fuzzy msgid "Please update the necessary fields." msgstr "请更新必要的字段。" -#, fuzzy msgid "A_ccount" msgstr "账户(_C):" @@ -10687,10 +10630,11 @@ msgid "/Tools/Room List" msgstr "/工具(T)/房间列表(O)" -#, c-format +#, fuzzy, c-format msgid "%d unread message from %s\n" msgid_plural "%d unread messages from %s\n" msgstr[0] "来自 %2$s 的 %1$d 条未读消息\n" +msgstr[1] "来自 %2$s 的 %1$d 条未读消息\n" msgid "Manually" msgstr "手动" @@ -10949,6 +10893,10 @@ msgid "The text information for a buddy's status" msgstr "更改 %s 的用户信息" +#, fuzzy +msgid "Type the host name for this certificate." +msgstr "输入此证书所适用的主机名。" + #. Widget creation function msgid "SSL Servers" msgstr "SSL 服务器" @@ -11206,10 +11154,11 @@ msgid "0 people in room" msgstr "聊天室里没有人" -#, c-format +#, fuzzy, c-format msgid "%d person in room" msgid_plural "%d people in room" msgstr[0] "聊天室里有 %d 个人" +msgstr[1] "聊天室里有 %d 个人" msgid "Typing" msgstr "正打字" @@ -11691,7 +11640,7 @@ msgid "Enter an alias for this chat." msgstr "请输入此聊天的别名。" -#, c-format +#, fuzzy, c-format msgid "" "You are about to remove the contact containing %s and %d other buddy from " "your buddy list. Do you want to continue?" @@ -11701,6 +11650,9 @@ msgstr[0] "" "您即将从您的好友列表中删除包含 %s 及 %d 个其它好友的联系人。您真的要这么做" "吗?" +msgstr[1] "" +"您即将从您的好友列表中删除包含 %s 及 %d 个其它好友的联系人。您真的要这么做" +"吗?" msgid "Remove Contact" msgstr "删除联系人" @@ -11884,7 +11836,7 @@ msgstr "超级链接颜色" #, fuzzy -msgid "Color to draw hyperlinks after it has been visited (or activated)." +msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "绘制超级链接悬停时的颜色。" msgid "Hyperlink prelight color" @@ -11922,15 +11874,22 @@ msgid "Action Message Name Color for Whispered Message" msgstr "" +msgid "Color to draw the name of a whispered action message." +msgstr "" + msgid "Whisper Message Name Color" msgstr "" +msgid "Color to draw the name of a whispered message." +msgstr "" + #, fuzzy msgid "Typing notification color" msgstr "通知删除" -msgid "The color to use for the typing notification font" -msgstr "" +#, fuzzy +msgid "The color to use for the typing notification" +msgstr "新邮件通知" #, fuzzy msgid "Typing notification font" @@ -12275,15 +12234,17 @@ msgid "%s wishes to start a video session with you." msgstr "" -#, c-format +#, fuzzy, c-format msgid "%s has %d new message." msgid_plural "%s has %d new messages." msgstr[0] "%s 有 %d 封新邮件。" - -#, c-format +msgstr[1] "%s 有 %d 封新邮件。" + +#, fuzzy, c-format msgid "<b>%d new email.</b>" msgid_plural "<b>%d new emails.</b>" msgstr[0] "<b>%d 封新邮件。</b>" +msgstr[1] "<b>%d 封新邮件。</b>" #, c-format msgid "The browser command \"%s\" is invalid." @@ -12300,6 +12261,10 @@ "The 'Manual' browser command has been chosen, but no command has been set." msgstr "选择了“手动”浏览器命令,但未设置命令。" +#, fuzzy +msgid "No message" +msgstr "未知信息" + msgid "Open All Messages" msgstr "打开全部消息" @@ -12317,10 +12282,6 @@ msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>" msgstr "<span weight=\"bold\" size=\"larger\">您有新邮件了!</span>" -#, fuzzy -msgid "No message" -msgstr "未知信息" - msgid "The following plugins will be unloaded." msgstr "下列插件将会被卸载。" @@ -12642,7 +12603,8 @@ msgid "<span style=\"italic\">Example: stunserver.org</span>" msgstr "<span style=\"italic\">例:stunserver.org</span>" -msgid "_Autodetect IP address" +#, fuzzy, c-format +msgid "Use _automatically detected IP address: %s" msgstr "自动检测 IP 地址(_A)" msgid "Public _IP:" @@ -12822,31 +12784,26 @@ "声音命令(_O):\n" "(%s 代表文件名)" -#, fuzzy msgid "M_ute sounds" -msgstr "静音" +msgstr "静音(_U)" msgid "Sounds when conversation has _focus" msgstr "对话获得焦点后发声(_F)" -#, fuzzy msgid "_Enable sounds:" -msgstr "启用声音:" - -#, fuzzy +msgstr "开启声音(_E):" + msgid "V_olume:" -msgstr "音量:" +msgstr "音量(_O):" msgid "Play" msgstr "播放" -#, fuzzy msgid "_Browse..." -msgstr "浏览(_E)..." - -#, fuzzy +msgstr "浏览(_B)..." + msgid "_Reset" -msgstr "重置" +msgstr "重置(_R)" msgid "_Report idle time:" msgstr "报告发呆时间(_R):" @@ -12920,9 +12877,8 @@ msgstr "设置隐私的账户:" #. Remove All button -#, fuzzy msgid "Remove Al_l" -msgstr "删除" +msgstr "全部删除(_L)" msgid "Permit User" msgstr "允许用户" @@ -13018,46 +12974,26 @@ msgid "Status for %s" msgstr "%s 的状态" -#. -#. * TODO: We should enable/disable the add button based on -#. * whether the user has entered all required data. That -#. * would eliminate the need for this check and provide a -#. * better user experience. -#. -#, fuzzy -msgid "Custom Smiley" -msgstr "插入表情" - -msgid "More Data needed" -msgstr "" - -msgid "Please provide a shortcut to associate with the smiley." -msgstr "" - #, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "" +msgid "Custom Smiley" +msgstr "自定义表情" + #, fuzzy msgid "Duplicate Shortcut" msgstr "重复更正" -#, fuzzy -msgid "Please select an image for the smiley." -msgstr "请输入 %s 的新名称" - -#, fuzzy msgid "Edit Smiley" -msgstr "插入表情" - -#, fuzzy +msgstr "修改表情" + msgid "Add Smiley" -msgstr "表情" - -#, fuzzy +msgstr "添加表情" + msgid "_Image:" -msgstr "图像(_I)" +msgstr "图像(_I):" #. Shortcut text #, fuzzy @@ -13079,22 +13015,18 @@ msgid "Select Buddy Icon" msgstr "选择好友" -#, fuzzy msgid "Click to change your buddyicon for this account." -msgstr "此账户使用此好友图标(_I):" - -#, fuzzy +msgstr "点此修改当前账户所用图标。" + msgid "Click to change your buddyicon for all accounts." -msgstr "此账户使用此好友图标(_I):" +msgstr "点此修改所有账户所用图标。" msgid "Waiting for network connection" msgstr "正在等待网络连接" -#, fuzzy msgid "New status..." -msgstr "新消息..." - -#, fuzzy +msgstr "新状态..." + msgid "Saved statuses..." msgstr "已存状态" @@ -13132,7 +13064,7 @@ "您可以通过文件传送发送此图像,将其嵌入到此消息中,或者将其用作此用户的头像。" msgid "Set as buddy icon" -msgstr "设置为好友头像" +msgstr "设置为用户头像" msgid "Send image file" msgstr "发送图像文件" @@ -13146,12 +13078,12 @@ msgid "" "You can send this image as a file transfer, or use it as the buddy icon for " "this user." -msgstr "您可以通过文件传送发送此图像,或者将其用作此用户的头像。" +msgstr "您可以通过文件传送发送该图片,或者将其用作此用户的头像。" msgid "" "You can insert this image into this message, or use it as the buddy icon for " "this user" -msgstr "您可以通过文件传送发送此图像,或者将其用作此用户的头像。" +msgstr "您可以在消息中插入该图片,或者将其用作此用户的头像。" #. I don't know if we really want to do anything here. Most of the desktop item types are crap like #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really @@ -13161,9 +13093,10 @@ msgid "Cannot send launcher" msgstr "无法发送启动器" -msgid "" -"You dragged a desktop launcher. Most likely you wanted to send whatever this " -"launcher points to instead of this launcher itself." +#, fuzzy +msgid "" +"You dragged a desktop launcher. Most likely you wanted to send the target of " +"this launcher instead of this launcher itself." msgstr "" "您拖曳的是桌面启动器。在大多数情况下,您可能想要发送此启动器所指向的文件,而" "非启动器自身。" @@ -13199,7 +13132,7 @@ #, fuzzy msgid "_Open Link" -msgstr "打开链接的方式(_O):" +msgstr "打开链接(_O):" msgid "_Copy Link Location" msgstr "复制链接地址(_C)" @@ -13225,24 +13158,20 @@ msgid "_Invite" msgstr "邀请(_I)" -#, fuzzy msgid "_Modify..." -msgstr "修改(_M)" - -#, fuzzy +msgstr "修改(_M)..." + msgid "_Add..." -msgstr "添加(_A)" +msgstr "添加(_A)..." msgid "_Open Mail" msgstr "打开邮件(_O)" -#, fuzzy msgid "_Edit" -msgstr "编辑" - -#, fuzzy +msgstr "编辑(_E)" + msgid "Pidgin Tooltip" -msgstr "Pidgin" +msgstr "Pidgin 工具提示" msgid "Pidgin smileys" msgstr "Pidgin 表情" @@ -13256,9 +13185,8 @@ msgid "none" msgstr "无" -#, fuzzy msgid "Small" -msgstr "电子邮件" +msgstr "小" msgid "Smaller versions of the default smilies" msgstr "" @@ -13528,7 +13456,6 @@ msgstr "提供鼠标手势的支持" #. * description -#, fuzzy msgid "" "Allows support for mouse gestures in conversation windows. Drag the middle " "mouse button to perform certain actions:\n" @@ -13539,9 +13466,9 @@ "允许在对话窗口中支持鼠标手势。\n" "拖曳鼠标中键可执行特定操作:\n" "\n" -"向下再向右可关闭对话。\n" -"向上再向左可切换到上个对话。\n" -"向上再向右可切换到下个对话。" +"·向下再向右可关闭对话。\n" +"·向上再向左可切换到上个对话。\n" +"·向上再向右可切换到下个对话。" msgid "Instant Messaging" msgstr "即时通讯" @@ -13617,7 +13544,6 @@ msgid "Please enter the person's information below." msgstr "请在下面输入联系人的信息。" -#, fuzzy msgid "Please enter the buddy's username and account type below." msgstr "请在下面输入好友的用户名和账户类型。" @@ -13653,11 +13579,13 @@ msgid "Test to see that all ui signals are working properly." msgstr "测试看看所有的 UI 信号是否都工作正确。" -#, fuzzy, c-format +#, c-format msgid "" "\n" "<b>Buddy Note</b>: %s" -msgstr "好友备注" +msgstr "" +"\n" +"<b>好友备注</b>: %s" msgid "History" msgstr "历史" @@ -13687,20 +13615,17 @@ msgid "Adds a small box to the buddy list that shows if you have new mail." msgstr "在好友列表旁显示一个小方块,标明您是否有新邮件。" -#, fuzzy msgid "Markerline" -msgstr "下划线" - -#, fuzzy +msgstr "分割线" + msgid "Draw a line to indicate new messages in a conversation." -msgstr "对话时显示通知消息" - -#, fuzzy +msgstr "在对话中以分割线突出显示新消息。" + msgid "Jump to markerline" -msgstr "下划线" +msgstr "跳至分割线" msgid "Draw Markerline in " -msgstr "" +msgstr "分割线使用在" msgid "_IM windows" msgstr "即时消息窗口(_I)" @@ -13750,18 +13675,18 @@ msgstr "合作作曲的音乐信使插件。" #. * summary +#, fuzzy msgid "" "The Music Messaging Plugin allows a number of users to simultaneously work " -"on a piece of music by editting a common score in real-time." +"on a piece of music by editing a common score in real-time." msgstr "音乐信使插件允许多个用户同时在同一份曲谱上工作。" #. ---------- "Notify For" ---------- msgid "Notify For" msgstr "提醒" -#, fuzzy msgid "\t_Only when someone says your username" -msgstr "\t仅当别人在聊天中提到您的名字(_O)" +msgstr "\t仅当别人提到您的名字时(_O)" msgid "_Focused windows" msgstr "聚焦窗口(_F)" @@ -13785,18 +13710,16 @@ msgid "Set window manager \"_URGENT\" hint" msgstr "设置窗口管理器“紧急”提示(_U)" -#, fuzzy msgid "_Flash window" -msgstr "聊天窗口(_H)" +msgstr "闪烁窗口(_F)" #. Raise window method button msgid "R_aise conversation window" msgstr "升起对话窗口(_A)" #. Present conversation method button -#, fuzzy msgid "_Present conversation window" -msgstr "升起对话窗口(_A)" +msgstr "当前对话窗口(_P)" #. ---------- "Notification Removals" ---------- msgid "Notification Removal" @@ -13868,9 +13791,8 @@ msgid "Hyperlink Color" msgstr "超级链接颜色" -#, fuzzy msgid "Visited Hyperlink Color" -msgstr "超级链接颜色" +msgstr "访问过的超级链接颜色" #, fuzzy msgid "Highlighted Message Name Color" @@ -13963,13 +13885,11 @@ msgid "New Version Available" msgstr "新版本可用" -#, fuzzy msgid "Later" -msgstr "日期" - -#, fuzzy +msgstr "稍后" + msgid "Download Now" -msgstr "%s 上的用户数: %s" +msgstr "立即下载" #. *< type #. *< ui_requirement @@ -14000,21 +13920,20 @@ #. *< dependencies #. *< priority #. *< id -#, fuzzy msgid "Send Button" -msgstr "发送到" +msgstr "发送按钮" #. *< name #. *< version -#, fuzzy msgid "Conversation Window Send Button." -msgstr "对话窗口隐藏" +msgstr "对话窗口的发送按钮" #. *< summary +#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " -"for when no physical keyboard is present." -msgstr "" +"for use when no physical keyboard is present." +msgstr "在对话窗口的输入栏添加一个发送按钮,适用于非键盘输入。" msgid "Duplicate Correction" msgstr "重复更正" @@ -14336,8 +14255,9 @@ msgid "Options specific to Pidgin for Windows." msgstr "Pidgin for Windows 特定的选项。" -msgid "" -"Provides options specific to Pidgin for Windows , such as buddy list docking." +#, fuzzy +msgid "" +"Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr "提供 Pidgin for Windows 特定的选项,比如好友列表停靠。" msgid "<font color='#777777'>Logged out.</font>" @@ -14380,6 +14300,9 @@ #~ msgid "Activate which ID?" #~ msgstr "激活哪个 ID?" +#~ msgid "Please select an image for the smiley." +#~ msgstr "请给这个表情选择一个图片" + #~ msgid "Cursor Color" #~ msgstr "光标颜色"