# HG changeset patch # User Yoshiki Yazawa # Date 1248497676 0 # Node ID e1cd44c7c7af3cd63910eafe248b56c60138412e # Parent b4daae0798e38da9dbd86087327d17d2d8ec9d4c# Parent 3418d175d4c6bd676adc3060d458266e3e471d2d explicit merge of 'd957c051e839d63bfc0ef71320934890e7ae63c4' and '7fbd51e5a790f5cf3275a0bb8a8198acd078b4ec' diff -r b4daae0798e3 -r e1cd44c7c7af COPYRIGHT --- a/COPYRIGHT Fri Jul 24 01:42:13 2009 +0000 +++ b/COPYRIGHT Sat Jul 25 04:54:36 2009 +0000 @@ -171,6 +171,7 @@ Christian Grothoff Vladislav Guberinić Gideon N. Guillen +Aman Gupta Christian Hammond Erick Hamness Fred Hampton diff -r b4daae0798e3 -r e1cd44c7c7af ChangeLog --- a/ChangeLog Fri Jul 24 01:42:13 2009 +0000 +++ b/ChangeLog Sat Jul 25 04:54:36 2009 +0000 @@ -7,13 +7,11 @@ * Voice & Video framework in libpurple, thanks to Mike Ruprecht's summer of code project in 2008. * It should no longer be possible to end up with duplicates of buddies - in a group on the buddy list. (Paul Aurich) + in a group on the buddy list. * Removed the unmaintained and unneeded toc protocol plugin. * Fixed NTLM authentication on big-endian systems. * Various memory cleanups when unloading libpurple. (Nick Hebner) * Report idle time 'From last message sent' should work properly. - * Show the invite message for buddies that requested authorization - from you on MSN. * DNS servers are re-read when DNS queries fail in case the system has moved to a new network and the old servers are not accessible. * DNS SRV records with equal priority are sorted with respect to their @@ -22,11 +20,34 @@ 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 + * 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. - * Add support for receiving handwritten (ink) messages on MSN. + * PURPLE_LEAKCHECK_HELP 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 be used to perform various actions that are + useful when running libpurple inside of Valgrind or similar programs. + Currently, it keeps plugins in memory, allowing Valgrind to perform + symbol resolution of leak traces at shutdown. + * Don't do IPv6 address lookups if the computer does not have an IPv6 + address configured. + * Fix a leak when the UI provides its own DNS resolving UI op. + (Aman Gupta) + * Don't fork a DNS resolver process to resolve IP addresses. (Aman Gupta) + * Better handling of corrupt certificates in the TLS Peers cache. + * More efficient purple_find_buddies() and purple_find_group() functions. + (Jan Kaluza and Aman Gupta) + * Internationalized Domain Names are supported when libpurple is compiled + against the GNU IDN library. + + AIM and ICQ: + * Preliminary support for a new authentication scheme called + "clientLogin." + * Fixed a bug where your away message sometimes would not get set when + you first sign on. + * Make sure links in your away messages show up as links to other people. + * For ICQ, Never change the privacy setting specified by the user. Gadu-Gadu: * Accounts can specify a server to which to connect. @@ -34,7 +55,7 @@ * Correctly show tooltip status for contacts with status messages. (Krzysztof "kkszysiu" Klinikowski) * Support for fetching buddy icons. (Krzysztof "kkszysiu" Klinikowski) - * Support connection progress steps in Gadu-Gadu (Krzysztof "kkszysiu" + * Support connection progress steps in Gadu-Gadu. (Krzysztof "kkszysiu" Klinikowski) XMPP: @@ -80,6 +101,15 @@ * New XMPP and Google Talk accounts require SSL by default. * Display kicks (and the reasons given) in chat rooms when an occupant is kicked. + * Fix issues with case-sensitivity of XMPP roster and case-insensitive + Purple groups. + * For contacts who advertise Entity Capabilities, only send rich text + markup if they support it. + * Removed support for obsoleted XEP-0022 (Message Events) and XEP-0091 + (Legacy Entity Time). + * When the GNU IDN library (libidn) is available, it is used for + normalization of Jabber IDs. When unavailable, internal routines are + used (as in previous versions). Yahoo!/Yahoo! JAPAN: * P2P file transfers. (Sulabh Mahajan) @@ -91,6 +121,17 @@ * Yahoo! and Yahoo! JAPAN are now two separate protocol plugins that share common protocol code. You can now have the same account on both networks. + * Ability to set personal details for an account and for buddies in the + buddylist. + + MSN: + * Add support for receiving handwritten (ink) messages on MSN. + * Add support for receiving audio clips on MSN. + * Show the invite message for buddies that requested authorization + from you on MSN. + * Support sending an invite message to buddies when requesting authorization + from them on MSN. + * Timeout switchboard connections aggressively Pidgin: * Added -f command line option to tell Pidgin to ignore NetworkManager @@ -124,6 +165,10 @@ * Draw the user's buddy icon at the bottom of the Buddy List with rounded corners for visual consistency with the actual icons in the Buddy List. (Kosta Arvanitis) + * When file transfers are complete, the received file name written to the + conversation window is now linked to the file. + * Fix a crash when closing a conversation tab that has unread messages + when the Message Notification plugin is loaded. Finch: * The hardware cursor is updated correctly. This will be useful diff -r b4daae0798e3 -r e1cd44c7c7af ChangeLog.API --- a/ChangeLog.API Fri Jul 24 01:42:13 2009 +0000 +++ b/ChangeLog.API Sat Jul 25 04:54:36 2009 +0000 @@ -37,9 +37,12 @@ * purple_debug_set_verbose * purple_global_proxy_set_info * purple_group_destroy + * purple_ipv4_address_is_valid + * purple_ipv6_address_is_valid * purple_log_get_activity_score * purple_markup_is_rtl * purple_markup_escape_text + * purple_network_convert_idn_to_ascii * purple_network_force_online * purple_network_set_stun_server * purple_network_set_turn_server @@ -54,6 +57,7 @@ * purple_request_field_get_group * purple_request_field_get_ui_data * purple_request_field_set_ui_data + * purple_ssl_connect_with_ssl_cn * purple_strequal * purple_utf8_strip_unprintables * purple_util_fetch_url_request_len_with_account @@ -77,11 +81,20 @@ * Added a client_type field in the get_ui_info core UI op. See core.h for details. * Added introspection of signals exposed via the D-Bus API. + * purple_find_buddies is now more efficient in the case where + it is enumerating all the buddies for an account. + * purple_find_group is now more efficient for large numbers of groups. + * All DNS routines support internationalized domain names (IDNs) when + libpurple is compiled with GNU libidn. Deprecated: * buddy-added and buddy-removed blist signals + * purple_blist_destroy + * purple_blist_new * purple_buddy_get_local_alias + * purple_ip_address_is_valid * purple_notify_user_info_remove_entry + * purple_set_blist * purple_status_type_set_primary_attr * purple_status_type_add_attr * purple_status_type_add_attrs diff -r b4daae0798e3 -r e1cd44c7c7af Makefile.mingw --- a/Makefile.mingw Fri Jul 24 01:42:13 2009 +0000 +++ b/Makefile.mingw Sat Jul 25 04:54:36 2009 +0000 @@ -129,7 +129,7 @@ rm -rf doc/html Doxyfile.mingw uninstall: - rm -rf $(PURPLE_INSTALL_PERLMOD_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_PO_DIR) $(PIDGIN_INSTALL_DIR) $(STRIPPED_RELEASE_DIR) + rm -rf $(PURPLE_INSTALL_PERL_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_PO_DIR) $(PIDGIN_INSTALL_DIR) $(STRIPPED_RELEASE_DIR) rm -f ./VERSION include $(PIDGIN_COMMON_TARGETS) diff -r b4daae0798e3 -r e1cd44c7c7af configure.ac --- a/configure.ac Fri Jul 24 01:42:13 2009 +0000 +++ b/configure.ac Sat Jul 25 04:54:36 2009 +0000 @@ -604,7 +604,7 @@ ]) fi]) fi - + else # GTK enable_cap=no @@ -808,6 +808,25 @@ fi fi +AC_ARG_ENABLE(idn, + [AC_HELP_STRING([--disable-idn], [compile without IDN support])], + [enable_idn="$enableval" force_idn=$enableval], [enable_idn="yes" force_idn=no]) +if test "x$enable_idn" != "xno"; then + PKG_CHECK_MODULES(IDN, libidn >= 0.0.0, [ + AC_DEFINE(USE_IDN, 1, [Use GNU Libidn for stringprep and IDN]) + AC_SUBST(IDN_CFLAGS) + AC_SUBST(IDN_LIBS) + ], [ + AC_MSG_RESULT(no) + if test "x$force_deps" = "xyes" ; then + AC_MSG_ERROR([ +GNU Libidn development headers not found. +Use --disable-idn if you do not need it. +]) + fi + ]) +fi + dnl ####################################################################### dnl # Check for Meanwhile headers (for Sametime) dnl ####################################################################### @@ -1075,13 +1094,19 @@ load_proto= for i in $STATIC_PRPLS ; do dnl Ugly special case for "libsilcpurple.la": - dnl ... and Ugly special case for multi-protocol oscar + dnl ... and Ugly special case for multi-protocol oscar and yahoo if test \( "x$i" = "xoscar" -o "x$i" = "xaim" -o "x$i" = "xicq" \) -a "x$static_oscar" != "xyes"; then STATIC_LINK_LIBS="$STATIC_LINK_LIBS \$(top_builddir)/libpurple/protocols/oscar/liboscar.la" extern_init="$extern_init extern gboolean purple_init_aim_plugin();" extern_init="$extern_init extern gboolean purple_init_icq_plugin();" load_proto="$load_proto purple_init_aim_plugin();" load_proto="$load_proto purple_init_icq_plugin();" + elif test "x$i" = "xyahoo"; then + STATIC_LINK_LIBS="$STATIC_LINK_LIBS \$(top_builddir)/libpurple/protocols/yahoo/libymsg.la" + extern_init="$extern_init extern gboolean purple_init_yahoo_plugin();" + extern_init="$extern_init extern gboolean purple_init_yahoojp_plugin();" + load_proto="$load_proto purple_init_yahoo_plugin();" + load_proto="$load_proto purple_init_yahoojp_plugin();" else if test "x$i" = "xsilc"; then STATIC_LINK_LIBS="$STATIC_LINK_LIBS \$(top_builddir)/libpurple/protocols/$i/lib${i}purple.la" @@ -1731,8 +1756,8 @@ LIBS="$LIBS $GNUTLS_LIBS" CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], - [gnutls_session s; gnutls_priority_set_direct(s, NULL, NULL);])], + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[gnutls_session s; gnutls_priority_set_direct(s, NULL, NULL);]])], [AC_DEFINE([HAVE_GNUTLS_PRIORITY_FUNCS], 1, [Define if your gnutls has gnutls_priority_set_direct and friends]) AC_MSG_RESULT(yes)], @@ -1978,7 +2003,7 @@ if test "x$ac_cv_moz_nss_libs" = "xno"; then nsslibs="-lssl3 -lsmime3 -lnss3 -lsoftokn3" - LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs" + LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs" LIBS="$LIBS $nsslibs" AC_TRY_LINK_FUNC(NSS_Init, [ac_cv_moz_nss_libs="yes"], @@ -2021,6 +2046,23 @@ AC_SUBST(NSS_LIBS) fi +if test "x$enable_nss" = "xyes"; then + AC_MSG_CHECKING(for NSS_SetAlgorithmPolicy) + LIBS_save="$LIBS" + LIBS="$LIBS $NSS_LIBS" + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $NSS_CFLAGS" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +#include ]], + [[NSS_SetAlgorithmPolicy(SEC_OID_MD2, 0, 0);]])], + [AC_DEFINE([NEED_NSS_WEAK_ALGORITHMS], 1, + [Define if your NSS needs weak algorithms activated with NSS_SetAlgorithmPolicy]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + CPPFLAGS="$CPPFLAGS_save" + LIBS="$LIBS_save" +fi + AM_CONDITIONAL(USE_NSS, test "x$enable_nss" = "xyes") if test "x$msg_nss" != "x" -a "x$msg_gnutls" != "x"; then @@ -2523,6 +2565,7 @@ if test "x$enable_dbus" = "xyes" ; then eval eval echo D-Bus services directory...... : $DBUS_SERVICES_DIR fi +echo Build with GNU Libidn......... : $enable_idn echo Build with NetworkManager..... : $enable_nm echo SSL Library/Libraries......... : $msg_ssl if test "x$SSL_CERTIFICATES_DIR" != "x" ; then diff -r b4daae0798e3 -r e1cd44c7c7af finch/finch.c --- a/finch/finch.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/finch.c Sat Jul 25 04:54:36 2009 +0000 @@ -20,6 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #include "account.h" #include "conversation.h" @@ -66,6 +67,25 @@ g_hash_table_insert(ui_info, "website", "http://pidgin.im"); g_hash_table_insert(ui_info, "dev_website", "http://developer.pidgin.im"); g_hash_table_insert(ui_info, "client_type", "console"); + + /* + * This is the client key for "Finch." It is owned by the AIM + * account "markdoliner." Please don't use this key for other + * applications. You can either not specify a client key, in + * which case the default "libpurple" key will be used, or you + * can register for your own client key at + * http://developer.aim.com/manageKeys.jsp + */ + g_hash_table_insert(ui_info, "prpl-aim-clientkey", "ma19sqWV9ymU6UYc"); + g_hash_table_insert(ui_info, "prpl-icq-clientkey", "ma19sqWV9ymU6UYc"); + + /* + * This is the distid for Finch, given to us by AOL. Please + * don't use this for other applications. You can just not + * specify a distid and libpurple will use a default. + */ + g_hash_table_insert(ui_info, "prpl-aim-distid", GINT_TO_POINTER(1552)); + g_hash_table_insert(ui_info, "prpl-icq-distid", GINT_TO_POINTER(1552)); } return ui_info; diff -r b4daae0798e3 -r e1cd44c7c7af finch/finch.h --- a/finch/finch.h Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/finch.h Sat Jul 25 04:54:36 2009 +0000 @@ -24,8 +24,6 @@ */ #include -#include "libpurple/internal.h" - #define FINCH_UI "gnt-purple" #define FINCH_PREFS_ROOT "/finch" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntaccount.c --- a/finch/gntaccount.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntaccount.c Sat Jul 25 04:54:36 2009 +0000 @@ -36,6 +36,7 @@ #include #include "finch.h" +#include #include #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntblist.c --- a/finch/gntblist.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntblist.c Sat Jul 25 04:54:36 2009 +0000 @@ -24,6 +24,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #include #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntcertmgr.c --- a/finch/gntcertmgr.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntcertmgr.c Sat Jul 25 04:54:36 2009 +0000 @@ -26,6 +26,7 @@ */ #include "finch.h" +#include #include "certificate.h" #include "debug.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntconn.c --- a/finch/gntconn.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntconn.c Sat Jul 25 04:54:36 2009 +0000 @@ -24,6 +24,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #include "account.h" #include "core.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntconv.c --- a/finch/gntconv.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntconv.c Sat Jul 25 04:54:36 2009 +0000 @@ -26,6 +26,7 @@ #include #include "finch.h" +#include #include #include @@ -191,10 +192,7 @@ } else { - char *escape = g_markup_escape_text((*text == '/' ? text + 1 : text), -1); - char *apos = purple_strreplace(escape, "'", "'"); - g_free(escape); - escape = apos; + char *escape = purple_markup_escape_text((*text == '/' ? text + 1 : text), -1); switch (purple_conversation_get_type(ggconv->active_conv)) { case PURPLE_CONV_TYPE_IM: @@ -884,9 +882,12 @@ gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), "\n", GNT_TEXT_FLAG_NORMAL); /* Unnecessary to print the timestamp for delayed message */ - if (purple_prefs_get_bool("/finch/conversations/timestamps")) + if (purple_prefs_get_bool("/finch/conversations/timestamps")) { + if (!mtime) + time(&mtime); gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)), gnt_color_pair(color_timestamp)); + } gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), " ", GNT_TEXT_FLAG_NORMAL); diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntdebug.c --- a/finch/gntdebug.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntdebug.c Sat Jul 25 04:54:36 2009 +0000 @@ -35,6 +35,7 @@ #include "gntdebug.h" #include "finch.h" +#include #include "notify.h" #include "util.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntft.c --- a/finch/gntft.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntft.c Sat Jul 25 04:54:36 2009 +0000 @@ -24,6 +24,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #include #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntlog.c --- a/finch/gntlog.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntlog.c Sat Jul 25 04:54:36 2009 +0000 @@ -24,6 +24,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #include #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntmedia.c --- a/finch/gntmedia.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntmedia.c Sat Jul 25 04:54:36 2009 +0000 @@ -25,7 +25,7 @@ */ #include "finch.h" - +#include #include "gntconv.h" #include "gntmedia.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntnotify.c --- a/finch/gntnotify.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntnotify.c Sat Jul 25 04:54:36 2009 +0000 @@ -32,6 +32,7 @@ #include #include "finch.h" +#include #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntplugin.c --- a/finch/gntplugin.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntplugin.c Sat Jul 25 04:54:36 2009 +0000 @@ -32,6 +32,7 @@ #include #include "finch.h" +#include #include "debug.h" #include "notify.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntpounce.c --- a/finch/gntpounce.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntpounce.c Sat Jul 25 04:54:36 2009 +0000 @@ -36,6 +36,7 @@ #include #include "finch.h" +#include #include "account.h" #include "conversation.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntprefs.c --- a/finch/gntprefs.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntprefs.c Sat Jul 25 04:54:36 2009 +0000 @@ -24,6 +24,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #include #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntrequest.c --- a/finch/gntrequest.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntrequest.c Sat Jul 25 04:54:36 2009 +0000 @@ -35,6 +35,7 @@ #include #include "finch.h" +#include #include "gntrequest.h" #include "debug.h" #include "util.h" @@ -317,6 +318,8 @@ { PurpleRequestField *field = fields->data; PurpleRequestFieldType type = purple_request_field_get_type(field); + if (!purple_request_field_is_visible(field)) + continue; if (type == PURPLE_REQUEST_FIELD_BOOLEAN) { GntWidget *check = FINCH_GET_DATA(field); @@ -598,11 +601,13 @@ for (; fields ; fields = fields->next) { - /* XXX: Break each of the fields into a separate function? */ PurpleRequestField *field = fields->data; PurpleRequestFieldType type = purple_request_field_get_type(field); const char *label = purple_request_field_get_label(field); + if (!purple_request_field_is_visible(field)) + continue; + hbox = gnt_hbox_new(TRUE); /* hrm */ gnt_box_add_widget(GNT_BOX(box), hbox); diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntroomlist.c --- a/finch/gntroomlist.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntroomlist.c Sat Jul 25 04:54:36 2009 +0000 @@ -25,6 +25,7 @@ */ #include "finch.h" +#include #include "gntrequest.h" #include "gntroomlist.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntsound.c --- a/finch/gntsound.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntsound.c Sat Jul 25 04:54:36 2009 +0000 @@ -24,6 +24,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #ifdef _WIN32 #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntstatus.c --- a/finch/gntstatus.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntstatus.c Sat Jul 25 04:54:36 2009 +0000 @@ -34,6 +34,7 @@ #include #include "finch.h" +#include #include #include diff -r b4daae0798e3 -r e1cd44c7c7af finch/gntui.c --- a/finch/gntui.c Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/gntui.c Sat Jul 25 04:54:36 2009 +0000 @@ -20,6 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "finch.h" +#include #include "gntui.h" diff -r b4daae0798e3 -r e1cd44c7c7af finch/plugins/Makefile.am --- a/finch/plugins/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/finch/plugins/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -59,5 +59,5 @@ $(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS) $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module -avoid-version $(PLUGIN_LIBS) @rm -f tmp$@.lo tmp$@.o libtmp$@.la - @cp .libs/libtmp$@.so* $@ - @rm -f .libs/libtmp$@.* + @cp .libs/libtmp$@.so.so $@ + @rm -rf .libs/libtmp$@.* diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/Makefile.am --- a/libpurple/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -92,6 +92,9 @@ xmlnode.c \ whiteboard.c +purple_builtsources = \ + marshallers.c + purple_coreheaders = \ account.h \ accountopt.h \ @@ -248,18 +251,17 @@ bin_SCRIPTS = purple-remote purple-send purple-send-async purple-url-handler BUILT_SOURCES = $(purple_builtheaders) \ + $(purple_builtsources) \ dbus-bindings.c \ dbus-signals.c \ dbus-types.c \ dbus-types.h \ - marshallers.c \ - marshallers.h \ purple-client-bindings.c \ purple-client-bindings.h else -BUILT_SOURCES = $(purple_builtheaders) +BUILT_SOURCES = $(purple_builtheaders) $(purple_builtsources) endif @@ -267,6 +269,7 @@ libpurple_la_SOURCES = \ $(purple_coresources) \ + $(purple_builtsources) \ $(dbus_sources) noinst_HEADERS= \ @@ -290,6 +293,7 @@ $(FARSIGHT_LIBS) \ $(GSTREAMER_LIBS) \ $(GSTINTERFACES_LIBS) \ + $(IDN_LIBS) \ -lm AM_CPPFLAGS = \ @@ -305,6 +309,7 @@ $(FARSIGHT_CFLAGS) \ $(GSTREAMER_CFLAGS) \ $(GSTINTERFACES_CFLAGS) \ + $(IDN_CFLAGS) \ $(NETWORKMANAGER_CFLAGS) # INSTALL_SSL_CERTIFICATES is true when SSL_CERTIFICATES_DIR is empty. diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/blist.c --- a/libpurple/blist.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/blist.c Sat Jul 25 04:54:36 2009 +0000 @@ -48,6 +48,12 @@ */ static GHashTable *buddies_cache = NULL; +/** + * A hash table used for efficient lookups of groups by name. + * UTF-8 collate-key => PurpleGroup*. + */ +static GHashTable *groups_cache = NULL; + static guint save_timer = 0; static gboolean blist_loaded = FALSE; @@ -83,14 +89,18 @@ PurpleBlistNode *group; }; +/* This function must not use purple_normalize */ static guint _purple_blist_hbuddy_hash(struct _purple_hbuddy *hb) { - return g_str_hash(hb->name); + return g_str_hash(hb->name) ^ g_direct_hash(hb->group) ^ g_direct_hash(hb->account); } +/* This function must not use purple_normalize */ static guint _purple_blist_hbuddy_equal(struct _purple_hbuddy *hb1, struct _purple_hbuddy *hb2) { - return (purple_strequal(hb1->name, hb2->name) && hb1->account == hb2->account && hb1->group == hb2->group); + return (hb1->group == hb2->group && + hb1->account == hb2->account && + g_str_equal(hb1->name, hb2->name)); } static void _purple_blist_hbuddy_free_key(struct _purple_hbuddy *hb) @@ -702,6 +712,10 @@ buddies_cache = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)g_hash_table_destroy); + groups_cache = g_hash_table_new_full((GHashFunc)g_str_hash, + (GEqualFunc)g_str_equal, + (GDestroyNotify)g_free, NULL); + for (account = purple_accounts_get_all(); account != NULL; account = account->next) { purple_blist_buddies_cache_add_account(account->data); @@ -936,15 +950,14 @@ g_return_if_fail(buddy != NULL); hb = g_new(struct _purple_hbuddy, 1); - hb->name = g_strdup(purple_normalize(buddy->account, buddy->name)); + hb->name = (gchar *)purple_normalize(buddy->account, buddy->name); hb->account = buddy->account; hb->group = ((PurpleBlistNode *)buddy)->parent->parent; g_hash_table_remove(purplebuddylist->buddies, hb); - + account_buddies = g_hash_table_lookup(buddies_cache, buddy->account); g_hash_table_remove(account_buddies, hb); - g_free(hb->name); hb->name = g_strdup(purple_normalize(buddy->account, name)); g_hash_table_replace(purplebuddylist->buddies, hb, buddy); @@ -1201,6 +1214,7 @@ } else { /* A simple rename */ PurpleBlistNode *cnode, *bnode; + gchar* key; /* Build a GList of all buddies in this group */ for (cnode = ((PurpleBlistNode *)source)->child; cnode != NULL; cnode = cnode->next) { @@ -1211,6 +1225,13 @@ old_name = source->name; source->name = new_name; + + key = g_utf8_collate_key(old_name, -1); + g_hash_table_remove(groups_cache, key); + g_free(key); + + key = g_utf8_collate_key(new_name, -1); + g_hash_table_insert(groups_cache, key, source); } /* Save our changes */ @@ -1583,17 +1604,14 @@ purple_blist_schedule_save(); if (bnode->parent->parent != (PurpleBlistNode*)g) { - hb = g_new(struct _purple_hbuddy, 1); - hb->name = g_strdup(purple_normalize(buddy->account, buddy->name)); - hb->account = buddy->account; - hb->group = bnode->parent->parent; - g_hash_table_remove(purplebuddylist->buddies, hb); + struct _purple_hbuddy hb; + hb.name = (gchar *)purple_normalize(buddy->account, buddy->name); + hb.account = buddy->account; + hb.group = bnode->parent->parent; + g_hash_table_remove(purplebuddylist->buddies, &hb); account_buddies = g_hash_table_lookup(buddies_cache, buddy->account); - g_hash_table_remove(account_buddies, hb); - - g_free(hb->name); - g_free(hb); + g_hash_table_remove(account_buddies, &hb); } if (!bnode->parent->child) { @@ -1811,7 +1829,7 @@ GHashTable *account_buddies; struct _purple_hbuddy *hb, *hb2; - + hb = g_new(struct _purple_hbuddy, 1); hb->name = g_strdup(purple_normalize(b->account, b->name)); hb->account = b->account; @@ -1944,6 +1962,7 @@ { PurpleBlistUiOps *ops; PurpleBlistNode *gnode = (PurpleBlistNode*)group; + gchar* key; g_return_if_fail(group != NULL); g_return_if_fail(PURPLE_BLIST_NODE_IS_GROUP((PurpleBlistNode *)group)); @@ -1952,6 +1971,9 @@ if (!purplebuddylist->root) { purplebuddylist->root = gnode; + + key = g_utf8_collate_key(group->name, -1); + g_hash_table_insert(groups_cache, key, group); return; } @@ -1971,6 +1993,9 @@ gnode->prev->next = gnode->next; if (gnode->next) gnode->next->prev = gnode->prev; + } else { + key = g_utf8_collate_key(group->name, -1); + g_hash_table_insert(groups_cache, key, group); } if (node && PURPLE_BLIST_NODE_IS_GROUP(node)) { @@ -2097,7 +2122,7 @@ purple_blist_schedule_save(); /* Remove this buddy from the buddies hash table */ - hb.name = g_strdup(purple_normalize(buddy->account, buddy->name)); + hb.name = (gchar *)purple_normalize(buddy->account, buddy->name); hb.account = buddy->account; hb.group = gnode; g_hash_table_remove(purplebuddylist->buddies, &hb); @@ -2105,8 +2130,6 @@ account_buddies = g_hash_table_lookup(buddies_cache, buddy->account); g_hash_table_remove(account_buddies, &hb); - g_free(hb.name); - /* Update the UI */ if (ops && ops->remove) ops->remove(purplebuddylist, node); @@ -2172,6 +2195,7 @@ PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); PurpleBlistNode *node; GList *l; + gchar* key; g_return_if_fail(group != NULL); @@ -2189,6 +2213,10 @@ if (node->next) node->next->prev = node->prev; + key = g_utf8_collate_key(group->name, -1); + g_hash_table_remove(groups_cache, key); + g_free(key); + purple_blist_schedule_save(); /* Update the UI */ @@ -2352,16 +2380,14 @@ g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL); hb.account = account; - hb.name = g_strdup(purple_normalize(account, name)); + hb.name = (gchar *)purple_normalize(account, name); for (group = purplebuddylist->root; group; group = group->next) { hb.group = group; if ((buddy = g_hash_table_lookup(purplebuddylist->buddies, &hb))) { - g_free(hb.name); return buddy; } } - g_free(hb.name); return NULL; } @@ -2370,20 +2396,16 @@ PurpleGroup *group) { struct _purple_hbuddy hb; - PurpleBuddy *ret; g_return_val_if_fail(purplebuddylist != NULL, NULL); g_return_val_if_fail(account != NULL, NULL); g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL); - hb.name = g_strdup(purple_normalize(account, name)); + hb.name = (gchar *)purple_normalize(account, name); hb.account = account; hb.group = (PurpleBlistNode*)group; - ret = g_hash_table_lookup(purplebuddylist->buddies, &hb); - g_free(hb.name); - - return ret; + return g_hash_table_lookup(purplebuddylist->buddies, &hb); } static void find_acct_buddies(gpointer key, gpointer value, gpointer data) @@ -2406,7 +2428,7 @@ if ((name != NULL) && (*name != '\0')) { struct _purple_hbuddy hb; - hb.name = g_strdup(purple_normalize(account, name)); + hb.name = (gchar *)purple_normalize(account, name); hb.account = account; for (node = purplebuddylist->root; node != NULL; node = node->next) { @@ -2414,7 +2436,6 @@ if ((buddy = g_hash_table_lookup(purplebuddylist->buddies, &hb)) != NULL) ret = g_slist_prepend(ret, buddy); } - g_free(hb.name); } else { GSList *list = NULL; GHashTable *buddies = g_hash_table_lookup(buddies_cache, account); @@ -2427,17 +2448,17 @@ PurpleGroup *purple_find_group(const char *name) { - PurpleBlistNode *node; + gchar* key; + PurpleGroup *group; g_return_val_if_fail(purplebuddylist != NULL, NULL); g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL); - for (node = purplebuddylist->root; node != NULL; node = node->next) { - if (!purple_utf8_strcasecmp(((PurpleGroup *)node)->name, name)) - return (PurpleGroup *)node; - } - - return NULL; + key = g_utf8_collate_key(name, -1); + group = g_hash_table_lookup(groups_cache, key); + g_free(key); + + return group; } PurpleChat * @@ -3105,6 +3126,8 @@ purple_blist_sync(); } + purple_blist_destroy(); + node = purple_blist_get_root(); while (node) { next_node = node->next; @@ -3112,9 +3135,17 @@ node = next_node; } purplebuddylist->root = NULL; - + g_hash_table_destroy(purplebuddylist->buddies); g_hash_table_destroy(buddies_cache); + g_hash_table_destroy(groups_cache); + + buddies_cache = NULL; + groups_cache = NULL; + + PURPLE_DBUS_UNREGISTER_POINTER(purplebuddylist); + g_free(purplebuddylist); + purplebuddylist = NULL; purple_signals_disconnect_by_handle(purple_blist_get_handle()); purple_signals_unregister_by_instance(purple_blist_get_handle()); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/blist.h --- a/libpurple/blist.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/blist.h Sat Jul 25 04:54:36 2009 +0000 @@ -235,6 +235,7 @@ * Creates a new buddy list * * @return The new buddy list. + * @deprecated In 3.0.0, this will be handled by purple_blist_init() */ PurpleBuddyList *purple_blist_new(void); @@ -242,6 +243,7 @@ * Sets the main buddy list. * * @param blist The buddy list you want to use. + * @deprecated In 3.0.0, this will be handled by purple_blist_init() */ void purple_set_blist(PurpleBuddyList *blist); @@ -383,6 +385,10 @@ /** * Destroys the buddy list window. + * + * @deprecated The UI is responsible for cleaning up the + * PurpleBuddyList->ui_data. purple_blist_uninit() will free the + * PurpleBuddyList* itself. */ void purple_blist_destroy(void); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/buddyicon.c --- a/libpurple/buddyicon.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/buddyicon.c Sat Jul 25 04:54:36 2009 +0000 @@ -1102,7 +1102,7 @@ PurpleAccount *account = purple_buddy_get_account((PurpleBuddy *)node); const char *prpl_id = purple_account_get_protocol_id(account); - if (purple_strequal(prpl_id, "prpl-yahoo")) + if (g_str_equal(prpl_id, "prpl-yahoo") || g_str_equal(prpl_id, "prpl-yahoojp")) { int checksum = purple_blist_node_get_int(node, "icon_checksum"); if (checksum != 0) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/certificate.c --- a/libpurple/certificate.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/certificate.c Sat Jul 25 04:54:36 2009 +0000 @@ -923,9 +923,13 @@ poolpath = purple_certificate_pool_mkpath(&x509_tls_peers, NULL); ret = purple_build_dir(poolpath, 0700); /* Make it this user only */ + if (ret != 0) + purple_debug_info("certificate/tls_peers", + "Could not create %s. Certificates will not be cached.\n", + poolpath); + g_free(poolpath); - g_return_val_if_fail(ret == 0, FALSE); return TRUE; } @@ -1214,20 +1218,6 @@ } static void -x509_tls_cached_peer_cert_changed(PurpleCertificateVerificationRequest *vrq) -{ - /* TODO: Prompt the user, etc. */ - - purple_debug_info("certificate/x509/tls_cached", - "Certificate for %s does not match cached. " - "Auto-rejecting!\n", - vrq->subject_name); - - purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_INVALID); - return; -} - -static void x509_tls_cached_unknown_peer(PurpleCertificateVerificationRequest *vrq); static void @@ -1250,12 +1240,11 @@ cached_crt = purple_certificate_pool_retrieve( tls_peers, vrq->subject_name); if ( !cached_crt ) { - purple_debug_error("certificate/x509/tls_cached", + purple_debug_warning("certificate/x509/tls_cached", "Lookup failed on cached certificate!\n" - "It was here just a second ago. Forwarding " - "to cert_changed.\n"); - /* vrq now becomes the problem of cert_changed */ - x509_tls_cached_peer_cert_changed(vrq); + "Falling back to full verification.\n"); + /* vrq now becomes the problem of unknown_peer */ + x509_tls_cached_unknown_peer(vrq); return; } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/dnsquery.c --- a/libpurple/dnsquery.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/dnsquery.c Sat Jul 25 04:54:36 2009 +0000 @@ -28,6 +28,7 @@ #include "internal.h" #include "debug.h" #include "dnsquery.h" +#include "network.h" #include "notify.h" #include "prefs.h" #include "util.h" @@ -77,6 +78,7 @@ }; static GSList *free_dns_children = NULL; +/* TODO: Make me a GQueue when we require >= glib 2.4 */ static GSList *queued_requests = NULL; static int number_of_dns_children = 0; @@ -117,8 +119,11 @@ * Add the resolver to the list of available resolvers, and set it * to NULL so that it doesn't get destroyed along with the query_data */ - free_dns_children = g_slist_prepend(free_dns_children, query_data->resolver); - query_data->resolver = NULL; + if (query_data->resolver) + { + free_dns_children = g_slist_prepend(free_dns_children, query_data->resolver); + query_data->resolver = NULL; + } #endif /* PURPLE_DNSQUERY_USE_FORK */ purple_dnsquery_destroy(query_data); @@ -144,6 +149,41 @@ return FALSE; } +static gboolean +resolve_ip(PurpleDnsQueryData *query_data) +{ + struct sockaddr_in sin; + if (inet_aton(query_data->hostname, &sin.sin_addr)) + { + /* + * The given "hostname" is actually an IP address, so we + * don't need to do anything. + */ + GSList *hosts = NULL; + sin.sin_family = AF_INET; + sin.sin_port = htons(query_data->port); + hosts = g_slist_append(hosts, GINT_TO_POINTER(sizeof(sin))); + hosts = g_slist_append(hosts, g_memdup(&sin, sizeof(sin))); + purple_dnsquery_resolved(query_data, hosts); + + return TRUE; + } + + return FALSE; +} + +static gboolean +dns_str_is_ascii(const char *name) +{ + guchar *c; + for (c = (guchar *)name; c && *c; ++c) { + if (*c > 0x7f) + return FALSE; + } + + return TRUE; +} + #if defined(PURPLE_DNSQUERY_USE_FORK) /* @@ -203,6 +243,7 @@ struct sockaddr_in sin; const size_t addrlen = sizeof(sin); #endif + char *hostname; #ifdef HAVE_SIGNAL_H purple_restore_default_signal_handlers(); @@ -247,6 +288,22 @@ _exit(1); } +#ifdef USE_IDN + if (!dns_str_is_ascii(dns_params.hostname)) { + rc = purple_network_convert_idn_to_ascii(dns_params.hostname, &hostname); + if (rc != 0) { + write_to_parent(child_out, &rc, sizeof(rc)); + close(child_out); + if (show_debug) + fprintf(stderr, "dns[%d] Error: IDN conversion returned " + "%d\n", getpid(), rc); + dns_params.hostname[0] = '\0'; + continue; + } + } else /* intentional to execute the g_strdup */ +#endif + hostname = g_strdup(dns_params.hostname); + /* We have the hostname and port, now resolve the IP */ #ifdef HAVE_GETADDRINFO @@ -263,7 +320,7 @@ #ifdef AI_ADDRCONFIG hints.ai_flags |= AI_ADDRCONFIG; #endif /* AI_ADDRCONFIG */ - rc = getaddrinfo(dns_params.hostname, servname, &hints, &res); + rc = getaddrinfo(hostname, servname, &hints, &res); write_to_parent(child_out, &rc, sizeof(rc)); if (rc != 0) { close(child_out); @@ -282,9 +339,9 @@ } freeaddrinfo(tmp); #else - if (!inet_aton(dns_params.hostname, &sin.sin_addr)) { + if (!inet_aton(hostname, &sin.sin_addr)) { struct hostent *hp; - if (!(hp = gethostbyname(dns_params.hostname))) { + if (!(hp = gethostbyname(hostname))) { write_to_parent(child_out, &h_errno, sizeof(int)); close(child_out); if (show_debug) @@ -305,6 +362,9 @@ #endif write_to_parent(child_out, &zero, sizeof(zero)); dns_params.hostname[0] = '\0'; + + g_free(hostname); + hostname = NULL; } close(child_out); @@ -615,12 +675,20 @@ query_data = data; query_data->timeout = 0; + if (resolve_ip(query_data)) + { + /* resolve_ip calls purple_dnsquery_resolved */ + return FALSE; + } + if (purple_dnsquery_ui_resolve(query_data)) { /* The UI is handling the resolve; we're done */ return FALSE; } + queued_requests = g_slist_append(queued_requests, query_data); + handle_next_queued_request(); return FALSE; @@ -650,8 +718,6 @@ g_return_val_if_reached(NULL); } - queued_requests = g_slist_append(queued_requests, query_data); - purple_debug_info("dns", "DNS query for '%s' queued\n", query_data->hostname); query_data->timeout = purple_timeout_add(0, resolve_host, query_data); @@ -700,9 +766,27 @@ struct sockaddr_in sin; struct hostent *hp; #endif + char *hostname; query_data = data; +#ifdef USE_IDN + if (!dns_str_is_ascii(query_data->hostname)) { + rc = purple_network_convert_idn_to_ascii(query_data->hostname, &hostname); + if (rc != 0) { + /* FIXME: Dirty 2.6.0 string freeze hack */ + char tmp[8]; + g_snprintf(tmp, sizeof(tmp), "%d", rc); + query_data->error_message = g_strdup_printf(_("Error resolving %s:\n%s"), + query_data->hostname, tmp); + /* back to main thread */ + purple_timeout_add(0, dns_main_thread_cb, query_data); + return 0; + } + } else /* intentional fallthru */ +#endif + hostname = g_strdup(query_data->hostname); + #ifdef HAVE_GETADDRINFO g_snprintf(servname, sizeof(servname), "%d", query_data->port); memset(&hints,0,sizeof(hints)); @@ -718,7 +802,7 @@ #ifdef AI_ADDRCONFIG hints.ai_flags |= AI_ADDRCONFIG; #endif /* AI_ADDRCONFIG */ - if ((rc = getaddrinfo(query_data->hostname, servname, &hints, &res)) == 0) { + if ((rc = getaddrinfo(hostname, servname, &hints, &res)) == 0) { tmp = res; while(res) { query_data->hosts = g_slist_append(query_data->hosts, @@ -732,7 +816,7 @@ query_data->error_message = g_strdup_printf(_("Error resolving %s:\n%s"), query_data->hostname, purple_gai_strerror(rc)); } #else - if ((hp = gethostbyname(query_data->hostname))) { + if ((hp = gethostbyname(hostname))) { memset(&sin, 0, sizeof(struct sockaddr_in)); memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length); sin.sin_family = hp->h_addrtype; @@ -746,6 +830,7 @@ query_data->error_message = g_strdup_printf(_("Error resolving %s: %d"), query_data->hostname, h_errno); } #endif + g_free(hostname); /* back to main thread */ purple_timeout_add(0, dns_main_thread_cb, query_data); @@ -757,7 +842,6 @@ resolve_host(gpointer data) { PurpleDnsQueryData *query_data; - struct sockaddr_in sin; GError *err = NULL; query_data = data; @@ -769,20 +853,7 @@ return FALSE; } - if (inet_aton(query_data->hostname, &sin.sin_addr)) - { - /* - * The given "hostname" is actually an IP address, so we - * don't need to do anything. - */ - GSList *hosts = NULL; - sin.sin_family = AF_INET; - sin.sin_port = htons(query_data->port); - hosts = g_slist_append(hosts, GINT_TO_POINTER(sizeof(sin))); - hosts = g_slist_append(hosts, g_memdup(&sin, sizeof(sin))); - purple_dnsquery_resolved(query_data, hosts); - } - else + if (!resolve_ip(query_data)) { /* * Spin off a separate thread to perform the DNS lookup so @@ -847,6 +918,7 @@ PurpleDnsQueryData *query_data; struct sockaddr_in sin; GSList *hosts = NULL; + char *hostname; query_data = data; query_data->timeout = 0; @@ -859,7 +931,22 @@ if (!inet_aton(query_data->hostname, &sin.sin_addr)) { struct hostent *hp; - if(!(hp = gethostbyname(query_data->hostname))) { +#ifdef USE_IDN + if (!dns_str_is_ascii(query_data->hostname)) { + int ret = purple_network_convert_idn_to_ascii(query_data->hostname, + &hostname); + if (ret != 0) { + char message[1024]; + g_snprintf(message, sizeof(message), _("Error resolving %s: %d"), + query_data->hostname, ret); + purple_dnsquery_failed(query_data, message); + return FALSE; + } + } else /* fallthrough is intentional to the g_strdup */ +#endif + hostname = g_strdup(query_data->hostname); + + if(!(hp = gethostbyname(hostname))) { char message[1024]; g_snprintf(message, sizeof(message), _("Error resolving %s: %d"), query_data->hostname, h_errno); @@ -873,6 +960,7 @@ sin.sin_family = AF_INET; sin.sin_port = htons(query_data->port); + g_free(hostname); hosts = g_slist_append(hosts, GINT_TO_POINTER(sizeof(sin))); hosts = g_slist_append(hosts, g_memdup(&sin, sizeof(sin))); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/dnssrv.c --- a/libpurple/dnssrv.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/dnssrv.c Sat Jul 25 04:54:36 2009 +0000 @@ -47,9 +47,10 @@ #endif #endif +#include "debug.h" #include "dnssrv.h" #include "eventloop.h" -#include "debug.h" +#include "network.h" #ifndef _WIN32 typedef union { @@ -247,6 +248,18 @@ return list; } +static gboolean +dns_str_is_ascii(const char *name) +{ + guchar *c; + for (c = (guchar *)name; c && *c; ++c) { + if (*c > 0x7f) + return FALSE; + } + + return TRUE; +} + #ifndef _WIN32 G_GNUC_NORETURN static void @@ -588,6 +601,7 @@ purple_srv_resolve(const char *protocol, const char *transport, const char *domain, PurpleSrvCallback cb, gpointer extradata) { char *query; + char *hostname; PurpleSrvQueryData *query_data; #ifndef _WIN32 PurpleSrvInternalQuery internal_query; @@ -604,8 +618,22 @@ g_return_val_if_reached(NULL); } - query = g_strdup_printf("_%s._%s.%s", protocol, transport, domain); - purple_debug_info("dnssrv","querying SRV record for %s\n", query); +#ifdef USE_IDN + if (!dns_str_is_ascii(domain)) { + int ret = purple_network_convert_idn_to_ascii(domain, &hostname); + if (ret != 0) { + purple_debug_error("dnssrv", "IDNA ToASCII failed\n"); + cb(NULL, 0, extradata); + return NULL; + } + } else /* Fallthru is intentional */ +#endif + hostname = g_strdup(domain); + + query = g_strdup_printf("_%s._%s.%s", protocol, transport, hostname); + purple_debug_info("dnssrv","querying SRV record for %s: %s\n", domain, + query); + g_free(hostname); #ifndef _WIN32 if(pipe(in) || pipe(out)) { @@ -692,6 +720,7 @@ PurpleSrvQueryData *purple_txt_resolve(const char *owner, const char *domain, PurpleTxtCallback cb, gpointer extradata) { char *query; + char *hostname; PurpleSrvQueryData *query_data; #ifndef _WIN32 PurpleSrvInternalQuery internal_query; @@ -702,8 +731,22 @@ static gboolean initialized = FALSE; #endif - query = g_strdup_printf("%s.%s", owner, domain); - purple_debug_info("dnssrv","querying TXT record for %s\n", query); +#ifdef USE_IDN + if (!dns_str_is_ascii(domain)) { + int ret = purple_network_convert_idn_to_ascii(domain, &hostname); + if (ret != 0) { + purple_debug_error("dnssrv", "IDNA ToASCII failed\n"); + cb(NULL, extradata); + return NULL; + } + } else /* fallthru is intentional */ +#endif + hostname = g_strdup(domain); + + query = g_strdup_printf("%s.%s", owner, hostname); + purple_debug_info("dnssrv","querying TXT record for %s: %s\n", domain, + query); + g_free(hostname); #ifndef _WIN32 if(pipe(in) || pipe(out)) { diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/ft.c --- a/libpurple/ft.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/ft.c Sat Jul 25 04:54:36 2009 +0000 @@ -696,14 +696,34 @@ if (completed == TRUE) { char *msg = NULL; + PurpleConversation *conv; + purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_DONE); if (purple_xfer_get_filename(xfer) != NULL) - msg = g_strdup_printf(_("Transfer of file %s complete"), - purple_xfer_get_filename(xfer)); + { + char *filename = g_markup_escape_text(purple_xfer_get_filename(xfer), -1); + if (purple_xfer_get_local_filename(xfer) + && purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) + { + char *local = g_markup_escape_text(purple_xfer_get_local_filename(xfer), -1); + msg = g_strdup_printf(_("Transfer of file %s complete"), + local, filename); + g_free(local); + } + else + msg = g_strdup_printf(_("Transfer of file %s complete"), + filename); + g_free(filename); + } else msg = g_strdup(_("File transfer complete")); - purple_xfer_conversation_write(xfer, msg, FALSE); + + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, xfer->who, + purple_xfer_get_account(xfer)); + + if (conv != NULL) + purple_conversation_write(conv, NULL, msg, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(msg); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/internal.h --- a/libpurple/internal.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/internal.h Sat Jul 25 04:54:36 2009 +0000 @@ -230,6 +230,16 @@ # endif #endif +#ifdef HAVE_CONFIG_H +#if SIZEOF_TIME_T == 4 +# define PURPLE_TIME_T_MODIFIER "lu" +#elif SIZEOF_TIME_T == 8 +# define PURPLE_TIME_T_MODIFIER "zu" +#else +#error Unknown size of time_t +#endif +#endif + #include #ifndef G_DEFINE_TYPE diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/network.c --- a/libpurple/network.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/network.c Sat Jul 25 04:54:36 2009 +0000 @@ -50,6 +50,10 @@ #include "upnp.h" #include "dnsquery.h" +#ifdef USE_IDN +#include +#endif + /* * Calling sizeof(struct ifreq) isn't always correct on * Mac OS X (and maybe others). @@ -966,7 +970,33 @@ } } } - + +int purple_network_convert_idn_to_ascii(const gchar *in, gchar **out) +{ +#ifdef USE_IDN + char *tmp; + int ret; + + g_return_val_if_fail(out != NULL, -1); + + ret = idna_to_ascii_8z(in, &tmp, IDNA_USE_STD3_ASCII_RULES); + if (ret != IDNA_SUCCESS) { + *out = NULL; + return ret; + } + + *out = g_strdup(tmp); + /* This *MUST* be freed with free, not g_free */ + free(tmp); + return 0; +#else + g_return_val_if_fail(out != NULL, -1); + + *out = g_strdup(in); + return 0; +#endif +} + void purple_network_init(void) { diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/network.h --- a/libpurple/network.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/network.h Sat Jul 25 04:54:36 2009 +0000 @@ -268,6 +268,25 @@ void purple_network_remove_port_mapping(gint fd); /** + * Convert a UTF-8 domain name to ASCII in accordance with the IDNA + * specification. If libpurple is compiled without IDN support, this function + * copies the input into the output buffer. + * + * Because this function is used by DNS resolver child/threads, it uses no + * other libpurple API and is threadsafe. + * + * In general, a buffer of about 512 bytes is the appropriate size to use. + * + * @param in The hostname to be converted. + * @param out The output buffer where an allocated string will be returned. + * The caller is responsible for freeing this. + * @returns 0 on success, -1 if the out is NULL, or an error code + * that currently corresponds to the Idna_rc enum in libidn. + * @since 2.6.0 + */ +int purple_network_convert_idn_to_ascii(const gchar *in, gchar **out); + +/** * Initializes the network subsystem. */ void purple_network_init(void); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/plugin.c --- a/libpurple/plugin.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/plugin.c Sat Jul 25 04:54:36 2009 +0000 @@ -870,8 +870,16 @@ if (plugin->info != NULL && plugin->info->destroy != NULL) plugin->info->destroy(plugin); - if (plugin->handle != NULL) - g_module_close(plugin->handle); + /* + * I find it extremely useful to do this when using valgrind, as + * it keeps all the plugins open, meaning that valgrind is able to + * resolve symbol names in leak traces from plugins. + */ + if (!g_getenv("PURPLE_LEAKCHECK_HELP")) + { + if (plugin->handle != NULL) + g_module_close(plugin->handle); + } } else { diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/plugins/Makefile.am --- a/libpurple/plugins/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/plugins/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -157,5 +157,5 @@ $(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS) $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module -avoid-version $(PLUGIN_LIBS) @rm -f tmp$@.lo tmp$@.o libtmp$@.la - @cp .libs/libtmp$@.so* $@ - @rm -f .libs/libtmp$@.* + @cp .libs/libtmp$@*.so $@ + @rm -rf .libs/libtmp$@.* diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/plugins/perl/common/Makefile.mingw --- a/libpurple/plugins/perl/common/Makefile.mingw Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/plugins/perl/common/Makefile.mingw Sat Jul 25 04:54:36 2009 +0000 @@ -97,9 +97,10 @@ all: $(TARGET).dll $(AUTOSPLIT) install: all - rm -rf $(PURPLE_INSTALL_PERLMOD_DIR) - cp -R lib $(PURPLE_INSTALL_PERLMOD_DIR) - cp $(TARGET).dll $(PURPLE_INSTALL_PERLMOD_DIR) + rm -rf $(PURPLE_INSTALL_PERL_DIR) + mkdir -p $(PURPLE_INSTALL_PERL_DIR) + cp -R lib/* $(PURPLE_INSTALL_PERL_DIR) + cp $(TARGET).dll $(PURPLE_INSTALL_PERL_DIR)/auto/Purple $(C_FILES): $(PURPLE_CONFIG_H) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/plugins/perl/perl.c --- a/libpurple/plugins/perl/perl.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/plugins/perl/perl.c Sat Jul 25 04:54:36 2009 +0000 @@ -146,8 +146,8 @@ const gchar *search_path = search_paths->data; search_paths = g_list_next(search_paths); - uselib = g_strdup_printf("unshift @INC, \"%s%cperl\";", - search_path, G_DIR_SEPARATOR); + uselib = g_strdup_printf("unshift @INC, q(%s%sperl);", + search_path, G_DIR_SEPARATOR_S); eval_pv(uselib, TRUE); g_free(uselib); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/plugins/ssl/ssl-nss.c --- a/libpurple/plugins/ssl/ssl-nss.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/plugins/ssl/ssl-nss.c Sat Jul 25 04:54:36 2009 +0000 @@ -152,6 +152,12 @@ SSL_CipherPrefSetDefault(SSL_DHE_RSA_WITH_DES_CBC_SHA, 1); SSL_CipherPrefSetDefault(SSL_DHE_DSS_WITH_DES_CBC_SHA, 1); +#ifdef NEED_NSS_WEAK_ALGORITHMS + /* Enable some weaker algorithms for XMPP and MSN */ + NSS_SetAlgorithmPolicy(SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION, NSS_USE_ALG_IN_CERT_SIGNATURE, 0); + NSS_SetAlgorithmPolicy(SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION, NSS_USE_ALG_IN_CERT_SIGNATURE, 0); +#endif + _identity = PR_GetUniqueIdentity("Purple"); _nss_methods = PR_GetDefaultIOMethods(); } @@ -540,12 +546,12 @@ CERTCertificate *crt_dat; PurpleCertificate *crt; - g_return_val_if_fail(filename, NULL); + g_return_val_if_fail(filename != NULL, NULL); purple_debug_info("nss/x509", "Loading certificate from %s\n", filename); - + /* Load the raw data up */ if (!g_file_get_contents(filename, &rawcert, &len, @@ -554,12 +560,20 @@ return NULL; } + if (len == 0) { + purple_debug_error("nss/x509", + "Certificate file has no contents!\n"); + if (rawcert) + g_free(rawcert); + return NULL; + } + /* Decode the certificate */ crt_dat = CERT_DecodeCertFromPackage(rawcert, len); g_free(rawcert); - g_return_val_if_fail(crt_dat, NULL); - + g_return_val_if_fail(crt_dat != NULL, NULL); + crt = g_new0(PurpleCertificate, 1); crt->scheme = &x509_nss; crt->data = crt_dat; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/prefs.h --- a/libpurple/prefs.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/prefs.h Sat Jul 25 04:54:36 2009 +0000 @@ -315,6 +315,15 @@ /** * Add a callback to a pref (and its children) + * + * @param handle The handle of the receiver. + * @param name The name of the preference + * @param cb The callback function + * @param data The data to pass to the callback function. + * + * @return An id to disconnect the callback + * + * @see purple_prefs_disconnect_callback */ guint purple_prefs_connect_callback(void *handle, const char *name, PurplePrefCallback cb, gpointer data); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/privacy.h --- a/libpurple/privacy.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/privacy.h Sat Jul 25 04:54:36 2009 +0000 @@ -26,8 +26,6 @@ #ifndef _PURPLE_PRIVACY_H_ #define _PURPLE_PRIVACY_H_ -#include "account.h" - /** * Privacy data types. */ @@ -40,6 +38,8 @@ PURPLE_PRIVACY_ALLOW_BUDDYLIST } PurplePrivacyType; +#include "account.h" + #ifdef __cplusplus extern "C" { #endif diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/Makefile.am --- a/libpurple/protocols/jabber/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -88,7 +88,7 @@ st = pkg_LTLIBRARIES = libjabber.la libxmpp.la libjabber_la_SOURCES = $(JABBERSOURCES) -libjabber_la_LIBADD = $(GLIB_LIBS) $(SASL_LIBS) $(LIBXML_LIBS) +libjabber_la_LIBADD = $(GLIB_LIBS) $(SASL_LIBS) $(LIBXML_LIBS) $(IDN_LIBS) libxmpp_la_SOURCES = libxmpp.c libxmpp_la_LIBADD = libjabber.la @@ -100,4 +100,5 @@ -I$(top_builddir)/libpurple \ $(DEBUG_CFLAGS) \ $(GLIB_CFLAGS) \ + $(IDN_CFLAGS) \ $(LIBXML_CFLAGS) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/bosh.c --- a/libpurple/protocols/jabber/bosh.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/bosh.c Sat Jul 25 04:54:36 2009 +0000 @@ -51,8 +51,13 @@ PurpleHTTPConnection *connections[MAX_HTTP_CONNECTIONS]; unsigned short failed_connections; - gboolean ready; + enum { + BOSH_CONN_OFFLINE, + BOSH_CONN_BOOTING, + BOSH_CONN_ONLINE + } state; gboolean ssl; + gboolean needs_restart; /* decoded URL */ char *host; @@ -84,7 +89,11 @@ PurpleCircBuffer *write_buffer; - gboolean ready; + enum { + HTTP_CONN_OFFLINE, + HTTP_CONN_CONNECTING, + HTTP_CONN_CONNECTED + } state; int requests; /* number of outstanding HTTP requests */ GString *buf; @@ -129,7 +138,7 @@ PurpleHTTPConnection *conn = g_new0(PurpleHTTPConnection, 1); conn->bosh = bosh; conn->fd = -1; - conn->ready = FALSE; + conn->state = HTTP_CONN_OFFLINE; conn->write_buffer = purple_circ_buffer_new(0 /* default grow size */); @@ -176,6 +185,7 @@ conn->path = g_strdup_printf("/%s", path); g_free(path); conn->pipelining = TRUE; + conn->needs_restart = FALSE; if ((user && user[0] != '\0') || (passwd && passwd[0] != '\0')) { purple_debug_info("jabber", "Ignoring unexpected username and password " @@ -198,7 +208,7 @@ conn->pending = purple_circ_buffer_new(0 /* default grow size */); - conn->ready = FALSE; + conn->state = BOSH_CONN_OFFLINE; if (purple_strcasestr(url, "https://") != NULL) conn->ssl = TRUE; else @@ -243,18 +253,28 @@ /* Easy solution: Does everyone involved support pipelining? Hooray! Just use * one TCP connection! */ if (conn->pipelining) - return conn->connections[0]->ready ? conn->connections[0] : NULL; + return conn->connections[0]->state == HTTP_CONN_CONNECTED ? + conn->connections[0] : NULL; /* First loop, look for a connection that's ready */ for (i = 0; i < MAX_HTTP_CONNECTIONS; ++i) { - if (conn->connections[i] && conn->connections[i]->ready && - conn->connections[i]->requests == 0) + if (conn->connections[i] && + conn->connections[i]->state == HTTP_CONN_CONNECTED && + conn->connections[i]->requests == 0) return conn->connections[i]; } - /* Second loop, look for one that's NULL and create a new connection */ + /* Second loop, is something currently connecting? If so, just queue up. */ + for (i = 0; i < MAX_HTTP_CONNECTIONS; ++i) { + if (conn->connections[i] && + conn->connections[i]->state == HTTP_CONN_CONNECTING) + return NULL; + } + + /* Third loop, look for one that's NULL and create a new connection */ for (i = 0; i < MAX_HTTP_CONNECTIONS; ++i) { if (!conn->connections[i]) { + purple_debug_info("jabber", "bosh: Creating and connecting new httpconn\n"); conn->connections[i] = jabber_bosh_http_connection_init(conn); http_connection_connect(conn->connections[i]); @@ -268,7 +288,7 @@ static void jabber_bosh_connection_send(PurpleBOSHConnection *conn, - PurpleBOSHPacketType type, const char *data) + const PurpleBOSHPacketType type, const char *data) { PurpleHTTPConnection *chosen; GString *packet = NULL; @@ -277,12 +297,12 @@ if (type != PACKET_NORMAL && !chosen) { /* - * For non-ordinary traffic, we don't want to 'buffer' it, so use the + * For non-ordinary traffic, we can't 'buffer' it, so use the * first connection. */ chosen = conn->connections[0]; - if (!chosen->ready) { + if (chosen->state != HTTP_CONN_CONNECTED) { purple_debug_info("jabber", "Unable to find a ready BOSH " "connection. Ignoring send of type 0x%02x.\n", type); return; @@ -300,6 +320,7 @@ int len = data ? strlen(data) : 0; purple_circ_buffer_append(conn->pending, data, len); } + return; } @@ -316,9 +337,11 @@ conn->sid, conn->js->user->domain); - if (type == PACKET_STREAM_RESTART) + if (type == PACKET_STREAM_RESTART) { packet = g_string_append(packet, " xmpp:restart='true'/>"); - else { + /* TODO: Do we need to wait for a response? */ + conn->needs_restart = FALSE; + } else { gsize read_amt; if (type == PACKET_TERMINATE) packet = g_string_append(packet, " type='terminate'"); @@ -343,7 +366,9 @@ jabber_bosh_connection_send(conn, PACKET_TERMINATE, NULL); } -static void jabber_bosh_connection_stream_restart(PurpleBOSHConnection *conn) { +static void jabber_bosh_connection_stream_restart(PurpleBOSHConnection *conn) +{ + conn->needs_restart = TRUE; jabber_bosh_connection_send(conn, PACKET_STREAM_RESTART, NULL); } @@ -353,7 +378,7 @@ type = xmlnode_get_attrib(node, "type"); if (type != NULL && !strcmp(type, "terminate")) { - conn->ready = FALSE; + conn->state = BOSH_CONN_OFFLINE; purple_connection_error_reason(conn->js->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, _("The BOSH connection manager terminated your session.")); @@ -384,11 +409,6 @@ /* jabber_process_packet might free child */ xmlnode *next = child->next; if (child->type == XMLNODE_TYPE_TAG) { - if (!strcmp(child->name, "iq")) { - if (xmlnode_get_child(child, "session")) - conn->ready = TRUE; - } - jabber_process_packet(js, &child); } @@ -476,9 +496,13 @@ conn->max_inactivity = 0; } else { /* TODO: Integrate this with jabber.c keepalive checks... */ - conn->inactivity_timer = purple_timeout_add_seconds( - conn->max_inactivity - 2 /* rounding */, bosh_inactivity_cb, - conn); + if (conn->inactivity_timer == 0) { + purple_debug_misc("jabber", "Starting BOSH inactivity timer for %d secs (compensating for rounding)\n", + conn->max_inactivity - 5); + conn->inactivity_timer = purple_timeout_add_seconds( + conn->max_inactivity - 5 /* rounding */, + bosh_inactivity_cb, conn); + } } } @@ -487,6 +511,7 @@ /* FIXME: Depending on receiving features might break with some hosts */ packet = xmlnode_get_child(node, "features"); + conn->state = BOSH_CONN_ONLINE; conn->js->use_bosh = TRUE; conn->receive_cb = auth_response_cb; jabber_stream_features_parse(conn->js, packet); @@ -511,6 +536,8 @@ conn->js->user->domain, ++conn->rid); + purple_debug_misc("jabber", "SendBOSH Boot %s(%" G_GSIZE_FORMAT "): %s\n", + conn->ssl ? "(ssl)" : "", buf->len, buf->str); conn->receive_cb = boot_response_cb; http_connection_send_request(conn->connections[0], buf); g_string_free(buf, TRUE); @@ -550,7 +577,7 @@ connection_common_established_cb(PurpleHTTPConnection *conn) { /* Indicate we're ready and reset some variables */ - conn->ready = TRUE; + conn->state = HTTP_CONN_CONNECTED; conn->requests = 0; if (conn->buf) { g_string_free(conn->buf, TRUE); @@ -559,9 +586,11 @@ conn->headers_done = FALSE; conn->handled_len = conn->body_len = 0; - if (conn->bosh->ready) { + if (conn->bosh->needs_restart) + jabber_bosh_connection_stream_restart(conn->bosh); + else if (conn->bosh->state == BOSH_CONN_ONLINE) { purple_debug_info("jabber", "BOSH session already exists. Trying to reuse it.\n"); - if (conn->bosh->pending->bufused > 0) { + if (conn->bosh->requests == 0 || conn->bosh->pending->bufused > 0) { /* Send the pending data */ jabber_bosh_connection_send(conn->bosh, PACKET_NORMAL, NULL); } @@ -585,7 +614,7 @@ * Well, then. Fine! I never liked you anyway, server! I was cheating on you * with AIM! */ - conn->ready = FALSE; + conn->state = HTTP_CONN_OFFLINE; if (conn->psc) { purple_ssl_close(conn->psc); conn->psc = NULL; @@ -620,6 +649,10 @@ void jabber_bosh_connection_connect(PurpleBOSHConnection *bosh) { PurpleHTTPConnection *conn = bosh->connections[0]; + + g_return_if_fail(bosh->state == BOSH_CONN_OFFLINE); + bosh->state = BOSH_CONN_BOOTING; + http_connection_connect(conn); } @@ -679,10 +712,10 @@ http_received_cb(conn->buf->str + conn->handled_len, conn->body_len, conn->bosh); - if (conn->bosh->ready && + if (conn->bosh->state == BOSH_CONN_ONLINE && (conn->bosh->requests == 0 || conn->bosh->pending->bufused > 0)) { + purple_debug_misc("jabber", "BOSH: Sending an empty request\n"); jabber_bosh_connection_send(conn->bosh, PACKET_NORMAL, NULL); - purple_debug_misc("jabber", "BOSH: Sending an empty request\n"); } g_string_free(conn->buf, TRUE); @@ -802,6 +835,8 @@ PurpleConnection *gc = bosh->js->gc; PurpleAccount *account = purple_connection_get_account(gc); + conn->state = HTTP_CONN_CONNECTING; + if (bosh->ssl) { if (purple_ssl_is_supported()) { conn->psc = purple_ssl_connect(account, bosh->host, bosh->port, diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/buddy.c --- a/libpurple/protocols/jabber/buddy.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/buddy.c Sat Jul 25 04:54:36 2009 +0000 @@ -161,14 +161,14 @@ jbr = g_new0(JabberBuddyResource, 1); jbr->jb = jb; jbr->name = g_strdup(resource); - jbr->capabilities = JABBER_CAP_XHTML; + jbr->capabilities = JABBER_CAP_NONE; jbr->tz_off = PURPLE_NO_TZ_OFF; jb->resources = g_list_append(jb->resources, jbr); } jbr->priority = priority; jbr->state = state; g_free(jbr->status); - jbr->status = status != NULL ? g_markup_escape_text(status, -1) : NULL; + jbr->status = g_strdup(status); return jbr; } @@ -2226,7 +2226,7 @@ const JabberCapsNodeExts *exts; if (!jbr->caps.info) { - purple_debug_error("jabber", + purple_debug_info("jabber", "Unable to find caps: nothing known about buddy\n"); return FALSE; } @@ -2244,12 +2244,6 @@ } } - /* TODO: Are these messages actually useful? */ - if (node) - purple_debug_info("jabber", "Found cap: %s\n", cap); - else - purple_debug_info("jabber", "Cap %s not found\n", cap); - return (node != NULL); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/chat.c --- a/libpurple/protocols/jabber/chat.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/chat.c Sat Jul 25 04:54:36 2009 +0000 @@ -235,7 +235,7 @@ purple_serv_got_join_chat_failed(gc, data); g_free(buf); return; - } else if(!jabber_nameprep_validate(server)) { + } else if(!jabber_domain_validate(server)) { char *buf = g_strdup_printf(_("%s is not a valid server name"), server); purple_notify_error(gc, _("Invalid Server Name"), _("Invalid Server Name"), buf); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/disco.c --- a/libpurple/protocols/jabber/disco.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/disco.c Sat Jul 25 04:54:36 2009 +0000 @@ -297,7 +297,8 @@ if(jbr) jbr->capabilities = capabilities; - jdicd->callback(js, from, capabilities, jdicd->data); + if (jdicd && jdicd->callback) + jdicd->callback(js, from, capabilities, jdicd->data); } else { /* type == JABBER_IQ_ERROR or query == NULL */ JabberID *jid; JabberBuddy *jb; @@ -313,8 +314,11 @@ if(jbr) capabilities = jbr->capabilities; - jdicd->callback(js, from, capabilities, jdicd->data); + if (jdicd && jdicd->callback) + jdicd->callback(js, from, capabilities, jdicd->data); } + + g_free(jdicd); } void jabber_disco_items_parse(JabberStream *js, const char *from, @@ -515,6 +519,7 @@ iq = jabber_iq_new_query(js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#info"); xmlnode_set_attrib(iq->node, "to", jid); + jabber_iq_set_callback(iq, jabber_disco_info_cb, NULL); jabber_iq_send(iq); } } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/google.c --- a/libpurple/protocols/jabber/google.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Sat Jul 25 04:54:36 2009 +0000 @@ -788,7 +788,7 @@ { xmlnode *child; xmlnode *message; - const char *to, *default_url; + const char *to, *url; const char *in_str; char *to_name; @@ -838,20 +838,16 @@ to = xmlnode_get_attrib(packet, "to"); to_name = jabber_get_bare_jid(to); - default_url = xmlnode_get_attrib(child, "url"); - if (default_url == NULL || *default_url == '\0') - default_url = "http://mail.google.com/mail"; + url = xmlnode_get_attrib(child, "url"); + if (!url || !*url) + url = "http://www.gmail.com"; message= xmlnode_get_child(child, "mail-thread-info"); for (i=0; message; message = xmlnode_get_next_twin(message), i++) { xmlnode *sender_node, *subject_node; - const char *from, *tid, *url; + const char *from, *tid; char *subject; - url = xmlnode_get_attrib(message, "url"); - if (url == NULL || *url == '\0') - url = default_url; - subject_node = xmlnode_get_child(message, "subject"); sender_node = xmlnode_get_child(message, "senders"); sender_node = xmlnode_get_child(sender_node, "sender"); @@ -1007,7 +1003,6 @@ gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item) { PurpleAccount *account = purple_connection_get_account(js->gc); - GSList *list = account->deny; const char *jid = xmlnode_get_attrib(item, "jid"); gboolean on_block_list = FALSE; @@ -1025,18 +1020,20 @@ jid_norm = g_strdup(jabber_normalize(account, jid)); - while (list) { - if (!strcmp(jid_norm, (char*)list->data)) { - on_block_list = TRUE; - break; - } - list = list->next; - } + on_block_list = NULL != g_slist_find_custom(account->deny, jid_norm, + (GCompareFunc)strcmp); if (grt && (*grt == 'H' || *grt == 'h')) { - PurpleBuddy *buddy = purple_find_buddy(account, jid_norm); - if (buddy) - purple_blist_remove_buddy(buddy); + /* Hidden; don't show this buddy. */ + GSList *buddies = purple_find_buddies(account, jid_norm); + if (buddies) + purple_debug_info("jabber", "Removing %s from local buddy list\n", + jid_norm); + + for ( ; buddies; buddies = g_slist_delete_link(buddies, buddies)) { + purple_blist_remove_buddy(buddies->data); + } + g_free(jid_norm); return FALSE; } @@ -1067,7 +1064,7 @@ js = (JabberStream*)(gc->proto_data); - if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER) + if (!js || !(js->server_caps & JABBER_CAP_GOOGLE_ROSTER)) return; jb = jabber_buddy_find(js, who, TRUE); @@ -1137,7 +1134,7 @@ js = (JabberStream*)(gc->proto_data); - if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER) + if (!js || !(js->server_caps & JABBER_CAP_GOOGLE_ROSTER)) return; buddies = purple_find_buddies(purple_connection_get_account(js->gc), who); @@ -1295,12 +1292,13 @@ { if (!js->googletalk) return; - if (jbr->status && !strncmp(jbr->status, "♫ ", strlen("♫ "))) { + if (jbr->status && purple_str_has_prefix(jbr->status, "♫ ")) { gchar *unescaped; unescaped = purple_unescape_html(jbr->status + strlen("♫ ")); purple_prpl_got_user_status(js->gc->account, user, "tune", PURPLE_TUNE_TITLE, unescaped, NULL); g_free(unescaped); + g_free(jbr->status); jbr->status = NULL; } else { purple_prpl_got_user_status_deactive(js->gc->account, user, "tune"); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/iq.c --- a/libpurple/protocols/jabber/iq.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/iq.c Sat Jul 25 04:54:36 2009 +0000 @@ -168,28 +168,19 @@ } } -static void jabber_iq_time_parse(JabberStream *js, const char *from, - JabberIqType type, const char *id, - xmlnode *child) +static void jabber_time_parse(JabberStream *js, const char *from, + JabberIqType type, const char *id, + xmlnode *child) { - const char *xmlns; JabberIq *iq; time_t now_t; - struct tm now_local; - struct tm now_utc; - struct tm *now; + struct tm *tm; time(&now_t); - now = localtime(&now_t); - memcpy(&now_local, now, sizeof(struct tm)); - now = gmtime(&now_t); - memcpy(&now_utc, now, sizeof(struct tm)); - - xmlns = xmlnode_get_namespace(child); if(type == JABBER_IQ_GET) { - xmlnode *utc; - const char *date, *tz, *display; + xmlnode *tzo, *utc; + const char *date, *tz; iq = jabber_iq_new(js, JABBER_IQ_RESULT); jabber_iq_set_id(iq, id); @@ -197,27 +188,23 @@ xmlnode_set_attrib(iq->node, "to", from); child = xmlnode_new_child(iq->node, child->name); - xmlnode_set_namespace(child, xmlns); - utc = xmlnode_new_child(child, "utc"); - - if(!strcmp("urn:xmpp:time", xmlns)) { - tz = purple_get_tzoff_str(&now_local, TRUE); - xmlnode_insert_data(xmlnode_new_child(child, "tzo"), tz, -1); + xmlnode_set_namespace(child, "urn:xmpp:time"); - date = purple_utf8_strftime("%FT%TZ", &now_utc); - xmlnode_insert_data(utc, date, -1); - } else { /* jabber:iq:time */ - tz = purple_utf8_strftime("%Z", &now_local); - xmlnode_insert_data(xmlnode_new_child(child, "tz"), tz, -1); + /* -06:00 */ + tm = localtime(&now_t); + tz = purple_get_tzoff_str(tm, TRUE); + tzo = xmlnode_new_child(child, "tzo"); + xmlnode_insert_data(tzo, tz, -1); - date = purple_utf8_strftime("%Y%m%dT%T", &now_utc); - xmlnode_insert_data(utc, date, -1); - - display = purple_utf8_strftime("%d %b %Y %T", &now_local); - xmlnode_insert_data(xmlnode_new_child(child, "display"), display, -1); - } + /* 2006-12-19T17:58:35Z */ + tm = gmtime(&now_t); + date = purple_utf8_strftime("%FT%TZ", tm); + utc = xmlnode_new_child(child, "utc"); + xmlnode_insert_data(utc, date, -1); jabber_iq_send(iq); + } else { + /* TODO: Errors */ } } @@ -488,7 +475,6 @@ jabber_register_parse); jabber_iq_register_handler("query", "jabber:iq:roster", jabber_roster_parse); - jabber_iq_register_handler("query", "jabber:iq:time", jabber_iq_time_parse); jabber_iq_register_handler("query", "jabber:iq:version", jabber_iq_version_parse); #ifdef USE_VV @@ -497,7 +483,7 @@ #endif jabber_iq_register_handler("block", "urn:xmpp:blocking", jabber_blocklist_parse_push); jabber_iq_register_handler("unblock", "urn:xmpp:blocking", jabber_blocklist_parse_push); - jabber_iq_register_handler("time", "urn:xmpp:time", jabber_iq_time_parse); + jabber_iq_register_handler("time", "urn:xmpp:time", jabber_time_parse); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/jabber.c --- a/libpurple/protocols/jabber/jabber.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Sat Jul 25 04:54:36 2009 +0000 @@ -660,7 +660,8 @@ try_srv_connect(js); } else { purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain); - js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, js); + js->srv_query_data = purple_txt_resolve("_xmppconnect", + js->user->domain, txt_resolved_cb, js); } return; } @@ -715,8 +716,8 @@ else js->serverFQDN = g_strdup(host); - if (purple_proxy_connect(js->gc, js->gc->account, host, - port, jabber_login_callback, js->gc) == NULL) { + if (purple_proxy_connect(js->gc, purple_connection_get_account(js->gc), + host, port, jabber_login_callback, js->gc) == NULL) { if (fatal_failure) { purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, @@ -742,7 +743,8 @@ /* Fall back to the defaults (I'm not sure if we should actually do this) */ jabber_login_connect(js, js->user->domain, js->user->domain, - purple_account_get_int(js->gc->account, "port", 5222), TRUE); + purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222), + TRUE); } static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data) @@ -757,35 +759,68 @@ try_srv_connect(js); } else { jabber_login_connect(js, js->user->domain, js->user->domain, - purple_account_get_int(js->gc->account, "port", 5222), TRUE); + purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222), + TRUE); } } -void -jabber_login(PurpleAccount *account) +static JabberStream * +jabber_stream_new(PurpleAccount *account) { PurpleConnection *gc = purple_account_get_connection(account); - const char *connect_server = purple_account_get_string(account, - "connect_server", ""); - const char *bosh_url = purple_account_get_string(account, - "bosh_url", ""); JabberStream *js; + JabberBuddy *my_jb; PurplePresence *presence; - PurpleStoredImage *image; - JabberBuddy *my_jb = NULL; - - gc->flags |= PURPLE_CONNECTION_HTML | - PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY; + gchar *user; + gchar *slash; + js = gc->proto_data = g_new0(JabberStream, 1); js->gc = gc; js->fd = -1; - js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, - g_free, g_free); + + user = g_strdup(purple_account_get_username(account)); + /* jabber_id_new doesn't accept "user@domain/" as valid */ + slash = strchr(user, '/'); + if (slash && *(slash + 1) == '\0') + *slash = '\0'; + js->user = jabber_id_new(user); + + if (!js->user) { + purple_connection_error_reason(gc, + PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, + _("Invalid XMPP ID")); + /* Destroying the connection will free the JabberStream */ + return NULL; + } + + if (!js->user->domain || *(js->user->domain) == '\0') { + purple_connection_error_reason(gc, + PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, + _("Invalid XMPP ID. Domain must be set.")); + /* Destroying the connection will free the JabberStream */ + return NULL; + } + js->buddies = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)jabber_buddy_free); + + my_jb = jabber_buddy_find(js, user, TRUE); + g_free(user); + if (!my_jb) { + /* This basically *can't* fail, but for good measure... */ + purple_connection_error_reason(gc, + PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, + _("Invalid XMPP ID")); + /* Destroying the connection will free the JabberStream */ + g_return_val_if_reached(NULL); + } + + my_jb->subscription |= JABBER_SUB_BOTH; + + js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, + g_free, g_free); js->chats = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)jabber_chat_free); - js->user = jabber_id_new(purple_account_get_username(account)); js->next_id = g_random_int(); js->write_buffer = purple_circ_buffer_new(512); js->old_length = 0; @@ -804,37 +839,21 @@ if (purple_presence_is_idle(presence)) js->idle = purple_presence_get_idle_time(presence); - if(!js->user) { - purple_connection_error_reason(gc, - PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, - _("Invalid XMPP ID")); - return; - } - - if (!js->user->domain || *(js->user->domain) == '\0') { - purple_connection_error_reason(gc, - PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, - _("Invalid XMPP ID. Domain must be set.")); - return; - } - - /* - * Calculate the avatar hash for our current image so we know (when we - * fetch our vCard and PEP avatar) if we should send our avatar to the - * server. - */ - if ((image = purple_buddy_icons_find_account_icon(account))) { - js->initial_avatar_hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(image), - purple_imgstore_get_size(image)); - purple_imgstore_unref(image); - } - - if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE))) - my_jb->subscription |= JABBER_SUB_BOTH; + return js; +} + +static void +jabber_stream_connect(JabberStream *js) +{ + PurpleConnection *gc = js->gc; + PurpleAccount *account = purple_connection_get_account(gc); + const char *connect_server = purple_account_get_string(account, + "connect_server", ""); + const char *bosh_url = purple_account_get_string(account, + "bosh_url", ""); jabber_stream_set_state(js, JABBER_STREAM_CONNECTING); - /* TODO: Just use purple_url_parse? */ /* If both BOSH and a Connect Server are specified, we prefer BOSH. I'm not * attached to that choice, though. */ @@ -844,7 +863,7 @@ if (js->bosh) jabber_bosh_connection_connect(js->bosh); else { - purple_connection_error_reason(js->gc, + purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, _("Malformed BOSH URL")); } @@ -855,19 +874,18 @@ js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */ - if(purple_account_get_bool(js->gc->account, "old_ssl", FALSE)) { + if(purple_account_get_bool(account, "old_ssl", FALSE)) { if(purple_ssl_is_supported()) { - js->gsc = purple_ssl_connect(js->gc->account, - js->certificate_CN, - purple_account_get_int(account, "port", 5223), jabber_login_callback_ssl, - jabber_ssl_connect_failure, js->gc); + js->gsc = purple_ssl_connect(account, js->certificate_CN, + purple_account_get_int(account, "port", 5223), + jabber_login_callback_ssl, jabber_ssl_connect_failure, gc); if (!js->gsc) { - purple_connection_error_reason(js->gc, + purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, _("Unable to establish SSL connection")); } } else { - purple_connection_error_reason(js->gc, + purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, _("SSL support unavailable")); } @@ -878,13 +896,43 @@ /* no old-ssl, so if they've specified a connect server, we'll use that, otherwise we'll * invoke the magic of SRV lookups, to figure out host and port */ if(connect_server[0]) { - jabber_login_connect(js, js->user->domain, connect_server, purple_account_get_int(account, "port", 5222), TRUE); + jabber_login_connect(js, js->user->domain, connect_server, + purple_account_get_int(account, "port", 5222), TRUE); } else { js->srv_query_data = purple_srv_resolve("xmpp-client", "tcp", js->user->domain, srv_resolved_cb, js); } } +void +jabber_login(PurpleAccount *account) +{ + PurpleConnection *gc = purple_account_get_connection(account); + JabberStream *js; + PurpleStoredImage *image; + + gc->flags |= PURPLE_CONNECTION_HTML | + PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY; + js = jabber_stream_new(account); + if (js == NULL) + return; + + /* + * Calculate the avatar hash for our current image so we know (when we + * fetch our vCard and PEP avatar) if we should send our avatar to the + * server. + */ + image = purple_buddy_icons_find_account_icon(account); + if (image != NULL) { + js->initial_avatar_hash = + jabber_calculate_data_sha1sum(purple_imgstore_get_data(image), + purple_imgstore_get_size(image)); + purple_imgstore_unref(image); + } + + jabber_stream_connect(js); +} + static gboolean conn_close_cb(gpointer data) @@ -1295,90 +1343,14 @@ void jabber_register_account(PurpleAccount *account) { - PurpleConnection *gc = purple_account_get_connection(account); JabberStream *js; - JabberBuddy *my_jb = NULL; - const char *connect_server = purple_account_get_string(account, - "connect_server", ""); - const char *server; - - js = gc->proto_data = g_new0(JabberStream, 1); - js->gc = gc; - js->registration = TRUE; - js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, - g_free, g_free); - js->user = jabber_id_new(purple_account_get_username(account)); - js->next_id = g_random_int(); - js->old_length = 0; - js->keepalive_timeout = 0; - - if(!js->user) { - purple_connection_error_reason(gc, - PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, - _("Invalid XMPP ID")); + + js = jabber_stream_new(account); + if (js == NULL) return; - } - - js->write_buffer = purple_circ_buffer_new(512); - - if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE))) - my_jb->subscription |= JABBER_SUB_BOTH; - - server = connect_server[0] ? connect_server : js->user->domain; - js->certificate_CN = g_strdup(server); - - js->stun_ip = NULL; - js->stun_port = 0; - js->stun_query = NULL; - - jabber_stream_set_state(js, JABBER_STREAM_CONNECTING); - - /* TODO: Just use purple_url_parse? */ - if (!g_ascii_strncasecmp(connect_server, "http://", 7) || !g_ascii_strncasecmp(connect_server, "https://", 8)) { - js->use_bosh = TRUE; - js->bosh = jabber_bosh_connection_init(js, connect_server); - if (!js->bosh) { - purple_connection_error_reason(js->gc, - PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, - _("Malformed BOSH Connect Server")); - return; - } - jabber_bosh_connection_connect(js->bosh); - return; - } else { - js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); - } - - if(purple_account_get_bool(account, "old_ssl", FALSE)) { - if(purple_ssl_is_supported()) { - js->gsc = purple_ssl_connect(account, server, - purple_account_get_int(account, "port", 5222), - jabber_login_callback_ssl, jabber_ssl_connect_failure, gc); - if (!js->gsc) { - purple_connection_error_reason(js->gc, - PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, - _("Unable to establish SSL connection")); - } - } else { - purple_connection_error_reason(gc, - PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, - _("SSL support unavailable")); - } - - return; - } - - if (connect_server[0]) { - jabber_login_connect(js, js->user->domain, server, - purple_account_get_int(account, - "port", 5222), TRUE); - } else { - js->srv_query_data = purple_srv_resolve("xmpp-client", - "tcp", - js->user->domain, - srv_resolved_cb, - js); - } + + js->registration = TRUE; + jabber_stream_connect(js); } static void @@ -1468,7 +1440,7 @@ if (!gc->disconnect_timeout) { if (js->use_bosh) jabber_bosh_connection_close(js->bosh); - else + else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0) jabber_send_raw(js, "", -1); } @@ -1629,7 +1601,8 @@ break; case JABBER_STREAM_CONNECTED: - /* now we can alert the core that we're ready to send status */ + /* Send initial presence */ + jabber_presence_send(js, TRUE); purple_connection_set_state(js->gc, PURPLE_CONNECTED); break; } @@ -1976,27 +1949,17 @@ ret = g_strdup(jb->error_msg); } else { PurplePresence *presence = purple_buddy_get_presence(b); - PurpleStatus *status =purple_presence_get_active_status(presence); - char *stripped = NULL; - - if(!(stripped = purple_markup_strip_html(purple_status_get_attr_string(status, "message")))) { - if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) { - PurpleStatus *status; - const char *title, *artist; - - status = purple_presence_get_status(presence, "tune"); - title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE); - artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); - - stripped = g_strdup_printf("%s%s%s", title, artist ? " - " : "", - artist ? artist : ""); - - } - } - - if(stripped) { - ret = g_markup_escape_text(stripped, -1); - g_free(stripped); + PurpleStatus *status = purple_presence_get_active_status(presence); + const char *message; + + if((message = purple_status_get_attr_string(status, "message"))) { + ret = g_markup_escape_text(message, -1); + } else if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) { + PurpleStatus *status = purple_presence_get_status(presence, "tune"); + const char *title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE); + const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); + const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM); + ret = purple_util_format_song_info(title, artist, album, NULL); } } @@ -2013,12 +1976,7 @@ const char *state; if(jbr->status) { - char *tmp; - text = purple_strreplace(jbr->status, "\n", "
\n"); - tmp = purple_markup_strip_html(text); - g_free(text); - text = g_markup_escape_text(tmp, -1); - g_free(tmp); + text = g_markup_escape_text(jbr->status, -1); } if(jbr->name) @@ -3382,6 +3340,7 @@ PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", jabber_cmd_buzz, _("buzz: Buzz a user to get their attention"), NULL); + jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); } void jabber_unregister_commands(void) @@ -3445,8 +3404,9 @@ { GHashTable *ui_info = purple_core_get_ui_info(); const gchar *ui_type; - const gchar *type = "pc"; /* default client type, if unknown or + const gchar *type = "pc"; /* default client type, if unknown or unspecified */ + const gchar *ui_name = NULL; jabber_plugin = plugin; @@ -3462,12 +3422,16 @@ } } - jabber_add_identity("client", type, NULL, PACKAGE); + if (ui_info) + ui_name = g_hash_table_lookup(ui_info, "name"); + if (ui_name == NULL) + ui_name = PACKAGE; + + jabber_add_identity("client", type, NULL, ui_name); /* initialize jabber_features list */ jabber_add_feature("jabber:iq:last", 0); jabber_add_feature("jabber:iq:oob", 0); - jabber_add_feature("jabber:iq:time", 0); jabber_add_feature("urn:xmpp:time", 0); jabber_add_feature("jabber:iq:version", 0); jabber_add_feature("jabber:x:conference", 0); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/jabber.h --- a/libpurple/protocols/jabber/jabber.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.h Sat Jul 25 04:54:36 2009 +0000 @@ -24,8 +24,8 @@ typedef enum { JABBER_CAP_NONE = 0, - JABBER_CAP_XHTML = 1 << 0, - JABBER_CAP_COMPOSING = 1 << 1, +/* JABBER_CAP_XHTML = 1 << 0, */ +/* JABBER_CAP_COMPOSING = 1 << 1, */ JABBER_CAP_SI = 1 << 2, JABBER_CAP_SI_FILE_XFER = 1 << 3, JABBER_CAP_BYTESTREAMS = 1 << 4, @@ -116,7 +116,6 @@ char *expected_rspauth; GHashTable *buddies; - gboolean roster_parsed; /* * This boolean was added to eliminate a heinous bug where we would diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/jutil.c --- a/libpurple/protocols/jabber/jutil.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/jutil.c Sat Jul 25 04:54:36 2009 +0000 @@ -31,9 +31,145 @@ #include "presence.h" #include "jutil.h" +#ifdef USE_IDN +#include +#include +static char idn_buffer[1024]; +#endif + +#ifdef USE_IDN +static gboolean jabber_nodeprep(char *str, size_t buflen) +{ + return stringprep_xmpp_nodeprep(str, buflen) == STRINGPREP_OK; +} + +static gboolean jabber_resourceprep(char *str, size_t buflen) +{ + return stringprep_xmpp_resourceprep(str, buflen) == STRINGPREP_OK; +} + +static JabberID* +jabber_idn_validate(const char *str, const char *at, const char *slash, + const char *null) +{ + const char *node = NULL; + const char *domain = NULL; + const char *resource = NULL; + int node_len = 0; + int domain_len = 0; + int resource_len = 0; + char *out; + JabberID *jid; + + /* Ensure no parts are > 1023 bytes */ + if (at) { + node = str; + node_len = at - str; + + domain = at + 1; + if (slash) { + domain_len = slash - (at + 1); + resource = slash + 1; + resource_len = null - (slash + 1); + } else { + domain_len = null - (at + 1); + } + } else { + domain = str; + + if (slash) { + domain_len = slash - str; + resource = slash; + resource_len = null - (slash + 1); + } else { + domain_len = null - (str + 1); + } + } + + if (node && node_len > 1023) + return NULL; + if (domain_len > 1023) + return NULL; + if (resource && resource_len > 1023) + return NULL; + + jid = g_new0(JabberID, 1); + + if (node) { + strncpy(idn_buffer, node, node_len); + idn_buffer[node_len] = '\0'; + + if (!jabber_nodeprep(idn_buffer, sizeof(idn_buffer))) { + jabber_id_free(jid); + jid = NULL; + goto out; + } + + jid->node = g_strdup(idn_buffer); + } + + /* domain *must* be here */ + strncpy(idn_buffer, domain, domain_len); + idn_buffer[domain_len] = '\0'; + if (domain[0] == '[') { /* IPv6 address */ + gboolean valid = FALSE; + + if (idn_buffer[domain_len - 1] == ']') { + idn_buffer[domain_len - 1] = '\0'; + valid = purple_ipv6_address_is_valid(idn_buffer + 1); + } + + if (!valid) { + jabber_id_free(jid); + jid = NULL; + goto out; + } + } else { + /* Apply nameprep */ + if (stringprep_nameprep(idn_buffer, sizeof(idn_buffer)) != STRINGPREP_OK) { + jabber_id_free(jid); + jid = NULL; + goto out; + } + + /* And now ToASCII */ + if (idna_to_ascii_8z(idn_buffer, &out, IDNA_USE_STD3_ASCII_RULES) != IDNA_SUCCESS) { + jabber_id_free(jid); + jid = NULL; + goto out; + } + + /* This *MUST* be freed using 'free', not 'g_free' */ + free(out); + jid->domain = g_strdup(idn_buffer); + } + + if (resource) { + strncpy(idn_buffer, resource, resource_len); + idn_buffer[resource_len] = '\0'; + + if (!jabber_resourceprep(idn_buffer, sizeof(idn_buffer))) { + jabber_id_free(jid); + jid = NULL; + /* goto out; */ + } + + jid->resource = g_strdup(idn_buffer); + } + +out: + return jid; +} + +#endif /* USE_IDN */ + gboolean jabber_nodeprep_validate(const char *str) { +#ifdef USE_IDN + gboolean result; +#else const char *c; +#endif if(!str) return TRUE; @@ -41,6 +177,12 @@ if(strlen(str) > 1023) return FALSE; +#ifdef USE_IDN + strncpy(idn_buffer, str, sizeof(idn_buffer) - 1); + idn_buffer[sizeof(idn_buffer) - 1] = '\0'; + result = jabber_nodeprep(idn_buffer, sizeof(idn_buffer)); + return result; +#else /* USE_IDN */ c = str; while(c && *c) { gunichar ch = g_utf8_get_char(c); @@ -52,11 +194,61 @@ } return TRUE; +#endif /* USE_IDN */ } -gboolean jabber_nameprep_validate(const char *str) +gboolean jabber_domain_validate(const char *str) { const char *c; + size_t len; + + if(!str) + return TRUE; + + len = strlen(str); + if (len > 1023) + return FALSE; + + c = str; + + if (*c == '[') { + /* Check if str is a valid IPv6 identifier */ + gboolean valid = FALSE; + + if (*(c + len - 1) != ']') + return FALSE; + + /* Ugly, but in-place */ + *(gchar *)(c + len - 1) = '\0'; + valid = purple_ipv6_address_is_valid(c + 1); + *(gchar *)(c + len - 1) = ']'; + + return valid; + } + + while(c && *c) { + gunichar ch = g_utf8_get_char(c); + /* The list of characters allowed in domain names is pretty small */ + if ((ch <= 0x7F && !( (ch >= 'a' && ch <= 'z') + || (ch >= '0' && ch <= '9') + || (ch >= 'A' && ch <= 'Z') + || ch == '.' + || ch == '-' )) || (ch >= 0x80 && !g_unichar_isgraph(ch))) + return FALSE; + + c = g_utf8_next_char(c); + } + + return TRUE; +} + +gboolean jabber_resourceprep_validate(const char *str) +{ +#ifdef USE_IDN + gboolean result; +#else + const char *c; +#endif if(!str) return TRUE; @@ -64,29 +256,12 @@ if(strlen(str) > 1023) return FALSE; - c = str; - while(c && *c) { - gunichar ch = g_utf8_get_char(c); - if(!g_unichar_isgraph(ch)) - return FALSE; - - c = g_utf8_next_char(c); - } - - - return TRUE; -} - -gboolean jabber_resourceprep_validate(const char *str) -{ - const char *c; - - if(!str) - return TRUE; - - if(strlen(str) > 1023) - return FALSE; - +#ifdef USE_IDN + strncpy(idn_buffer, str, sizeof(idn_buffer) - 1); + idn_buffer[sizeof(idn_buffer) - 1] = '\0'; + result = jabber_resourceprep(idn_buffer, sizeof(idn_buffer)); + return result; +#else /* USE_IDN */ c = str; while(c && *c) { gunichar ch = g_utf8_get_char(c); @@ -97,61 +272,186 @@ } return TRUE; +#endif /* USE_IDN */ } - JabberID* jabber_id_new(const char *str) { - char *at; - char *slash; + const char *at = NULL; + const char *slash = NULL; + const char *c; + gboolean needs_validation = FALSE; +#if 0 + gboolean node_is_required = FALSE; +#endif +#ifndef USE_IDN char *node = NULL; char *domain; +#endif JabberID *jid; - if(!str || !g_utf8_validate(str, -1, NULL)) + if (!str) return NULL; + for (c = str; *c != '\0'; c++) + { + switch (*c) { + case '@': + if (!slash) { + if (at) { + /* Multiple @'s in the node/domain portion, not a valid JID! */ + return NULL; + } + if (c == str) { + /* JIDs cannot start with @ */ + return NULL; + } + if (c[1] == '\0') { + /* JIDs cannot end with @ */ + return NULL; + } + at = c; + } + break; + + case '/': + if (!slash) { + if (c == str) { + /* JIDs cannot start with / */ + return NULL; + } + if (c[1] == '\0') { + /* JIDs cannot end with / */ + return NULL; + } + slash = c; + } + break; + + default: + /* characters allowed everywhere */ + if ((*c >= 'a' && *c <= 'z') + || (*c >= '0' && *c <= '9') + || (*c >= 'A' && *c <= 'Z') + || *c == '.' || *c == '-') + /* We're good */ + break; + +#if 0 + if (slash != NULL) { + /* characters allowed only in the resource */ + if (implement_me) + /* We're good */ + break; + } + + /* characters allowed only in the node */ + if (implement_me) { + /* + * Ok, this character is valid, but only if it's a part + * of the node and not the domain. But we don't know + * if "c" is a part of the node or the domain until after + * we've found the @. So set a flag for now and check + * that we found an @ later. + */ + node_is_required = TRUE; + break; + } +#endif + + /* + * Hmm, this character is a bit more exotic. Better fall + * back to using the more expensive UTF-8 compliant + * stringprep functions. + */ + needs_validation = TRUE; + break; + } + } + +#if 0 + if (node_is_required && at == NULL) + /* Found invalid characters in the domain */ + return NULL; +#endif + + if (!needs_validation) { + /* JID is made of only ASCII characters--just lowercase and return */ + jid = g_new0(JabberID, 1); + + if (at) { + jid->node = g_ascii_strdown(str, at - str); + if (slash) { + jid->domain = g_ascii_strdown(at + 1, slash - (at + 1)); + jid->resource = g_strdup(slash + 1); + } else { + jid->domain = g_ascii_strdown(at + 1, -1); + } + } else { + if (slash) { + jid->domain = g_ascii_strdown(str, slash - str); + jid->resource = g_strdup(slash + 1); + } else { + jid->domain = g_ascii_strdown(str, -1); + } + } + return jid; + } + + /* + * If we get here, there are some non-ASCII chars in the string, so + * we'll need to validate it, normalize, and finally do a full jabber + * nodeprep on the jid. + */ + + if (!g_utf8_validate(str, -1, NULL)) + return NULL; + +#ifdef USE_IDN + return jabber_idn_validate(str, at, slash, c /* points to the null */); +#else /* USE_IDN */ + jid = g_new0(JabberID, 1); - at = g_utf8_strchr(str, -1, '@'); - slash = g_utf8_strchr(str, -1, '/'); - + /* normalization */ if(at) { - node = g_utf8_normalize(str, at-str, G_NORMALIZE_NFKC); + node = g_utf8_casefold(str, at-str); if(slash) { - domain = g_utf8_normalize(at+1, slash-(at+1), G_NORMALIZE_NFKC); + domain = g_utf8_casefold(at+1, slash-(at+1)); jid->resource = g_utf8_normalize(slash+1, -1, G_NORMALIZE_NFKC); } else { - domain = g_utf8_normalize(at+1, -1, G_NORMALIZE_NFKC); + domain = g_utf8_casefold(at+1, -1); } } else { if(slash) { - domain = g_utf8_normalize(str, slash-str, G_NORMALIZE_NFKC); + domain = g_utf8_casefold(str, slash-str); jid->resource = g_utf8_normalize(slash+1, -1, G_NORMALIZE_NFKC); } else { - domain = g_utf8_normalize(str, -1, G_NORMALIZE_NFKC); + domain = g_utf8_casefold(str, -1); } } if (node) { - jid->node = g_utf8_strdown(node, -1); + jid->node = g_utf8_normalize(node, -1, G_NORMALIZE_NFKC); g_free(node); } if (domain) { - jid->domain = g_utf8_strdown(domain, -1); + jid->domain = g_utf8_normalize(domain, -1, G_NORMALIZE_NFKC); g_free(domain); } + /* and finally the jabber nodeprep */ if(!jabber_nodeprep_validate(jid->node) || - !jabber_nameprep_validate(jid->domain) || + !jabber_domain_validate(jid->domain) || !jabber_resourceprep_validate(jid->resource)) { jabber_id_free(jid); return NULL; } return jid; +#endif /* USE_IDN */ } void diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/jutil.h --- a/libpurple/protocols/jabber/jutil.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/jutil.h Sat Jul 25 04:54:36 2009 +0000 @@ -45,7 +45,7 @@ gboolean jabber_is_own_account(JabberStream *js, const char *jid); gboolean jabber_nodeprep_validate(const char *); -gboolean jabber_nameprep_validate(const char *); +gboolean jabber_domain_validate(const char *); gboolean jabber_resourceprep_validate(const char *); PurpleConversation *jabber_find_unnormalized_conv(const char *name, PurpleAccount *account); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/message.c --- a/libpurple/protocols/jabber/message.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/message.c Sat Jul 25 04:54:36 2009 +0000 @@ -87,6 +87,9 @@ } if(!jm->xhtml && !jm->body) { + if (jbr) + jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; + if(JM_STATE_COMPOSING == jm->chat_state) { serv_got_typing(jm->js->gc, from, 0, PURPLE_TYPING); } else if(JM_STATE_PAUSED == jm->chat_state) { @@ -125,15 +128,10 @@ } } else { if(jbr) { - if(JM_TS_JEP_0085 == (jm->typing_style & JM_TS_JEP_0085)) { + if (jm->chat_state != JM_STATE_NONE) jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; - } else { + else jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; - } - - if(JM_TS_JEP_0022 == (jm->typing_style & JM_TS_JEP_0022)) { - jbr->capabilities |= JABBER_CAP_COMPOSING; - } if(jbr->thread_id) g_free(jbr->thread_id); @@ -550,6 +548,7 @@ jm->js = js; jm->sent = time(NULL); jm->delayed = FALSE; + jm->chat_state = JM_STATE_NONE; if(type) { if(!strcmp(type, "normal")) @@ -630,7 +629,6 @@ gsize len; const PurpleConnection *gc = js->gc; - const gchar *who = xmlnode_get_attrib(packet, "from"); PurpleAccount *account = purple_connection_get_account(gc); PurpleConversation *conv = NULL; GList *smiley_refs = NULL; @@ -650,20 +648,20 @@ if (jid) { chat = jabber_chat_find(js, jid->node, jid->domain); - if (chat) conv = chat->conv; + if (chat) + conv = chat->conv; + jabber_id_free(jid); } - - jabber_id_free(jid); } else if (jm->type == JABBER_MESSAGE_NORMAL || jm->type == JABBER_MESSAGE_CHAT) { conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, - who, account); + from, account); if (!conv) { /* we need to create the conversation here */ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, - account, who); + account, from); } } } @@ -710,7 +708,7 @@ /* we need to request the smiley (data) */ purple_debug_info("jabber", "data is unknown, need to request it\n"); - jabber_message_send_data_request(js, conv, cid, who, + jabber_message_send_data_request(js, conv, cid, from, alt); } } @@ -729,19 +727,14 @@ } } else if(!strcmp(child->name, "active") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { jm->chat_state = JM_STATE_ACTIVE; - jm->typing_style |= JM_TS_JEP_0085; } else if(!strcmp(child->name, "composing") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { jm->chat_state = JM_STATE_COMPOSING; - jm->typing_style |= JM_TS_JEP_0085; } else if(!strcmp(child->name, "paused") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { jm->chat_state = JM_STATE_PAUSED; - jm->typing_style |= JM_TS_JEP_0085; } else if(!strcmp(child->name, "inactive") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { jm->chat_state = JM_STATE_INACTIVE; - jm->typing_style |= JM_TS_JEP_0085; } else if(!strcmp(child->name, "gone") && !strcmp(xmlns,"http://jabber.org/protocol/chatstates")) { jm->chat_state = JM_STATE_GONE; - jm->typing_style |= JM_TS_JEP_0085; } else if(!strcmp(child->name, "event") && !strcmp(xmlns,"http://jabber.org/protocol/pubsub#event")) { xmlnode *items; jm->type = JABBER_MESSAGE_EVENT; @@ -755,13 +748,7 @@ if(timestamp) jm->sent = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL); } else if(!strcmp(child->name, "x")) { - if(!strcmp(xmlns, "jabber:x:event")) { - if(xmlnode_get_child(child, "composing")) { - if(jm->chat_state == JM_STATE_ACTIVE) - jm->chat_state = JM_STATE_COMPOSING; - jm->typing_style |= JM_TS_JEP_0022; - } - } else if(!strcmp(xmlns, "jabber:x:delay")) { + if(!strcmp(xmlns, "jabber:x:delay")) { const char *timestamp = xmlnode_get_attrib(child, "stamp"); jm->delayed = TRUE; if(timestamp) @@ -809,6 +796,10 @@ handle_buzz(jm); switch(jm->type) { + case JABBER_MESSAGE_OTHER: + purple_debug(PURPLE_DEBUG_INFO, "jabber", + "Received message of unknown type: %s\n", type); + /* Fall-through is intentional */ case JABBER_MESSAGE_NORMAL: case JABBER_MESSAGE_CHAT: handle_chat(jm); @@ -828,10 +819,6 @@ case JABBER_MESSAGE_ERROR: handle_error(jm); break; - case JABBER_MESSAGE_OTHER: - purple_debug(PURPLE_DEBUG_INFO, "jabber", - "Received message of unknown type: %s\n", type); - break; } jabber_message_free(jm); } @@ -1062,36 +1049,30 @@ xmlnode_insert_data(child, jm->thread_id, -1); } - if(JM_TS_JEP_0022 == (jm->typing_style & JM_TS_JEP_0022)) { - child = xmlnode_new_child(message, "x"); - xmlnode_set_namespace(child, "jabber:x:event"); - if(jm->chat_state == JM_STATE_COMPOSING || jm->body) - xmlnode_new_child(child, "composing"); + child = NULL; + switch(jm->chat_state) + { + case JM_STATE_ACTIVE: + child = xmlnode_new_child(message, "active"); + break; + case JM_STATE_COMPOSING: + child = xmlnode_new_child(message, "composing"); + break; + case JM_STATE_PAUSED: + child = xmlnode_new_child(message, "paused"); + break; + case JM_STATE_INACTIVE: + child = xmlnode_new_child(message, "inactive"); + break; + case JM_STATE_GONE: + child = xmlnode_new_child(message, "gone"); + break; + case JM_STATE_NONE: + /* yep, nothing */ + break; } - - if(JM_TS_JEP_0085 == (jm->typing_style & JM_TS_JEP_0085)) { - child = NULL; - switch(jm->chat_state) - { - case JM_STATE_ACTIVE: - child = xmlnode_new_child(message, "active"); - break; - case JM_STATE_COMPOSING: - child = xmlnode_new_child(message, "composing"); - break; - case JM_STATE_PAUSED: - child = xmlnode_new_child(message, "paused"); - break; - case JM_STATE_INACTIVE: - child = xmlnode_new_child(message, "inactive"); - break; - case JM_STATE_GONE: - child = xmlnode_new_child(message, "gone"); - break; - } - if(child) - xmlnode_set_namespace(child, "http://jabber.org/protocol/chatstates"); - } + if(child) + xmlnode_set_namespace(child, "http://jabber.org/protocol/chatstates"); if(jm->subject) { child = xmlnode_new_child(message, "subject"); @@ -1186,14 +1167,12 @@ if(jbr->thread_id) jm->thread_id = jbr->thread_id; - if(jbr->chat_states != JABBER_CHAT_STATES_UNSUPPORTED) { - jm->typing_style |= JM_TS_JEP_0085; + if (jbr->chat_states == JABBER_CHAT_STATES_UNSUPPORTED) + jm->chat_state = JM_STATE_NONE; + else { /* if(JABBER_CHAT_STATES_UNKNOWN == jbr->chat_states) jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; */ } - - if(jbr->chat_states != JABBER_CHAT_STATES_SUPPORTED) - jm->typing_style |= JM_TS_JEP_0022; } tmp = purple_utf8_strip_unprintables(msg); @@ -1205,9 +1184,15 @@ xhtml = tmp; } - if ((!jbr || jbr->capabilities & JABBER_CAP_XHTML) && - !jabber_xhtml_plain_equal(xhtml, jm->body)) - jm->xhtml = g_strdup_printf("%s", xhtml); + /* + * For backward compatibility with user expectations or for those not on + * the user's roster, allow sending XHTML-IM markup. + */ + if (!jbr || !jbr->caps.info || + jabber_resource_has_capability(jbr, "http://jabber.org/protocol/xhtml-im")) { + if (!jabber_xhtml_plain_equal(xhtml, jm->body)) + jm->xhtml = g_strdup_printf("%s", xhtml); + } g_free(xhtml); @@ -1271,7 +1256,7 @@ g_free(resource); - if(!jbr || !((jbr->capabilities & JABBER_CAP_COMPOSING) || (jbr->chat_states != JABBER_CHAT_STATES_UNSUPPORTED))) + if (!jbr || (jbr->chat_states == JABBER_CHAT_STATES_UNSUPPORTED)) return 0; /* TODO: figure out threading */ @@ -1288,14 +1273,8 @@ else jm->chat_state = JM_STATE_ACTIVE; - if(jbr->chat_states != JABBER_CHAT_STATES_UNSUPPORTED) { - jm->typing_style |= JM_TS_JEP_0085; - /* if(JABBER_CHAT_STATES_UNKNOWN == jbr->chat_states) - jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; */ - } - - if(jbr->chat_states != JABBER_CHAT_STATES_SUPPORTED) - jm->typing_style |= JM_TS_JEP_0022; + /* if(JABBER_CHAT_STATES_UNKNOWN == jbr->chat_states) + jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; */ jabber_message_send(jm); jabber_message_free(jm); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/message.h --- a/libpurple/protocols/jabber/message.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/message.h Sat Jul 25 04:54:36 2009 +0000 @@ -53,11 +53,7 @@ char *error; char *thread_id; enum { - JM_TS_NONE = 0, - JM_TS_JEP_0022 = 0x1, - JM_TS_JEP_0085 = 0x2 - } typing_style; - enum { + JM_STATE_NONE, JM_STATE_ACTIVE, JM_STATE_COMPOSING, JM_STATE_PAUSED, diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/presence.c --- a/libpurple/protocols/jabber/presence.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/presence.c Sat Jul 25 04:54:36 2009 +0000 @@ -59,38 +59,44 @@ g_free(chat_full_jid); } -void jabber_presence_fake_to_self(JabberStream *js, const PurpleStatus *gstatus) { - char *my_base_jid; +void jabber_presence_fake_to_self(JabberStream *js, PurpleStatus *status) +{ + PurpleAccount *account; + const char *username; - if(!js->user) - return; + g_return_if_fail(js->user != NULL); - my_base_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); - if(purple_find_buddy(js->gc->account, my_base_jid)) { - JabberBuddy *jb; + account = purple_connection_get_account(js->gc); + username = purple_connection_get_display_name(js->gc); + if (status == NULL) + status = purple_account_get_active_status(account); + + if (purple_find_buddy(account, username)) { + JabberBuddy *jb = jabber_buddy_find(js, username, TRUE); JabberBuddyResource *jbr; - if((jb = jabber_buddy_find(js, my_base_jid, TRUE))) { - JabberBuddyState state; - char *msg; - int priority; + JabberBuddyState state; + char *msg; + int priority; - purple_status_to_jabber(gstatus, &state, &msg, &priority); + g_return_if_fail(jb != NULL); + + purple_status_to_jabber(status, &state, &msg, &priority); - if (state == JABBER_BUDDY_STATE_UNAVAILABLE || state == JABBER_BUDDY_STATE_UNKNOWN) { - jabber_buddy_remove_resource(jb, js->user->resource); - } else { - jabber_buddy_track_resource(jb, js->user->resource, priority, state, msg); - } - if((jbr = jabber_buddy_find_resource(jb, NULL))) { - purple_prpl_got_user_status(js->gc->account, my_base_jid, jabber_buddy_state_get_status_id(jbr->state), "priority", jbr->priority, jbr->status ? "message" : NULL, jbr->status, NULL); - } else { - purple_prpl_got_user_status(js->gc->account, my_base_jid, "offline", msg ? "message" : NULL, msg, NULL); - } + if (state == JABBER_BUDDY_STATE_UNAVAILABLE || + state == JABBER_BUDDY_STATE_UNKNOWN) { + jabber_buddy_remove_resource(jb, js->user->resource); + } else { + jabber_buddy_track_resource(jb, js->user->resource, priority, + state, msg); + } - g_free(msg); + if ((jbr = jabber_buddy_find_resource(jb, NULL))) { + purple_prpl_got_user_status(account, username, jabber_buddy_state_get_status_id(jbr->state), "priority", jbr->priority, jbr->status ? "message" : NULL, jbr->status, NULL); + } else { + purple_prpl_got_user_status(account, username, "offline", msg ? "message" : NULL, msg, NULL); } + g_free(msg); } - g_free(my_base_jid); } void jabber_set_status(PurpleAccount *account, PurpleStatus *status) @@ -101,9 +107,6 @@ if (!purple_account_is_connected(account)) return; - if (!purple_status_is_active(status)) - return; - if (purple_status_is_exclusive(status) && !purple_status_is_active(status)) { /* An exclusive status can't be deactivated. You should just * activate some other exclusive status. */ @@ -133,7 +136,7 @@ status = purple_presence_get_active_status(p); /* we don't want to send presence before we've gotten our roster */ - if(!js->roster_parsed) { + if (js->state != JABBER_STREAM_CONNECTED) { purple_debug_info("jabber", "attempt to send presence before roster retrieved\n"); return; } @@ -441,6 +444,9 @@ jbr->caps.info = info; jbr->caps.exts = exts; + if (info == NULL) + goto out; + if (!jbr->commands_fetched && jabber_resource_has_capability(jbr, "http://jabber.org/protocol/commands")) { JabberIq *iq = jabber_iq_new_query(userdata->js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#items"); xmlnode *query = xmlnode_get_child_with_namespace(iq->node, "query", "http://jabber.org/protocol/disco#items"); @@ -452,6 +458,12 @@ jbr->commands_fetched = TRUE; } + if (jabber_resource_has_capability(jbr, "http://jabber.org/protocol/chatstates")) + jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; + else + jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; + +out: g_free(userdata->from); g_free(userdata); } @@ -613,6 +625,7 @@ /* XXX: compare the time. jabber:x:delay can happen on presence packets that aren't really and truly delayed */ delayed = TRUE; stamp = xmlnode_get_attrib(y, "stamp"); + } else if(!strcmp(xmlns, "http://jabber.org/protocol/muc#user")) { } else if(!strcmp(xmlns, "vcard-temp:x:update")) { xmlnode *photo = xmlnode_get_child(y, "photo"); if(photo) { @@ -762,6 +775,7 @@ purple_conv_chat_user_set_flags(PURPLE_CONV_CHAT(chat->conv), jid->resource, flags); } else if (g_str_equal(type, "unavailable")) { + xmlnode *x; gboolean nick_change = FALSE; gboolean kick = FALSE; gboolean is_our_resource = FALSE; /* Is the presence about us? */ @@ -784,28 +798,31 @@ is_our_resource = (0 == g_utf8_collate(jid->resource, chat->handle)); jabber_buddy_remove_resource(jb, jid->resource); - if(chat->muc) { - xmlnode *x; - for(x = xmlnode_get_child(packet, "x"); x; x = xmlnode_get_next_twin(x)) { - const char *xmlns, *nick, *code; - xmlnode *stat, *item; - if(!(xmlns = xmlnode_get_namespace(x)) || - strcmp(xmlns, "http://jabber.org/protocol/muc#user")) - continue; - if(!(stat = xmlnode_get_child(x, "status"))) - continue; - if(!(code = xmlnode_get_attrib(stat, "code"))) - continue; + + x = xmlnode_get_child_with_namespace(packet, "x", + "http://jabber.org/protocol/muc#user"); + if (chat->muc && x) { + const char *nick; + const char *code = NULL; + const char *item_jid = NULL; + const char *to; + xmlnode *stat; + xmlnode *item; - item = xmlnode_get_child(x, "item"); + item = xmlnode_get_child(x, "item"); + if (item) + item_jid = xmlnode_get_attrib(item, "jid"); + stat = xmlnode_get_child(x, "status"); + + if (stat) + code = xmlnode_get_attrib(stat, "code"); + + if (code) { if(!strcmp(code, "301")) { /* XXX: we got banned */ - } else if(!strcmp(code, "303")) { - if (!item) - continue; - if(!(nick = xmlnode_get_attrib(item, "nick"))) - continue; + } else if(!strcmp(code, "303") && item && + (nick = xmlnode_get_attrib(item, "nick"))) { nick_change = TRUE; if(!strcmp(jid->resource, chat->handle)) { g_free(chat->handle); @@ -813,7 +830,8 @@ } purple_conv_chat_rename_user(PURPLE_CONV_CHAT(chat->conv), jid->resource, nick); jabber_chat_remove_handle(chat, jid->resource); - break; + /* TODO: Enable this when this is in a for-loop... + break; */ } else if(!strcmp(code, "307")) { /* Someone was kicked from the room */ xmlnode *reason = NULL, *actor = NULL; @@ -863,6 +881,22 @@ /* XXX: removed due to system shutdown */ } } + + /* + * Possibly another connected resource of our JID (see XEP-0045 + * v1.24 section 7.1.10) being disconnected. Should be + * distinguished by the item_jid. + * Also possibly works around bits of an Openfire bug. See + * #8319. + */ + to = xmlnode_get_attrib(packet, "to"); + if (is_our_resource && item_jid && !purple_strequal(to, item_jid)) { + /* TODO: When the above is a loop, this needs to still act + * sanely for all cases (this code is a little fragile). */ + if (!kick && !nick_change) + /* Presumably, kicks and nick changes also affect us. */ + is_our_resource = FALSE; + } } if(!nick_change) { if (is_our_resource) { @@ -1035,10 +1069,7 @@ formatted_msg = purple_status_get_attr_string(status, "message"); /* if the message is blank, then there really isn't a message */ - if(formatted_msg && !*formatted_msg) - formatted_msg = NULL; - - if(formatted_msg) + if(formatted_msg && *formatted_msg) *msg = purple_markup_strip_html(formatted_msg); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/presence.h --- a/libpurple/protocols/jabber/presence.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/presence.h Sat Jul 25 04:54:36 2009 +0000 @@ -42,7 +42,7 @@ void jabber_presence_parse(JabberStream *js, xmlnode *packet); void jabber_presence_subscription_set(JabberStream *js, const char *who, const char *type); -void jabber_presence_fake_to_self(JabberStream *js, const PurpleStatus *status); +void jabber_presence_fake_to_self(JabberStream *js, PurpleStatus *status); void purple_status_to_jabber(const PurpleStatus *status, JabberBuddyState *state, char **msg, int *priority); #endif /* PURPLE_JABBER_PRESENCE_H_ */ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/roster.c --- a/libpurple/protocols/jabber/roster.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/roster.c Sat Jul 25 04:54:36 2009 +0000 @@ -31,6 +31,19 @@ #include +/* Take a list of strings and join them with a ", " separator */ +static gchar *roster_groups_join(GSList *list) +{ + GString *out = g_string_new(NULL); + for ( ; list; list = list->next) { + out = g_string_append(out, (const char *)list->data); + if (list->next) + out = g_string_append(out, ", "); + } + + return g_string_free(out, FALSE); +} + void jabber_roster_request(JabberStream *js) { JabberIq *iq; @@ -52,35 +65,41 @@ g_slist_free(buddies); } -static void add_purple_buddies_to_groups(JabberStream *js, const char *jid, - const char *alias, GSList *groups) +static void add_purple_buddy_to_groups(JabberStream *js, const char *jid, + const char *alias, GSList *groups, const char *own_jid) { - GSList *buddies, *g2, *l; - gchar *my_bare_jid; - GList *pool = NULL; + GSList *buddies, *l; + GSList *pool = NULL; buddies = purple_find_buddies(js->gc->account, jid); - g2 = groups; - if(!groups) { if(!buddies) - g2 = g_slist_append(g2, g_strdup(_("Buddies"))); + groups = g_slist_append(groups, g_strdup(_("Buddies"))); else { + /* TODO: What should we do here? Removing the local buddies + * is wrong, but so is letting the group state get out of sync with + * the server. + */ g_slist_free(buddies); return; } } - my_bare_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); - while(buddies) { PurpleBuddy *b = buddies->data; PurpleGroup *g = purple_buddy_get_group(b); - buddies = g_slist_remove(buddies, b); + buddies = g_slist_delete_link(buddies, buddies); - if((l = g_slist_find_custom(g2, purple_group_get_name(g), (GCompareFunc)strcmp))) { + /* XMPP groups are case-sensitive, but libpurple groups are + * case-insensitive. We treat a buddy in both "Friends" and "friends" + * as only being in one group, but if we push changes about the buddy + * to the server, the buddy will be dropped from one of the groups. + * Not optimal, but better than the alternative, I think. + */ + if((l = g_slist_find_custom(groups, purple_group_get_name(g), (GCompareFunc)purple_utf8_strcasecmp))) { + /* The buddy is already on the local list. Update info. */ const char *servernick, *balias; /* Previously stored serverside / buddy-supplied alias */ @@ -89,28 +108,54 @@ /* Alias from our roster retrieval */ balias = purple_buddy_get_local_buddy_alias(b); - if(alias && (!balias || strcmp(balias, alias))) + if(alias && !purple_strequal(alias, balias)) purple_serv_got_private_alias(js->gc, jid, alias); g_free(l->data); - g2 = g_slist_delete_link(g2, l); + groups = g_slist_delete_link(groups, l); } else { - pool = g_list_prepend(pool, b); + /* This buddy isn't in the group on the server anymore */ + pool = g_slist_prepend(pool, b); } } - while(g2) { - PurpleGroup *g = purple_find_group(g2->data); + if (pool) { + GString *tmp = g_string_new(NULL); + GSList *list = pool; + for ( ; list; list = list->next) { + tmp = g_string_append(tmp, + purple_group_get_name(purple_buddy_get_group(list->data))); + if (list->next) + tmp = g_string_append(tmp, ", "); + } + + purple_debug_info("jabber", "jabber_roster_parse(): Removing %s from " + "groups: %s\n", jid, tmp->str); + g_string_free(tmp, TRUE); + } + + if (groups) { + char *tmp = roster_groups_join(groups); + purple_debug_info("jabber", "jabber_roster_parse(): Adding %s to " + "groups: %s\n", jid, tmp); + g_free(tmp); + } + + while(groups) { + PurpleGroup *g = purple_find_group(groups->data); PurpleBuddy *b = NULL; + /* If there are buddies we would otherwise delete, move them to + * the new group (instead of deleting them below) + */ if (pool) { b = pool->data; - pool = g_list_delete_link(pool, pool); + pool = g_slist_delete_link(pool, pool); } else { b = purple_buddy_new(js->gc->account, jid, alias); } if(!g) { - g = purple_group_new(g2->data); + g = purple_group_new(groups->data); purple_blist_add_group(g, NULL); } @@ -120,28 +165,21 @@ /* If we just learned about ourself, then fake our status, * because we won't be receiving a normal presence message * about ourself. */ - if(!strcmp(purple_buddy_get_name(b), my_bare_jid)) { - PurplePresence *gpresence; - PurpleStatus *status; - PurpleAccount *account; + if(!strcmp(purple_buddy_get_name(b), own_jid)) + jabber_presence_fake_to_self(js, NULL); - account = purple_connection_get_account(js->gc); - gpresence = purple_account_get_presence(account); - status = purple_presence_get_active_status(gpresence); - jabber_presence_fake_to_self(js, status); - } - - g_free(g2->data); - g2 = g_slist_delete_link(g2, g2); + g_free(groups->data); + groups = g_slist_delete_link(groups, groups); } + /* Remove this person from all the groups they're no longer in on the + * server */ while (pool) { PurpleBuddy *b = pool->data; purple_blist_remove_buddy(b); - pool = g_list_delete_link(pool, pool); + pool = g_slist_delete_link(pool, pool); } - g_free(my_bare_jid); g_slist_free(buddies); } @@ -149,28 +187,18 @@ JabberIqType type, const char *id, xmlnode *query) { xmlnode *item, *group; - - if(from) { - char *from_norm; - gboolean invalid; - - from_norm = g_strdup(jabber_normalize(js->gc->account, from)); + gchar *own_jid; - if(!from_norm) - return; - - invalid = g_utf8_collate(from_norm, - jabber_normalize(js->gc->account, - purple_account_get_username(js->gc->account))); - - g_free(from_norm); - - if(invalid) - return; + if (!jabber_is_own_account(js, from)) { + purple_debug_warning("jabber", "Received bogon roster push from %s\n", + from); + return; } js->currently_parsing_roster_push = TRUE; + own_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); + for(item = xmlnode_get_child(query, "item"); item; item = xmlnode_get_next_twin(item)) { const char *jid, *name, *subscription, *ask; @@ -188,18 +216,11 @@ continue; if(subscription) { - gint me = -1; - char *jid_norm; - const char *username; + gboolean me = FALSE; - jid_norm = g_strdup(jabber_normalize(js->gc->account, jid)); - username = purple_account_get_username(js->gc->account); - me = g_utf8_collate(jid_norm, - jabber_normalize(js->gc->account, - username)); - g_free(jid_norm); + me = g_str_equal(own_jid, jabber_normalize(js->gc->account, jid)); - if(me == 0) + if(me) jb->subscription = JABBER_SUB_BOTH; else if(!strcmp(subscription, "none")) jb->subscription = JABBER_SUB_NONE; @@ -211,20 +232,9 @@ jb->subscription = JABBER_SUB_BOTH; else if(!strcmp(subscription, "remove")) jb->subscription = JABBER_SUB_REMOVE; - /* XXX: if subscription is now "from" or "none" we need to - * fake a signoff, since we won't get any presence from them - * anymore */ - /* YYY: I was going to use this, but I'm not sure it's necessary - * anymore, but it's here in case it is. */ - /* - if ((jb->subscription & JABBER_SUB_FROM) || - (jb->subscription & JABBER_SUB_NONE)) { - purple_prpl_got_user_status(js->gc->account, jid, "offline", NULL); - } - */ } - if(ask && !strcmp(ask, "subscribe")) + if(purple_strequal(ask, "subscribe")) jb->subscription |= JABBER_SUB_PENDING; else jb->subscription &= ~JABBER_SUB_PENDING; @@ -233,44 +243,44 @@ remove_purple_buddies(js, jid); } else { GSList *groups = NULL; + gboolean seen_empty = FALSE; if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) if (!jabber_google_roster_incoming(js, item)) continue; for(group = xmlnode_get_child(item, "group"); group; group = xmlnode_get_next_twin(group)) { - char *group_name; - - if(!(group_name = xmlnode_get_data(group))) - group_name = g_strdup(""); + char *group_name = xmlnode_get_data(group); - if (g_slist_find_custom(groups, group_name, (GCompareFunc)purple_utf8_strcasecmp) == NULL) - groups = g_slist_append(groups, group_name); - else - g_free(group_name); + if (!group_name && !seen_empty) { + group_name = g_strdup(""); + seen_empty = TRUE; + } + + groups = g_slist_prepend(groups, group_name); } - add_purple_buddies_to_groups(js, jid, name, groups); + + add_purple_buddy_to_groups(js, jid, name, groups, own_jid); } } + g_free(own_jid); js->currently_parsing_roster_push = FALSE; /* if we're just now parsing the roster for the first time, - * then now would be the time to declare ourselves connected and - * send our initial presence */ - if(!js->roster_parsed) { - js->roster_parsed = TRUE; - jabber_presence_send(js, TRUE); + * then now would be the time to declare ourselves connected. + */ + if (js->state != JABBER_STREAM_CONNECTED) jabber_stream_set_state(js, JABBER_STREAM_CONNECTED); - } } +/* jabber_roster_update frees the GSList* passed in */ static void jabber_roster_update(JabberStream *js, const char *name, - GSList *grps) + GSList *groups) { PurpleBuddy *b; PurpleGroup *g; - GSList *groups = NULL, *l; + GSList *l; JabberIq *iq; xmlnode *query, *item, *group; const char *balias; @@ -281,23 +291,15 @@ if(!(b = purple_find_buddy(js->gc->account, name))) return; - if(grps) { - GString *out = g_string_new(NULL); - groups = grps; + if (groups) { + char *tmp = roster_groups_join(groups); - for (l = groups; l; l = l->next) { - out = g_string_append(out, (const char *)l->data); - if (l->next) - out = g_string_append(out, ", "); - } - - purple_debug_info("jabber", "jabber_roster_update(%s): [Source: grps]: groups: %s\n", - name, out->str); - g_string_free(out, TRUE); - + purple_debug_info("jabber", "jabber_roster_update(%s): [Source: " + "groups]: groups: %s\n", name, tmp); + g_free(tmp); } else { GSList *buddies = purple_find_buddies(js->gc->account, name); - GString *out = g_string_new(NULL); + char *tmp; if(!buddies) return; @@ -307,15 +309,11 @@ groups = g_slist_append(groups, (char *)purple_group_get_name(g)); buddies = g_slist_remove(buddies, b); } - for (l = groups; l; l = l->next) { - out = g_string_append(out, (const char *)l->data); - if (l->next) - out = g_string_append(out, ", "); - } + tmp = roster_groups_join(groups); purple_debug_info("jabber", "jabber_roster_update(%s): [Source: local blist]: groups: %s\n", - name, out->str); - g_string_free(out, TRUE); + name, tmp); + g_free(tmp); } iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:roster"); @@ -333,8 +331,7 @@ xmlnode_insert_data(group, l->data, -1); } - if(!grps) - g_slist_free(groups); + g_slist_free(groups); if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) { jabber_google_roster_outgoing(js, query, item); @@ -351,10 +348,11 @@ char *who; JabberBuddy *jb; JabberBuddyResource *jbr; - char *my_bare_jid; + char *own_jid; const char *name; - if(!js->roster_parsed) + /* If we haven't received the roster yet, ignore any adds */ + if (js->state != JABBER_STREAM_CONNECTED) return; name = purple_buddy_get_name(buddy); @@ -368,14 +366,9 @@ jabber_roster_update(js, who, NULL); - my_bare_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); - if(!strcmp(who, my_bare_jid)) { - PurplePresence *gpresence; - PurpleStatus *status; - - gpresence = purple_account_get_presence(js->gc->account); - status = purple_presence_get_active_status(gpresence); - jabber_presence_fake_to_self(js, status); + own_jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); + if (g_str_equal(who, own_jid)) { + jabber_presence_fake_to_self(js, NULL); } else if(!jb || !(jb->subscription & JABBER_SUB_TO)) { jabber_presence_subscription_set(js, who, "subscribe"); } else if((jbr =jabber_buddy_find_resource(jb, NULL))) { @@ -384,7 +377,7 @@ "priority", jbr->priority, jbr->status ? "message" : NULL, jbr->status, NULL); } - g_free(my_bare_jid); + g_free(own_jid); g_free(who); } @@ -429,7 +422,6 @@ name, old_group, new_group); jabber_roster_update(gc->proto_data, name, groups); - g_slist_free(groups); } void jabber_roster_group_rename(PurpleConnection *gc, const char *old_name, @@ -465,7 +457,6 @@ purple_buddy_get_name(buddy), purple_group_get_name(group)); jabber_roster_update(gc->proto_data, name, groups); - g_slist_free(groups); } else { JabberIq *iq = jabber_iq_new_query(gc->proto_data, JABBER_IQ_SET, "jabber:iq:roster"); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/jabber/si.c --- a/libpurple/protocols/jabber/si.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/jabber/si.c Sat Jul 25 04:54:36 2009 +0000 @@ -53,9 +53,9 @@ char *iq_id; enum { - STREAM_METHOD_UNKNOWN = 0, + STREAM_METHOD_UNKNOWN = 0, STREAM_METHOD_BYTESTREAMS = 2 << 1, - STREAM_METHOD_IBB = 2 << 2, + STREAM_METHOD_IBB = 2 << 2, STREAM_METHOD_UNSUPPORTED = 2 << 31 } stream_method; @@ -1390,6 +1390,31 @@ static void jabber_si_xfer_request_denied(PurpleXfer *xfer) { + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + JabberStream *js = jsx->js; + + /* + * TODO: It's probably an error if jsx->iq_id == NULL. g_return_if_fail + * might be warranted. + */ + if (jsx->iq_id && !jsx->accepted) { + JabberIq *iq; + xmlnode *error, *child; + iq = jabber_iq_new(js, JABBER_IQ_ERROR); + xmlnode_set_attrib(iq->node, "to", xfer->who); + jabber_iq_set_id(iq, jsx->iq_id); + + error = xmlnode_new_child(iq->node, "error"); + xmlnode_set_attrib(error, "type", "cancel"); + child = xmlnode_new_child(error, "forbidden"); + xmlnode_set_namespace(child, "urn:ietf:params:xml:ns:xmpp-stanzas"); + child = xmlnode_new_child(error, "text"); + xmlnode_set_namespace(child, "urn:ietf:params:xml:ns:xmpp-stanzas"); + xmlnode_insert_data(child, "Offer Declined", -1); + + jabber_iq_send(iq); + } + jabber_si_xfer_free(xfer); purple_debug(PURPLE_DEBUG_INFO, "jabber", "in jabber_si_xfer_request_denied\n"); } @@ -1432,6 +1457,7 @@ purple_notify_error(js->gc, _("File Send Failed"), _("File Send Failed"), msg); g_free(msg); + purple_xfer_cancel_local(xfer); } } @@ -1445,13 +1471,38 @@ JabberSIXfer *jsx = xfer->data; char **who_v = g_strsplit(xfer->who, "/", 2); char *who; + JabberBuddy *jb; + JabberBuddyResource *jbr = NULL; + + jb = jabber_buddy_find(jsx->js, who_v[0], FALSE); + if (jb) { + jbr = jabber_buddy_find_resource(jb, resource); + } who = g_strdup_printf("%s/%s", who_v[0], resource); g_strfreev(who_v); g_free(xfer->who); xfer->who = who; - jabber_disco_info_do(jsx->js, who, - jabber_si_xfer_send_disco_cb, xfer); + + if (jbr) { + char *msg; + + if (jabber_resource_has_capability(jbr, XEP_0047_NAMESPACE)) + jsx->stream_method |= STREAM_METHOD_IBB; + if (jabber_resource_has_capability(jbr, "http://jabber.org/protocol/si/profile/file-transfer")) { + jabber_si_xfer_send_request(xfer); + return; + } + + msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who); + purple_notify_error(jsx->js->gc, _("File Send Failed"), + _("File Send Failed"), msg); + g_free(msg); + purple_xfer_cancel_local(xfer); + } else { + jabber_disco_info_do(jsx->js, who, + jabber_si_xfer_send_disco_cb, xfer); + } } static void resource_select_ok_cb(PurpleXfer *xfer, PurpleRequestFields *fields) @@ -1540,6 +1591,8 @@ xmlnode_set_attrib(iq->node, "to", xfer->who); if(jsx->iq_id) jabber_iq_set_id(iq, jsx->iq_id); + else + purple_debug_error("jabber", "Sending SI result with new IQ id.\n"); jsx->accepted = TRUE; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/contact.c --- a/libpurple/protocols/msn/contact.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/contact.c Sat Jul 25 04:54:36 2009 +0000 @@ -1159,7 +1159,7 @@ { MsnUserList *userlist; MsnUser *user; - gchar *body = NULL, *contact_xml; + gchar *body = NULL, *contact_xml, *invite; g_return_if_fail(passport != NULL); g_return_if_fail(groupId != NULL); @@ -1207,7 +1207,23 @@ contact_xml = g_strdup_printf(MSN_CONTACT_XML, passport); } - body = g_strdup_printf(MSN_ADD_CONTACT_GROUP_TEMPLATE, groupId, contact_xml); + if (user->invite_message) { + char *tmp; + body = g_markup_escape_text(user->invite_message, -1); + tmp = g_markup_escape_text(purple_connection_get_display_name(session->account->gc), -1); + invite = g_strdup_printf(MSN_CONTACT_INVITE_MESSAGE_XML, body, tmp); + g_free(body); + g_free(tmp); + + /* We can free this now */ + g_free(user->invite_message); + user->invite_message = NULL; + + } else { + invite = g_strdup(""); + } + + body = g_strdup_printf(MSN_ADD_CONTACT_GROUP_TEMPLATE, groupId, contact_xml, invite); state->body = xmlnode_from_str(body, -1); state->post_action = MSN_ADD_CONTACT_GROUP_SOAP_ACTION; @@ -1215,6 +1231,7 @@ state->cb = msn_add_contact_to_group_read_cb; msn_contact_request(state); + g_free(invite); g_free(contact_xml); g_free(body); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/contact.h --- a/libpurple/protocols/msn/contact.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/contact.h Sat Jul 25 04:54:36 2009 +0000 @@ -232,6 +232,17 @@ ""\ "" +#define MSN_CONTACT_INVITE_MESSAGE_XML \ + ""\ + ""\ + ""\ + "MSN.IM.InviteMessage"\ + "%s"\ + ""\ + ""\ + "%s"\ + "" + #define MSN_ADD_CONTACT_TEMPLATE ""\ "true"\ "true"\ ""\ + "%s"\ ""\ ""\ "" diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/httpconn.c --- a/libpurple/protocols/msn/httpconn.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/httpconn.c Sat Jul 25 04:54:36 2009 +0000 @@ -161,10 +161,9 @@ memcpy(body, body_start, body_len); body[body_len] = '\0'; -#ifdef MSN_DEBUG_HTTP - purple_debug_misc("msn", "Incoming HTTP buffer (header): {%s}\n", - header); -#endif + if (purple_debug_is_verbose()) + purple_debug_misc("msn", "Incoming HTTP buffer (header): {%s}\n", + header); /* Now we should be able to process the data. */ if ((s = purple_strcasestr(header, "X-MSN-Messenger: ")) != NULL) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/msg.c --- a/libpurple/protocols/msn/msg.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/msg.c Sat Jul 25 04:54:36 2009 +0000 @@ -33,9 +33,8 @@ msg = g_new0(MsnMessage, 1); msg->type = type; -#ifdef MSN_DEBUG_MSG - purple_debug_info("msn", "message new (%p)(%d)\n", msg, type); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "message new (%p)(%d)\n", msg, type); msg->attr_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); @@ -57,9 +56,8 @@ return; } -#ifdef MSN_DEBUG_MSG - purple_debug_info("msn", "message destroy (%p)\n", msg); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "message destroy (%p)\n", msg); g_free(msg->remote_user); g_free(msg->body); @@ -79,9 +77,8 @@ msg->ref_count++; -#ifdef MSN_DEBUG_MSG - purple_debug_info("msn", "message ref (%p)[%" G_GSIZE_FORMAT "]\n", msg, msg->ref_count); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "message ref (%p)[%" G_GSIZE_FORMAT "]\n", msg, msg->ref_count); return msg; } @@ -94,9 +91,8 @@ msg->ref_count--; -#ifdef MSN_DEBUG_MSG - purple_debug_info("msn", "message unref (%p)[%" G_GSIZE_FORMAT "]\n", msg, msg->ref_count); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "message unref (%p)[%" G_GSIZE_FORMAT "]\n", msg, msg->ref_count); if (msg->ref_count == 0) { @@ -356,7 +352,8 @@ msg->body[msg->body_len] = '\0'; } - if (msg->charset == NULL) { + if ((!content_type || !strcmp(content_type, "text/plain")) + && msg->charset == NULL) { char *body = g_convert(msg->body, msg->body_len, "UTF-8", "ISO-8859-1", NULL, &msg->body_len, NULL); g_free(msg->body); @@ -774,8 +771,7 @@ g_string_append_printf(str, "SUB ID: %u\r\n", msg->msnslp_header.ack_sub_id); g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", msg->msnslp_header.ack_size); -#ifdef MSN_DEBUG_SLP_VERBOSE - if (body != NULL) + if (purple_debug_is_verbose() && body != NULL) { if (text_body) { @@ -799,7 +795,6 @@ g_string_append(str, "\r\n"); } } -#endif g_string_append_printf(str, "Footer: %u\r\n", msg->msnslp_footer.value); } @@ -948,6 +943,91 @@ } } +static void +datacast_inform_user(MsnSwitchBoard *swboard, const char *who, + const char *msg, const char *filename) +{ + char *username, *str; + PurpleAccount *account; + PurpleBuddy *b; + + account = swboard->session->account; + + if ((b = purple_find_buddy(account, who)) != NULL) + username = g_markup_escape_text(purple_buddy_get_alias(b), -1); + else + username = g_markup_escape_text(who, -1); + str = g_strdup_printf(msg, username, filename); + g_free(username); + + if (swboard->conv == NULL) { + if (swboard->current_users > 1) + swboard->conv = purple_find_chat(account->gc, swboard->chat_id); + else { + swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, + who, account); + if (swboard->conv == NULL) + swboard->conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who); + } + } + swboard->flag |= MSN_SB_FLAG_IM; + + purple_conversation_write(swboard->conv, NULL, str, PURPLE_MESSAGE_SYSTEM, time(NULL)); + g_free(str); + +} + +/* TODO: Make these not be such duplicates of each other */ +static void +got_wink_cb(MsnSlpCall *slpcall, const guchar *data, gsize size) +{ + FILE *f; + char *path = NULL; + const char *who = slpcall->slplink->remote_user; + purple_debug_info("msn", "Received wink from %s\n", who); + + if ((f = purple_mkstemp(&path, TRUE))) { + fwrite(data, size, 1, f); + fclose(f); + datacast_inform_user(slpcall->slplink->swboard, + who, + _("%s sent a wink. Click here to play it"), + path); + } else { + purple_debug_error("msn", "Couldn\'t create temp file to store wink\n"); + datacast_inform_user(slpcall->slplink->swboard, + who, + _("%s sent a wink, but it could not be saved"), + NULL); + } + g_free(path); +} + +static void +got_voiceclip_cb(MsnSlpCall *slpcall, const guchar *data, gsize size) +{ + FILE *f; + char *path = NULL; + const char *who = slpcall->slplink->remote_user; + purple_debug_info("msn", "Received voice clip from %s\n", who); + + if ((f = purple_mkstemp(&path, TRUE))) { + fwrite(data, size, 1, f); + fclose(f); + datacast_inform_user(slpcall->slplink->swboard, + who, + _("%s sent a voice clip. Click here to play it"), + path); + } else { + purple_debug_error("msn", "Couldn\'t create temp file to store sound\n"); + datacast_inform_user(slpcall->slplink->swboard, + who, + _("%s sent a voice clip, but it could not be saved"), + NULL); + } + g_free(path); +} + void msn_datacast_msg(MsnCmdProc *cmdproc, MsnMessage *msg) { @@ -981,9 +1061,42 @@ } else if (!strcmp(id, "2")) { /* Wink */ + MsnSession *session; + MsnSlpLink *slplink; + MsnObject *obj; + const char *who; + const char *data; + + session = cmdproc->session; + + data = g_hash_table_lookup(body, "Data"); + obj = msn_object_new_from_string(data); + who = msn_object_get_creator(obj); + + slplink = msn_session_get_slplink(session, who); + msn_slplink_request_object(slplink, data, got_wink_cb, NULL, obj); + + msn_object_destroy(obj); + } else if (!strcmp(id, "3")) { /* Voiceclip */ + MsnSession *session; + MsnSlpLink *slplink; + MsnObject *obj; + const char *who; + const char *data; + + session = cmdproc->session; + + data = g_hash_table_lookup(body, "Data"); + obj = msn_object_new_from_string(data); + who = msn_object_get_creator(obj); + + slplink = msn_session_get_slplink(session, who); + msn_slplink_request_object(slplink, data, got_voiceclip_cb, NULL, obj); + + msn_object_destroy(obj); } else if (!strcmp(id, "4")) { /* Action */ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/msn.c Sat Jul 25 04:54:36 2009 +0000 @@ -92,6 +92,13 @@ MsnObject *obj; } MsnEmoticon; +typedef struct +{ + PurpleConnection *pc; + PurpleBuddy *buddy; + PurpleGroup *group; +} MsnAddReqData; + static const char * msn_normalize(const PurpleAccount *account, const char *str) { @@ -180,9 +187,9 @@ cmdproc = session->notification->cmdproc; account = purple_connection_get_account(gc); - if(entry && strlen(entry)) { + if(entry && *entry) { tmp = botch_utf(entry, strlen(entry), &dummy); - alias = purple_url_encode(tmp); + alias = purple_url_encode(g_strstrip(tmp)); g_free(tmp); } else @@ -696,12 +703,8 @@ if (title && *title) { const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM); - media = g_strdup_printf("%s%s%s%s%s%s", title, - (artist && *artist) ? " - " : "", - (artist && *artist) ? artist : "", - (album && *album) ? " (" : "", - (album && *album) ? album : "", - (album && *album) ? ")" : ""); + media = purple_util_format_song_info(title, artist, album, NULL); + return media; } else if (game && *game) media = g_strdup_printf("Playing %s", game); @@ -1418,40 +1421,64 @@ MsnNetwork network, MsnUser *user) { - MsnUserList *userlist = session->userlist; - MsnUser *user2; char *group; g_return_if_fail(user != NULL); group = msn_user_remove_pending_group(user); - user2 = msn_userlist_find_user(userlist, who); - if (user2 != NULL) { - /* User already in userlist, so just update it. */ + if (network != MSN_NETWORK_UNKNOWN) { + MsnUserList *userlist = session->userlist; + MsnUser *user2 = msn_userlist_find_user(userlist, who); + if (user2 != NULL) { + /* User already in userlist, so just update it. */ + msn_user_destroy(user); + user = user2; + } else { + msn_userlist_add_user(userlist, user); + } + + msn_user_set_network(user, network); + msn_userlist_add_buddy(userlist, who, group); + } + else + { + PurpleBuddy * buddy = purple_find_buddy(session->account, who); + gchar *buf; + buf = g_strdup_printf(_("Unable to add the buddy %s because the username is invalid. Usernames must be a valid email address."), who); + if (!purple_conv_present_error(who, session->account, buf)) + purple_notify_error(purple_account_get_connection(session->account), NULL, _("Unable to Add"), buf); + g_free(buf); + + /* Remove from local list */ + purple_blist_remove_buddy(buddy); msn_user_destroy(user); - user = user2; - } else { - msn_userlist_add_user(userlist, user); } - - msn_user_set_network(user, network); - msn_userlist_add_buddy(userlist, who, group); g_free(group); } static void -msn_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) +finish_auth_request(MsnAddReqData *data, char *msg) { + PurpleConnection *pc; + PurpleBuddy *buddy; + PurpleGroup *group; + PurpleAccount *account; MsnSession *session; MsnUserList *userlist; const char *who, *gname; MsnUser *user; - session = gc->proto_data; + pc = data->pc; + buddy = data->buddy; + group = data->group; + g_free(data); + + account = purple_connection_get_account(pc); + session = pc->proto_data; userlist = session->userlist; - who = msn_normalize(purple_connection_get_account(gc), purple_buddy_get_name(buddy)); - + + who = msn_normalize(account, purple_buddy_get_name(buddy)); gname = group ? purple_group_get_name(group) : NULL; purple_debug_info("msn", "Add user:%s to group:%s\n", who, gname ? gname : "(null)"); if (!session->logged_in) @@ -1468,12 +1495,14 @@ if ((user != NULL) && (user->networkid != MSN_NETWORK_UNKNOWN)) { /* We already know this buddy and their network. This function knows what to do with users already in the list and stuff... */ + msn_user_set_invite_message(user, msg); msn_userlist_add_buddy(userlist, who, gname); } else { char **tokens; char *fqy; /* We need to check the network for this buddy first */ user = msn_user_new(userlist, who, NULL); + msn_user_set_invite_message(user, msg); msn_user_set_pending_group(user, gname); msn_user_set_network(user, MSN_NETWORK_UNKNOWN); tokens = g_strsplit(who, "@", 2); @@ -1488,6 +1517,49 @@ } static void +cancel_auth_request(MsnAddReqData *data, char *msg) +{ + /* Remove from local list */ + purple_blist_remove_buddy(data->buddy); + + g_free(data); +} + +static void +msn_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) +{ + const char *bname; + MsnAddReqData *data; + + bname = purple_buddy_get_name(buddy); + + if (!purple_email_is_valid(bname)) { + gchar *buf; + buf = g_strdup_printf(_("Unable to add the buddy %s because the username is invalid. Usernames must be a valid email address."), bname); + if (!purple_conv_present_error(bname, purple_connection_get_account(gc), buf)) + purple_notify_error(gc, NULL, _("Unable to Add"), buf); + g_free(buf); + + /* Remove from local list */ + purple_blist_remove_buddy(buddy); + + return; + } + + data = g_new0(MsnAddReqData, 1); + data->pc = gc; + data->buddy = buddy; + data->group = group; + + purple_request_input(gc, NULL, _("Authorization Request Message:"), + NULL, _("Please authorize me!"), TRUE, FALSE, NULL, + _("_OK"), G_CALLBACK(finish_auth_request), + _("_Cancel"), G_CALLBACK(cancel_auth_request), + purple_connection_get_account(gc), bname, NULL, + data); +} + +static void msn_rem_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { MsnSession *session; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/msn.h --- a/libpurple/protocols/msn/msn.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/msn.h Sat Jul 25 04:54:36 2009 +0000 @@ -24,17 +24,6 @@ #ifndef _MSN_H_ #define _MSN_H_ -/* #define MSN_DEBUG_MSG 1 */ -/* #define MSN_DEBUG_SLPMSG 1 */ -/* #define MSN_DEBUG_HTTP 1 */ - -/* #define MSN_DEBUG_SLP 1 */ -/* #define MSN_DEBUG_SLP_VERBOSE 1 */ -/* #define MSN_DEBUG_SLP_FILES 1 */ - -/* #define MSN_DEBUG_NS 1 */ -/* #define MSN_DEBUG_SB 1 */ - #include "internal.h" #include "account.h" @@ -138,7 +127,7 @@ } MsnClientVerId; #define MSN_CLIENT_ID_VERSION MSN_CLIENT_VER_7_0 -#define MSN_CLIENT_ID_CAPABILITIES (MSN_CLIENT_CAP_PACKET|MSN_CLIENT_CAP_INK_GIF) +#define MSN_CLIENT_ID_CAPABILITIES (MSN_CLIENT_CAP_PACKET|MSN_CLIENT_CAP_INK_GIF|MSN_CLIENT_CAP_VOICEIM|MSN_CLIENT_CAP_WINKS) #define MSN_CLIENT_ID \ ((MSN_CLIENT_ID_VERSION << 24) | \ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/msnutils.c --- a/libpurple/protocols/msn/msnutils.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/msnutils.c Sat Jul 25 04:54:36 2009 +0000 @@ -222,7 +222,7 @@ const char *c; char *msg; char *fontface = NULL; - char fonteffect[4]; + char fonteffect[5]; char fontcolor[7]; char direction = '0'; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/notification.c Sat Jul 25 04:54:36 2009 +0000 @@ -310,9 +310,8 @@ msg = msn_message_new_from_cmd(cmdproc->session, cmd); msn_message_parse_payload(msg, payload, len, MSG_LINE_DEM, MSG_BODY_DEM); -#ifdef MSN_DEBUG_NS - msn_message_show_readable(msg, "Notification", TRUE); -#endif + if (purple_debug_is_verbose()) + msn_message_show_readable(msg, "Notification", TRUE); msn_cmdproc_process_msg(cmdproc, msg); @@ -376,9 +375,8 @@ msg = msn_message_new_from_cmd(cmdproc->session, cmd); msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM); -#ifdef MSN_DEBUG_NS - msn_message_show_readable(msg, "Notification", TRUE); -#endif + if (purple_debug_is_verbose()) + msn_message_show_readable(msg, "Notification", TRUE); gc = cmdproc->session->account->gc; passport = msg->remote_user; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/servconn.c --- a/libpurple/protocols/msn/servconn.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/servconn.c Sat Jul 25 04:54:36 2009 +0000 @@ -26,6 +26,7 @@ #include "error.h" static void read_cb(gpointer data, gint source, PurpleInputCondition cond); +static void servconn_timeout_renew(MsnServConn *servconn); /************************************************************************** * Main @@ -52,6 +53,8 @@ servconn->tx_buf = purple_circ_buffer_new(MSN_BUF_LEN); servconn->tx_handler = 0; + servconn->timeout_sec = 0; + servconn->timeout_handle = 0; servconn->fd = -1; @@ -82,6 +85,8 @@ purple_circ_buffer_destroy(servconn->tx_buf); if (servconn->tx_handler > 0) purple_input_remove(servconn->tx_handler); + if (servconn->timeout_handle > 0) + purple_input_remove(servconn->timeout_handle); msn_cmdproc_destroy(servconn->cmdproc); g_free(servconn); @@ -184,6 +189,7 @@ servconn->connect_cb(servconn); servconn->inpa = purple_input_add(servconn->fd, PURPLE_INPUT_READ, read_cb, data); + servconn_timeout_renew(servconn); } else { @@ -219,6 +225,7 @@ servconn->connected = TRUE; servconn->httpconn->virgin = TRUE; + servconn_timeout_renew(servconn); /* Someone wants to know we connected. */ servconn->connect_cb(servconn); @@ -267,6 +274,12 @@ servconn->inpa = 0; } + if (servconn->timeout_handle > 0) + { + purple_input_remove(servconn->timeout_handle); + servconn->timeout_handle = 0; + } + close(servconn->fd); servconn->rx_buf = NULL; @@ -279,6 +292,36 @@ servconn->disconnect_cb(servconn); } +static gboolean +servconn_idle_timeout_cb(MsnServConn *servconn) +{ + msn_servconn_disconnect(servconn); + servconn->timeout_handle = 0; + return FALSE; +} + +static void +servconn_timeout_renew(MsnServConn *servconn) +{ + if (servconn->timeout_handle) { + purple_input_remove(servconn->timeout_handle); + servconn->timeout_handle = 0; + } + + if (servconn->connected && servconn->timeout_sec) { + servconn->timeout_handle = purple_timeout_add_seconds( + servconn->timeout_sec, servconn_idle_timeout_cb, servconn); + } +} + +void +msn_servconn_set_idle_timeout(MsnServConn *servconn, guint seconds) +{ + servconn->timeout_sec = seconds; + if (servconn->connected) + servconn_timeout_renew(servconn); +} + static void servconn_write_cb(gpointer data, gint source, PurpleInputCondition cond) { @@ -304,6 +347,7 @@ } purple_circ_buffer_mark_read(servconn->tx_buf, ret); + servconn_timeout_renew(servconn); } gssize @@ -358,6 +402,7 @@ msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_WRITE); } + servconn_timeout_renew(servconn); return ret; } @@ -392,6 +437,7 @@ servconn->rx_len += len; msn_servconn_process_data(servconn); + servconn_timeout_renew(servconn); } void msn_servconn_process_data(MsnServConn *servconn) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/servconn.h --- a/libpurple/protocols/msn/servconn.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/servconn.h Sat Jul 25 04:54:36 2009 +0000 @@ -88,6 +88,8 @@ PurpleCircBuffer *tx_buf; guint tx_handler; + guint timeout_sec; + guint timeout_handle; void (*connect_cb)(MsnServConn *); /**< The callback to call when connecting. */ void (*disconnect_cb)(MsnServConn *); /**< The callback to call when disconnecting. */ @@ -178,4 +180,12 @@ */ void msn_servconn_process_data(MsnServConn *servconn); +/** + * Set a idle timeout fot this servconn + * + * @param servconn The servconn + * @param seconds The idle timeout in seconds + */ +void msn_servconn_set_idle_timeout(MsnServConn *servconn, guint seconds); + #endif /* _MSN_SERVCONN_H_ */ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/slp.c Sat Jul 25 04:54:36 2009 +0000 @@ -34,8 +34,6 @@ /* ms to delay between sending buddy icon requests to the server. */ #define BUDDY_ICON_DELAY 20 -/*debug SLP*/ -#define MSN_DEBUG_UD static void send_ok(MsnSlpCall *slpcall, const char *branch, const char *type, const char *content); @@ -212,10 +210,8 @@ "MSNSLP/1.0 200 OK", branch, type, content); -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP 200 OK"; slpmsg->text_body = TRUE; -#endif msn_slplink_queue_slpmsg(slplink, slpmsg); @@ -236,10 +232,8 @@ "MSNSLP/1.0 603 Decline", branch, type, content); -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP 603 Decline"; slpmsg->text_body = TRUE; -#endif msn_slplink_queue_slpmsg(slplink, slpmsg); } @@ -309,18 +303,14 @@ slpmsg->slpcall = slpcall; slpmsg->session_id = slpcall->session_id; msn_slpmsg_set_body(slpmsg, NULL, 4); -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP DATA PREP"; -#endif msn_slplink_queue_slpmsg(slplink, slpmsg); /* DATA */ slpmsg = msn_slpmsg_new(slplink); slpmsg->slpcall = slpcall; slpmsg->flags = 0x20; -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP DATA"; -#endif msn_slpmsg_set_image(slpmsg, img); msn_slplink_queue_slpmsg(slplink, slpmsg); purple_imgstore_unref(img); @@ -448,10 +438,8 @@ "\r\n"); g_free(header); -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP BYE"; slpmsg->text_body = TRUE; -#endif msn_slplink_queue_slpmsg(slplink, slpmsg); } @@ -619,10 +607,8 @@ "application/x-msnmsgr-transreqbody", content); -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP INVITE"; slpmsg->text_body = TRUE; -#endif msn_slplink_send_slpmsg(slplink, slpmsg); g_free(header); @@ -839,9 +825,8 @@ purple_conv_custom_smiley_write(conv, slpcall->data_info, data, size); purple_conv_custom_smiley_close(conv, slpcall->data_info ); } -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "Got smiley: %s\n", slpcall->data_info); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "Got smiley: %s\n", slpcall->data_info); } void @@ -963,9 +948,8 @@ g_return_if_fail(userlist != NULL); -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "Releasing buddy icon request\n"); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "Releasing buddy icon request\n"); if (userlist->buddy_icon_window > 0) { @@ -986,10 +970,10 @@ userlist->buddy_icon_window--; request_user_display(user); -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "msn_release_buddy_icon_request(): buddy_icon_window-- yields =%d\n", - userlist->buddy_icon_window); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", + "msn_release_buddy_icon_request(): buddy_icon_window-- yields =%d\n", + userlist->buddy_icon_window); } } @@ -1039,10 +1023,9 @@ userlist = user->userlist; queue = userlist->buddy_icon_requests; -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "Queueing buddy icon request for %s (buddy_icon_window = %i)\n", - user->passport, userlist->buddy_icon_window); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "Queueing buddy icon request for %s (buddy_icon_window = %i)\n", + user->passport, userlist->buddy_icon_window); g_queue_push_tail(queue, user); @@ -1062,9 +1045,8 @@ g_return_if_fail(slpcall != NULL); info = slpcall->data_info; -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "Got User Display: %s\n", slpcall->slplink->remote_user); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "Got User Display: %s\n", slpcall->slplink->remote_user); userlist = slpcall->slplink->session->userlist; account = slpcall->slplink->session->account; @@ -1090,9 +1072,8 @@ g_return_if_fail(session != NULL); -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "End User Display\n"); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "End User Display\n"); userlist = session->userlist; @@ -1150,9 +1131,8 @@ gconstpointer data = NULL; size_t len = 0; -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "Requesting our own user display\n"); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "Requesting our own user display\n"); my_obj = msn_user_get_object(session->user); @@ -1168,10 +1148,9 @@ /* Free one window slot */ session->userlist->buddy_icon_window++; -#ifdef MSN_DEBUG_UD - purple_debug_info("msn", "request_user_display(): buddy_icon_window++ yields =%d\n", - session->userlist->buddy_icon_window); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "request_user_display(): buddy_icon_window++ yields =%d\n", + session->userlist->buddy_icon_window); msn_release_buddy_icon_request(session->userlist); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/slpcall.c --- a/libpurple/protocols/msn/slpcall.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/slpcall.c Sat Jul 25 04:54:36 2009 +0000 @@ -27,8 +27,6 @@ #include "slp.h" -/* #define MSN_DEBUG_SLPCALL */ - /************************************************************************** * Main **************************************************************************/ @@ -40,9 +38,8 @@ slpcall = data; -#ifdef MSN_DEBUG_SLPCALL - purple_debug_info("msn", "slpcall_timeout: slpcall(%p)\n", slpcall); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slpcall_timeout: slpcall(%p)\n", slpcall); if (!slpcall->pending && !slpcall->progress) { @@ -64,9 +61,8 @@ slpcall = g_new0(MsnSlpCall, 1); -#ifdef MSN_DEBUG_SLPCALL - purple_debug_info("msn", "slpcall_new: slpcall(%p)\n", slpcall); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slpcall_new: slpcall(%p)\n", slpcall); slpcall->slplink = slplink; @@ -82,9 +78,8 @@ { GList *e; -#ifdef MSN_DEBUG_SLPCALL - purple_debug_info("msn", "slpcall_destroy: slpcall(%p)\n", slpcall); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slpcall_destroy: slpcall(%p)\n", slpcall); g_return_if_fail(slpcall != NULL); @@ -96,10 +91,9 @@ MsnSlpMessage *slpmsg = e->data; e = e->next; -#ifdef MSN_DEBUG_SLPCALL_VERBOSE - purple_debug_info("msn", "slpcall_destroy: trying slpmsg(%p)\n", - slpmsg); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slpcall_destroy: trying slpmsg(%p)\n", + slpmsg); if (slpmsg->slpcall == slpcall) { @@ -173,10 +167,8 @@ slpmsg = msn_slpmsg_sip_new(slpcall, 0, header, slpcall->branch, "application/x-msnmsgr-sessionreqbody", content); -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP INVITE"; slpmsg->text_body = TRUE; -#endif msn_slplink_send_slpmsg(slplink, slpmsg); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/slplink.c --- a/libpurple/protocols/msn/slplink.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/slplink.c Sat Jul 25 04:54:36 2009 +0000 @@ -65,9 +65,8 @@ slplink = g_new0(MsnSlpLink, 1); -#ifdef MSN_DEBUG_SLPLINK - purple_debug_info("msn", "slplink_new: slplink(%p)\n", slplink); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slplink_new: slplink(%p)\n", slplink); slplink->session = session; slplink->slp_seq_id = rand() % 0xFFFFFF00 + 4; @@ -87,9 +86,8 @@ { MsnSession *session; -#ifdef MSN_DEBUG_SLPLINK - purple_debug_info("msn", "slplink_destroy: slplink(%p)\n", slplink); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slplink_destroy: slplink(%p)\n", slplink); g_return_if_fail(slplink != NULL); @@ -269,9 +267,8 @@ msg->msnslp_header.length = len; } -#ifdef MSN_DEBUG_SLP - msn_message_show_readable(msg, slpmsg->info, slpmsg->text_body); -#endif + if (purple_debug_is_verbose()) + msn_message_show_readable(msg, slpmsg->info, slpmsg->text_body); #ifdef MSN_DEBUG_SLP_FILES debug_msg_to_file(msg, TRUE); @@ -441,10 +438,7 @@ slpmsg->ack_id = msg->msnslp_header.id; slpmsg->ack_sub_id = msg->msnslp_header.ack_id; slpmsg->ack_size = msg->msnslp_header.total_size; - -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP ACK"; -#endif msn_slplink_send_slpmsg(slplink, slpmsg); } @@ -459,9 +453,8 @@ slpmsg = msn_slpmsg_new(slpcall->slplink); slpmsg->slpcall = slpcall; slpmsg->flags = 0x1000030; -#ifdef MSN_DEBUG_SLP slpmsg->info = "SLP FILE"; -#endif + xfer = (PurpleXfer *)slpcall->xfer; purple_xfer_start(slpcall->xfer, 0, NULL, 0); slpmsg->fp = xfer->dest_fp; @@ -496,9 +489,8 @@ guint64 offset; gsize len; -#ifdef MSN_DEBUG_SLP - msn_slpmsg_show(msg); -#endif + if (purple_debug_is_verbose()) + msn_slpmsg_show(msg); #ifdef MSN_DEBUG_SLP_FILES debug_msg_to_file(msg, FALSE); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/slpmsg.c --- a/libpurple/protocols/msn/slpmsg.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/slpmsg.c Sat Jul 25 04:54:36 2009 +0000 @@ -36,9 +36,8 @@ slpmsg = g_new0(MsnSlpMessage, 1); -#ifdef MSN_DEBUG_SLPMSG - purple_debug_info("msn", "slpmsg new (%p)\n", slpmsg); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slpmsg new (%p)\n", slpmsg); slpmsg->slplink = slplink; @@ -56,9 +55,8 @@ g_return_if_fail(slpmsg != NULL); -#ifdef MSN_DEBUG_SLPMSG - purple_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg); slplink = slpmsg->slplink; @@ -72,13 +70,6 @@ if (slpmsg->img == NULL) g_free(slpmsg->buffer); -#ifdef MSN_DEBUG_SLP - /* - if (slpmsg->info != NULL) - g_free(slpmsg->info); - */ -#endif - for (cur = slpmsg->msgs; cur != NULL; cur = cur->next) { /* Something is pointing to this slpmsg, so we should remove that @@ -87,10 +78,6 @@ MsnMessage *msg = cur->data; -#ifdef MSN_DEBUG_SLPMSG - purple_debug_info("msn", "Unlink slpmsg callbacks.\n"); -#endif - msg->ack_cb = NULL; msg->nak_cb = NULL; msg->ack_data = NULL; @@ -132,7 +119,6 @@ slpmsg->size = purple_imgstore_get_size(img); } -#ifdef MSN_DEBUG_SLP void msn_slpmsg_show(MsnMessage *msg) { @@ -161,7 +147,6 @@ msn_message_show_readable(msg, info, text); } -#endif MsnSlpMessage * msn_slpmsg_sip_new(MsnSlpCall *slpcall, int cseq, diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/slpmsg.h --- a/libpurple/protocols/msn/slpmsg.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/slpmsg.h Sat Jul 25 04:54:36 2009 +0000 @@ -68,10 +68,8 @@ MsnMessage *msg; /**< The temporary real message that will be sent. */ #endif -#ifdef MSN_DEBUG_SLP - char *info; + const char *info; gboolean text_body; -#endif }; /** @@ -100,8 +98,6 @@ const char *content_type, const char *content); -#ifdef MSN_DEBUG_SLP void msn_slpmsg_show(MsnMessage *msg); -#endif #endif /* _MSN_SLPMSG_H_ */ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msn/switchboard.c --- a/libpurple/protocols/msn/switchboard.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msn/switchboard.c Sat Jul 25 04:54:36 2009 +0000 @@ -42,15 +42,15 @@ msn_switchboard_new(MsnSession *session) { MsnSwitchBoard *swboard; - MsnServConn *servconn; g_return_val_if_fail(session != NULL, NULL); swboard = g_new0(MsnSwitchBoard, 1); swboard->session = session; - swboard->servconn = servconn = msn_servconn_new(session, MSN_SERVCONN_SB); - swboard->cmdproc = servconn->cmdproc; + swboard->servconn = msn_servconn_new(session, MSN_SERVCONN_SB); + msn_servconn_set_idle_timeout(swboard->servconn, 60); + swboard->cmdproc = swboard->servconn->cmdproc; swboard->msg_queue = g_queue_new(); swboard->empty = TRUE; @@ -60,6 +60,9 @@ session->switches = g_list_prepend(session->switches, swboard); + if (purple_debug_is_verbose()) + purple_debug_info("msn", "switchboard new: swboard(%p)\n", swboard); + return swboard; } @@ -70,9 +73,8 @@ MsnMessage *msg; GList *l; -#ifdef MSN_DEBUG_SB - purple_debug_info("msn", "switchboard_destroy: swboard(%p)\n", swboard); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "switchboard destroy: swboard(%p)\n", swboard); g_return_if_fail(swboard != NULL); @@ -230,10 +232,9 @@ swboard->current_users++; swboard->empty = FALSE; -#ifdef MSN_DEBUG_CHAT - purple_debug_info("msn", "user=[%s], total=%d\n", user, - swboard->current_users); -#endif + if (purple_debug_is_verbose()) + purple_debug_info("msn", "user=[%s], total=%d\n", + user, swboard->current_users); if (!(swboard->flag & MSN_SB_FLAG_IM) && (swboard->conv != NULL)) { @@ -255,10 +256,6 @@ { GList *l; -#ifdef MSN_DEBUG_CHAT - purple_debug_info("msn", "[chat] Switching to chat.\n"); -#endif - #if 0 /* this is bad - it causes msn_switchboard_close to be called on the * switchboard we're in the middle of using :( */ @@ -278,18 +275,10 @@ tmp_user = l->data; -#ifdef MSN_DEBUG_CHAT - purple_debug_info("msn", "[chat] Adding [%s].\n", tmp_user); -#endif - purple_conv_chat_add_user(PURPLE_CONV_CHAT(swboard->conv), tmp_user, NULL, PURPLE_CBFLAGS_NONE, TRUE); } -#ifdef MSN_DEBUG_CHAT - purple_debug_info("msn", "[chat] We add ourselves.\n"); -#endif - purple_conv_chat_add_user(PURPLE_CONV_CHAT(swboard->conv), purple_account_get_username(account), NULL, PURPLE_CBFLAGS_NONE, TRUE); @@ -589,10 +578,10 @@ payload = msn_message_gen_payload(msg, &payload_len); -#ifdef MSN_DEBUG_SB - purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}\n", payload_len); - msn_message_show_readable(msg, "SB SEND", FALSE); -#endif + if (purple_debug_is_verbose()) { + purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}\n", payload_len); + msn_message_show_readable(msg, "SB SEND", FALSE); + } flag = msn_message_get_flag(msg); trans = msn_transaction_new(cmdproc, "MSG", "%c %" G_GSIZE_FORMAT, @@ -790,9 +779,8 @@ msn_message_parse_payload(msg, payload, len, MSG_LINE_DEM,MSG_BODY_DEM); -#ifdef MSN_DEBUG_SB - msn_message_show_readable(msg, "SB RECV", FALSE); -#endif + if (purple_debug_is_verbose()) + msn_message_show_readable(msg, "SB RECV", FALSE); g_free (msg->remote_user); msg->remote_user = g_strdup(cmd->params[0]); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/msnp9/command.c --- a/libpurple/protocols/msnp9/command.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/msnp9/command.c Sat Jul 25 04:54:36 2009 +0000 @@ -59,7 +59,6 @@ if (cmd->params != NULL) { - char *param; int c; for (c = 0; cmd->params[c]; c++); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/clientlogin.c --- a/libpurple/protocols/oscar/clientlogin.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/clientlogin.c Sat Jul 25 04:54:36 2009 +0000 @@ -45,10 +45,21 @@ #define URL_START_OSCAR_SESSION "http://api.oscar.aol.com/aim/startOSCARSession" /* - * Using clientLogin requires a developer ID. This dev ID is owned by - * the AIM account "markdoliner" + * Using clientLogin requires a developer ID. This key is for libpurple. + * It is the default key for all libpurple-based clients. AOL encourages + * UIs (especially ones with lots of users) to override this with their + * own key. This key is owned by the AIM account "markdoliner" + * + * Keys can be managed at http://developer.aim.com/manageKeys.jsp */ -#define CLIENT_KEY "ma15d7JTxbmVG-RP" +#define DEFAULT_CLIENT_KEY "ma15d7JTxbmVG-RP" + +static const char *get_client_key(OscarData *od) +{ + return oscar_get_ui_info_string( + od->icq ? "prpl-icq-clientkey" : "prpl-aim-clientkey", + DEFAULT_CLIENT_KEY); +} /** * This is similar to purple_url_encode() except that it follows @@ -276,10 +287,10 @@ /* Construct the GET parameters */ query_string = g_strdup_printf("a=%s" "&f=xml" - "&k=" CLIENT_KEY - "&ts=%zu" + "&k=%s" + "&ts=%" PURPLE_TIME_T_MODIFIER "&useTLS=0", - oscar_auth_url_encode(token), hosttime); + oscar_auth_url_encode(token), get_client_key(od), hosttime); signature = generate_signature("GET", URL_START_OSCAR_SESSION, query_string, session_key); url = g_strdup_printf(URL_START_OSCAR_SESSION "?%s&sig_sha256=%s", @@ -505,7 +516,7 @@ /* Construct the body of the HTTP POST request */ body = g_string_new(""); - g_string_append_printf(body, "devId=" CLIENT_KEY); + g_string_append_printf(body, "devId=%s", get_client_key(od)); g_string_append_printf(body, "&f=xml"); g_string_append_printf(body, "&pwd=%s", oscar_auth_url_encode(password)); g_string_append_printf(body, "&s=%s", oscar_auth_url_encode(username)); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/family_auth.c --- a/libpurple/protocols/oscar/family_auth.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/family_auth.c Sat Jul 25 04:54:36 2009 +0000 @@ -129,7 +129,6 @@ GSList *tlvlist = NULL; int passwdlen; guint8 *password_encoded; - const char *clientstring; guint32 distrib; passwdlen = strlen(password); @@ -141,19 +140,21 @@ aim_encode_password(password, password_encoded); - clientstring = purple_prefs_get_string("/plugins/prpl/oscar/clientstring"); - if (clientstring == NULL) - clientstring = ci->clientstring; - distrib = purple_prefs_get_int("/plugins/prpl/oscar/distid"); - if ((gint32)distrib == -1) - distrib = ci->distrib; + distrib = oscar_get_ui_info_int( + od->icq ? "prpl-icq-distid" : "prpl-aim-distid", + ci->distrib); byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */ aim_tlvlist_add_str(&tlvlist, 0x0001, sn); aim_tlvlist_add_raw(&tlvlist, 0x0002, passwdlen, password_encoded); - if (clientstring) + if (ci->clientstring != NULL) + aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring); + else { + gchar *clientstring = oscar_get_clientstring(); aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring); + g_free(clientstring); + } aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid); aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major); aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor); @@ -219,7 +220,6 @@ guint8 digest[16]; aim_snacid_t snacid; size_t password_len; - const char *clientstring; guint32 distrib; if (!ci || !sn || !password) @@ -247,12 +247,9 @@ aim_encode_password_md5(password, password_len, key, digest); - clientstring = purple_prefs_get_string("/plugins/prpl/oscar/clientstring"); - if (clientstring == NULL) - clientstring = ci->clientstring; - distrib = purple_prefs_get_int("/plugins/prpl/oscar/distid"); - if ((gint32)distrib == -1) - distrib = ci->distrib; + distrib = oscar_get_ui_info_int( + od->icq ? "prpl-icq-distid" : "prpl-aim-distid", + ci->distrib); aim_tlvlist_add_raw(&tlvlist, 0x0025, 16, digest); @@ -260,8 +257,13 @@ aim_tlvlist_add_noval(&tlvlist, 0x004c); #endif - if (clientstring) + if (ci->clientstring != NULL) + aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring); + else { + gchar *clientstring = oscar_get_clientstring(); aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring); + g_free(clientstring); + } aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid); aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major); aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/family_icbm.c --- a/libpurple/protocols/oscar/family_icbm.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/family_icbm.c Sat Jul 25 04:54:36 2009 +0000 @@ -221,7 +221,11 @@ params.maxrecverwarn = byte_stream_get16(bs); params.minmsginterval = byte_stream_get32(bs); - params.flags = 0x0000000b | AIM_IMPARAM_FLAG_SUPPORT_OFFLINEMSGS; + params.flags = AIM_IMPARAM_FLAG_CHANNEL_MSGS_ALLOWED + | AIM_IMPARAM_FLAG_MISSED_CALLS_ENABLED + | AIM_IMPARAM_FLAG_EVENTS_ALLOWED + | AIM_IMPARAM_FLAG_SMS_SUPPORTED + | AIM_IMPARAM_FLAG_OFFLINE_MSGS_ALLOWED; params.maxmsglen = 8000; params.minmsginterval = 0; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/flap_connection.c --- a/libpurple/protocols/oscar/flap_connection.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/flap_connection.c Sat Jul 25 04:54:36 2009 +0000 @@ -83,8 +83,13 @@ byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */ aim_tlvlist_add_raw(&tlvlist, 0x0006, length, chipsahoy); - if (ci->clientstring) + if (ci->clientstring != NULL) aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring); + else { + gchar *clientstring = oscar_get_clientstring(); + aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring); + g_free(clientstring); + } aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major); aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor); aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point); @@ -500,7 +505,6 @@ g_free(conn->error_message); g_free(conn->cookie); - g_free(conn->ssl_cert_cn); /* * Free conn->internal, if necessary diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.c Sat Jul 25 04:54:36 2009 +0000 @@ -1274,32 +1274,6 @@ } static void -ssl_proxy_conn_established_cb(gpointer data, gint source, const gchar *error_message) -{ - OscarData *od; - PurpleConnection *gc; - PurpleAccount *account; - FlapConnection *conn; - - conn = data; - od = conn->od; - gc = od->gc; - account = purple_connection_get_account(gc); - - conn->connect_data = NULL; - - if (source < 0) - { - connection_common_error_cb(conn, error_message); - return; - } - - conn->gsc = purple_ssl_connect_with_host_fd(account, source, - ssl_connection_established_cb, ssl_connection_error_cb, - conn->ssl_cert_cn, conn); -} - -static void flap_connection_established_bos(OscarData *od, FlapConnection *conn) { PurpleConnection *gc = od->gc; @@ -1701,10 +1675,9 @@ } if (in != '\n') { char buf[256]; - GHashTable *ui_info = purple_core_get_ui_info(); g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. " "If so, check %s for updates."), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_notify_warning(pos->gc, NULL, _("Unable to get a valid AIM login hash."), buf); @@ -1743,10 +1716,9 @@ pos->fd = source; if (source < 0) { - GHashTable *ui_info = purple_core_get_ui_info(); buf = g_strdup_printf(_("You may be disconnected shortly. " "If so, check %s for updates."), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_notify_warning(pos->gc, NULL, _("Unable to get a valid AIM login hash."), buf); @@ -1842,13 +1814,12 @@ straight_to_hell, pos) == NULL) { char buf[256]; - GHashTable *ui_info = purple_core_get_ui_info(); g_free(pos->modname); g_free(pos); g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. " "If so, check %s for updates."), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_notify_warning(pos->gc, NULL, _("Unable to get a valid login hash."), buf); @@ -1933,9 +1904,8 @@ case 0x1c: { /* client too old */ - GHashTable *ui_info = purple_core_get_ui_info(); g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, buf); break; } @@ -1975,12 +1945,13 @@ if (od->use_ssl) { /* - * This shouldn't be hardcoded except that the server isn't sending - * us a name to use for comparing the certificate common name. + * This shouldn't be hardcoded to "bos.oscar.aol.com" except that + * the server isn't sending us a name to use for comparing the + * certificate common name. */ - newconn->ssl_cert_cn = g_strdup("bos.oscar.aol.com"); - newconn->connect_data = purple_proxy_connect(NULL, account, host, port, - ssl_proxy_conn_established_cb, newconn); + newconn->gsc = purple_ssl_connect_with_ssl_cn(account, host, port, + ssl_connection_established_cb, ssl_connection_error_cb, + "bos.oscar.aol.com", newconn); } else { @@ -1989,7 +1960,7 @@ } g_free(host); - if (newconn->connect_data == NULL) + if (newconn->gsc == NULL && newconn->connect_data == NULL) { purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("Unable to connect")); return 0; @@ -2146,15 +2117,9 @@ if (redir->use_ssl) { - /* - * TODO: It should be possible to specify a certificate common name - * distinct from the host we're passing to purple_ssl_connect. The - * way to work around that is to use purple_proxy_connect + - * purple_ssl_connect_with_host_fd - */ - newconn->ssl_cert_cn = g_strdup(redir->ssl_cert_cn); - newconn->connect_data = purple_proxy_connect(NULL, account, host, port, - ssl_proxy_conn_established_cb, newconn); + newconn->gsc = purple_ssl_connect_with_ssl_cn(account, host, port, + ssl_connection_established_cb, ssl_connection_error_cb, + redir->ssl_cert_cn, newconn); } else { @@ -7135,15 +7100,6 @@ purple_prefs_add_none("/plugins/prpl/oscar"); purple_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE); - /* - * These two preferences will normally not be changed. UIs can optionally - * use them to override these two version fields which are sent to the - * server when logging in. AOL requested this change to allow clients to - * use custom values. - */ - purple_prefs_add_string("/plugins/prpl/oscar/clientstring", NULL); - purple_prefs_add_int("/plugins/prpl/oscar/distid", -1); - purple_prefs_remove("/plugins/prpl/oscar/show_idle"); purple_prefs_remove("/plugins/prpl/oscar/always_use_rv_proxy"); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/oscar.h --- a/libpurple/protocols/oscar/oscar.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.h Sat Jul 25 04:54:36 2009 +0000 @@ -307,23 +307,25 @@ /* * We need to use the major-minor-micro versions from the official * AIM and ICQ programs here or AOL won't let us use certain features. + * + * 0x00000611 is the distid given to us by AOL for use as the default + * libpurple distid. */ - #define CLIENTINFO_PURPLE_AIM { \ - "Purple/" VERSION, \ + NULL, \ 0x0109, \ 0x0005, 0x0001, \ 0x0000, 0x0bdc, \ - 0x000000d2, \ + 0x00000611, \ "us", "en", \ } #define CLIENTINFO_PURPLE_ICQ { \ - "Purple/" VERSION, \ + NULL, \ 0x010a, \ 0x0014, 0x0034, \ 0x0000, 0x0c18, \ - 0x0000043d, \ + 0x00000611, \ "us", "en", \ } @@ -427,7 +429,6 @@ guint16 cookielen; guint8 *cookie; gpointer new_conn_data; - gchar *ssl_cert_cn; int fd; PurpleSslConnection *gsc; @@ -730,23 +731,27 @@ #define AIM_TRANSFER_DENY_DECLINE 0x0001 #define AIM_TRANSFER_DENY_NOTACCEPTING 0x0002 -#define AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED 0x00000001 -#define AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED 0x00000002 -#define AIM_IMPARAM_FLAG_SUPPORT_OFFLINEMSGS 0x00000100 +#define AIM_IMPARAM_FLAG_CHANNEL_MSGS_ALLOWED 0x00000001 +#define AIM_IMPARAM_FLAG_MISSED_CALLS_ENABLED 0x00000002 +#define AIM_IMPARAM_FLAG_EVENTS_ALLOWED 0x00000008 +#define AIM_IMPARAM_FLAG_SMS_SUPPORTED 0x00000010 +#define AIM_IMPARAM_FLAG_OFFLINE_MSGS_ALLOWED 0x00000100 /* This is what the server will give you if you don't set them yourself. */ +/* This is probably out of date. */ #define AIM_IMPARAM_DEFAULTS { \ 0, \ - AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED, \ + AIM_IMPARAM_FLAG_CHANNEL_MSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSED_CALLS_ENABLED, \ 512, /* !! Note how small this is. */ \ (99.9)*10, (99.9)*10, \ 1000 /* !! And how large this is. */ \ } /* This is what most AIM versions use. */ +/* This is probably out of date. */ #define AIM_IMPARAM_REASONABLE { \ 0, \ - AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED, \ + AIM_IMPARAM_FLAG_CHANNEL_MSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSED_CALLS_ENABLED, \ 8000, \ (99.9)*10, (99.9)*10, \ 0 \ @@ -1528,6 +1533,10 @@ (((*((buf)+2)) << 16) & 0x00ff0000) + \ (((*((buf)+3)) << 24) & 0xff000000)) +int oscar_get_ui_info_int(const char *str, int default_value); +const char *oscar_get_ui_info_string(const char *str, const char *default_value); +gchar *oscar_get_clientstring(void); + guint16 aimutil_iconsum(const guint8 *buf, int buflen); int aimutil_tokslen(char *toSearch, int theindex, char dl); int aimutil_itemcnt(char *toSearch, char dl); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/peer.c --- a/libpurple/protocols/oscar/peer.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/peer.c Sat Jul 25 04:54:36 2009 +0000 @@ -710,9 +710,18 @@ } else if (conn->type == OSCAR_CAPABILITY_SENDFILE) { + const guchar *ip_atoi = purple_network_ip_atoi(listener_ip); + if (ip_atoi == NULL) { + purple_debug_error("oscar", "Cannot send file. IP %s failed atoi.\n" + "Other possibly useful information: fd = %d, port = %d\n", + listener_ip ? listener_ip : "(null!)", conn->listenerfd, + listener_port); + purple_xfer_cancel_local(conn->xfer); + return; + } aim_im_sendch2_sendfile_requestdirect(od, conn->cookie, conn->bn, - purple_network_ip_atoi(listener_ip), + ip_atoi, listener_port, ++conn->lastrequestnumber, (const gchar *)conn->xferdata.name, conn->xferdata.size, conn->xferdata.totfiles); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/oscar/util.c --- a/libpurple/protocols/oscar/util.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/oscar/util.c Sat Jul 25 04:54:36 2009 +0000 @@ -26,12 +26,53 @@ */ #include "oscar.h" + +#include "core.h" + #include #ifdef _WIN32 #include "win32dep.h" #endif +int oscar_get_ui_info_int(const char *str, int default_value) +{ + GHashTable *ui_info; + + ui_info = purple_core_get_ui_info(); + if (ui_info != NULL) { + gpointer value; + if (g_hash_table_lookup_extended(ui_info, str, NULL, &value)) + return GPOINTER_TO_INT(value); + } + + return default_value; +} + +const char *oscar_get_ui_info_string(const char *str, const char *default_value) +{ + GHashTable *ui_info; + const char *value = NULL; + + ui_info = purple_core_get_ui_info(); + if (ui_info != NULL) + value = g_hash_table_lookup(ui_info, str); + if (value == NULL) + value = default_value; + + return value; +} + +gchar *oscar_get_clientstring(void) +{ + const char *name, *version; + + name = oscar_get_ui_info_string("name", "Purple"); + version = oscar_get_ui_info_string("version", VERSION); + + return g_strdup_printf("%s/%s", name, version);; +} + /* * Tokenizing functions. Used to portably replace strtok/sep. * -- DMP. diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/qq/Makefile.am --- a/libpurple/protocols/qq/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/qq/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -71,6 +71,10 @@ endif +# QQ_BUDDY_ICON_DIR is the path where a bunch of stock icons can be +# places for users to choose from when setting their buddy icon. We +# don't distribute those icons ourselves because of possibly copyright +# concerns, but distributions might want to put icons here. AM_CPPFLAGS = \ -I$(top_srcdir)/libpurple \ -I$(top_builddir)/libpurple \ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/qq/buddy_info.c --- a/libpurple/protocols/qq/buddy_info.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/qq/buddy_info.c Sat Jul 25 04:54:36 2009 +0000 @@ -531,13 +531,11 @@ } /* - * Hmm, this function is a bit weird. - * 1. The pref "/plugins/prpl/qq/icon_dir" doesn't exist - * 2. QQ_BUDDY_ICON_DIR is set in Makefile.am, but it's set to a - * directory that doesn't exist - * 3. Why would the icon path be different for Windows and Linux? - * 4. Why do we use this in the first place? Setting your icon - * should go through the account editor. + * This function seems to let people set their buddy icon, but it restricts + * them to using a small list of stock icons. Wouldn't it make more sense + * to use libpurple's normal icon setting stuff? + * + * Also it would be nice to unify the icon_dir code for Windows and Linux. */ gchar *qq_get_icon_path(gchar *icon_name) { @@ -551,6 +549,13 @@ } #endif + /* + * TODO: The QQ protocol plugin should probably call + * purple_prefs_add_string() at startup to initialize this + * preference. It is used to allow users or distributions + * to specify this directory. We don't include these icons + * with libpurple because of possible copyright concerns. + */ icon_dir = purple_prefs_get_string("/plugins/prpl/qq/icon_dir"); if ( icon_dir == NULL || strlen(icon_dir) == 0) { #ifdef _WIN32 diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/qq/buddy_opt.c --- a/libpurple/protocols/qq/buddy_opt.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/qq/buddy_opt.c Sat Jul 25 04:54:36 2009 +0000 @@ -1012,7 +1012,6 @@ guint16 flag1, flag2; g_return_if_fail(data != NULL && data_len >= 5); - g_return_if_fail(uid != 0); qd = (qq_data *) gc->proto_data; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/qq/group_im.c --- a/libpurple/protocols/qq/group_im.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/qq/group_im.c Sat Jul 25 04:54:36 2009 +0000 @@ -52,6 +52,7 @@ gchar *topic_utf8; g_return_val_if_fail(rmd != NULL, NULL); + g_return_val_if_fail(rmd->title_utf8, NULL); qd = (qq_data *) gc->proto_data; conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/silc/silc.c --- a/libpurple/protocols/silc/silc.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/silc/silc.c Sat Jul 25 04:54:36 2009 +0000 @@ -535,7 +535,7 @@ return; } purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, - _("Unable to not load SILC key pair")); + _("Unable to load SILC key pair")); gc->proto_data = NULL; silc_free(sg); return; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/Makefile.am --- a/libpurple/protocols/yahoo/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -33,7 +33,7 @@ if STATIC_YAHOO st = -DPURPLE_STATIC_PRPL -noinst_LTLIBRARIES = libyahoo.la +noinst_LTLIBRARIES = libymsg.la libymsg_la_SOURCES = $(YAHOOSOURCES) libyahoo.c libyahoojp.c libymsg_la_CFLAGS = $(AM_CFLAGS) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/libymsg.c --- a/libpurple/protocols/yahoo/libymsg.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/libymsg.c Sat Jul 25 04:54:36 2009 +0000 @@ -1143,7 +1143,7 @@ if (add_req->protocol == 2) who += 4; - pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "ssiii", 1, add_req->id, 5, who, @@ -1163,17 +1163,21 @@ struct yahoo_data *yd = add_req->gc->proto_data; struct yahoo_packet *pkt; char *encoded_msg = NULL; - PurpleAccount *account = purple_connection_get_account(add_req->gc); + const char *who = add_req->who; + + if (add_req->protocol == 2) + who += 4; /* Skip 'msn/' */ if (msg && *msg) encoded_msg = yahoo_string_encode(add_req->gc, msg, NULL); pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, - YAHOO_STATUS_AVAILABLE, 0); - - yahoo_packet_hash(pkt, "ssiiis", - 1, purple_normalize(account, purple_account_get_username(account)), - 5, add_req->who, + YAHOO_STATUS_AVAILABLE, yd->session_id); + + yahoo_packet_hash(pkt, "ssiiiis", + 1, add_req->id, + 5, who, + 241, add_req->protocol, 13, 2, 334, 0, 97, 1, @@ -1291,7 +1295,6 @@ switch (pair->key) { case 4: temp = pair->value; - add_req->who = g_strdup(pair->value); break; case 5: add_req->id = g_strdup(pair->value); @@ -1626,28 +1629,18 @@ purple_debug_info("yahoo", "yahoo status: %d\n", yd->current_status); pkt = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP, yd->current_status, yd->session_id); - if(yd->jp) { - yahoo_packet_hash(pkt, "ssssssss", - 1, name, - 0, name, - 277, yd->cookie_y, - 278, yd->cookie_t, - 307, base64_string, - 2, name, - 2, "1", - 135, YAHOOJP_CLIENT_VERSION); - } else { - yahoo_packet_hash(pkt, "sssssssss", - 1, name, - 0, name, - 277, yd->cookie_y, - 278, yd->cookie_t, - 307, base64_string, - 244, YAHOO_CLIENT_VERSION_ID, - 2, name, - 2, "1", - 135, YAHOO_CLIENT_VERSION); - } + + yahoo_packet_hash(pkt, "sssssssss", + 1, name, + 0, name, + 277, yd->cookie_y, + 278, yd->cookie_t, + 307, base64_string, + 244, yd->jp ? YAHOOJP_CLIENT_VERSION_ID : YAHOO_CLIENT_VERSION_ID, + 2, name, + 2, "1", + 135, yd->jp ? YAHOOJP_CLIENT_VERSION : YAHOO_CLIENT_VERSION); + if (yd->picture_checksum) yahoo_packet_hash_int(pkt, 192, yd->picture_checksum); yahoo_packet_send_and_free(pkt, yd); @@ -1727,8 +1720,8 @@ break; } if(error_reason) { - purple_debug_error("yahoo", "Authentication error: %s\n", - error_reason); + purple_debug_error("yahoo", "Authentication error: %s. " + "Code %d\n", error_reason, response_no); purple_connection_error_reason(gc, error, error_reason); g_free(error_reason); g_free(auth_data->seed); @@ -1828,12 +1821,12 @@ break; default: /* Unknown error! */ - error_reason = g_strdup(_("Unknown error")); + error_reason = g_strdup_printf(_("Unknown error (%d)"), response_no); error = PURPLE_CONNECTION_ERROR_OTHER_ERROR; break; } - purple_debug_error("yahoo", "Authentication error: %s\n", - error_reason); + purple_debug_error("yahoo", "Authentication error: %s. Code %d\n", + error_reason, response_no); purple_connection_error_reason(gc, error, error_reason); g_free(error_reason); g_free(auth_data->seed); @@ -2090,6 +2083,10 @@ msg = g_strdup(_("Your account is locked, please log in to the Yahoo! website.")); reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; break; + case 1013: + msg = g_strdup(_("Invalid username")); + reason = PURPLE_CONNECTION_ERROR_INVALID_USERNAME; + break; default: msg = g_strdup_printf(_("Unknown error number %d. Logging into the Yahoo! website may fix this."), err); } @@ -2245,7 +2242,8 @@ if(p2p_data->source >= 0) close(p2p_data->source); - purple_input_remove(p2p_data->input_event); + if (p2p_data->input_event > 0) + purple_input_remove(p2p_data->input_event); g_free(p2p_data->host_ip); g_free(p2p_data->host_username); g_free(p2p_data); @@ -2465,7 +2463,7 @@ yd = p2p_data->gc->proto_data; - purple_debug_warning("yahoo","yahoo p2p server timeout, peer failed to connect"); + purple_debug_warning("yahoo","yahoo p2p server timeout, peer failed to connect\n"); yahoo_p2p_disconnect_destroy_data(data); purple_input_remove(yd->yahoo_p2p_server_watcher); yd->yahoo_p2p_server_watcher = 0; @@ -2900,6 +2898,9 @@ case YAHOO_SERVICE_AUDIBLE: yahoo_process_audible(gc, pkt); break; + case YAHOO_SERVICE_CONTACT_DETAILS: + yahoo_process_contact_details(gc, pkt); + break; case YAHOO_SERVICE_FILETRANS_15: yahoo_process_filetrans_15(gc, pkt); break; @@ -3033,7 +3034,7 @@ yd = gc->proto_data; yd->fd = source; - pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, yd->current_status, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, yd->current_status, yd->session_id); yahoo_packet_hash_str(pkt, 1, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc)))); yahoo_packet_send_and_free(pkt, yd); @@ -3059,7 +3060,7 @@ yd = gc->proto_data; yd->fd = source; - pkt = yahoo_packet_new(YAHOO_SERVICE_WEBLOGIN, YAHOO_STATUS_WEBLOGIN, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_WEBLOGIN, YAHOO_STATUS_WEBLOGIN, yd->session_id); yahoo_packet_hash(pkt, "sss", 0, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc))), @@ -3407,12 +3408,16 @@ PurpleConnection *gc = purple_account_get_connection(account); struct yahoo_data *yd = gc->proto_data = g_new0(struct yahoo_data, 1); PurpleStatus *status = purple_account_get_active_status(account); + const char *server = NULL; + int pager_port = 0; + gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC; purple_connection_update_progress(gc, _("Connecting"), 1, 2); purple_connection_set_display_name(gc, purple_account_get_username(account)); + yd->gc = gc; yd->yahoo_local_p2p_server_fd = -1; yd->fd = -1; yd->txhandler = 0; @@ -3421,41 +3426,30 @@ yd->friends = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, yahoo_friend_free); yd->imvironments = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); yd->xfer_peer_idstring_map = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); - yd->peers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, yahoo_p2p_disconnect_destroy_data); + yd->peers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, + yahoo_p2p_disconnect_destroy_data); yd->sms_carrier = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); - yd->yahoo_p2p_timer = purple_timeout_add_seconds(YAHOO_P2P_KEEPALIVE_SECS, yahoo_p2p_keepalive, gc); + yd->yahoo_p2p_timer = purple_timeout_add_seconds(YAHOO_P2P_KEEPALIVE_SECS, + yahoo_p2p_keepalive, gc); yd->confs = NULL; yd->conf_id = 2; yd->last_keepalive = yd->last_ping = time(NULL); yd->current_status = get_yahoo_status_from_purple_status(status); + yd->jp = yahoo_is_japan(account); yahoo_server_check(account); yahoo_picture_check(account); - if (yahoo_is_japan(account)) { - yd->jp = TRUE; - if (purple_proxy_connect(gc, account, - purple_account_get_string(account, "server", YAHOOJP_PAGER_HOST), - purple_account_get_int(account, "port", YAHOO_PAGER_PORT), - yahoo_got_connected, gc) == NULL) - { - purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Unable to connect")); - return; - } - } else { - yd->jp = FALSE; - if (purple_proxy_connect(gc, account, - purple_account_get_string(account, "server", YAHOO_PAGER_HOST), - purple_account_get_int(account, "port", YAHOO_PAGER_PORT), - yahoo_got_connected, gc) == NULL) - { - purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Unable to connect")); - return; - } - } + server = purple_account_get_string(account, "server", + yd->jp ? YAHOOJP_PAGER_HOST : YAHOO_PAGER_HOST); + pager_port = purple_account_get_int(account, "port", YAHOO_PAGER_PORT); + + if (purple_proxy_connect(gc, account, server, pager_port, yahoo_got_connected, gc) == NULL) + purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, + _("Unable to connect")); + + return; } void yahoo_close(PurpleConnection *gc) { @@ -3540,6 +3534,8 @@ g_free(yd->pending_chat_goto); g_strfreev(yd->profiles); + yahoo_personal_details_reset(&yd->ypd, TRUE); + g_free(yd->current_list15_grp); g_free(yd); @@ -3691,9 +3687,14 @@ const char *msg; char *msg2; PurpleAccount *account; + PurpleConnection *gc; account = purple_buddy_get_account(b); - f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b)); + gc = purple_account_get_connection(account); + if (!gc || !purple_connection_get_protocol_data(gc)) + return NULL; + + f = yahoo_friend_find(gc, purple_buddy_get_name(b)); if (!f) return g_strdup(_("Not on server list")); @@ -3766,6 +3767,26 @@ if (presence != NULL) purple_notify_user_info_add_pair(user_info, _("Presence"), presence); + + if (full) { + YahooPersonalDetails *ypd = &f->ypd; + int i; + struct { + char *id; + char *text; + char *value; + } yfields[] = { + {"hp", N_("Home Phone Number"), ypd->phone.home}, + {"wp", N_("Work Phone Number"), ypd->phone.work}, + {"mo", N_("Mobile Phone Number"), ypd->phone.mobile}, + {NULL, NULL, NULL} + }; + for (i = 0; yfields[i].id; i++) { + if (!yfields[i].value || !*yfields[i].value) + continue; + purple_notify_user_info_add_pair(user_info, _(yfields[i].text), yfields[i].value); + } + } } static void yahoo_addbuddyfrommenu_cb(PurpleBlistNode *node, gpointer data) @@ -3842,6 +3863,16 @@ yahoo_doodle_initiate(gc, purple_buddy_get_name(b)); } +static void +yahoo_userinfo_blist_node(PurpleBlistNode *node, gpointer data) +{ + PurpleBuddy *b = (PurpleBuddy *)node; + PurpleAccount *account = purple_buddy_get_account(b); + PurpleConnection *gc = purple_account_get_connection(account); + + yahoo_set_userinfo_for_buddy(gc, b); +} + static GList *yahoo_buddy_menu(PurpleBuddy *buddy) { GList *m = NULL; @@ -3903,13 +3934,16 @@ act = purple_menu_action_new(_("Presence Settings"), NULL, NULL, build_presence_submenu(f, gc)); m = g_list_append(m, act); - } - - if (f) { + act = purple_menu_action_new(_("Start Doodling"), PURPLE_CALLBACK(yahoo_doodle_blist_node), NULL, NULL); m = g_list_append(m, act); + + act = purple_menu_action_new(_("Set User Info..."), + PURPLE_CALLBACK(yahoo_userinfo_blist_node), + NULL, NULL); + m = g_list_append(m, act); } return m; @@ -3929,7 +3963,7 @@ struct yahoo_data *yd = gc->proto_data; const char *name = yd->profiles[purple_request_fields_get_choice(fields, "id")]; - struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_IDACT, YAHOO_STATUS_AVAILABLE, 0); + struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_IDACT, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 3, name); yahoo_packet_send_and_free(pkt, yd); @@ -4009,9 +4043,13 @@ "Unable to request mail login token; forwarding to login screen."); purple_notify_uri(gc, yahoo_mail_url); } - } +static void +yahoo_set_userinfo_fn(PurplePluginAction *action) +{ + yahoo_set_userinfo(action->context); +} static void yahoo_show_act_id(PurplePluginAction *action) { @@ -4058,6 +4096,10 @@ GList *m = NULL; PurplePluginAction *act; + act = purple_plugin_action_new(_("Set User Info..."), + yahoo_set_userinfo_fn); + m = g_list_append(m, act); + act = purple_plugin_action_new(_("Activate ID..."), yahoo_show_act_id); m = g_list_append(m, act); @@ -4257,7 +4299,7 @@ } alias = purple_account_get_alias(account); - pkt = yahoo_packet_new(YAHOO_SERVICE_SMS_MSG, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_SMS_MSG, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sssss", 1, purple_connection_get_display_name(gc), 69, alias, @@ -4272,7 +4314,7 @@ return ret; } - pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, yd->session_id); if(msn) { yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, who+4); yahoo_packet_hash_int(pkt, 241, 2); @@ -4354,7 +4396,7 @@ if( strncmp(who, "+", 1) == 0 ) return 0; - pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, yd->session_id); /* check to see if p2p link exists, send through it */ if( (p2p_data = g_hash_table_lookup(yd->peers, who)) && !msn ) { @@ -4426,14 +4468,14 @@ } if (yd->current_status == YAHOO_STATUS_INVISIBLE) { - pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 13, "2"); yahoo_packet_send_and_free(pkt, yd); return; } - pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_int(pkt, 10, yd->current_status); if (yd->current_status == YAHOO_STATUS_CUSTOM) { @@ -4453,7 +4495,7 @@ yahoo_packet_send_and_free(pkt, yd); if (old_status == YAHOO_STATUS_INVISIBLE) { - pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 13, "1"); yahoo_packet_send_and_free(pkt, yd); @@ -4478,7 +4520,7 @@ yd->current_status = get_yahoo_status_from_purple_status(status); } - pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_int(pkt, 10, yd->current_status); if (yd->current_status == YAHOO_STATUS_CUSTOM) { @@ -4584,19 +4626,19 @@ if (yd->wm) { ycht_chat_send_keepalive(yd->ycht); } else { - pkt = yahoo_packet_new(YAHOO_SERVICE_CHATPING, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CHATPING, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 109, purple_connection_get_display_name(gc)); yahoo_packet_send_and_free(pkt, yd); } } else { - pkt = yahoo_packet_new(YAHOO_SERVICE_PING, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_PING, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_send_and_free(pkt, yd); } } if ((now - yd->last_keepalive) >= KEEPALIVE_TIMEOUT) { yd->last_keepalive = now; - pkt = yahoo_packet_new(YAHOO_SERVICE_KEEPALIVE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_KEEPALIVE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 0, purple_connection_get_display_name(gc)); yahoo_packet_send_and_free(pkt, yd); } @@ -4630,7 +4672,7 @@ group = "Buddies"; group2 = yahoo_string_encode(gc, group, NULL); - pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id); if(msn) { yahoo_packet_hash(pkt, "sssssssssss", 14, "", @@ -4702,7 +4744,7 @@ g_hash_table_remove(yd->friends, bname); cg = yahoo_string_encode(gc, gname, NULL); - pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id); if(msn) yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), @@ -4726,7 +4768,7 @@ if (!who || who[0] == '\0') return; - pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "1"); yahoo_packet_send_and_free(pkt, yd); @@ -4742,7 +4784,7 @@ if (!who || who[0] == '\0') return; - pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "2"); yahoo_packet_send_and_free(pkt, yd); } @@ -4805,7 +4847,7 @@ return; } - pkt = yahoo_packet_new(YAHOO_SERVICE_CHGRP_15, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CHGRP_15, YAHOO_STATUS_AVAILABLE, yd->session_id); if(f->protocol) yahoo_packet_hash(pkt, "ssssissss", 1, purple_connection_get_display_name(gc), 302, "240", 300, "240", 7, temp, 241, f->protocol, 224, gpo, 264, gpn, 301, @@ -4835,7 +4877,7 @@ return; } - pkt = yahoo_packet_new(YAHOO_SERVICE_GROUPRENAME, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_GROUPRENAME, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 65, gpo, 67, gpn); yahoo_packet_send_and_free(pkt, yd); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/libymsg.h --- a/libpurple/protocols/yahoo/libymsg.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/libymsg.h Sat Jul 25 04:54:36 2009 +0000 @@ -65,6 +65,9 @@ #define YAHOO_SMS_CARRIER_URL "http://lookup.msg.vip.mud.yahoo.com" +#define YAHOO_USERINFO_URL "http://address.yahoo.com/yab/us?v=XM&sync=1&tags=short&useutf8=1&noclear=1&legenc=codepage-1252" +#define YAHOOJP_USERINFO_URL "http://address.yahoo.co.jp/yab/jp?v=XM&sync=1&tags=short&useutf8=1&noclear=1&legenc=codepage-1252" + #define YAHOO_PICURL_SETTING "picture_url" #define YAHOO_PICCKSUM_SETTING "picture_checksum" #define YAHOO_PICEXPIRE_SETTING "picture_expire" @@ -85,10 +88,10 @@ #define YAHOO_STATUS_TYPE_MOBILE "mobile" #define YAHOO_CLIENT_VERSION_ID "4194239" -#define YAHOO_CLIENT_VERSION "9.0.0.2152" +#define YAHOO_CLIENT_VERSION "9.0.0.2162" #define YAHOOJP_CLIENT_VERSION_ID "4194239" -#define YAHOOJP_CLIENT_VERSION "9.0.0.2152" +#define YAHOOJP_CLIENT_VERSION "9.0.0.2162" #define YAHOO_CLIENT_USERAGENT "Mozilla/5.0" @@ -147,6 +150,23 @@ struct _YchtConn; +typedef struct _YahooPersonalDetails { + char *id; + + struct { + char *first; + char *last; + char *middle; + char *nick; + } names; + + struct { + char *work; + char *home; + char *mobile; + } phone; +} YahooPersonalDetails; + struct yahoo_data { PurpleConnection *gc; int fd; @@ -157,6 +177,7 @@ GHashTable *friends; char **profiles; /* Multiple profiles can be associated with an account */ + YahooPersonalDetails ypd; /** * This is used to keep track of the IMVironment chosen diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/util.c --- a/libpurple/protocols/yahoo/util.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/util.c Sat Jul 25 04:54:36 2009 +0000 @@ -220,8 +220,12 @@ void yahoo_init_colorht() { + if (ht != NULL) + /* Hash table has already been initialized */ + return; + ht = g_hash_table_new(g_str_hash, g_str_equal); -/* the numbers in comments are what gyach uses, but i think they're incorrect */ + /* the numbers in comments are what gyach uses, but i think they're incorrect */ g_hash_table_insert(ht, "30", ""); /* black */ g_hash_table_insert(ht, "31", ""); /* blue */ g_hash_table_insert(ht, "32", ""); /* cyan */ /* 00b2b2 */ @@ -290,7 +294,12 @@ void yahoo_dest_colorht() { + if (ht == NULL) + /* Hash table has already been destroyed */ + return; + g_hash_table_destroy(ht); + ht = NULL; } static int point_to_html(int x) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_aliases.c --- a/libpurple/protocols/yahoo/yahoo_aliases.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_aliases.c Sat Jul 25 04:54:36 2009 +0000 @@ -29,6 +29,7 @@ #include "blist.h" #include "debug.h" #include "util.h" +#include "request.h" #include "version.h" #include "libymsg.h" #include "yahoo_aliases.h" @@ -52,6 +53,18 @@ gchar *who; }; +void yahoo_personal_details_reset(YahooPersonalDetails *ypd, gboolean all) +{ + if (all) + g_free(ypd->id); + g_free(ypd->names.first); + g_free(ypd->names.last); + g_free(ypd->names.middle); + g_free(ypd->names.nick); + g_free(ypd->phone.work); + g_free(ypd->phone.home); + g_free(ypd->phone.mobile); +} /************************************************************************** * Alias Fetch Functions @@ -60,8 +73,7 @@ static void yahoo_fetch_aliases_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message) { - struct callback_data *cb = user_data; - PurpleConnection *gc = cb->gc; + PurpleConnection *gc = user_data; struct yahoo_data *yd = gc->proto_data; yd->url_datas = g_slist_remove(yd->url_datas, url_data); @@ -71,19 +83,19 @@ error_message ? " Error:" : "", error_message ? error_message : ""); } else { gchar *full_name, *nick_name; - const char *yid, *id, *fn, *ln, *nn, *alias; + const char *yid, *id, *fn, *ln, *nn, *alias, *mn; + const char *hp, *wp, *mo; YahooFriend *f; PurpleBuddy *b; xmlnode *item, *contacts; + PurpleAccount *account; + account = purple_connection_get_account(gc); /* Put our web response into a xmlnode for easy management */ contacts = xmlnode_from_str(url_text, -1); if (contacts == NULL) { purple_debug_error("yahoo", "Badly formed Alias XML\n"); - g_free(cb->who); - g_free(cb->id); - g_free(cb); return; } purple_debug_info("yahoo", "Fetched %" G_GSIZE_FORMAT @@ -93,12 +105,18 @@ for(item = xmlnode_get_child(contacts, "ct"); item; item = xmlnode_get_next_twin(item)) { /* Yahoo replies with two types of contact (ct) record, we are only interested in the alias ones */ if ((yid = xmlnode_get_attrib(item, "yi"))) { + YahooPersonalDetails *ypd = NULL; /* Grab all the bits of information we can */ fn = xmlnode_get_attrib(item, "fn"); ln = xmlnode_get_attrib(item, "ln"); nn = xmlnode_get_attrib(item, "nn"); + mn = xmlnode_get_attrib(item, "mn"); id = xmlnode_get_attrib(item, "id"); + hp = xmlnode_get_attrib(item, "hp"); + wp = xmlnode_get_attrib(item, "wp"); + mo = xmlnode_get_attrib(item, "mo"); + full_name = nick_name = NULL; alias = NULL; @@ -115,8 +133,8 @@ alias = full_name; /* If no Yahoo nickname, we can use the full_name created above */ /* Find the local buddy that matches */ - f = yahoo_friend_find(cb->gc, yid); - b = purple_find_buddy(cb->gc->account, yid); + f = yahoo_friend_find(gc, yid); + b = purple_find_buddy(account, yid); /* If we don't find a matching buddy, ignore the alias !! */ if (f != NULL && b != NULL) { @@ -125,14 +143,37 @@ /* Finally, if we received an alias, we better update the buddy list */ if (alias != NULL) { - serv_got_alias(cb->gc, yid, alias); + serv_got_alias(gc, yid, alias); purple_debug_info("yahoo", "Fetched alias '%s' (%s)\n", alias, id); } else if (buddy_alias != NULL && strcmp(buddy_alias, "") != 0) { /* Or if we have an alias that Yahoo doesn't, send it up */ - yahoo_update_alias(cb->gc, yid, buddy_alias); + yahoo_update_alias(gc, yid, buddy_alias); purple_debug_info("yahoo", "Sent updated alias '%s'\n", buddy_alias); } } + + if (f != NULL) + ypd = &f->ypd; + else { + /* May be the alias is for the account? */ + const char *yidn = purple_normalize(account, yid); + if (purple_strequal(yidn, purple_connection_get_display_name(gc))) { + ypd = &yd->ypd; + } + } + + if (ypd) { + yahoo_personal_details_reset(ypd, TRUE); + ypd->id = g_strdup(id); + ypd->names.first = g_strdup(fn); + ypd->names.middle = g_strdup(mn); + ypd->names.last = g_strdup(ln); + ypd->names.nick = g_strdup(nn); + + ypd->phone.work = g_strdup(wp); + ypd->phone.home = g_strdup(hp); + ypd->phone.mobile = g_strdup(mo); + } g_free(full_name); g_free(nick_name); @@ -140,17 +181,12 @@ } xmlnode_free(contacts); } - - g_free(cb->who); - g_free(cb->id); - g_free(cb); } void yahoo_fetch_aliases(PurpleConnection *gc) { struct yahoo_data *yd = gc->proto_data; - struct callback_data *cb; const char *url; gchar *request, *webpage, *webaddress; PurpleUtilFetchUrlData *url_data; @@ -158,10 +194,6 @@ /* use whole URL if using HTTP Proxy */ gboolean use_whole_url = yahoo_account_use_http_proxy(gc); - /* Using callback_data so I have access to gc in the callback function */ - cb = g_new0(struct callback_data, 1); - cb->gc = gc; - /* Build all the info to make the web request */ url = yd->jp ? YAHOOJP_ALIAS_FETCH_URL : YAHOO_ALIAS_FETCH_URL; purple_url_parse(url, &webaddress, NULL, &webpage, NULL, NULL); @@ -177,7 +209,7 @@ /* We have a URL and some header information, let's connect and get some aliases */ url_data = purple_util_fetch_url_request_len_with_account(purple_connection_get_account(gc), url, use_whole_url, NULL, TRUE, request, FALSE, -1, - yahoo_fetch_aliases_cb, cb); + yahoo_fetch_aliases_cb, gc); if (url_data != NULL) yd->url_datas = g_slist_prepend(yd->url_datas, url_data); @@ -359,3 +391,328 @@ g_free(request); } + +/************************************************************************** + * User Info Update Functions + **************************************************************************/ + +#if 0 +/* This block of code can be used to send our contact details to + * everyone in the buddylist. But with the official messenger, + * doing this pops a conversation window at the receiver's end, + * which is stupid, and thus not really surprising. */ + +struct yahoo_userinfo { + struct yahoo_data *yd; + char *xml; +}; + +static void +yahoo_send_userinfo_to_user(struct yahoo_userinfo *yui, const char *who) +{ + struct yahoo_packet *pkt; + PurpleConnection *gc; + + gc = yui->yd->gc; + pkt = yahoo_packet_new(YAHOO_SERVICE_CONTACT_DETAILS, 0, 0); + yahoo_packet_hash(pkt, "siisis", + 1, purple_connection_get_display_name(gc), + 13, 1, /* This creates a conversation window in the official client */ + 302, 5, + 5, who, + 303, 5, + 280, yui->xml); + yahoo_packet_send_and_free(pkt, yui->yd); +} + +static void +yahoo_send_userinfo_foreach(gpointer key, gpointer value, gpointer data) +{ + const char *who = key; + YahooFriend *f = value; + + if (f->status != YAHOO_STATUS_OFFLINE) { + yahoo_send_userinfo_to_user(data, who); + } +} + +static void +yahoo_sent_userinfo_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message) +{ + struct yahoo_userinfo *yui = user_data; + yahoo_fetch_aliases_cb(url_data, yui->yd->gc, url_text, len, error_message); + g_hash_table_foreach(yui->yd->friends, yahoo_send_userinfo_foreach, yui); + g_free(yui->xml); + g_free(yui); +} +#endif + +static void +yahoo_set_userinfo_cb(PurpleConnection *gc, PurpleRequestFields *fields) +{ + xmlnode *node = xmlnode_new("ab"); + xmlnode *ct = xmlnode_new_child(node, "ct"); + struct yahoo_data *yd = purple_connection_get_protocol_data(gc); + PurpleAccount *account; + PurpleUtilFetchUrlData *url_data; + char *webaddress, *webpage; + char *request, *content; + int len; + int i; + char * yfields[] = { "fn", "ln", "nn", "mn", "hp", "wp", "mo", NULL }; + + account = purple_connection_get_account(gc); + + xmlnode_set_attrib(node, "k", purple_connection_get_display_name(gc)); + xmlnode_set_attrib(node, "cc", "1"); /* XXX: ? */ + + xmlnode_set_attrib(ct, "e", "1"); + xmlnode_set_attrib(ct, "yi", purple_request_fields_get_string(fields, "yname")); + xmlnode_set_attrib(ct, "id", purple_request_fields_get_string(fields, "yid")); + xmlnode_set_attrib(ct, "pr", "0"); + + for (i = 0; yfields[i]; i++) { + const char *v = purple_request_fields_get_string(fields, yfields[i]); + xmlnode_set_attrib(ct, yfields[i], v ? v : ""); + } + + content = xmlnode_to_formatted_str(node, &len); + xmlnode_free(node); + purple_url_parse(yd->jp ? YAHOOJP_USERINFO_URL : YAHOO_USERINFO_URL, &webaddress, NULL, &webpage, NULL, NULL); + + request = g_strdup_printf("POST %s HTTP/1.1\r\n" + "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n" + "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s;\r\n" + "Host: %s\r\n" + "Content-Length: %d\r\n" + "Cache-Control: no-cache\r\n\r\n" + "%s\r\n\r\n", + webpage, + yd->cookie_t, yd->cookie_y, + webaddress, + len + 4, + content); + +#if 0 + { + /* This is if we wanted to send our contact details to everyone + * in the buddylist. But this cannot be done now, because in the + * official messenger, doing this pops a conversation window at + * the receiver's end, which is stupid, and thus not really + * surprising. */ + struct yahoo_userinfo *ui = g_new(struct yahoo_userinfo, 1); + node = xmlnode_new("contact"); + + for (i = 0; yfields[i]; i++) { + const char *v = purple_request_fields_get_string(fields, yfields[i]); + if (v) { + xmlnode *nd = xmlnode_new_child(node, yfields[i]); + xmlnode_insert_data(nd, v, -1); + } + } + + ui->yd = yd; + ui->xml = xmlnode_to_str(node, NULL); + xmlnode_free(node); + } +#endif + + url_data = purple_util_fetch_url_request_len_with_account(account, webaddress, FALSE, + YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, + yahoo_fetch_aliases_cb, gc); + if (url_data != NULL) + yd->url_datas = g_slist_prepend(yd->url_datas, url_data); + + g_free(webaddress); + g_free(webpage); + g_free(content); + g_free(request); +} + +static PurpleRequestFields * +request_fields_from_personal_details(YahooPersonalDetails *ypd, const char *id) +{ + PurpleRequestFields *fields; + PurpleRequestFieldGroup *group; + PurpleRequestField *field; + int i; + struct { + char *id; + char *text; + char *value; + } yfields[] = { + {"fn", N_("First Name"), ypd->names.first}, + {"ln", N_("Last Name"), ypd->names.last}, + {"nn", N_("Nickname"), ypd->names.nick}, + {"mn", N_("Middle Name"), ypd->names.middle}, + {"hp", N_("Home Phone Number"), ypd->phone.home}, + {"wp", N_("Work Phone Number"), ypd->phone.work}, + {"mo", N_("Mobile Phone Number"), ypd->phone.mobile}, + {NULL, NULL, NULL} + }; + + fields = purple_request_fields_new(); + group = purple_request_field_group_new(NULL); + purple_request_fields_add_group(fields, group); + + field = purple_request_field_string_new("yname", "", id, FALSE); + purple_request_field_set_visible(field, FALSE); + purple_request_field_group_add_field(group, field); + + field = purple_request_field_string_new("yid", "", ypd->id, FALSE); + purple_request_field_set_visible(field, FALSE); + purple_request_field_group_add_field(group, field); + + for (i = 0; yfields[i].id; i++) { + field = purple_request_field_string_new(yfields[i].id, _(yfields[i].text), + yfields[i].value, FALSE); + purple_request_field_group_add_field(group, field); + } + + return fields; +} + +void yahoo_set_userinfo_for_buddy(PurpleConnection *gc, PurpleBuddy *buddy) +{ + PurpleRequestFields *fields; + YahooFriend *f; + const char *name; + + name = purple_buddy_get_name(buddy); + f = yahoo_friend_find(gc, name); + if (!f) + return; + + fields = request_fields_from_personal_details(&f->ypd, name); + purple_request_fields(gc, NULL, _("Set User Info"), NULL, fields, + _("OK"), G_CALLBACK(yahoo_set_userinfo_cb), + _("Cancel"), NULL, + purple_connection_get_account(gc), NULL, NULL, gc); +} + +void yahoo_set_userinfo(PurpleConnection *gc) +{ + struct yahoo_data *yd = purple_connection_get_protocol_data(gc); + PurpleRequestFields *fields = request_fields_from_personal_details(&yd->ypd, + purple_connection_get_display_name(gc)); + purple_request_fields(gc, NULL, _("Set User Info"), NULL, fields, + _("OK"), G_CALLBACK(yahoo_set_userinfo_cb), + _("Cancel"), NULL, + purple_connection_get_account(gc), NULL, NULL, gc); +} + +static gboolean +parse_contact_details(struct yahoo_data *yd, const char *who, const char *xml) +{ + xmlnode *node, *nd; + YahooFriend *f; + char *yid; + + node = xmlnode_from_str(xml, -1); + if (!node) { + purple_debug_info("yahoo", "Received malformed XML for contact details from '%s':\n%s\n", + who, xml); + return FALSE; + } + + nd = xmlnode_get_child(node, "yi"); + if (!nd || !(yid = xmlnode_get_data(nd))) { + xmlnode_free(node); + return FALSE; + } + + if (!purple_strequal(yid, who)) { + /* The user may not want to set the contact details about folks in the buddylist + to what some random dude might have sent. So it would be good if we popped + up a prompt requiring the user to confirm the details before we set them. + However, someone could send details about hundreds of users at the same time, + which would make things really bad. So for now, until we have a better way of + dealing with this, ignore this details. */ + purple_debug_info("yahoo", "Ignoring contact details sent by %s about %s\n", + who, yid); + g_free(yid); + xmlnode_free(node); + return FALSE; + } + + f = yahoo_friend_find(yd->gc, yid); + if (!f) { + g_free(yid); + xmlnode_free(node); + return FALSE; + } else { + int i; + YahooPersonalDetails *ypd = &f->ypd; + char *alias = NULL; + struct { + char *id; + char **field; + } details[] = { + {"fn", &ypd->names.first}, + {"mn", &ypd->names.middle}, + {"ln", &ypd->names.last}, + {"nn", &ypd->names.nick}, + {"wp", &ypd->phone.work}, + {"hp", &ypd->phone.home}, + {"mo", &ypd->phone.mobile}, + {NULL, NULL} + }; + + yahoo_personal_details_reset(ypd, FALSE); + + for (i = 0; details[i].id; i++) { + nd = xmlnode_get_child(node, details[i].id); + *details[i].field = nd ? xmlnode_get_data(nd) : NULL; + } + + if (ypd->names.nick) + alias = ypd->names.nick; + else if (ypd->names.first || ypd->names.last) { + alias = g_strstrip(g_strdup_printf("%s %s", + ypd->names.first ? ypd->names.first : "", + ypd->names.last ? ypd->names.last : "")); + } + + if (alias) { + serv_got_alias(yd->gc, yid, alias); + if (alias != ypd->names.nick) + g_free(alias); + } + } + + xmlnode_free(node); + g_free(yid); + return TRUE; +} + +/* I don't think this happens for MSN buddies. -- sad */ +void yahoo_process_contact_details(PurpleConnection *gc, struct yahoo_packet *pkt) +{ + GSList *l = pkt->hash; + const char *who = NULL, *xml = NULL; + struct yahoo_data *yd = purple_connection_get_protocol_data(gc); + + for (; l; l = l->next) { + struct yahoo_pair *pair = l->data; + switch (pair->key) { + case 4: + who = pair->value; /* This is the person who sent us the details. + But not necessarily about himself. */ + break; + case 5: + break; + case 13: + /* This is '1' if 'who' is sending the contact details about herself, + '0' if 'who' is sending the contact details she has about buddies + in her list. However, in all cases, the xml in key 280 always seems + to contain the yid of the person, so we may as well ignore this field + and look into the xml instead to see who the information is about. */ + break; + case 280: + xml = pair->value; + parse_contact_details(yd, who, xml); + break; + } + } +} + diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_aliases.h --- a/libpurple/protocols/yahoo/yahoo_aliases.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_aliases.h Sat Jul 25 04:54:36 2009 +0000 @@ -35,4 +35,7 @@ void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias); void yahoo_fetch_aliases(PurpleConnection *gc); - +void yahoo_set_userinfo(PurpleConnection *gc); +void yahoo_set_userinfo_for_buddy(PurpleConnection *gc, PurpleBuddy *buddy); +void yahoo_personal_details_reset(YahooPersonalDetails *ypd, gboolean all); +void yahoo_process_contact_details(PurpleConnection *gc, struct yahoo_packet *pkt); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_doodle.c --- a/libpurple/protocols/yahoo/yahoo_doodle.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_doodle.c Sat Jul 25 04:54:36 2009 +0000 @@ -392,7 +392,7 @@ yd = gc->proto_data; /* Make and send an acknowledge (ready) Doodle packet */ - pkt = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 49, "IMVIRONMENT"); yahoo_packet_hash_str(pkt, 1, purple_account_get_username(gc->account)); yahoo_packet_hash_str(pkt, 14, message); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_friend.c --- a/libpurple/protocols/yahoo/yahoo_friend.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_friend.c Sat Jul 25 04:54:36 2009 +0000 @@ -27,6 +27,7 @@ #include "debug.h" #include "yahoo_friend.h" +#include "yahoo_aliases.h" static YahooFriend *yahoo_friend_new(void) { @@ -124,13 +125,13 @@ void yahoo_friend_set_alias_id(YahooFriend *f, const char *alias_id) { - g_free(f->alias_id); - f->alias_id = g_strdup(alias_id); + g_free(f->ypd.id); + f->ypd.id = g_strdup(alias_id); } const char *yahoo_friend_get_alias_id(YahooFriend *f) { - return f->alias_id; + return f->ypd.id; } void yahoo_friend_free(gpointer p) @@ -139,7 +140,7 @@ g_free(f->msg); g_free(f->game); g_free(f->ip); - g_free(f->alias_id); + yahoo_personal_details_reset(&f->ypd, TRUE); g_free(f); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_friend.h --- a/libpurple/protocols/yahoo/yahoo_friend.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_friend.h Sat Jul 25 04:54:36 2009 +0000 @@ -56,7 +56,7 @@ YahooPresenceVisibility presence; int protocol; /* 1=LCS, 2=MSN*/ long int version_id; - gchar *alias_id; + YahooPersonalDetails ypd; YahooP2PStatus p2p_status; gboolean p2p_packet_sent; /* 0:not sent, 1=sent */ gint session_id; /* session id of friend */ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_packet.c --- a/libpurple/protocols/yahoo/yahoo_packet.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_packet.c Sat Jul 25 04:54:36 2009 +0000 @@ -190,7 +190,7 @@ pos = x; pkt->hash = g_slist_prepend(pkt->hash, pair); - if (purple_debug_is_verbose()) { + if (purple_debug_is_verbose() || g_getenv("PURPLE_YAHOO_DEBUG")) { char *esc; esc = g_strescape(pair->value, NULL); purple_debug_misc("yahoo", "Key: %d \tValue: %s\n", pair->key, esc); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_packet.h --- a/libpurple/protocols/yahoo/yahoo_packet.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_packet.h Sat Jul 25 04:54:36 2009 +0000 @@ -98,6 +98,7 @@ YAHOO_SERVICE_AVATAR_UPDATE = 0xc7, YAHOO_SERVICE_VERIFY_ID_EXISTS = 0xc8, YAHOO_SERVICE_AUDIBLE = 0xd0, + YAHOO_SERVICE_CONTACT_DETAILS = 0xd3, /* YAHOO_SERVICE_CHAT_SESSION = 0xd4,?? Reports start of chat session, gets an id from server */ YAHOO_SERVICE_AUTH_REQ_15 = 0xd6, YAHOO_SERVICE_FILETRANS_15 = 0xdc, diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoo_picture.c --- a/libpurple/protocols/yahoo/yahoo_picture.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_picture.c Sat Jul 25 04:54:36 2009 +0000 @@ -276,7 +276,7 @@ return; } - pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "ssssi", 1, purple_connection_get_display_name(gc), 5, who, 13, "2", 20, yd->picture_url, 192, yd->picture_checksum); @@ -288,7 +288,7 @@ struct yahoo_data *yd = gc->proto_data; struct yahoo_packet *pkt; - pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 1, purple_connection_get_display_name(gc)); /* me */ yahoo_packet_hash_str(pkt, 5, who); /* the other guy */ yahoo_packet_hash_str(pkt, 13, "1"); /* 1 = request, 2 = reply */ @@ -300,7 +300,7 @@ struct yahoo_data *yd = gc->proto_data; struct yahoo_packet *pkt; - pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE_CHECKSUM, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_PICTURE_CHECKSUM, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "ssi", 1, purple_connection_get_display_name(gc), 212, "1", 192, yd->picture_checksum); yahoo_packet_send_and_free(pkt, yd); @@ -311,7 +311,7 @@ struct yahoo_data *yd = gc->proto_data; struct yahoo_packet *pkt; - pkt = yahoo_packet_new(YAHOO_SERVICE_AVATAR_UPDATE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_AVATAR_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "si", 3, who, 213, type); yahoo_packet_send_and_free(pkt, yd); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/protocols/yahoo/yahoochat.c --- a/libpurple/protocols/yahoo/yahoochat.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoochat.c Sat Jul 25 04:54:36 2009 +0000 @@ -65,14 +65,14 @@ rll = purple_account_get_string(purple_connection_get_account(gc), "room_list_locale", YAHOO_ROOMLIST_LOCALE); - pkt = yahoo_packet_new(YAHOO_SERVICE_CHATONLINE, YAHOO_STATUS_AVAILABLE,0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CHATONLINE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sssss", 109, purple_connection_get_display_name(gc), 1, purple_connection_get_display_name(gc), 6, "abcde", /* I'm not sure this is the correct way to set this. */ 98, rll, - 135, "ym8.1.0.415"); + 135, yd->jp ? YAHOO_CLIENT_VERSION : YAHOOJP_CLIENT_VERSION); yahoo_packet_send_and_free(pkt, yd); } @@ -121,12 +121,29 @@ char *msg = NULL; GString *members = NULL; GHashTable *components; + PurpleConversation *c = NULL; - if (pkt->status == 2) - return; /* XXX */ + if ( (pkt->status == 2) || (pkt->status == 11) ) + return; /* Status is 11 when we are being notified about invitation being sent to someone else */ account = purple_connection_get_account(gc); + for (l = pkt->hash; l; l = l->next) { + struct yahoo_pair *pair = l->data; + if (pair->key == 57) + { + room = yahoo_string_decode(gc, pair->value, FALSE); + if((c = yahoo_find_conference(gc, room))) + { + /* Looks like we got invited to an already open conference. */ + /* Laters: Should we accept this conference rather than ignoring the invitation ? */ + purple_debug_info("yahoo","Ignoring invitation for an already existing chat, room:%s\n",room); + g_free(room); + return; + } + } + } + members = g_string_sized_new(512); for (l = pkt->hash; l; l = l->next) { @@ -143,8 +160,11 @@ who = pair->value; g_string_append_printf(members, "%s\n", who); break; - case 52: /* invitee (me) */ - case 53: /* members */ + case 51: /* This user is being invited to the conference. Comes with status = 11, so we wont reach here */ + break; + case 52: /* Invited users. Assuming us invited, since we got this packet */ + break; /* break needed, or else we add the users to the conference before they accept the invitation */ + case 53: /* members who have already joined the conference */ g_string_append_printf(members, "%s\n", pair->value); break; case 58: @@ -189,6 +209,8 @@ char *room = NULL; char *who = NULL; char *msg = NULL; + PurpleConversation *c = NULL; + int utf8 = 0; for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; @@ -205,6 +227,9 @@ g_free(msg); msg = yahoo_string_decode(gc, pair->value, FALSE); break; + case 97: + utf8 = strtol(pair->value, NULL, 10); + break; } } if (!purple_privacy_check(purple_connection_get_account(gc), who)) @@ -216,17 +241,24 @@ if (who && room) { /* make sure we're in the room before we process a decline message for it */ - if(yahoo_find_conference(gc, room)) { - char *tmp; + if((c = yahoo_find_conference(gc, room))) { + char *tmp = NULL, *msg_tmp = NULL; + if(msg) + { + msg_tmp = yahoo_string_decode(gc, msg, utf8); + msg = yahoo_codes_to_html(msg_tmp); + serv_got_chat_in(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(c)), who, 0, msg, time(NULL)); + g_free(msg_tmp); + g_free(msg); + } - tmp = g_strdup_printf(_("%s declined your conference invitation to room \"%s\" because \"%s\"."), - who, room, msg?msg:""); - purple_notify_info(gc, NULL, _("Invitation Rejected"), tmp); + tmp = g_strdup_printf(_("%s has declined to join."), who); + purple_conversation_write(c, NULL, tmp, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LINKIFY, time(NULL)); + g_free(tmp); } g_free(room); - g_free(msg); } } @@ -254,7 +286,10 @@ if (who && room) { c = yahoo_find_conference(gc, room); if (c) - yahoo_chat_add_user(PURPLE_CONV_CHAT(c), who, NULL); + { /* Prevent duplicate users in the chat */ + if( !purple_conv_chat_find_user(PURPLE_CONV_CHAT(c), who) ) + yahoo_chat_add_user(PURPLE_CONV_CHAT(c), who, NULL); + } g_free(room); } } @@ -353,7 +388,7 @@ * so we don't have to actually pass the flag in the packet. Or something. */ room2 = yahoo_string_encode(gc, room, &utf8); - pkt = yahoo_packet_new(YAHOO_SERVICE_CHATJOIN, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CHATJOIN, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "ssss", 1, purple_connection_get_display_name(gc), 104, room2, @@ -373,7 +408,7 @@ /* We need to goto a user in chat */ if (yd->pending_chat_goto) { - struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_CHATGOTO, YAHOO_STATUS_AVAILABLE, 0); + struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_CHATGOTO, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 109, yd->pending_chat_goto, 1, purple_connection_get_display_name(gc), @@ -741,7 +776,7 @@ purple_debug_misc("yahoo", "leaving conference %s\n", room); - pkt = yahoo_packet_new(YAHOO_SERVICE_CONFLOGOFF, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CONFLOGOFF, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 1, dn); for (w = who; w; w = w->next) { @@ -765,7 +800,7 @@ msg = yahoo_html_to_codes(what); msg2 = yahoo_string_encode(gc, msg, &utf8); - pkt = yahoo_packet_new(YAHOO_SERVICE_CONFMSG, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CONFMSG, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 1, dn); for (who = members; who; who = who->next) { @@ -793,7 +828,7 @@ if (members) memarr = g_strsplit(members, "\n", 0); - pkt = yahoo_packet_new(YAHOO_SERVICE_CONFLOGON, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CONFLOGON, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 1, dn, 3, dn, 57, room); if (memarr) { @@ -823,7 +858,7 @@ members = purple_conv_chat_get_users(PURPLE_CONV_CHAT(c)); - pkt = yahoo_packet_new(YAHOO_SERVICE_CONFADDINVITE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CONFADDINVITE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sssss", 1, dn, 51, buddy, 57, room, 58, msg?msg2:"", 13, "0"); for(; members; members = members->next) { @@ -859,7 +894,7 @@ eroom = yahoo_string_encode(gc, room, &utf8); - pkt = yahoo_packet_new(YAHOO_SERVICE_CHATEXIT, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CHATEXIT, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 104, eroom, 109, dn, 108, "1"); yahoo_packet_hash_str(pkt, 112, "0"); /* what does this one mean? */ yahoo_packet_send_and_free(pkt, yd); @@ -877,7 +912,7 @@ return; pkt = yahoo_packet_new(YAHOO_SERVICE_CHATLOGOUT, - YAHOO_STATUS_AVAILABLE, 0); + YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 1, dn); yahoo_packet_send_and_free(pkt, yd); @@ -918,7 +953,7 @@ g_free(msg2); room2 = yahoo_string_encode(gc, room, &utf8); - pkt = yahoo_packet_new(YAHOO_SERVICE_COMMENT, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_COMMENT, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 1, dn, 104, room2, 117, msg1); if (me) @@ -955,7 +990,7 @@ if (msg) msg2 = yahoo_string_encode(gc, msg, NULL); - pkt = yahoo_packet_new(YAHOO_SERVICE_CHATADDINVITE, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CHATADDINVITE, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sssss", 1, dn, 118, buddy, 104, room2, 117, (msg2?msg2:""), 129, "0"); yahoo_packet_send_and_free(pkt, yd); @@ -989,7 +1024,7 @@ return; } - pkt = yahoo_packet_new(YAHOO_SERVICE_CHATGOTO, YAHOO_STATUS_AVAILABLE, 0); + pkt = yahoo_packet_new(YAHOO_SERVICE_CHATGOTO, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash(pkt, "sss", 109, name, 1, purple_connection_get_display_name(gc), 62, "2"); yahoo_packet_send_and_free(pkt, yd); } diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/prpl.c --- a/libpurple/prpl.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/prpl.c Sat Jul 25 04:54:36 2009 +0000 @@ -269,6 +269,10 @@ status = purple_presence_get_status(presence, status_id); if(NULL == status) + /* + * TODO: This should never happen, right? We should call + * g_warning() or something. + */ continue; old_status = purple_presence_get_active_status(presence); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/server.c --- a/libpurple/server.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/server.c Sat Jul 25 04:54:36 2009 +0000 @@ -873,7 +873,12 @@ account = purple_connection_get_account(gc); + g_return_val_if_fail(account != NULL, NULL); + g_return_val_if_fail(name != NULL, NULL); + conv = purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name); + g_return_val_if_fail(conv != NULL, NULL); + chat = PURPLE_CONV_CHAT(conv); if (!g_slist_find(gc->buddy_chats, conv)) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/sslconn.c --- a/libpurple/sslconn.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/sslconn.c Sat Jul 25 04:54:36 2009 +0000 @@ -100,6 +100,15 @@ PurpleSslInputFunction func, PurpleSslErrorFunction error_func, void *data) { + return purple_ssl_connect_with_ssl_cn(account, host, port, func, error_func, + NULL, data); +} + +PurpleSslConnection * +purple_ssl_connect_with_ssl_cn(PurpleAccount *account, const char *host, int port, + PurpleSslInputFunction func, PurpleSslErrorFunction error_func, + const char *ssl_cn, void *data) +{ PurpleSslConnection *gsc; g_return_val_if_fail(host != NULL, NULL); @@ -116,7 +125,7 @@ gsc = g_new0(PurpleSslConnection, 1); gsc->fd = -1; - gsc->host = g_strdup(host); + gsc->host = ssl_cn ? g_strdup(ssl_cn) : g_strdup(host); gsc->port = port; gsc->connect_cb_data = data; gsc->connect_cb = func; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/sslconn.h --- a/libpurple/sslconn.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/sslconn.h Sat Jul 25 04:54:36 2009 +0000 @@ -186,6 +186,31 @@ PurpleSslErrorFunction error_func, void *data); +/** + * Makes a SSL connection to the specified host and port, using the separate + * name to verify with the certificate. The caller should keep track of the + * returned value and use it to cancel the connection, if needed. + * + * @param account The account making the connection. + * @param host The destination host. + * @param port The destination port. + * @param func The SSL input handler function. + * @param error_func The SSL error handler function. This function + * should NOT call purple_ssl_close(). In + * the event of an error the #PurpleSslConnection will be + * destroyed for you. + * @param ssl_host The hostname of the other peer (to verify the CN) + * @param data User-defined data. + * + * @return The SSL connection handle. + * @since 2.6.0 + */ +PurpleSslConnection *purple_ssl_connect_with_ssl_cn(PurpleAccount *account, const char *host, + int port, PurpleSslInputFunction func, + PurpleSslErrorFunction error_func, + const char *ssl_host, + void *data); + #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_SSLCONN_C_) /** * Makes a SSL connection using an already open file descriptor. diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/status.c --- a/libpurple/status.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/status.c Sat Jul 25 04:54:36 2009 +0000 @@ -1533,7 +1533,8 @@ g_return_val_if_fail(primitive != PURPLE_STATUS_UNSET, FALSE); for (l = purple_presence_get_statuses(presence); - l != NULL; l = l->next) { + l != NULL; l = l->next) + { PurpleStatus *temp_status = l->data; PurpleStatusType *type = purple_status_get_type(temp_status); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/tests/test_jabber_jutil.c --- a/libpurple/tests/test_jabber_jutil.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/tests/test_jabber_jutil.c Sat Jul 25 04:54:36 2009 +0000 @@ -44,6 +44,10 @@ longnode = g_strnfill(1023, 'a'); fail_unless(jabber_nodeprep_validate(longnode)); g_free(longnode); + + longnode = g_strnfill(1024, 'a'); + fail_if(jabber_nodeprep_validate(longnode)); + g_free(longnode); } END_TEST @@ -68,6 +72,87 @@ } END_TEST +#define assert_valid_jid(str) { \ + JabberID *jid = jabber_id_new(str); \ + fail_if(jid == NULL, "JID '%s' is valid but jabber_id_new() rejected it", str); \ + jabber_id_free(jid); \ +} + +#define assert_invalid_jid(str) { \ + JabberID *jid = jabber_id_new(str); \ + fail_if(jid != NULL, "JID '%s' is invalid but jabber_id_new() allowed it", str); \ + jabber_id_free(jid); \ +} + +#define assert_jid_parts(expect_node, expect_domain, str) { \ + JabberID *jid = jabber_id_new(str); \ + fail_if(jid == NULL, "JID '%s' is valid but jabber_id_new() rejected it", str); \ + fail_if(jid->node == NULL, "JID '%s' is valid but jabber_id_new() didn't return a node", str); \ + fail_if(jid->domain == NULL, "JID '%s' is valid but jabber_id_new() didn't return a domain", str); \ + fail_if(jid->resource != NULL, "JID '%s' doesn't contain a resource", str); \ + assert_string_equal(expect_node, jid->node); \ + assert_string_equal(expect_domain, jid->domain); \ + jabber_id_free(jid); \ +} + +START_TEST(test_jabber_id_new) +{ + assert_valid_jid("gmail.com"); + assert_valid_jid("gmail.com/Test"); + assert_valid_jid("gmail.com/Test@"); + assert_valid_jid("gmail.com/@"); + assert_valid_jid("gmail.com/Test@alkjaweflkj"); + assert_valid_jid("mark.doliner@gmail.com"); + assert_valid_jid("mark.doliner@gmail.com/Test12345"); + assert_valid_jid("mark.doliner@gmail.com/Test@12345"); + assert_valid_jid("mark.doliner@gmail.com/Te/st@12@//345"); + assert_valid_jid("わいど@conference.jabber.org"); + assert_valid_jid("まりるーむ@conference.jabber.org"); + assert_valid_jid("mark.doliner@gmail.com/まりるーむ"); + assert_valid_jid("mark.doliner@gmail/stuff.org"); + assert_valid_jid("stuart@nödåtXäYZ.se"); + assert_valid_jid("stuart@nödåtXäYZ.se/まりるーむ"); + assert_valid_jid("mark.doliner@わいど.org"); + assert_valid_jid("nick@まつ.おおかみ.net"); + assert_valid_jid("paul@10.0.42.230/s"); + assert_valid_jid("paul@[::1]"); /* IPv6 */ + assert_valid_jid("paul@[2001:470:1f05:d58::2]"); + assert_valid_jid("paul@[2001:470:1f05:d58::2]/foo"); + + assert_invalid_jid("@gmail.com"); + assert_invalid_jid("@@gmail.com"); + assert_invalid_jid("mark.doliner@@gmail.com/Test12345"); + assert_invalid_jid("mark@doliner@gmail.com/Test12345"); + assert_invalid_jid("@gmail.com/Test@12345"); + assert_invalid_jid("/Test@12345"); + assert_invalid_jid("mark.doliner@"); + assert_invalid_jid("mark.doliner/"); + assert_invalid_jid("mark.doliner@gmail_stuff.org"); + assert_invalid_jid("mark.doliner@gmail[stuff.org"); + assert_invalid_jid("mark.doliner@gmail\\stuff.org"); + assert_invalid_jid("paul@[::1]124"); + assert_invalid_jid("paul@2[::1]124/as"); + + /* Ensure that jabber_id_new is properly lowercasing node and domains */ + assert_jid_parts("paul", "darkrain42.org", "PaUL@darkrain42.org"); + assert_jid_parts("paul", "darkrain42.org", "paul@DaRkRaIn42.org"); + + /* These case-mapping tests culled from examining RFC3454 B.2 */ + + /* Cyrillic capital EF (U+0424) maps to lowercase EF (U+0444) */ + assert_jid_parts("ф", "darkrain42.org", "Ф@darkrain42.org"); + /* + * These character (U+A664 and U+A665) are not mapped to anything in + * RFC3454 B.2. This first test *fails* when not using IDN because glib's + * case-folding/utf8_strdown improperly lowercases the character. + */ + assert_jid_parts("Ꙥ", "darkrain42.org", "Ꙥ@darkrain42.org"); + assert_jid_parts("ꙥ", "darkrain42.org", "ꙥ@darkrain42.org"); + /* U+04E9 to U+04E9 */ + assert_jid_parts("paul", "өarkrain42.org", "paul@Өarkrain42.org"); +} +END_TEST + Suite * jabber_jutil_suite(void) { @@ -82,10 +167,11 @@ tcase_add_test(tc, test_get_bare_jid); suite_add_tcase(s, tc); - tc = tcase_create("Nodeprep validate"); + tc = tcase_create("JID validate"); tcase_add_test(tc, test_nodeprep_validate); tcase_add_test(tc, test_nodeprep_validate_illegal_chars); tcase_add_test(tc, test_nodeprep_validate_too_long); + tcase_add_test(tc, test_jabber_id_new); suite_add_tcase(s, tc); return s; diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/tests/test_util.c --- a/libpurple/tests/test_util.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/tests/test_util.c Sat Jul 25 04:54:36 2009 +0000 @@ -14,8 +14,7 @@ gsize sz = 0; guchar *out = purple_base16_decode("21646c726f77202c6f6c6c656800", &sz); fail_unless(sz == 14, NULL); - assert_string_equal("!dlrow ,olleh", (const char *)out); - g_free(out); + assert_string_equal_free("!dlrow ,olleh", (char *)out); } END_TEST @@ -30,8 +29,7 @@ gsize sz; guchar *out = purple_base64_decode("b3d0LXl0cm9mAA==", &sz); fail_unless(sz == 10, NULL); - assert_string_equal("owt-ytrof", (const char *)out); - g_free(out); + assert_string_equal_free("owt-ytrof", (char *)out); } END_TEST @@ -82,6 +80,25 @@ } END_TEST +START_TEST(test_util_ipv6_is_valid) +{ + fail_unless(purple_ipv6_address_is_valid("2001:0db8:85a3:0000:0000:8a2e:0370:7334")); + fail_unless(purple_ipv6_address_is_valid("2001:db8:85a3:0:0:8a2e:370:7334")); + fail_unless(purple_ipv6_address_is_valid("2001:db8:85a3::8a2e:370:7334")); + fail_unless(purple_ipv6_address_is_valid("2001:0db8:0:0::1428:57ab")); + fail_unless(purple_ipv6_address_is_valid("::1")); + fail_unless(purple_ipv6_address_is_valid("1::")); + fail_unless(purple_ipv6_address_is_valid("1::1")); + fail_unless(purple_ipv6_address_is_valid("::")); + fail_if(purple_ipv6_address_is_valid("")); + fail_if(purple_ipv6_address_is_valid(":")); + fail_if(purple_ipv6_address_is_valid("1.2.3.4")); + fail_if(purple_ipv6_address_is_valid("2001::FFD3::57ab")); + fail_if(purple_ipv6_address_is_valid("200000000::1")); + fail_if(purple_ipv6_address_is_valid("QWERTY::1")); +} +END_TEST + START_TEST(test_util_str_to_time) { fail_unless(377182200 == purple_str_to_time("19811214T12:50:00", TRUE, NULL, NULL, NULL)); @@ -94,18 +111,15 @@ gchar *xhtml = NULL; gchar *plaintext = NULL; purple_markup_html_to_xhtml("", &xhtml, &plaintext); - assert_string_equal("", xhtml); - g_free(xhtml); - assert_string_equal("", plaintext); - g_free(plaintext); + assert_string_equal_free("", xhtml); + assert_string_equal_free("", plaintext); } END_TEST START_TEST(test_mime_decode_field) { gchar *result = purple_mime_decode_field("=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?="); - assert_string_equal("Keld Jørn Simonsen", result); - g_free(result); + assert_string_equal_free("Keld Jørn Simonsen", result); } END_TEST @@ -137,6 +151,10 @@ tcase_add_test(tc, test_util_email_is_valid); suite_add_tcase(s, tc); + tc = tcase_create("IPv6"); + tcase_add_test(tc, test_util_ipv6_is_valid); + suite_add_tcase(s, tc); + tc = tcase_create("Time"); tcase_add_test(tc, test_util_str_to_time); suite_add_tcase(s, tc); diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/util.c --- a/libpurple/util.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/util.c Sat Jul 25 04:54:36 2009 +0000 @@ -65,7 +65,7 @@ gboolean got_headers; gboolean has_explicit_data_len; char *webdata; - unsigned long len; + gsize len; unsigned long data_len; gssize max_len; gboolean chunked; @@ -1411,6 +1411,12 @@ gboolean ignore; }; +/* NOTE: Do not put `do {} while(0)` around this macro (as this is the method + recommended in the GCC docs). It contains 'continue's that should + affect the while-loop in purple_markup_html_to_xhtml and doing the + above would break that. + Also, remember to put braces in constructs that require them for + multiple statements when using this macro. */ #define ALLOW_TAG_ALT(x, y) if(!g_ascii_strncasecmp(c, "<" x " ", strlen("<" x " "))) { \ const char *o = c + strlen("<" x); \ const char *p = NULL, *q = NULL, *r = NULL; \ @@ -1462,26 +1468,27 @@ g_string_free(innards, TRUE); \ continue; \ } \ - if(!g_ascii_strncasecmp(c, "<" x, strlen("<" x)) && \ - (*(c+strlen("<" x)) == '>' || \ - !g_ascii_strncasecmp(c+strlen("<" x), "/>", 2))) { \ + if(!g_ascii_strncasecmp(c, "<" x, strlen("<" x)) && \ + (*(c+strlen("<" x)) == '>' || \ + !g_ascii_strncasecmp(c+strlen("<" x), "/>", 2))) { \ + if(xhtml) \ + xhtml = g_string_append(xhtml, "<" y); \ + c += strlen("<" x); \ + if(*c != '/') { \ + struct purple_parse_tag *pt = g_new0(struct purple_parse_tag, 1); \ + pt->src_tag = x; \ + pt->dest_tag = y; \ + tags = g_list_prepend(tags, pt); \ if(xhtml) \ - xhtml = g_string_append(xhtml, "<" y); \ - c += strlen("<" x); \ - if(*c != '/') { \ - struct purple_parse_tag *pt = g_new0(struct purple_parse_tag, 1); \ - pt->src_tag = x; \ - pt->dest_tag = y; \ - tags = g_list_prepend(tags, pt); \ - if(xhtml) \ - xhtml = g_string_append_c(xhtml, '>'); \ - } else { \ - if(xhtml) \ - xhtml = g_string_append(xhtml, "/>");\ - } \ - c = strchr(c, '>') + 1; \ - continue; \ - } + xhtml = g_string_append_c(xhtml, '>'); \ + } else { \ + if(xhtml) \ + xhtml = g_string_append(xhtml, "/>");\ + } \ + c = strchr(c, '>') + 1; \ + continue; \ + } +/* Don't forget to check the note above for ALLOW_TAG_ALT. */ #define ALLOW_TAG(x) ALLOW_TAG_ALT(x, x) void purple_markup_html_to_xhtml(const char *html, char **xhtml_out, @@ -1574,8 +1581,9 @@ ALLOW_TAG("h5"); ALLOW_TAG("h6"); /* we only allow html to start the message */ - if(c == html) + if(c == html) { ALLOW_TAG("html"); + } ALLOW_TAG_ALT("i", "em"); ALLOW_TAG_ALT("italic", "em"); ALLOW_TAG("li"); @@ -3010,10 +3018,10 @@ } /* - * TODO: Consider using something faster than SHA-1, such as MD5, MD4 - * or CRC32. Are there security implications to that? Would - * probably be a good idea to benchmark some algorithms with - * 3KB-10KB chunks of data (typical buddy icon sizes). + * We thought about using non-cryptographic hashes like CRC32 here. + * They would be faster, but we think using something more secure is + * important, so that it is more difficult for someone to maliciously + * replace one buddy's icon with something else. */ char * purple_util_get_image_checksum(gconstpointer image_data, size_t image_len) @@ -3142,13 +3150,15 @@ { struct sockaddr addr; socklen_t namelen = sizeof(addr); + struct in_addr in; g_return_val_if_fail(fd != 0, NULL); if (getsockname(fd, &addr, &namelen)) return NULL; - return g_strdup(inet_ntoa(((struct sockaddr_in *)&addr)->sin_addr)); + in = ((struct sockaddr_in *)&addr)->sin_addr; + return g_strdup(inet_ntoa(in)); } @@ -4488,7 +4498,7 @@ } gboolean -purple_ip_address_is_valid(const char *ip) +purple_ipv4_address_is_valid(const char *ip) { int c, o1, o2, o3, o4; char end; @@ -4501,6 +4511,58 @@ return TRUE; } +gboolean +purple_ipv6_address_is_valid(const gchar *ip) +{ + const gchar *c; + gboolean double_colon = FALSE; + gint chunks = 1; + gint in = 0; + + g_return_val_if_fail(ip != NULL, FALSE); + + if (*ip == '\0') + return FALSE; + + for (c = ip; *c; ++c) { + if ((*c >= '0' && *c <= '9') || + (*c >= 'a' && *c <= 'f') || + (*c >= 'A' && *c <= 'F')) { + if (++in > 4) + /* Only four hex digits per chunk */ + return FALSE; + continue; + } else if (*c == ':') { + /* The start of a new chunk */ + ++chunks; + in = 0; + if (*(c + 1) == ':') { + /* + * '::' indicates a consecutive series of chunks full + * of zeroes. There can be only one of these per address. + */ + if (double_colon) + return FALSE; + double_colon = TRUE; + } + } else + return FALSE; + } + + /* + * Either we saw a '::' and there were fewer than 8 chunks -or- + * we didn't see a '::' and saw exactly 8 chunks. + */ + return (double_colon && chunks < 8) || (!double_colon && chunks == 8); +} + +/* TODO 3.0.0: Add ipv6 check, too */ +gboolean +purple_ip_address_is_valid(const char *ip) +{ + return purple_ipv4_address_is_valid(ip); +} + /* Stolen from gnome_uri_list_extract_uris */ GList * purple_uri_list_extract_uris(const gchar *uri_list) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/util.h --- a/libpurple/util.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/util.h Sat Jul 25 04:54:36 2009 +0000 @@ -1203,10 +1203,33 @@ * @param ip The IP address to validate. * * @return True if the IP address is syntactically correct. + * @deprecated This function will be replaced with one that validates + * as either IPv4 or IPv6 in 3.0.0. If you don't want this, + * behavior, use one of the more specific functions. */ gboolean purple_ip_address_is_valid(const char *ip); /** + * Checks if the given IP address is a syntactically valid IPv4 address. + * + * @param ip The IP address to validate. + * + * @return True if the IP address is syntactically correct. + * @since 2.6.0 + */ +gboolean purple_ipv4_address_is_valid(const char *ip); + +/** + * Checks if the given IP address is a syntactically valid IPv6 address. + * + * @param ip The IP address to validate. + * + * @return True if the IP address is syntactically correct. + * @since 2.6.0 + */ +gboolean purple_ipv6_address_is_valid(const char *ip); + +/** * This function extracts a list of URIs from the a "text/uri-list" * string. It was "borrowed" from gnome_uri_list_extract_uris * diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/win32/global.mak --- a/libpurple/win32/global.mak Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/win32/global.mak Sat Jul 25 04:54:36 2009 +0000 @@ -27,10 +27,10 @@ # Where we installing this stuff to? PIDGIN_INSTALL_DIR := $(PIDGIN_TREE_TOP)/win32-install-dir PURPLE_INSTALL_DIR := $(PIDGIN_TREE_TOP)/win32-install-dir -PIDGIN_INSTALL_PERLMOD_DIR := $(PIDGIN_INSTALL_DIR)/perlmod PIDGIN_INSTALL_PLUGINS_DIR := $(PIDGIN_INSTALL_DIR)/plugins -PURPLE_INSTALL_PERLMOD_DIR := $(PURPLE_INSTALL_DIR)/perlmod +PIDGIN_INSTALL_PERL_DIR := $(PIDGIN_INSTALL_PLUGINS_DIR)/perl PURPLE_INSTALL_PLUGINS_DIR := $(PURPLE_INSTALL_DIR)/plugins +PURPLE_INSTALL_PERL_DIR := $(PURPLE_INSTALL_PLUGINS_DIR)/perl PURPLE_INSTALL_PO_DIR := $(PURPLE_INSTALL_DIR)/locale # Important (enough) locations in our source code diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/win32/libc_internal.h --- a/libpurple/win32/libc_internal.h Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/win32/libc_internal.h Sat Jul 25 04:54:36 2009 +0000 @@ -120,10 +120,14 @@ # define ifc_req ifc_ifcu.ifcu_req /* Array of structures. */ /* sys/time.h */ +#if __MINGW32_MAJOR_VERSION < 3 || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 10) struct timezone { int tz_minuteswest; int tz_dsttime; }; +#else +# include +#endif int wpurple_gettimeofday(struct timeval *p, struct timezone *z); /* time.h */ diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/win32/targets.mak --- a/libpurple/win32/targets.mak Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/win32/targets.mak Sat Jul 25 04:54:36 2009 +0000 @@ -37,7 +37,7 @@ mkdir -p $(PIDGIN_INSTALL_DIR) $(PIDGIN_INSTALL_PERLMOD_DIR): - mkdir -p $(PURPLE_INSTALL_PERLMOD_DIR) + mkdir -p $(PIDGIN_INSTALL_PERL_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR): mkdir -p $(PIDGIN_INSTALL_PLUGINS_DIR) @@ -45,3 +45,8 @@ $(PURPLE_INSTALL_PO_DIR): mkdir -p $(PURPLE_INSTALL_PO_DIR) +#$(PURPLE_INSTALL_PLUGINS_DIR): +# mkdir -p $(PURPLE_INSTALL_PLUGINS_DIR) + +#$(PURPLE_INSTALL_PERL_DIR): +# mkdir -p $(PURPLE_INSTALL_PERL_DIR) diff -r b4daae0798e3 -r e1cd44c7c7af libpurple/win32/win32dep.c --- a/libpurple/win32/win32dep.c Fri Jul 24 01:42:13 2009 +0000 +++ b/libpurple/win32/win32dep.c Sat Jul 25 04:54:36 2009 +0000 @@ -419,8 +419,6 @@ void wpurple_init(void) { WORD wVersionRequested; WSADATA wsaData; - const char *perlenv; - char *newenv; if (!g_thread_supported()) g_thread_init(NULL); @@ -444,17 +442,6 @@ WSACleanup(); } - /* Set Environmental Variables */ - /* Tell perl where to find Purple's perl modules */ - perlenv = g_getenv("PERL5LIB"); - newenv = g_strdup_printf("%s%s%s" G_DIR_SEPARATOR_S "perlmod;", - perlenv ? perlenv : "", - perlenv ? ";" : "", - wpurple_install_dir()); - if (!g_setenv("PERL5LIB", newenv, TRUE)) - purple_debug_warning("wpurple", "putenv failed for PERL5LIB\n"); - g_free(newenv); - purple_debug_info("wpurple", "wpurple_init end\n"); } diff -r b4daae0798e3 -r e1cd44c7c7af pidgin.desktop.in --- a/pidgin.desktop.in Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin.desktop.in Sat Jul 25 04:54:36 2009 +0000 @@ -1,5 +1,4 @@ [Desktop Entry] -Encoding=UTF-8 _Name=Pidgin Internet Messenger _GenericName=Internet Messenger _Comment=Send instant messages over multiple protocols diff -r b4daae0798e3 -r e1cd44c7c7af pidgin.spec.in --- a/pidgin.spec.in Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin.spec.in Sat Jul 25 04:54:36 2009 +0000 @@ -234,8 +234,6 @@ %{?_without_nm:--disable-nm} \ %{!?_without_gevolution:--enable-gevolution} \ %{?_with_mono:--enable-mono} \ - %{?_with_perlmakehack:--with-perl-lib=%{buildroot}%{_prefix}} \ - %{!?_with_perlmakehack:--with-perl-lib=%{_prefix}} \ %{?_with_sasl:--enable-cyrus-sasl} \ %{?_without_tcl:--disable-tcl} \ %{?_without_text:--disable-consoleui} @@ -244,15 +242,7 @@ %install rm -rf %{buildroot} -%if 0%{?_with_perlmakehack:1} -make prefix=%{buildroot}%{_prefix} bindir=%{buildroot}%{_bindir} \ - datadir=%{buildroot}%{_datadir} includedir=%{buildroot}%{_includedir} \ - libdir=%{buildroot}%{_libdir} mandir=%{buildroot}%{_mandir} \ - sysconfdir=%{buildroot}%{_sysconfdir} \ - install -%else make DESTDIR=$RPM_BUILD_ROOT LIBTOOL=/usr/bin/libtool install -%endif # Delete files that we don't want to put in any of the RPMs rm -f $RPM_BUILD_ROOT%{_libdir}/finch/*.la @@ -374,9 +364,9 @@ %doc %{_mandir}/man3*/* %dir %{_libdir}/pidgin -%attr(755, root, root) %{perl_vendorarch}/Pidgin.pm -%attr(755, root, root) %{perl_vendorarch}/auto/Pidgin - +%dir %{_libdir}/pidgin/perl +%dir %{_libdir}/pidgin/perl/auto +%dir %{_libdir}/pidgin/perl/auto/Pidgin %{_bindir}/pidgin %{_datadir}/pixmaps/pidgin %{_datadir}/icons/hicolor/*/apps/pidgin.* @@ -389,10 +379,11 @@ %{_libdir}/libpurple.so.* %dir %{_libdir}/purple-2 +%dir %{_libdir}/purple-2/perl +%dir %{_libdir}/purple-2/perl/auto +%dir %{_libdir}/purple-2/perl/auto/Purple %{_datadir}/purple %{_datadir}/sounds/purple -%attr(755, root, root) %{perl_vendorarch}/Purple.pm -%attr(755, root, root) %{perl_vendorarch}/auto/Purple %if 0%{?_with_dbus:1} %{_bindir}/purple-client-example @@ -473,6 +464,9 @@ %endif %changelog +* Sat Jul 11 2009 Stu Tomlinson +- Update to reflect changes in perl module installation directories + * Mon May 19 2008 Stu Tomlinson - Fix building without meanwhile support diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/gtkaccount.c Sat Jul 25 04:54:36 2009 +0000 @@ -784,7 +784,7 @@ dialog->protocol_frame = vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); gtk_container_set_border_width(GTK_CONTAINER(vbox), PIDGIN_HIG_BORDER); gtk_notebook_insert_page(GTK_NOTEBOOK(dialog->notebook), vbox, - gtk_label_new_with_mnemonic(_("_Advanced")), 1); + gtk_label_new_with_mnemonic(_("Ad_vanced")), 1); gtk_widget_show(vbox); for (l = dialog->prpl_info->protocol_options; l != NULL; l = l->next) @@ -1533,7 +1533,7 @@ dbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER); gtk_container_set_border_width(GTK_CONTAINER(dbox), PIDGIN_HIG_BORDER); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dbox, - gtk_label_new_with_mnemonic(_("_Proxy"))); + gtk_label_new_with_mnemonic(_("P_roxy"))); gtk_widget_show(dbox); add_proxy_options(dialog, dbox); diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/gtkblist.c --- a/pidgin/gtkblist.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/gtkblist.c Sat Jul 25 04:54:36 2009 +0000 @@ -1173,6 +1173,8 @@ _("Room _List"), 1, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, PIDGIN_STOCK_CHAT, GTK_RESPONSE_OK, NULL); + gtk_dialog_set_default_response(GTK_DIALOG(data->rq_data.window), + GTK_RESPONSE_OK); data->default_chat_name = NULL; data->rq_data.account = pidgin_account_option_menu_get_selected(data->rq_data.account_menu); @@ -1510,7 +1512,6 @@ PurpleContact *contact; PurpleBlistNode *node; gboolean contact_expanded = FALSE; - gboolean show_offline = FALSE; g_return_if_fail(menu); g_return_if_fail(buddy); @@ -1578,8 +1579,8 @@ G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL); } - if (!(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE)) { - show_offline = purple_blist_node_get_bool(node, "show_offline"); + if (!PURPLE_BLIST_NODE_HAS_FLAG(node, PURPLE_BLIST_NODE_FLAG_NO_SAVE)) { + gboolean show_offline = purple_blist_node_get_bool(node, "show_offline"); pidgin_new_item_from_stock(menu, show_offline ? _("Hide When Offline") : _("Show When Offline"), NULL, G_CALLBACK(gtk_blist_menu_showoffline_cb), node, 0, 0, NULL); } @@ -4647,13 +4648,21 @@ void pidgin_blist_setup_sort_methods() { + const char *id; + pidgin_blist_sort_method_reg("none", _("Manually"), sort_method_none); #if GTK_CHECK_VERSION(2,2,1) pidgin_blist_sort_method_reg("alphabetical", _("Alphabetically"), sort_method_alphabetical); pidgin_blist_sort_method_reg("status", _("By status"), sort_method_status); pidgin_blist_sort_method_reg("log_size", _("By recent log activity"), sort_method_log_activity); #endif - pidgin_blist_sort_method_set(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type")); + + id = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type"); + if (id == NULL) { + purple_debug_warning("gtkblist", "Sort method was NULL, resetting to alphabetical\n"); + id = "alphabetical"; + } + pidgin_blist_sort_method_set(id); } static void _prefs_change_redo_list(const char *name, PurplePrefType type, @@ -6328,15 +6337,15 @@ mark = g_strdup_printf("%s%s%s%s", text_color, text_font, esc ? esc : "", - !expanded ? " (" : "", + !expanded ? " (" : "", group_count, - !expanded ? ")" : ""); + !expanded ? ")" : ""); } else { mark = g_strdup_printf("%s%s%s%s", text_font, esc ? esc : "", - !expanded ? " (" : "", + !expanded ? " (" : "", group_count, - !expanded ? ")" : ""); + !expanded ? ")" : ""); } g_free(esc); @@ -6721,14 +6730,15 @@ #endif } - static void pidgin_blist_destroy(PurpleBuddyList *list) { PidginBuddyListPrivate *priv; - if (!gtkblist) + if (!list || !list->ui_data) return; + g_return_if_fail(list->ui_data == gtkblist); + purple_signals_disconnect_by_handle(gtkblist); if (gtkblist->headline_close) @@ -6931,6 +6941,8 @@ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_ADD, GTK_RESPONSE_OK, NULL); + gtk_dialog_set_default_response(GTK_DIALOG(data->rq_data.window), + GTK_RESPONSE_OK); g_signal_connect(G_OBJECT(data->rq_data.window), "destroy", G_CALLBACK(destroy_add_buddy_dialog_cb), data); @@ -7100,6 +7112,8 @@ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_ADD, GTK_RESPONSE_OK, NULL); + gtk_dialog_set_default_response(GTK_DIALOG(data->chat_data.rq_data.window), + GTK_RESPONSE_OK); data->chat_data.default_chat_name = g_strdup(name); @@ -7222,7 +7236,7 @@ static void set_urgent(void) { - if (!GTK_WIDGET_HAS_FOCUS(gtkblist->window)) + if (gtkblist->window && !GTK_WIDGET_HAS_FOCUS(gtkblist->window)) pidgin_set_urgent(GTK_WINDOW(gtkblist->window), TRUE); } @@ -7432,7 +7446,13 @@ void pidgin_blist_sort_method_reg(const char *id, const char *name, pidgin_blist_sort_function func) { - struct pidgin_blist_sort_method *method = g_new0(struct pidgin_blist_sort_method, 1); + struct pidgin_blist_sort_method *method; + + g_return_if_fail(id != NULL); + g_return_if_fail(name != NULL); + g_return_if_fail(func != NULL); + + method = g_new0(struct pidgin_blist_sort_method, 1); method->id = g_strdup(id); method->name = g_strdup(name); method->func = func; @@ -7444,6 +7464,8 @@ { GList *l = pidgin_blist_sort_methods; + g_return_if_fail(id != NULL); + while(l) { struct pidgin_blist_sort_method *method = l->data; if(!strcmp(method->id, id)) { @@ -8033,6 +8055,8 @@ if ((gtkblist == NULL) || (gtkblist->ift == NULL)) return; + g_return_if_fail(m != NULL); + sortmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Sort Buddies")); if (sortmenu == NULL) @@ -8047,7 +8071,7 @@ for (l = pidgin_blist_sort_methods; l; l = l->next) { method = (PidginBlistSortMethod *) l->data; menuitem = gtk_radio_menu_item_new_with_label(sl, _(method->name)); - if (!strcmp(m, method->id)) + if (g_str_equal(m, method->id)) activeitem = menuitem; sl = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); gtk_menu_shell_append(GTK_MENU_SHELL(sortmenu), menuitem); diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/gtkconv.c --- a/pidgin/gtkconv.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/gtkconv.c Sat Jul 25 04:54:36 2009 +0000 @@ -3362,7 +3362,7 @@ purple_blist_node_set_flags((PurpleBlistNode *)buddy, PURPLE_BLIST_NODE_FLAG_NO_SAVE); g_object_set_data_full(G_OBJECT(gtkconv->imhtml), "transient_buddy", - buddy, (GDestroyNotify)purple_blist_remove_buddy); + buddy, (GDestroyNotify)purple_buddy_destroy); } } } @@ -5015,6 +5015,7 @@ gtk_widget_set_name(gtkconv->imhtml, "pidgin_conv_imhtml"); gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),TRUE); + g_object_set_data(G_OBJECT(gtkconv->imhtml), "gtkconv", gtkconv); gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(imhtml_sw), &imhtml_sw_hscroll, NULL); @@ -7095,12 +7096,20 @@ icon = purple_conv_im_get_icon(PURPLE_CONV_IM(conv)); if (icon == NULL) + { + gtk_widget_set_size_request(gtkconv->u.im->icon_container, + -1, BUDDYICON_SIZE_MIN); return; + } data = purple_buddy_icon_get_data(icon, &len); if (data == NULL) + { + gtk_widget_set_size_request(gtkconv->u.im->icon_container, + -1, BUDDYICON_SIZE_MIN); return; + } } loader = gdk_pixbuf_loader_new(); diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/gtkdialogs.c --- a/pidgin/gtkdialogs.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/gtkdialogs.c Sat Jul 25 04:54:36 2009 +0000 @@ -76,7 +76,7 @@ {"Paul 'darkrain42' Aurich", NULL, NULL }, {"John 'rekkanoryo' Bailey", N_("bug master"), NULL}, {"Ethan 'Paco-Paco' Blanton", NULL, NULL}, - {"Hylke Bons", N_("artist"), "h.bons@student.rug.nl"}, + {"Hylke Bons", N_("artist"), "hylkebons@gmail.com"}, {"Thomas Butter", NULL, NULL}, /* feel free to not translate this */ {N_("Ka-Hing Cheung"), NULL, NULL}, diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/gtkmain.c --- a/pidgin/gtkmain.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/gtkmain.c Sat Jul 25 04:54:36 2009 +0000 @@ -356,6 +356,25 @@ g_hash_table_insert(ui_info, "website", "http://pidgin.im"); g_hash_table_insert(ui_info, "dev_website", "http://developer.pidgin.im"); g_hash_table_insert(ui_info, "client_type", "pc"); + + /* + * This is the client key for "Pidgin." It is owned by the AIM + * account "markdoliner." Please don't use this key for other + * applications. You can either not specify a client key, in + * which case the default "libpurple" key will be used, or you + * can register for your own client key at + * http://developer.aim.com/manageKeys.jsp + */ + g_hash_table_insert(ui_info, "prpl-aim-clientkey", "ma1cSASNCKFtrdv9"); + g_hash_table_insert(ui_info, "prpl-icq-clientkey", "ma1cSASNCKFtrdv9"); + + /* + * This is the distid for Pidgin, given to us by AOL. Please + * don't use this for other applications. You can just not + * specify a distid and libpurple will use a default. + */ + g_hash_table_insert(ui_info, "prpl-aim-distid", GINT_TO_POINTER(1550)); + g_hash_table_insert(ui_info, "prpl-icq-distid", GINT_TO_POINTER(1550)); } return ui_info; diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/gtkrequest.c --- a/pidgin/gtkrequest.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/gtkrequest.c Sat Jul 25 04:54:36 2009 +0000 @@ -717,12 +717,16 @@ GtkWidget *optmenu = NULL; PurpleRequestFieldGroup *group = purple_request_field_get_group(field); GList *fields = group->fields; + + /* Ensure the account option menu is created (if the widget hasn't + * been initialized already) for username auto-completion. */ while (fields) { PurpleRequestField *fld = fields->data; fields = fields->next; - if (purple_request_field_get_type(fld) == PURPLE_REQUEST_FIELD_ACCOUNT) + if (purple_request_field_get_type(fld) == PURPLE_REQUEST_FIELD_ACCOUNT && + purple_request_field_is_visible(fld)) { const char *type_hint = purple_request_field_get_type_hint(fld); if (type_hint != NULL && strcmp(type_hint, "account") == 0) @@ -730,7 +734,7 @@ optmenu = GTK_WIDGET(purple_request_field_get_ui_data(fld)); if (optmenu == NULL) { optmenu = GTK_WIDGET(create_account_field(fld)); - purple_request_field_set_ui_data(field, optmenu); + purple_request_field_set_ui_data(fld, optmenu); } break; } diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/gtkutils.c --- a/pidgin/gtkutils.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/gtkutils.c Sat Jul 25 04:54:36 2009 +0000 @@ -54,6 +54,7 @@ #include "prpl.h" #include "request.h" #include "signals.h" +#include "sound.h" #include "util.h" #include "gtkaccount.h" @@ -3578,6 +3579,211 @@ return TRUE; } +static void +file_open_uri(GtkIMHtml *imhtml, const char *uri) +{ + /* Copied from gtkft.c:open_button_cb */ +#ifdef _WIN32 + /* If using Win32... */ + int code; + if (G_WIN32_HAVE_WIDECHAR_API()) { + wchar_t *wc_filename = g_utf8_to_utf16( + uri, -1, NULL, NULL, NULL); + + code = (int)ShellExecuteW(NULL, NULL, wc_filename, NULL, NULL, + SW_SHOW); + + g_free(wc_filename); + } else { + char *l_filename = g_locale_from_utf8( + uri, -1, NULL, NULL, NULL); + + code = (int)ShellExecuteA(NULL, NULL, l_filename, NULL, NULL, + SW_SHOW); + + g_free(l_filename); + } + + if (code == SE_ERR_ASSOCINCOMPLETE || code == SE_ERR_NOASSOC) + { + purple_notify_error(imhtml, NULL, + _("There is no application configured to open this type of file."), NULL); + } + else if (code < 32) + { + purple_notify_error(imhtml, NULL, + _("An error occurred while opening the file."), NULL); + purple_debug_warning("gtkutils", "filename: %s; code: %d\n", uri, code); + } +#else + char *command = NULL; + char *tmp = NULL; + GError *error = NULL; + + if (purple_running_gnome()) + { + char *escaped = g_shell_quote(uri); + command = g_strdup_printf("gnome-open %s", escaped); + g_free(escaped); + } + else if (purple_running_kde()) + { + char *escaped = g_shell_quote(uri); + + if (purple_str_has_suffix(uri, ".desktop")) + command = g_strdup_printf("kfmclient openURL %s 'text/plain'", escaped); + else + command = g_strdup_printf("kfmclient openURL %s", escaped); + g_free(escaped); + } + else + { + purple_notify_uri(NULL, uri); + return; + } + + if (purple_program_is_valid(command)) + { + gint exit_status; + if (!g_spawn_command_line_sync(command, NULL, NULL, &exit_status, &error)) + { + tmp = g_strdup_printf(_("Error launching %s: %s"), + uri, error->message); + purple_notify_error(imhtml, NULL, _("Unable to open file."), tmp); + g_free(tmp); + g_error_free(error); + } + if (exit_status != 0) + { + char *primary = g_strdup_printf(_("Error running %s"), command); + char *secondary = g_strdup_printf(_("Process returned error code %d"), + exit_status); + purple_notify_error(imhtml, NULL, primary, secondary); + g_free(tmp); + } + } +#endif +} + +#define FILELINKSIZE (sizeof("file://") - 1) +static gboolean +file_clicked_cb(GtkIMHtml *imhtml, GtkIMHtmlLink *link) +{ + const char *uri = gtk_imhtml_link_get_url(link) + FILELINKSIZE; + file_open_uri(imhtml, uri); + return TRUE; +} + +static gboolean +open_containing_cb(GtkIMHtml *imhtml, const char *url) +{ + char *dir = g_path_get_dirname(url + FILELINKSIZE); + file_open_uri(imhtml, dir); + g_free(dir); + return TRUE; +} + +static gboolean +file_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu) +{ + GtkWidget *img, *item; + const char *url; + + url = gtk_imhtml_link_get_url(link); + + /* Open File */ + img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU); + item = gtk_image_menu_item_new_with_mnemonic(_("_Open File")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); + g_signal_connect_swapped(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_link_activate), link); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + + /* Open Containing Directory */ + img = gtk_image_new_from_stock(GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU); + item = gtk_image_menu_item_new_with_mnemonic(_("Open _Containing Directory")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); + g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(open_containing_cb), (gpointer)url); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + + return TRUE; +} + +#define AUDIOLINKSIZE (sizeof("audio://") - 1) +static gboolean +audio_clicked_cb(GtkIMHtml *imhtml, GtkIMHtmlLink *link) +{ + const char *uri; + PidginConversation *conv = g_object_get_data(G_OBJECT(imhtml), "gtkconv"); + if (!conv) /* no playback in debug window */ + return TRUE; + uri = gtk_imhtml_link_get_url(link) + AUDIOLINKSIZE; + purple_sound_play_file(uri, NULL); + return TRUE; +} + +static void +savefile_write_cb(gpointer user_data, char *file) +{ + char *temp_file = user_data; + gchar *contents; + gsize length; + GError *error; + + if (!g_file_get_contents(temp_file, &contents, &length, &error)) { + purple_debug_error("gtkutils", "Unable to read contents of %s: %s\n", + temp_file, error->message); + g_error_free(error); + return; + } + + if (!purple_util_write_data_to_file_absolute(file, contents, length)) { + purple_debug_error("gtkutils", "Unable to write contents to %s\n", + file); + } +} + +static gboolean +save_file_cb(GtkWidget *item, const char *url) +{ + PidginConversation *conv = g_object_get_data(G_OBJECT(item), "gtkconv"); + if (!conv) + return TRUE; + purple_request_file(conv->active_conv, _("Save File"), NULL, TRUE, + G_CALLBACK(savefile_write_cb), NULL, + conv->active_conv->account, NULL, conv->active_conv, + (void *)url); + return TRUE; +} + +static gboolean +audio_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu) +{ + GtkWidget *img, *item; + const char *url; + PidginConversation *conv = g_object_get_data(G_OBJECT(imhtml), "gtkconv"); + if (!conv) /* No menu in debug window */ + return TRUE; + + url = gtk_imhtml_link_get_url(link); + + /* Play Sound */ + img = gtk_image_new_from_stock(GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_MENU); + item = gtk_image_menu_item_new_with_mnemonic(_("_Play Sound")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); + g_signal_connect_swapped(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_link_activate), link); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + + /* Save File */ + img = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU); + item = gtk_image_menu_item_new_with_mnemonic(_("_Save File")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); + g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(save_file_cb), (gpointer)(url+AUDIOLINKSIZE)); + g_object_set_data(G_OBJECT(item), "gtkconv", conv); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + + return TRUE; +} + /* XXX: The following two functions are for demonstration purposes only! */ static gboolean open_dialog(GtkIMHtml *imhtml, GtkIMHtmlLink *link) @@ -3684,6 +3890,9 @@ gtk_imhtml_class_register_protocol("gopher://", url_clicked_cb, link_context_menu); gtk_imhtml_class_register_protocol("mailto:", url_clicked_cb, copy_email_address); + gtk_imhtml_class_register_protocol("file://", file_clicked_cb, file_context_menu); + gtk_imhtml_class_register_protocol("audio://", audio_clicked_cb, audio_context_menu); + /* Example custom URL handler. */ gtk_imhtml_class_register_protocol("open://", open_dialog, dummy); @@ -3710,6 +3919,9 @@ return; } + gtk_imhtml_class_register_protocol("audio://", NULL, NULL); + gtk_imhtml_class_register_protocol("file://", NULL, NULL); + gtk_imhtml_class_register_protocol("http://", NULL, NULL); gtk_imhtml_class_register_protocol("https://", NULL, NULL); gtk_imhtml_class_register_protocol("ftp://", NULL, NULL); diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pidginstock.c --- a/pidgin/pidginstock.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/pidginstock.c Sat Jul 25 04:54:36 2009 +0000 @@ -200,8 +200,8 @@ { PIDGIN_STOCK_TOOLBAR_SEND_FILE, "toolbar", "send-file.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, { PIDGIN_STOCK_TOOLBAR_TRANSFER, "toolbar", "transfer.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, #ifdef USE_VV - { PIDGIN_STOCK_TOOLBAR_AUDIO_CALL, "toolbar", "audio-call.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_VIDEO_CALL, "toolbar", "video-call.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_AUDIO_CALL, "toolbar", "audio-call.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_VIDEO_CALL, "toolbar", "video-call.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, { PIDGIN_STOCK_TOOLBAR_AUDIO_VIDEO_CALL, "toolbar", "audio-video-call.png", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, #endif }; diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/Makefile.am --- a/pidgin/pixmaps/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/pixmaps/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -447,10 +447,30 @@ toolbar/16/video-call.png TOOLBAR_22_SCALABLE = \ - toolbar/22/scalable/select-avatar.svg + toolbar/22/scalable/select-avatar.svg \ + toolbar/22/scalable/video-call.svg \ + toolbar/22/scalable/voice-call.svg TOOLBAR_22 = \ - toolbar/22/select-avatar.png + toolbar/22/select-avatar.png \ + toolbar/22/video-call.png \ + toolbar/22/voice-call.png + +TOOLBAR_32_SCALABLE = \ + toolbar/32/scalable/video-call.svg \ + toolbar/32/scalable/voice-call.svg + +TOOLBAR_32 = \ + toolbar/32/video-call.png \ + toolbar/32/voice-call.png + +TOOLBAR_48_SCALABLE = \ + toolbar/48/scalable/video-call.svg \ + toolbar/48/scalable/voice-call.svg + +TOOLBAR_48 = \ + toolbar/48/video-call.png \ + toolbar/48/voice-call.png TRAY_16_ICO = \ tray/16/available_4bit.ico \ @@ -510,6 +530,8 @@ edit.png \ info.png \ logo.png \ + logo.svg \ + logo-nonvv.png \ pause.png \ arrow-down.xpm \ arrow-up.xpm \ @@ -530,7 +552,9 @@ $(PROTOCOLS_22_SCALABLE) \ $(PROTOCOLS_48_SCALABLE) \ $(TOOLBAR_16_SCALABLE) \ - $(TOOLBAR_22_SCALABLE) + $(TOOLBAR_22_SCALABLE) \ + $(TOOLBAR_32_SCALABLE) \ + $(TOOLBAR_48_SCALABLE) pidginbuttonpixdir = $(datadir)/pixmaps/pidgin/buttons pidginbuttonpix_DATA = edit.png pause.png info.png @@ -559,6 +583,8 @@ $(TOOLBAR_11) \ $(TOOLBAR_16) \ $(TOOLBAR_22) \ + $(TOOLBAR_32) \ + $(TOOLBAR_48) \ $(TRAY_16) \ $(TRAY_16_ICO) \ $(TRAY_22) \ diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/logo-nonvv.png Binary file pidgin/pixmaps/logo-nonvv.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/logo.png Binary file pidgin/pixmaps/logo.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/logo.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/logo.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,2084 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/16/available.png Binary file pidgin/pixmaps/status/16/available.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/16/away.png Binary file pidgin/pixmaps/status/16/away.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/16/busy.png Binary file pidgin/pixmaps/status/16/busy.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/16/offline.png Binary file pidgin/pixmaps/status/16/offline.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/22/available.png Binary file pidgin/pixmaps/status/22/available.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/22/away.png Binary file pidgin/pixmaps/status/22/away.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/22/busy.png Binary file pidgin/pixmaps/status/22/busy.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/22/offline.png Binary file pidgin/pixmaps/status/22/offline.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/32/available.png Binary file pidgin/pixmaps/status/32/available.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/32/away.png Binary file pidgin/pixmaps/status/32/away.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/32/busy.png Binary file pidgin/pixmaps/status/32/busy.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/32/offline.png Binary file pidgin/pixmaps/status/32/offline.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/48/available.png Binary file pidgin/pixmaps/status/48/available.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/48/away.png Binary file pidgin/pixmaps/status/48/away.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/48/busy.png Binary file pidgin/pixmaps/status/48/busy.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/48/offline.png Binary file pidgin/pixmaps/status/48/offline.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/status/svg/status.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/svg/status.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,3780 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/22/scalable/video-call.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/22/scalable/video-call.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,658 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/22/scalable/voice-call.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/22/scalable/voice-call.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,795 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/22/video-call.png Binary file pidgin/pixmaps/toolbar/22/video-call.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/22/voice-call.png Binary file pidgin/pixmaps/toolbar/22/voice-call.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/32/scalable/video-call.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/32/scalable/video-call.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,745 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/32/scalable/voice-call.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/32/scalable/voice-call.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,990 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/32/video-call.png Binary file pidgin/pixmaps/toolbar/32/video-call.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/32/voice-call.png Binary file pidgin/pixmaps/toolbar/32/voice-call.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/48/scalable/video-call.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/48/scalable/video-call.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,680 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/48/scalable/voice-call.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/toolbar/48/scalable/voice-call.svg Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,756 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/48/video-call.png Binary file pidgin/pixmaps/toolbar/48/video-call.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/pixmaps/toolbar/48/voice-call.png Binary file pidgin/pixmaps/toolbar/48/voice-call.png has changed diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/Makefile.am --- a/pidgin/plugins/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -140,5 +140,5 @@ $(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS) $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module -avoid-version $(PLUGIN_LIBS) @rm -f tmp$@.lo tmp$@.o libtmp$@.la - @cp .libs/libtmp$@.so* $@ - @rm -f .libs/libtmp$@.* + @cp .libs/libtmp$@*.so $@ + @rm -rf .libs/libtmp$@.* diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/disco/gtkdisco.c --- a/pidgin/plugins/disco/gtkdisco.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/disco/gtkdisco.c Sat Jul 25 04:54:36 2009 +0000 @@ -112,7 +112,7 @@ pidgin_disco_load_icon(XmppDiscoService *service, const char *size) { GdkPixbuf *pixbuf = NULL; - char *filename; + char *filename = NULL; g_return_val_if_fail(service != NULL, NULL); g_return_val_if_fail(size != NULL, NULL); diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/disco/xmppdisco.c --- a/pidgin/plugins/disco/xmppdisco.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/disco/xmppdisco.c Sat Jul 25 04:54:36 2009 +0000 @@ -59,13 +59,6 @@ const char *id, const char *from, xmlnode *iq, gpointer data); -struct xmpp_iq_cb_data -{ - gpointer context; - PurpleConnection *pc; - XmppIqCallback cb; -}; - struct item_data { PidginDiscoList *list; XmppDiscoService *parent; @@ -73,6 +66,20 @@ char *node; /* disco#info replies don't always include the node */ }; +struct xmpp_iq_cb_data +{ + /* + * Every IQ callback in this plugin uses the same structure for the + * callback data. It's a hack (it wouldn't scale), but it's used so that + * it's easy to clean up all the callbacks when the account disconnects + * (see remove_iq_callbacks_by_pc below). + */ + struct item_data *context; + PurpleConnection *pc; + XmppIqCallback cb; +}; + + static char* generate_next_id() { @@ -93,11 +100,6 @@ struct xmpp_iq_cb_data *cb_data = value; if (cb_data && cb_data->pc == user_data) { - /* - * This is a hack. All the IQ callback datas in this code are - * the same structure so that we can free them here. Ideally they'd - * be objects and this would be polymorphic. That's overkill, here. - */ struct item_data *item_data = cb_data->context; if (item_data) { diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/gevolution/add_buddy_dialog.c --- a/pidgin/plugins/gevolution/add_buddy_dialog.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/gevolution/add_buddy_dialog.c Sat Jul 25 04:54:36 2009 +0000 @@ -234,6 +234,7 @@ EBook *book; gboolean status; GList *cards, *c; + GError *err = NULL; if (dialog->book != NULL) { @@ -250,10 +251,11 @@ gtk_list_store_clear(dialog->model); - if (!gevo_load_addressbook(uri, &book, NULL)) + if (!gevo_load_addressbook(uri, &book, &err)) { purple_debug_error("evolution", - "Error retrieving default addressbook\n"); + "Error retrieving default addressbook: %s\n", err->message); + g_error_free(err); return; } diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/gevolution/assoc-buddy.c --- a/pidgin/plugins/gevolution/assoc-buddy.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/gevolution/assoc-buddy.c Sat Jul 25 04:54:36 2009 +0000 @@ -138,6 +138,7 @@ const char *prpl_id; gboolean status; GList *cards, *c; + GError *err = NULL; if (dialog->book != NULL) { @@ -154,10 +155,11 @@ gtk_list_store_clear(dialog->model); - if (!gevo_load_addressbook(uri, &book, NULL)) + if (!gevo_load_addressbook(uri, &book, &err)) { purple_debug_error("evolution", - "Error retrieving addressbook\n"); + "Error retrieving addressbook: %s\n", err->message); + g_error_free(err); return; } diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/gevolution/eds-utils.c --- a/pidgin/plugins/gevolution/eds-utils.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/gevolution/eds-utils.c Sat Jul 25 04:54:36 2009 +0000 @@ -119,11 +119,13 @@ EBook *book; gboolean status; GList *cards; + GError *err = NULL; - if (!gevo_load_addressbook(uri, &book, NULL)) + if (!gevo_load_addressbook(uri, &book, &err)) { purple_debug_error("evolution", - "Error retrieving addressbook\n"); + "Error retrieving addressbook: %s\n", err->message); + g_error_free(err); return NULL; } diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/gevolution/gevo-util.c --- a/pidgin/plugins/gevolution/gevo-util.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/gevolution/gevo-util.c Sat Jul 25 04:54:36 2009 +0000 @@ -143,11 +143,16 @@ g_return_val_if_fail(book != NULL, FALSE); if (uri == NULL) - *book = e_book_new_system_addressbook(NULL); + *book = e_book_new_system_addressbook(error); else *book = e_book_new_from_uri(uri, error); - result = e_book_open(*book, FALSE, NULL); + if (*book == NULL) + return FALSE; + + *error = NULL; + + result = e_book_open(*book, FALSE, error); if (!result && *book != NULL) { diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/gevolution/gevolution.c --- a/pidgin/plugins/gevolution/gevolution.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/gevolution/gevolution.c Sat Jul 25 04:54:36 2009 +0000 @@ -298,12 +298,18 @@ { PurplePlugin *plugin = (PurplePlugin *)data; EBookQuery *query; + GError *err = NULL; timer = 0; /* Maybe this is it? */ - if (!gevo_load_addressbook(NULL, &book, NULL)) + if (!gevo_load_addressbook(NULL, &book, &err)) + { + purple_debug_error("evolution", + "Error retrieving addressbook: %s\n", err->message); + g_error_free(err); return FALSE; + } query = e_book_query_any_field_contains(""); diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/notify.c --- a/pidgin/plugins/notify.c Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/notify.c Sat Jul 25 04:54:36 2009 +0000 @@ -572,6 +572,9 @@ static void handle_present(PurpleConversation *conv) { + if (pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))) + return; + purple_conversation_present(conv); } diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/plugins/perl/common/Makefile.mingw --- a/pidgin/plugins/perl/common/Makefile.mingw Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/plugins/perl/common/Makefile.mingw Sat Jul 25 04:54:36 2009 +0000 @@ -86,14 +86,15 @@ all: $(TARGET).dll -$(PURPLE_INSTALL_PERLMOD_DIR)/Purple.pm: +$(PURPLE_INSTALL_PERL_DIR)/Purple.pm: $(MAKE) -C $(PURPLE_PERL_TOP)/common -f $(MINGW_MAKEFILE) install -install: all $(PURPLE_INSTALL_PERLMOD_DIR)/Purple.pm - rm -f $(PIDGIN_INSTALL_PERLMOD_DIR)/$(TARGET).dll $(PIDGIN_INSTALL_PERLMOD_DIR)/Pidgin/$(TARGET).pm - mkdir -p $(PIDGIN_INSTALL_PERLMOD_DIR) - cp $(TARGET).pm $(PIDGIN_INSTALL_PERLMOD_DIR) - cp $(TARGET).dll $(PIDGIN_INSTALL_PERLMOD_DIR) +install: all $(PURPLE_INSTALL_PERL_DIR)/Purple.pm + rm -f $(PIDGIN_INSTALL_PERL_DIR)/$(TARGET).dll $(PIDGIN_INSTALL_PERL_DIR)/auto/Pidgin/$(TARGET).pm + mkdir -p $(PIDGIN_INSTALL_PERL_DIR) + cp $(TARGET).pm $(PIDGIN_INSTALL_PERL_DIR) + mkdir -p $(PIDGIN_INSTALL_PERL_DIR)/auto/Pidgin + cp $(TARGET).dll $(PIDGIN_INSTALL_PERL_DIR)/auto/Pidgin $(C_FILES): $(PIDGIN_CONFIG_H) diff -r b4daae0798e3 -r e1cd44c7c7af pidgin/win32/nsis/pidgin-installer.nsi --- a/pidgin/win32/nsis/pidgin-installer.nsi Fri Jul 24 01:42:13 2009 +0000 +++ b/pidgin/win32/nsis/pidgin-installer.nsi Sat Jul 25 04:54:36 2009 +0000 @@ -714,19 +714,21 @@ Delete "$INSTDIR\ca-certs\CAcert_Class3.pem" Delete "$INSTDIR\ca-certs\CAcert_Root.pem" Delete "$INSTDIR\ca-certs\Equifax_Secure_CA.pem" + Delete "$INSTDIR\ca-certs\Equifax_Secure_Global_eBusiness_CA-1.pem" Delete "$INSTDIR\ca-certs\GTE_CyberTrust_Global_Root.pem" Delete "$INSTDIR\ca-certs\Microsoft_Internet_Authority.pem" Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority.pem" Delete "$INSTDIR\ca-certs\StartCom_Certification_Authority.pem" Delete "$INSTDIR\ca-certs\StartCom_Free_SSL_CA.pem" + Delete "$INSTDIR\ca-certs\VeriSign_Class3_Extended_Validation_CA.pem" Delete "$INSTDIR\ca-certs\Verisign_Class3_Primary_CA.pem" Delete "$INSTDIR\ca-certs\VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem" + Delete "$INSTDIR\ca-certs\VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5_2.pem" Delete "$INSTDIR\ca-certs\VeriSign_International_Server_Class_3_CA.pem" Delete "$INSTDIR\ca-certs\Verisign_RSA_Secure_Server_CA.pem" RMDir "$INSTDIR\ca-certs" RMDir /r "$INSTDIR\locale" RMDir /r "$INSTDIR\pixmaps" - RMDir /r "$INSTDIR\perlmod" Delete "$INSTDIR\plugins\autoaccept.dll" Delete "$INSTDIR\plugins\buddynote.dll" Delete "$INSTDIR\plugins\convcolors.dll" @@ -775,6 +777,7 @@ Delete "$INSTDIR\plugins\winprefs.dll" Delete "$INSTDIR\plugins\xmppconsole.dll" Delete "$INSTDIR\plugins\xmppdisco.dll" + RMDir /r "$INSTDIR\plugins\perl" RMDir "$INSTDIR\plugins" RMDir /r "$INSTDIR\sasl2" Delete "$INSTDIR\sounds\purple\alert.wav" diff -r b4daae0798e3 -r e1cd44c7c7af po/ChangeLog --- a/po/ChangeLog Fri Jul 24 01:42:13 2009 +0000 +++ b/po/ChangeLog Sat Jul 25 04:54:36 2009 +0000 @@ -4,11 +4,20 @@ * Armenian translation added (David Avsharyan) * Catalan translation updated (Josep Puigdemont) * Finnish translation updated (Timo Jyrinki) + * French translation updated (Éric Boumaour) + * Galician translation updated (Frco. Javier Rial Rodríguez) * German translation updated (Jochen Kemnade and Björn Voigt) + * Greek translation updated (Bouklis Panos) * Lao translation updated (Anousak Souphavah) + * Norwegian Nynorsk translation updated (Yngve Spjeld Landro) + * Portuguese (Brazilian) translation updated (Rodrigo Luiz + Marques Flores) + * Punjabi translation updated (Amanpreet Singh Alam) + * Russian translation updated (Антон Самохвалов) + * Simplified Chinese translation updated under new translator (Aron Xu) * Slovenian translation updated (Martin Srebotnjak) * Swahili translation added (Paul Msegeya) - * Simplified Chinese translation updated under new translator (Aron Xu) + * Swedish translation updated (Peter Hjalmarsson) version 2.5.8 * No changes diff -r b4daae0798e3 -r e1cd44c7c7af po/POTFILES.in --- a/po/POTFILES.in Fri Jul 24 01:42:13 2009 +0000 +++ b/po/POTFILES.in Sat Jul 25 04:54:36 2009 +0000 @@ -176,6 +176,7 @@ libpurple/protocols/yahoo/libyahoo.c libpurple/protocols/yahoo/libyahoojp.c libpurple/protocols/yahoo/libymsg.c +libpurple/protocols/yahoo/yahoo_aliases.c libpurple/protocols/yahoo/yahoo_doodle.c libpurple/protocols/yahoo/yahoo_filexfer.c libpurple/protocols/yahoo/yahoo_packet.c diff -r b4daae0798e3 -r e1cd44c7c7af po/de.po --- a/po/de.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/de.po Sat Jul 25 04:54:36 2009 +0000 @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2009-07-05 13:02+0200\n" +"POT-Creation-Date: 2009-07-19 19:25+0200\n" +"PO-Revision-Date: 2009-07-19 19:25+0200\n" "Last-Translator: Jochen Kemnade \n" "Language-Team: Deutsch \n" "MIME-Version: 1.0\n" @@ -1562,7 +1562,6 @@ msgid "Lastlog plugin." msgstr "Verlauf-Plugin." -#, c-format msgid "" "\n" "Fetching TinyURL..." @@ -1790,7 +1789,6 @@ msgstr "+++ %s hat sich abgemeldet" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "Unbekannter Fehler" @@ -1892,7 +1890,6 @@ "Fehler beim Lesen vom Auflösungsprozess:\n" "%s" -#, c-format msgid "Resolver process exited without answering our request" msgstr "Auflösungsprozess hat sich beendet ohne die Anfrage zu beantworten" @@ -1980,6 +1977,10 @@ msgstr "Starte die Dateiübertragung von %s von %s" #, c-format +msgid "Transfer of file %s complete" +msgstr "Übertragung der Datei %s ist komplett" + +#, c-format msgid "Transfer of file %s complete" msgstr "Übertragung der Datei %s ist komplett" @@ -2907,18 +2908,15 @@ "ActiveTCL-Installation nicht erkannt. Wenn Sie TCL-Plugins benutzen wollen, " "dann installieren Sie ActiveTCL von http://www.activestate.com\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"Apples Bonjour-Toolkit für Windows konnte nicht gefunden werden. Besuchen " -"Sie die FAQ unter http://d.pidgin.im/BonjourWindows für weitere " -"Informationen." - -#, fuzzy +"Apples Toolkit „Bonjour für Windows“ konnte nicht gefunden werden. Besuchen " +"Sie http://d.pidgin.im/BonjourWindows für weitere Informationen." + msgid "Unable to listen for incoming IM connections" -msgstr "Kann nicht auf eingehende IM-Verbindungen hören\n" +msgstr "Kann nicht auf eingehende IM-Verbindungen hören" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2972,21 +2970,17 @@ "Die Nachricht kann nicht gesendet werden, das Gespräch kann nicht gestartet " "werden." -#, fuzzy, c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"Kann Socket nicht erstellen:\n" -"%s" - -#, fuzzy, c-format +msgstr "Kann Socket nicht erstellen: %s" + +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "Kann die Socket nicht an den Port binden" - -#, fuzzy, c-format +msgstr "Kann die Socket nicht an den Port binden: %s" + +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"Kann Socket nicht erstellen:\n" -"%s" +msgstr "Lauschen auf Socket nicht möglich: %s" msgid "Error communicating with local mDNSResponder." msgstr "Fehler bei der Kommunikation mit lokalem mDNSResponder." @@ -3033,17 +3027,15 @@ msgid "Load buddylist from file..." msgstr "Buddy-Liste aus Datei laden..." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "Füllen Sie die Registrierungsfelder aus." - -#, fuzzy +msgstr "Sie müssen alle Registrierungsfelder ausfüllen" + msgid "Passwords do not match" -msgstr "Passwörter stimmen nicht überein." - -#, fuzzy +msgstr "Passwörter stimmen nicht überein" + msgid "Unable to register new account. An unknown error occurred." -msgstr "Kann neues Konto nicht anlegen. Es ist ein Fehler aufgetreten.\n" +msgstr "" +"Kann neues Konto nicht anlegen. Es ist ein unbekannter Fehler aufgetreten." msgid "New Gadu-Gadu Account Registered" msgstr "Neues Gadu-Gadu-Konto angelegt" @@ -3058,11 +3050,10 @@ msgstr "Passwort (nochmal)" msgid "Enter captcha text" -msgstr "" - -#, fuzzy +msgstr "Captcha-Text eigeben" + msgid "Captcha" -msgstr "Captcha-Bild" +msgstr "Captcha" msgid "Register New Gadu-Gadu Account" msgstr "Registrierung eines neuen Gadu-Gadu-Kontos" @@ -3202,9 +3193,9 @@ msgid "Chat _name:" msgstr "Chat_name:" -#, fuzzy, c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Verbindung zum Server nicht möglich" +msgstr "Hostname '%s' kann nicht aufgelöst werden: %s" #. 1. connect to server #. connect to the server @@ -3217,9 +3208,8 @@ msgid "This chat name is already in use" msgstr "Dieser Chatname existiert bereits" -#, fuzzy msgid "Not connected to the server" -msgstr "Nicht mit dem Server verbunden." +msgstr "Nicht mit dem Server verbunden" msgid "Find buddies..." msgstr "Finde Buddys..." @@ -3277,9 +3267,8 @@ msgid "File Transfer Failed" msgstr "Dateiübertragung gescheitert" -#, fuzzy msgid "Unable to open a listening port." -msgstr "Konnte keinen Listener-Port öffnen." +msgstr "Es konnte kein lauschender Port geöffnet werden." msgid "Error displaying MOTD" msgstr "Fehler beim Anzeigen des MOTD" @@ -3301,11 +3290,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"Verbindung zum Server verloren:\n" -"%s" +msgstr "Verbindung zum Server verloren: %s" msgid "View MOTD" msgstr "MOTD anzeigen" @@ -3326,13 +3313,12 @@ msgstr "Verbindung nicht möglich" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "Verbindung zu %s nicht möglich" - -#, fuzzy, c-format +msgstr "Verbinden nicht möglich: %s" + msgid "Server closed the connection" -msgstr "Der Server hat die Verbindung beendet." +msgstr "Der Server hat die Verbindung beendet" msgid "Users" msgstr "Benutzer" @@ -3764,13 +3750,10 @@ msgid "execute" msgstr "Ausführen" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." msgstr "" -"Der Server benötigt TLS/SSL zur Anmeldung. Es wurde kein TLS/SSL-Support " -"gefunden." - -#, fuzzy +"Der Server benötigt TLS/SSL, es wurde aber kein TLS/SSL-Support gefunden." + msgid "You require encryption, but no TLS/SSL support was found." msgstr "" "Sie fordern Verschlüsselung, aber es wurde keine TLS/SSL-Unterstützung " @@ -3793,13 +3776,11 @@ msgid "Plaintext Authentication" msgstr "Klartext-Authentifizierung" -#, fuzzy msgid "SASL authentication failed" -msgstr "Authentifizierung fehlgeschlagen" - -#, fuzzy +msgstr "SASL-Authentifizierung fehlgeschlagen" + msgid "Invalid response from server" -msgstr "Ungültige Serverantwort." +msgstr "Ungültige Serverantwort" msgid "Server does not use any supported authentication method" msgstr "Der Server benutzt keine der unterstützten Authentifizierungsmethoden" @@ -3811,9 +3792,9 @@ msgid "Invalid challenge from server" msgstr "Ungültige Challenge vom Server" -#, fuzzy, c-format +#, c-format msgid "SASL error: %s" -msgstr "SASL-Fehler" +msgstr "SASL-Fehler: %s" msgid "The BOSH connection manager terminated your session." msgstr "Der BOSH-Verbindungsmanager hat Ihre Sitzung beendet." @@ -3827,9 +3808,9 @@ msgid "Unable to establish a connection with the server" msgstr "Die Verbindung mit dem Server konnte nicht hergestellt werden" -#, fuzzy, c-format +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "Die Verbindung mit dem Server konnte nicht hergestellt werden" +msgstr "Die Verbindung mit dem Server konnte nicht hergestellt werden: %s" msgid "Unable to establish SSL connection" msgstr "Kann SSL-Verbindung nicht erstellen" @@ -4085,18 +4066,15 @@ msgid "Find Rooms" msgstr "Finde Räume" -#, fuzzy msgid "Affiliations:" -msgstr "Alias:" +msgstr "Mitgliedschaften:" msgid "No users found" msgstr "Keine Benutzer gefunden" -#, fuzzy msgid "Roles:" -msgstr "Funktion" - -#, fuzzy +msgstr "Rollen:" + msgid "Ping timed out" msgstr "Ping-Zeitüberschreitung" @@ -4104,6 +4082,8 @@ "Unable to find alternative XMPP connection methods after failing to connect " "directly." msgstr "" +"Nach dem Fehlschlagen einer direkten XMPP-Verbindung konnen keine " +"alternativen Verbindungsmethoden gefunden werden." msgid "Invalid XMPP ID" msgstr "Ungültige XMPP-ID" @@ -4184,9 +4164,6 @@ msgid "Change Registration" msgstr "Ändere Registrierung" -msgid "Malformed BOSH Connect Server" -msgstr "Fehlerhafter BOSH-Verbindungsserver" - msgid "Error unregistering account" msgstr "Fehler beim Aufheben der Kontenregistrierung" @@ -4552,21 +4529,21 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <Benutzer> [Grund]: Verbanne einen Benutzer aus dem Raum." -#, 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 <Benutzer> <owner|admin|member|outcast|none>: Setze " -"eine Benutzerzugehörigkeit für den Raum." - -#, fuzzy +"affiliate <owner|admin|member|outcast|none> [Benutzer1] " +"[Benutzer2] ...: Benutzer mit einer Mitgliedschaft für den Raum erfragen " +"oder setzen" + msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <Benutzer> <moderator|participant|visitor|none>: Setze eine " -"Rolle für den Benutzer im Raum." +"role <owner|admin|member|outcast|none> [Benutzer1] [Benutzer2] ...: " +"Benutzer mit einer Rolle für den Raum erfragen oder Benutzern eine Rolle " +"zuweisen" msgid "invite <user> [message]: Invite a user to the room." msgstr "" @@ -4693,21 +4670,19 @@ msgid "_Accept Defaults" msgstr "Standards _akzeptieren" -#, fuzzy msgid "No reason" -msgstr "Kein Grund angegeben" - -#, fuzzy, c-format +msgstr "Kein Grund" + +#, c-format msgid "You have been kicked: (%s)" -msgstr "Sie wurden hinausgeworfen von %s: (%s)" - -#, fuzzy, c-format +msgstr "Sie wurden hinausgeworfen: (%s)" + +#, c-format msgid "Kicked (%s)" -msgstr "Hinausgeworfen durch %s (%s)" - -#, fuzzy +msgstr "Hinausgeworfen (%s)" + msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Beim Übertragen der Datei trat ein Fehler auf\n" +msgstr "Bei der In-Band-Bytestrom-Übertragung trat ein Fehler auf\n" msgid "Transfer was closed." msgstr "Übertragung wurde geschlossen." @@ -4716,7 +4691,7 @@ msgstr "Öffnen der Datei fehlgeschlagen" msgid "Failed to open in-band bytestream" -msgstr "" +msgstr "Öffnen des In-Band-Bytestroms fehlgeschlagen" #, c-format msgid "Unable to send file to %s, user does not support file transfers" @@ -4812,219 +4787,166 @@ "%s ist auf der lokalen Liste, aber nicht auf der Serverliste. Möchten Sie, " "dass der Buddy hinzugefügt wird?" -#, c-format msgid "Unable to parse message" msgstr "Kann die Nachricht nicht parsen" -#, c-format msgid "Syntax Error (probably a client bug)" msgstr "Syntaxfehler (wahrscheinlich ein Client-Bug)" -#, c-format msgid "Invalid email address" msgstr "Ungültige E-Mail-Adresse" -#, c-format msgid "User does not exist" msgstr "Benutzer existiert nicht" -#, c-format msgid "Fully qualified domain name missing" msgstr "Der Fully Qualified Domain Name fehlt" -#, c-format msgid "Already logged in" msgstr "Schon angemeldet" -#, c-format msgid "Invalid username" msgstr "Ungültiger Benutzername" -#, c-format msgid "Invalid friendly name" msgstr "Ungültiger Freundesname" -#, c-format msgid "List full" msgstr "Liste voll" -#, c-format msgid "Already there" msgstr "Schon da" -#, c-format msgid "Not on list" msgstr "Nicht auf der Liste" -#, c-format msgid "User is offline" msgstr "Benutzer ist offline" -#, c-format msgid "Already in the mode" msgstr "Bereits in diesem Modus" -#, c-format msgid "Already in opposite list" msgstr "Bereits in der „Gegenteil-Liste“" -#, c-format msgid "Too many groups" msgstr "Zu viele Gruppen" -#, c-format msgid "Invalid group" msgstr "Ungültige Gruppe" -#, c-format msgid "User not in group" msgstr "Benutzer ist nicht in der Gruppe" -#, c-format msgid "Group name too long" msgstr "Name der Gruppe ist zu lang" -#, c-format msgid "Cannot remove group zero" msgstr "Kann die Gruppe „Null“ nicht entfernen" -#, c-format msgid "Tried to add a user to a group that doesn't exist" msgstr "" "Versuchte einen Benutzer zu einer nichtexistierenden Gruppe hinzuzufügen" -#, c-format msgid "Switchboard failed" msgstr "Vermittlung gescheitert" -#, c-format msgid "Notify transfer failed" msgstr "Übertragung der Benachrichtigung gescheitert" -#, c-format msgid "Required fields missing" msgstr "Notwendige Felder fehlen" -#, c-format msgid "Too many hits to a FND" msgstr "Zu viele Treffer zu einem FND" -#, c-format msgid "Not logged in" msgstr "Nicht angemeldet" -#, c-format msgid "Service temporarily unavailable" msgstr "Dienst momentan nicht verfügbar" -#, c-format msgid "Database server error" msgstr "Fehler des Datenbank-Servers" -#, c-format msgid "Command disabled" msgstr "Kommando abgeschaltet" -#, c-format msgid "File operation error" msgstr "Dateiverarbeitungsfehler" -#, c-format msgid "Memory allocation error" msgstr "Fehler bei der Speicheranforderung" -#, c-format msgid "Wrong CHL value sent to server" msgstr "Falscher CHL-Wert zum Server gesendet" -#, c-format msgid "Server busy" msgstr "Server beschäftigt" -#, c-format msgid "Server unavailable" msgstr "Server unerreichbar" -#, c-format msgid "Peer notification server down" msgstr "Peer-Benachrichtigungsserver nicht erreichbar" -#, c-format msgid "Database connect error" msgstr "Datenbank-Verbindungsfehler" -#, c-format msgid "Server is going down (abandon ship)" msgstr "Server fährt runter (melden Sie sich ab)" -#, c-format msgid "Error creating connection" msgstr "Fehler beim Herstellen der Verbindung" -#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "CVR-Parameter sind entweder unbekannt oder nicht erlaubt" -#, c-format msgid "Unable to write" msgstr "Schreiben nicht möglich" -#, c-format msgid "Session overload" msgstr "Sitzung überlastet" -#, c-format msgid "User is too active" msgstr "Benutzer ist zu aktiv" -#, c-format msgid "Too many sessions" msgstr "Zu viele Sitzungen" -#, c-format msgid "Passport not verified" msgstr "Passport (MSN Benutzerausweis) wurde nicht überprüft" -#, c-format msgid "Bad friend file" msgstr "Falsche Friends-Datei" -#, c-format msgid "Not expected" msgstr "Nicht erwartet" -#, c-format msgid "Friendly name changes too rapidly" msgstr "Benutzernamen werden zu oft geändert" -#, c-format msgid "Server too busy" msgstr "Server ist zu beschäftigt" -#, c-format msgid "Authentication failed" msgstr "Authentifizierung fehlgeschlagen" -#, c-format msgid "Not allowed when offline" msgstr "Nicht erlaubt im Offline-Modus" -#, c-format msgid "Not accepting new users" msgstr "Akzeptiert keine neuen Benutzer" -#, c-format msgid "Kids Passport without parental consent" msgstr "Kinder-Passwort ohne die Zustimmung der Eltern" -#, c-format msgid "Passport account not yet verified" msgstr "Passport-Konto wurde noch nicht überprüft" msgid "Passport account suspended" msgstr "Passport-Konto gesperrt" -#, c-format msgid "Bad ticket" msgstr "Falsches Ticket" @@ -5042,6 +4964,27 @@ msgid "Non-IM Contacts" msgstr "Nicht-IM-Kontakte" +#, fuzzy, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" +"%s hat einen Wink gesendet. Zum Abspielen hier " +"klicken" + +#, fuzzy, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "%s hat einen Wink gesendet, er konnte aber nicht gespeichert werden" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" +"%s hat einen Sprach-Clip gesendet. Zum Abspielen " +"hier klicken" + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "" +"%s hat einen Sprach-Clip gesendet, er konnte aber nicht gespeichert werden" + #, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "" @@ -5201,6 +5144,29 @@ "Für MSN wird SSL-Unterstützung benötigt. Bitte installieren Sie eine " "unterstützte SSL-Bibliothek." +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Konnte den Buddy %s nicht hinzufügen, da der Benutzername ungültig ist. " +"Benutzernamen müssen gültige E-Mail-Adressen sein." + +msgid "Unable to Add" +msgstr "Kann nicht hinzufügen" + +msgid "Authorization Request Message:" +msgstr "Autorisierungsanfrage:" + +msgid "Please authorize me!" +msgstr "Bitte autorisiere mich!" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "_OK" + msgid "Error retrieving profile" msgstr "Fehler beim Empfangen des Profils" @@ -5400,6 +5366,7 @@ msgid "Unable to add user" msgstr "Kann den Benutzer nicht hinzufügen" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "Unbekannter Fehler (%d)" @@ -5476,26 +5443,22 @@ "Verbindungsfehler vom %s-Server:\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" -msgstr "Unser Protokoll wird vom Server nicht unterstützt." - -#, fuzzy +msgstr "Unser Protokoll wird vom Server nicht unterstützt" + msgid "Error parsing HTTP" -msgstr "Fehler beim Verarbeiten von HTTP." - -#, fuzzy +msgstr "Fehler beim Verarbeiten von HTTP" + msgid "You have signed on from another location" -msgstr "Sie haben sich von einem anderen Ort angemeldet." +msgstr "Sie haben sich von einem anderen Ort angemeldet" msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" "Die MSN-Server sind temporär nicht verfügbar. Bitte warten Sie und versuchen " "Sie es später nochmal." -#, fuzzy msgid "The MSN servers are going down temporarily" -msgstr "Die MSN-Server werden kurzzeitig heruntergefahren." +msgstr "Die MSN-Server werden kurzzeitig heruntergefahren" #, c-format msgid "Unable to authenticate: %s" @@ -5525,10 +5488,11 @@ msgid "Retrieving buddy list" msgstr "Abfragen der Buddy-Liste" -#, fuzzy, c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." msgstr "" -"%s hat Ihnen eine Webcam-Einladung gesendet, die noch nicht unterstützt wird." +"%s möchte Ihr Webcam-Bild sehen, diese Anfrage wird jedoch noch nicht " +"unterstützt." #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." @@ -5845,6 +5809,10 @@ "visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " "to set your username." msgstr "" +"Es ist ein Fehler beim Setzten des Benutzernamens aufgetreten. Bitte " +"versuchen Sie es noch einmal oder besuchen Sie http://editprofile.myspace." +"com/index.cfm?fuseaction=profile.username um Ihren Benutzernamen zu " +"bearbeiten." msgid "MySpaceIM - Username Available" msgstr "MySpaceIM - Benutzername verfügbar" @@ -6105,9 +6073,9 @@ msgid "Unknown error: 0x%X" msgstr "Unbekannter Fehler: 0x%X" -#, fuzzy, c-format +#, c-format msgid "Unable to login: %s" -msgstr "Kann den Benutzer %s nicht anpingen" +msgstr "Anmeldung nicht möglich: %s" #, c-format msgid "Unable to send message. Could not get details for user (%s)." @@ -6288,7 +6256,7 @@ "versuchen Sie es noch einmal. Wenn Sie es weiterversuchen, müssen Sie sogar " "noch länger warten." -#, fuzzy, c-format +#, fuzzy msgid "Error requesting " msgstr "Fehler beim Auflösen von %s" @@ -6301,9 +6269,8 @@ msgid "Invalid chat room name" msgstr "Ungültiger Chatraumname" -#, fuzzy msgid "Received invalid data on connection with server" -msgstr "Ungültige Daten in der Verbindung mit dem Server empfangen." +msgstr "Ungültige Daten in der Verbindung mit dem Server empfangen" #. *< type #. *< ui_requirement @@ -6351,7 +6318,6 @@ msgstr "" "Ungültige Daten in der Verbindung mit dem entfernten Benutzer empfangen." -#, fuzzy msgid "Unable to establish a connection with the remote user." msgstr "" "Die Verbindung mit dem entfernten Benutzer konnte nicht hergestellt werden." @@ -6555,15 +6521,13 @@ msgid "Buddy Comment" msgstr "Buddy-Kommentar" -#, fuzzy, c-format +#, c-format msgid "Unable to connect to authentication server: %s" -msgstr "" -"Verbindung zum Authentifizierungsserver nicht möglich:\n" -"%s" - -#, fuzzy, c-format +msgstr "Verbindung zum Authentifizierungsserver nicht möglich: %s" + +#, c-format msgid "Unable to connect to BOS server: %s" -msgstr "Verbindung zum Server nicht möglich." +msgstr "Verbindung zum BOS-Server nicht möglich: %s" msgid "Username sent" msgstr "Benutzername gesendet" @@ -6575,16 +6539,16 @@ msgid "Finalizing connection" msgstr "Verbindung herstellen" -#, fuzzy, c-format +#, c-format msgid "" "Unable to sign on as %s because the username is invalid. Usernames must be " "a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"Anmeldung fehlgeschlagen: Sie konnten nicht als %s angemeldet werden, da der " -"Benutzername fehlerhaft ist. Benutzernamen müssen gültige E-Mail-Adressen " -"sein oder mit einem Buchstaben beginnen und nur Buchstaben, Ziffern und " -"Leerzeichen enthalten oder nur aus Ziffern bestehen." +"Sie konnten nicht als %s angemeldet werden, da der Benutzername fehlerhaft " +"ist. Benutzernamen müssen gültige E-Mail-Adressen sein oder mit einem " +"Buchstaben beginnen und nur Buchstaben, Ziffern und Leerzeichen enthalten " +"oder nur aus Ziffern bestehen." #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." @@ -6608,14 +6572,14 @@ msgstr "Benutzername existiert nicht" #. Suspended account -#, fuzzy msgid "Your account is currently suspended" -msgstr "Ihr Benutzerkonto ist momentan gesperrt." +msgstr "Ihr Benutzerkonto ist momentan gesperrt" #. service temporarily unavailable msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "Der AOL-Sofortnachrichtendienst ist zur Zeit nicht erreichbar." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "" @@ -6630,9 +6594,8 @@ "versuchen Sie es noch einmal. Wenn Sie es weiterversuchen, müssen Sie sogar " "noch länger warten." -#, fuzzy msgid "The SecurID key entered is invalid" -msgstr "Der eingegebene SecurID-Schlüssel ist falsch." +msgstr "Der eingegebene SecurID-Schlüssel ist falsch" msgid "Enter SecurID" msgstr "SecurID-Eingabe" @@ -6640,12 +6603,6 @@ msgid "Enter the 6 digit number from the digital display." msgstr "Geben Sie die 6-stellige Nummer vom Digital-Display ein." -#. * -#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. -#. -msgid "_OK" -msgstr "_OK" - msgid "Password sent" msgstr "Passwort gesendet" @@ -6657,12 +6614,6 @@ "Bitte autorisieren Sie mich, sodass ich Sie in meine Buddy-Liste aufnehmen " "kann." -msgid "Authorization Request Message:" -msgstr "Autorisierungsanfrage:" - -msgid "Please authorize me!" -msgstr "Bitte autorisiere mich!" - msgid "No reason given." msgstr "Kein Grund angegeben." @@ -7005,7 +6956,7 @@ msgid "Away message too long." msgstr "Abwesenheitsmitteilungen zu lang." -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " "be a valid email address, or start with a letter and contain only letters, " @@ -7016,9 +6967,6 @@ "beginnen und nur Buchstaben, Ziffern und Leerzeichen enthalten oder nur aus " "Ziffern bestehen." -msgid "Unable to Add" -msgstr "Kann nicht hinzufügen" - msgid "Unable to Retrieve Buddy List" msgstr "Konnte Buddy-Liste nicht laden" @@ -7033,7 +6981,7 @@ msgid "Orphans" msgstr "Waisen" -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because you have too many buddies in your buddy " "list. Please remove one and try again." @@ -7044,7 +6992,7 @@ msgid "(no name)" msgstr "(kein Name)" -#, fuzzy, c-format +#, c-format msgid "Unable to add the buddy %s for an unknown reason." msgstr "Konnte den Buddy %s aus einem unbekannten Grund nicht hinzufügen." @@ -7820,7 +7768,6 @@ msgid "Update interval (seconds)" msgstr "Aktualisierungsintervall (Sekunden)" -#, fuzzy msgid "Unable to decrypt server reply" msgstr "Kann die Antwort des Servers nicht entschlüsseln" @@ -7888,9 +7835,8 @@ msgid "Requesting token" msgstr "Fordere Token an" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "Verbindung zum Server nicht möglich" +msgstr "Hostname konnte nicht aufgelöst werden" msgid "Invalid server or port" msgstr "Ungültiger Server oder Port" @@ -7943,7 +7889,6 @@ msgid "QQ Qun Command" msgstr "QQ-Qun-Kommando" -#, fuzzy msgid "Unable to decrypt login reply" msgstr "Konnte die Antwort der Anmeldung nicht entschlüsseln" @@ -8553,7 +8498,6 @@ msgid "
Channel Topic:
%s" msgstr "
Thema des Kanals:
%s" -#, c-format msgid "
Channel Modes: " msgstr "
Kanal-Modi: " @@ -8578,7 +8522,6 @@ msgid "Channel Public Keys List" msgstr "Liste der öffentlichen Schlüssel des Kanals" -#, c-format msgid "" "Channel authentication is used to secure the channel from unauthorized " "access. The authentication may be based on passphrase and digital " @@ -8939,7 +8882,6 @@ msgid "Disconnected by server" msgstr "Abgemeldet vom Server" -#, fuzzy msgid "Error connecting to SILC Server" msgstr "Fehler beim Verbinden mit dem SILC-Server" @@ -8955,9 +8897,8 @@ msgid "Performing key exchange" msgstr "Schlüsselaustausch" -#, fuzzy msgid "Unable to load SILC key pair" -msgstr "Konnte SILC-Schlüsselpaar nicht laden" +msgstr "SILC-Schlüsselpaar konnte nicht geladen werden" #. Progress msgid "Connecting to SILC Server" @@ -8965,14 +8906,13 @@ #, fuzzy msgid "Unable to not load SILC key pair" -msgstr "Konnte SILC-Schlüsselpaar nicht laden" +msgstr "SILC-Schlüsselpaar konnte nicht geladen werden" msgid "Out of memory" msgstr "Kein Speicher verfügbar" -#, fuzzy msgid "Unable to initialize SILC protocol" -msgstr "Kann das SILC-Protokoll nicht initialisieren" +msgstr "SILC-Protokoll konnte nicht initialisiert werden" msgid "Error loading SILC key pair" msgstr "Fehler beim Laden des SILC-Schlüsselpaares" @@ -8984,7 +8924,6 @@ msgid "Your Current Mood" msgstr "Ihre momentane Stimmung" -#, c-format msgid "Normal" msgstr "Normal" @@ -9272,9 +9211,8 @@ msgid "Creating SILC key pair..." msgstr "Erstelle SILC-Schlüsselpaar..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "Kann SILC-Schlüsselpaar nicht erstellen\n" +msgstr "SILC-Schlüsselpaar konnte nicht erstellt werden" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9374,71 +9312,58 @@ msgid "Error during connecting to SILC Server" msgstr "Fehler beim Verbinden mit dem SILC-Server" -#, c-format msgid "Failure: Version mismatch, upgrade your client" msgstr "Fehler: Unterschiedliche Version, aktualisieren Sie Ihren Client" -#, c-format msgid "Failure: Remote does not trust/support your public key" msgstr "" "Fehler: Die entfernte Seite vertraut Ihrem öffentlichen Schlüssel nicht" -#, c-format msgid "Failure: Remote does not support proposed KE group" msgstr "" "Fehler: Entferntes Programm unterstützt nicht die vorgeschlagen KE-Gruppe" -#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "" "Fehler: Entferntes Programm unterstützt die vorgeschlagene Cipher nicht" -#, c-format msgid "Failure: Remote does not support proposed PKCS" msgstr "Fehler: Entferntes Programm unterstützt die vorgeschlagene PKCS nicht" -#, c-format msgid "Failure: Remote does not support proposed hash function" msgstr "" "Fehler: Entferntes Programm unterstützt die vorgeschlagen Hashfunktion nicht" -#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "Fehler: Entferntes Programm unterstützt das vorgeschlagene HMAC nicht" -#, c-format msgid "Failure: Incorrect signature" msgstr "Fehler: Falsche Signatur" -#, c-format msgid "Failure: Invalid cookie" msgstr "Fehler: Ungültiger Cookie" -#, c-format msgid "Failure: Authentication failed" msgstr "Fehler: Authentifizierung fehlgeschlagen" -#, fuzzy msgid "Unable to initialize SILC Client connection" -msgstr "Konnte die SILC-Client-Verbindung nicht herstellen" +msgstr "SILC-Client-Verbindung konnte nicht hergestellt werden" msgid "John Noname" msgstr "Max Mustermann" -#, fuzzy, c-format +#, c-format msgid "Unable to load SILC key pair: %s" -msgstr "Konnte SILC-Schlüsselpaar nicht laden: %s" +msgstr "SILC-Schlüsselpaar konnte nicht geladen werden: %s" msgid "Unable to create connection" msgstr "Kann Verbindung nicht erstellen" -#, fuzzy msgid "Unknown server response" -msgstr "Unbekannte Serverantwort." - -#, fuzzy +msgstr "Unbekannte Serverantwort" + msgid "Unable to create listen socket" -msgstr "Kann Socket nicht erstellen" +msgstr "Lauschender Socket konnte nicht erstellt werden" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP-Benutzernamen dürfen keine Leerzeichen oder @-Symbole enthalten" @@ -9501,9 +9426,8 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" -msgstr "Yahoo-Protokoll-Plugin" +msgstr "Yahoo!-Protokoll-Plugin" msgid "Pager server" msgstr "Pager-Server" @@ -9532,9 +9456,8 @@ msgid "Yahoo Chat port" msgstr "Yahoo-Chat-Port" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "Yahoo-ID..." +msgstr "Yahoo-JAPAN-ID..." #. *< type #. *< ui_requirement @@ -9546,9 +9469,8 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Yahoo-Protokoll-Plugin" +msgstr "Yahoo!-Japan-Protokoll-Plugin" msgid "Your SMS was not delivered" msgstr "Ihre SMS wurde nicht ausgeliefert" @@ -9582,24 +9504,20 @@ msgstr "Ungültige Daten empfangen" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." msgstr "" -"Konto gesperrt: Zu viele fehlgeschlagene Login-Versuche\n" -"Eventuell können Sie dies beheben, wenn Sie sich auf der Yahoo!-Webseite " -"anmelden." +"Konto gesperrt: Zu viele fehlgeschlagene Login-Versuche. Eventuell können " +"Sie dies beheben, wenn Sie sich auf der Yahoo!-Webseite anmelden." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." msgstr "" -"Konto gesperrt: Unbekannter Grund\n" -" Eventuell können Sie dies beheben, wenn Sie sich auf der Yahoo!-Webseite " -"anmelden." +"Konto gesperrt: Unbekannter Grund. Eventuell können Sie dies beheben, wenn " +"Sie sich auf der Yahoo!-Webseite anmelden." #. username or password missing msgid "Username or password missing" @@ -9639,33 +9557,29 @@ "Unbekannte Fehlernummer %d. Vielleicht kann dies repariert werden, wenn Sie " "sich auf der Yahoo! Webseite anmelden." -#, fuzzy, c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." msgstr "" -"Konnte den Buddy %s der Gruppe %s nicht zur Serverliste des Kontos %s " -"hinzufügen." - -#, fuzzy +"Buddy %s konnte der Gruppe %s der Serverliste des Kontos %s nicht " +"hinzugefügt werden." + msgid "Unable to add buddy to server list" -msgstr "Konnte den Buddy nicht zur Serverliste hinzufügen" +msgstr "Buddy konnte der Serverliste nicht hinzugefügt werden" #, c-format msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ Hörbar %s/%s/%s.swf ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" -msgstr "Ungültige HTTP-Antwort vom Server empfangen." - -#, fuzzy, c-format +msgstr "Ungültige HTTP-Antwort vom Server empfangen" + +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"Verbindung zu %s verloren:\n" -"%s" - -#, fuzzy, c-format +msgstr "Verbindung zu %s verloren: %s" + +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "Die Verbindung mit dem Server konnte nicht hergestellt werden" +msgstr "Die Verbindung mit %s konnte nicht hergestellt werden: %s" msgid "Not at Home" msgstr "Nicht zu Hause" @@ -9817,11 +9731,8 @@ msgstr "Das Profil des Benutzers ist leer." #, c-format -msgid "%s declined your conference invitation to room \"%s\" because \"%s\"." -msgstr "%s lehnte Ihre Konferenzeinladung in den Raum „%s“ ab, da „%s“." - -msgid "Invitation Rejected" -msgstr "Einladung zurückgewiesen" +msgid "%s has declined to join." +msgstr "%s hat abgelehnt beizutreten." msgid "Failed to join chat" msgstr "Der Chat kann nicht betreten werden" @@ -9873,9 +9784,8 @@ msgid "User Rooms" msgstr "Benutzerräume" -#, fuzzy msgid "Connection problem with the YCHT server" -msgstr "Verbindungsproblem mit dem YCHT-Server." +msgstr "Verbindungsproblem mit dem YCHT-Server" msgid "" "(There was an error converting this message.\t Check the 'Encoding' option " @@ -10009,18 +9919,18 @@ msgid "Exposure" msgstr "Aussetzen" -#, fuzzy, c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "Kann Antwort vom HTTP-Proxy nicht verarbeiten: %s\n" +msgstr "Kann Antwort vom HTTP-Proxy nicht verarbeiten: %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "HTTP-Proxy-Verbindungsfehler %d" -#, fuzzy, c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" msgstr "" -"Zugriff verboten: Der HTTP-Proxy-Server verbietet das Tunneling über Port %d." +"Zugriff verboten: Der HTTP-Proxy-Server verbietet das Tunneling über Port %d" #, c-format msgid "Error resolving %s" @@ -10236,29 +10146,24 @@ msgstr " (%s)" #. 10053 -#, c-format msgid "Connection interrupted by other software on your computer." msgstr "" "Die Verbindung wurde von einer anderen Software auf ihrem Computer " "unterbrochen." #. 10054 -#, c-format msgid "Remote host closed connection." msgstr "Der entfernte Host hat die Verbindung beendet." #. 10060 -#, c-format msgid "Connection timed out." msgstr "Verbindungsabbruch wegen Zeitüberschreitung." #. 10061 -#, c-format msgid "Connection refused." msgstr "Verbindung abgelehnt." #. 10048 -#, c-format msgid "Address already in use." msgstr "Adresse wird bereits benutzt." @@ -10316,8 +10221,8 @@ msgid "Use this buddy _icon for this account:" msgstr "Dieses Buddy-_Icon für dieses Konto benutzen:" -msgid "_Advanced" -msgstr "E_rweitert" +msgid "Ad_vanced" +msgstr "Erwei_tert" msgid "Use GNOME Proxy Settings" msgstr "Benutze GNOME-Proxy-Einstellungen" @@ -10379,8 +10284,8 @@ msgid "Create _this new account on the server" msgstr "Dieses _neue Konto auf dem Server anlegen" -msgid "_Proxy" -msgstr "Pr_oxy" +msgid "P_roxy" +msgstr "P_roxy" # Aktiv msgid "Enabled" @@ -10481,11 +10386,9 @@ msgid "View _Log" msgstr "Mi_tschnitt anzeigen" -#, fuzzy msgid "Hide When Offline" msgstr "Verstecken, wenn im Offline-Modus" -#, fuzzy msgid "Show When Offline" msgstr "Anzeigen, wenn im Offline-Modus" @@ -10895,81 +10798,70 @@ msgid "The background color for the buddy list" msgstr "Die Hintergrundfarbe für die Buddy-Liste" -#, fuzzy msgid "Layout" -msgstr "Laotisch" +msgstr "Layout" msgid "The layout of icons, name, and status of the blist" -msgstr "" +msgstr "Das Layout von Icons, Namen und Status der Kontaktliste" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "Hintergrundfarbe" +msgstr "Hintergrundfarbe (ausgeklappt)" msgid "The background color of an expanded group" msgstr "Die Hintergrundfarbe für eine ausgeklappte Gruppe" -#, fuzzy msgid "Expanded Text" -msgstr "A_usklappen" +msgstr "Text (ausgeklappt)" msgid "The text information for when a group is expanded" msgstr "Die Textinformation für eine ausgeklappte Gruppe" -#, fuzzy msgid "Collapsed Background Color" -msgstr "Hintergrundfarbe auswählen" +msgstr "Hintergrundfarbe (zusammengeklappt)" msgid "The background color of a collapsed group" msgstr "Die Hintergrundfarbe für eine zusammengeklappte Gruppe" -#, fuzzy msgid "Collapsed Text" -msgstr "_Zusammenklappen" +msgstr "Text (zusammengeklappt)" msgid "The text information for when a group is collapsed" msgstr "Die Textinformation für eine zusammengeklappte Gruppe" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "Hintergrundfarbe auswählen" +msgstr "Hintergrundfarbe für Kontakt/Chat" msgid "The background color of a contact or chat" -msgstr "" - -#, fuzzy +msgstr "Die Hintergrundfarbe für einen Kontakt oder Chat" + msgid "Contact Text" -msgstr "Verknüpfter Text" +msgstr "Text für Kontakt" msgid "The text information for when a contact is expanded" msgstr "Die Textinformation für einen ausgeklappten Kontakt" -#, fuzzy msgid "On-line Text" -msgstr "Online" +msgstr "Online-Text" msgid "The text information for when a buddy is online" msgstr "Die Textinformation für einen Online-Buddy" -#, fuzzy msgid "Away Text" -msgstr "Abwesend" +msgstr "Abwesenheitstext" msgid "The text information for when a buddy is away" msgstr "Die Textinformation für einen abwesenden Buddy" -#, fuzzy msgid "Off-line Text" -msgstr "Offline" +msgstr "Offline-Text" msgid "The text information for when a buddy is off-line" msgstr "Die Textinformation für einen Offline-Buddy" -#, fuzzy msgid "Idle Text" -msgstr "Stimmungstext" +msgstr "Untätigkeitstext" msgid "The text information for when a buddy is idle" msgstr "Die Textinformation für einen untätigen Buddy" @@ -11043,7 +10935,6 @@ msgid "Get Away Message" msgstr "Neue Abwesenheitsnachricht abholen" -#, fuzzy msgid "Last Said" msgstr "Zuletzt gesagt" @@ -11654,7 +11545,6 @@ "geschützt. Die Datei 'COPYRIGHT' enthält die komplette Liste der " "Mitwirkenden. Wir übernehmen keine Haftung für dieses Programm.

" -#, c-format msgid "" "FAQ: http://developer.pidgin.im/wiki/FAQ

" @@ -11662,7 +11552,6 @@ "FAQ: http://developer.pidgin.im/wiki/FAQ

" -#, c-format msgid "" "Help via e-mail: support@pidgin.im

" @@ -11670,13 +11559,11 @@ "Hilfe per E-Mail: support@pidgin.im

" -#, c-format msgid "" "IRC Channel: #pidgin on irc.freenode.net

" msgstr "" "IRC-Kanal: #pidgin auf irc.freenode.net

" -#, c-format msgid "XMPP MUC: devel@conference.pidgin.im

" msgstr "XMPP-MUC: devel@conference.pidgin.im

" @@ -12342,7 +12229,6 @@ msgid "Pidgin" msgstr "Pidgin" -#, c-format msgid "Exiting because another libpurple client is already running.\n" msgstr "Wird geschlossen, da bereits ein anderer libpurple-Client läuft\n" @@ -12533,47 +12419,36 @@ msgid "Pounce Target" msgstr "Alarm-Ziel" -#, c-format msgid "Started typing" msgstr "Beginnt zu tippen" -#, c-format msgid "Paused while typing" msgstr "Hat beim Tippen angehalten" -#, c-format msgid "Signed on" msgstr "Hat sich anmeldet" -#, c-format msgid "Returned from being idle" msgstr "Ist nicht mehr inaktiv" -#, c-format msgid "Returned from being away" msgstr "Ist wieder anwesend" -#, c-format msgid "Stopped typing" msgstr "Hat das Tippen gestoppt" -#, c-format msgid "Signed off" msgstr "Hat sich abmeldet" -#, c-format msgid "Became idle" msgstr "Wurde untätig" -#, c-format msgid "Went away" msgstr "Ging hinaus" -#, c-format msgid "Sent a message" msgstr "Eine Nachricht senden" -#, c-format msgid "Unknown.... Please report this!" msgstr "Unbekannt.... Bitte berichten Sie dieses Problem!" @@ -12619,9 +12494,8 @@ msgid "On unread messages" msgstr "Bei ungelesenen Nachrichten" -#, fuzzy msgid "Conversation Window" -msgstr "IM Gesprächsfenster" +msgstr "Gesprächsfenster" msgid "_Hide new IM conversations:" msgstr "_Neue IM-Gespräche verstecken:" @@ -12862,27 +12736,21 @@ msgid "Sound Selection" msgstr "Klang-Auswahl" -#, c-format msgid "Quietest" msgstr "Am leisesten" -#, c-format msgid "Quieter" msgstr "Leiser" -#, c-format msgid "Quiet" msgstr "Leise" -#, c-format msgid "Loud" msgstr "Laut" -#, c-format msgid "Louder" msgstr "Lauter" -#, c-format msgid "Loudest" msgstr "Am lautesten" @@ -13271,9 +13139,25 @@ msgid "_Copy Email Address" msgstr "Kopiere _E-Mail-Adresse" +#, fuzzy +msgid "_Open File" +msgstr "Datei öffnen..." + +#, fuzzy +msgid "Open _Containing Directory" +msgstr "Mitschnittverzeichnis" + msgid "Save File" msgstr "Datei speichern" +#, fuzzy +msgid "_Play Sound" +msgstr "Einen Klang abspielen" + +#, fuzzy +msgid "_Save File" +msgstr "Datei speichern" + msgid "Select color" msgstr "Farbe auswählen" @@ -13400,9 +13284,8 @@ msgid "Service Discovery" msgstr "Dienstsuche" -#, fuzzy msgid "_Browse" -msgstr "_Browser:" +msgstr "_Suchen" msgid "Server does not exist" msgstr "Server existiert nicht" @@ -13414,7 +13297,7 @@ msgstr "XMPP-Dienstsuche" msgid "Allows browsing and registering services." -msgstr "" +msgstr "Erlaubt das Durchsuchen und Registrieren von Diensten" #, fuzzy msgid "" @@ -13966,7 +13849,6 @@ msgid "Select Color" msgstr "Farbe auswählen" -#, c-format msgid "Select Interface Font" msgstr "Schriftart wählen" @@ -14146,24 +14028,23 @@ "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"Icon für Kontakt/\n" +"Icon for unbekannte Person" + msgid "Icon for Chat" -msgstr "Chat betreten" +msgstr "Icon für Chat" msgid "Ignored" msgstr "Ignoriert" -#, fuzzy msgid "Founder" -msgstr "Lauter" - -#, fuzzy +msgstr "Gründer" + msgid "Operator" -msgstr "Opera" +msgstr "Operator" msgid "Half Operator" -msgstr "" +msgstr "Half-Operator" msgid "Authorization dialog" msgstr "Autorisierungsdialog" @@ -14177,9 +14058,8 @@ msgid "Mail dialog" msgstr "Mail-Dialog" -#, fuzzy msgid "Question dialog" -msgstr "Anfrage-Dialog" +msgstr "Frage-Dialog" msgid "Warning dialog" msgstr "Warnungdialog" @@ -14190,9 +14070,8 @@ msgid "Status Icons" msgstr "Status-Icons" -#, fuzzy msgid "Chatroom Emblems" -msgstr "Chatraum-Gebiet" +msgstr "Chatraum-Embleme" msgid "Dialog Icons" msgstr "Dialog-Icons" @@ -14269,7 +14148,6 @@ msgid "Timestamp Format Options" msgstr "Zeitstempelformat-Optionen" -#, c-format msgid "_Force 24-hour time format" msgstr "_Erzwinge 24-Stunden Zeitformat" @@ -14437,156 +14315,3 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "" "Dieses Plugin ist nützlich zur Fehlersuche in XMPP-Servern oder -Clients." - -#~ msgid "Cannot open socket" -#~ msgstr "Kann die Socket nicht öffnen" - -#~ msgid "Could not listen on socket" -#~ msgstr "Kann nicht an der Socket hören" - -#~ msgid "Unable to read socket" -#~ msgstr "Socket kann nicht gelesen werden" - -#~ msgid "Connection failed." -#~ msgstr "Verbindung fehlgeschlagen." - -#~ msgid "Server has disconnected" -#~ msgstr "Serververbindung wurde unterbrochen" - -#~ msgid "Couldn't create socket" -#~ msgstr "Kann Socket nicht erstellen" - -#~ msgid "Couldn't connect to host" -#~ msgstr "Keine Verbindung zum Host" - -#~ msgid "Read error" -#~ msgstr "Fehler beim Lesen" - -#~ msgid "" -#~ "Could not establish a connection with the server:\n" -#~ "%s" -#~ msgstr "" -#~ "Die Verbindung mit dem Server konnte nicht hergestellt werden:\n" -#~ "%s" - -#~ msgid "Write error" -#~ msgstr "Schreibfehler" - -#~ msgid "Read Error" -#~ msgstr "Fehler beim Lesen" - -#~ msgid "Failed to connect to server." -#~ msgstr "Verbindung zum Server nicht möglich." - -#~ msgid "Read buffer full (2)" -#~ msgstr "Lesepuffer voll (2)" - -#~ msgid "Unparseable message" -#~ msgstr "Kann die Nachricht nicht parsen" - -#~ msgid "Couldn't connect to host: %s (%d)" -#~ msgstr "Konnte nicht zum Host verbinden: %s (%d)" - -#~ msgid "Login failed (%s)." -#~ msgstr "Anmeldung fehlgeschlagen (%s)." - -#~ msgid "" -#~ "You have been logged out because you logged in at another workstation." -#~ msgstr "" -#~ "Sie wurden abgemeldet, weil Sie sich an einer anderen Workstation " -#~ "angemeldet haben." - -#~ msgid "Error. SSL support is not installed." -#~ msgstr "Fehler. SSL ist nicht installiert." - -#~ msgid "Incorrect password." -#~ msgstr "Falsches Passwort." - -#~ msgid "" -#~ "Could not connect to BOS server:\n" -#~ "%s" -#~ msgstr "" -#~ "Verbindung zum BOS-Server nicht möglich\n" -#~ "%s" - -#~ msgid "You may be disconnected shortly. Check %s for updates." -#~ msgstr "" -#~ "Sie wurden in kurzer Zeit abgemeldet. Überprüfen Sie %s wegen Updates." - -#~ msgid "Could Not Connect" -#~ msgstr "Verbinden nicht möglich" - -#~ msgid "Could not decrypt server reply" -#~ msgstr "Konnte die Antwort des Servers nicht entschlüsseln" - -#~ msgid "Invalid username." -#~ msgstr "Ungültiger Benutzername." - -#~ msgid "Connection lost" -#~ msgstr "Verbindung verloren" - -#~ msgid "Couldn't resolve host" -#~ msgstr "Kann den Hostnamen nicht auflösen" - -#~ msgid "Connection closed (writing)" -#~ msgstr "Verbindung geschlossen (schreibend)" - -#~ msgid "Connection reset" -#~ msgstr "Verbindung zurückgesetzt" - -#~ msgid "Error reading from socket: %s" -#~ msgstr "Fehler beim Lesen des Socket: %s" - -#~ msgid "Unable to connect to host" -#~ msgstr "Verbindung zum Server nicht möglich" - -#~ msgid "Could not write" -#~ msgstr "Konnte nicht schreiben" - -#~ msgid "Could not connect" -#~ msgstr "Verbinden nicht möglich" - -#~ msgid "Could not create listen socket" -#~ msgstr "Kann Listen-Socket nicht erstellen" - -#~ msgid "Could not resolve hostname" -#~ msgstr "Konnte den Hostnamen nicht auflösen" - -#~ msgid "Incorrect Password" -#~ msgstr "Falsches Passwort" - -#~ msgid "" -#~ "Could not establish a connection with %s:\n" -#~ "%s" -#~ msgstr "" -#~ "Die Verbindung mit %s konnte nicht hergestellt werden:\n" -#~ "%s" - -#~ msgid "Yahoo Japan" -#~ msgstr "Yahoo Japan" - -#~ msgid "Japan Pager server" -#~ msgstr "Pager-Server (Japan)" - -#~ msgid "Japan file transfer server" -#~ msgstr "Server für Dateiübertragungen (Japan)" - -#~ msgid "" -#~ "Lost connection with server\n" -#~ "%s" -#~ msgstr "" -#~ "Verbindung zum Server verloren\n" -#~ "%s" - -#~ msgid "Could not resolve host name" -#~ msgstr "Kann den Hostnamen nicht auflösen" - -#~ msgid "" -#~ "Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support " -#~ "was found." -#~ msgstr "" -#~ "Verbindung zu %s fehlgeschlagen: Der Server verlangt TLS/SSL, es wurde " -#~ "jedoch kein TLS/SSL-Support gefunden." - -#~ msgid "Conversation Window Hiding" -#~ msgstr "Gesprächsfenster verstecken" diff -r b4daae0798e3 -r e1cd44c7c7af po/el.po --- a/po/el.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/el.po Sat Jul 25 04:54:36 2009 +0000 @@ -2,7 +2,7 @@ # # This file is distributed under the same license as the Pidgin package. # -# Copyright (C) Bouklis Panos , 2005-2008. +# Copyright (C) Bouklis Panos , 2005-2009. # Copyright (C) Panayotis Katsaloulis , 2005. # Copyright (C) Ubuntu Greek Translators , 2005. # @@ -10,15 +10,15 @@ msgstr "" "Project-Id-Version: pidgin[el]\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2008-12-17 23:56+0200\n" +"POT-Creation-Date: 2009-07-19 00:16-0700\n" +"PO-Revision-Date: 2009-07-16 16:48+0300\n" "Last-Translator: Bouklis Panos \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Generator: Lokalize 0.2\n" +"X-Generator: Lokalize 0.3\n" #. Translators may want to transliterate the name. #. It is not to be translated. @@ -29,7 +29,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" @@ -40,11 +40,11 @@ " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" msgstr "" -"Pidgin %s\n" +"%s\n" "Χρήση: %s [ΕΠΙΛΟΓΉ]...\n" "\n" " -c, --config=DIR χρήση του DIR για τα αρχεία ρυθμίσεων\n" -" -d, --debug τύπωμα των μηνυμάτων αποσφαλμάτωσης στο stdout\n" +" -d, --debug τύπωμα των μηνυμάτων αποσφαλμάτωσης στο stderr\n" " -h, --help εμφάνιση αυτής της βοήθειας και έξοδος\n" " -n, --nologin χωρίς αυτόματη είσοδο\n" " -v, --version εμφάνιση τρέχουσας έκδοσης και έξοδος\n" @@ -100,7 +100,7 @@ #. Register checkbox msgid "Create this account on the server" -msgstr "Δημιουργία αυτού του νέου λογαριασμού στον εξυπηρετητή" +msgstr "Δημιουργία αυτού του λογαριασμού στον εξυπηρετητή" #. Cancel button #. Cancel @@ -234,6 +234,8 @@ msgid "You can edit more information from the context menu later." msgstr "" +"Μπορείτε αργότερα να επεξεργαστείτε περισσότερες πληροφορίες από το σχετικό " +"μενού." msgid "Error adding group" msgstr "Σφάλμα κατά την προσθήκη ομάδας" @@ -278,7 +280,7 @@ msgstr "Αποκλεισμένος" msgid "Show when offline" -msgstr "" +msgstr "Εμφάνιση και χωρίς σύνδεση" #, c-format msgid "Please enter the new name for %s" @@ -349,7 +351,7 @@ msgstr "Πρόσθετα" msgid "Block/Unblock" -msgstr "Αποκλεισμός / Ακύρωση αποκλεισμού" +msgstr "Αποκλεισμός/Ακύρωση αποκλεισμού" msgid "Block" msgstr "Αποκλεισμός" @@ -362,7 +364,7 @@ "Unblock." msgstr "" "Παρακαλούμε εισάγετε το όνομα χρήστη ή το ψευδώνυμο του ατόμου το οποίο " -"θέλετε να αποκλείσετε / ακυρώσετε τον αποκλεισμό του." +"θέλετε να αποκλείσετε/ακυρώσετε τον αποκλεισμό του." #. Not multiline #. Not masked? @@ -406,7 +408,7 @@ msgstr "Αποστολή άμεσου μηνύματος..." msgid "Block/Unblock..." -msgstr "Αποκλεισμός / Ακύρωση αποκλεισμού" +msgstr "Αποκλεισμός/Ακύρωση αποκλεισμού" msgid "Join Chat..." msgstr "Συμμετοχή σε συζήτηση..." @@ -688,7 +690,7 @@ "τρέχουσα συνομιλία." msgid "clear: Clears the conversation scrollback." -msgstr "" +msgstr "clear: Καθαρίζει την αναδίφηση της συζήτησης." msgid "help <command>: Help on a specific command." msgstr "help <εντολή>: Βοήθεια σε μια συγκεκριμένη εντολή." @@ -866,9 +868,8 @@ msgid "System Log" msgstr "Καταγραφή συστήματος" -#, fuzzy msgid "Calling ... " -msgstr "Υπολογισμός..." +msgstr "Κλήση... " msgid "Hangup" msgstr "" @@ -881,25 +882,26 @@ msgstr "Απόρριψη" msgid "Call in progress." -msgstr "" +msgstr "Κλήση σε εξέλιξη." msgid "The call has been terminated." -msgstr "" +msgstr "Η κλήση τερματίστηκε." #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s επιθυμεί να ξεκινήσει μαζί σας μία συνεδρία ήχου." #, c-format msgid "%s is trying to start an unsupported media session type with you." msgstr "" - -#, fuzzy +"%s προσπαθεί να ξεκινήσει μαζί σας μία συνεδρία πολυμέσων που δεν " +"υποστηρίζεται." + msgid "You have rejected the call." -msgstr "Αποχωρίσατε από το κανάλι%s%s" +msgstr "Απορρίψατε την κλήση." msgid "call: Make an audio call." -msgstr "" +msgstr "call: Πραγματοποίηση μίας κλήσης ήχου." msgid "Emails" msgstr "Emails" @@ -1564,20 +1566,21 @@ msgstr "" msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "Δημιουργία TinyURL μόνο για url μεγαλύτερα από αυτό το μήκος" 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 "" +"Κατά τη λήψη ενός μηνήματος με URL, χρήση του TinyURL για ευκολότερη " +"αντιγραφή" msgid "accounts" msgstr "λογαριασμοί" @@ -1769,7 +1772,6 @@ msgstr "+++ %s αποσυνδέθηκε" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "Άγνωστο σφάλμα" @@ -1816,7 +1818,6 @@ msgid "%s left the room (%s)." msgstr "%s έφυγε από το δωμάτιο (%s)." -#, fuzzy msgid "Invite to chat" msgstr "Πρόσκληση σε συζήτηση" @@ -1959,6 +1960,10 @@ msgstr "Εκκίνηση μεταφοράς του %s από %s" #, c-format +msgid "Transfer of file %s complete" +msgstr "Η μεταφορά του αρχείου %s ολοκληρώθηκε" + +#, c-format msgid "Transfer of file %s complete" msgstr "Η μεταφορά του αρχείου %s ολοκληρώθηκε" @@ -2174,9 +2179,8 @@ msgid "(%s) %s : %s\n" msgstr "(%s) %s <ΑΥΤΟΜΑΤΗ-ΑΠΑΝΤΗΣΗ>: %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "Σφάλμα δημιουργίας σύνδεσης" +msgstr "Σφάλμα δημιουργίας συζήτησης." #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2585,7 +2589,6 @@ "καταγραφών." #. * 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" @@ -2595,9 +2598,10 @@ msgstr "" "Κατά την προβολή των καταγραφών, αυτό το πρόσθετο θα περιλάβει τις " "καταγραφές από άλλους πελάτες άμεσων μηνυμάτων. Αυτή τη στιγμή, αυτό " -"περιλαμβάνει τα Adium, Fire, Messenger Plus!, MSN Messenger, και Trillian. \n" +"περιλαμβάνει τα Adium, MSN Messenger, aMSN, και Trillian. \n" +"\n" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτό το πρόσθετο είναι ακόμη σε κώδικα aplha και μπορεί να " -"κρασάρει συχνά. Χρησιμοποιείστε το με δική σας ευθύνη!" +"καταρρέει συχνά. Χρησιμοποιείστε το με δική σας ευθύνη!" msgid "Mono Plugin Loader" msgstr "Φορτωτής προσθέτων Mono" @@ -2644,7 +2648,6 @@ "Αποθήκευση μηνυμάτων που στέλνονται σε έναν αποσυνδεδεμένο χρήστη ως " "εφόρμηση." -#, fuzzy msgid "" "The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." @@ -2681,9 +2684,8 @@ msgid "Do not ask. Always save in pounce." msgstr "Χωρίς ερώτηση. Πάντα αποθήκευση ως εφόρμηση." -#, fuzzy msgid "One Time Password" -msgstr "Εισαγωγή κωδικού" +msgstr "Κωδικός μίας χρήσης" #. *< type #. *< ui_requirement @@ -2692,13 +2694,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "Υποστήριξη κωδικών μιας χρήσης" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "Εξαναγκασμός χρήσης κωδικών για μια φορά μόνο." #. * description msgid "" @@ -2706,6 +2708,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Σας επιτρέπει να εξαναγκάσετε, ανα λογαριασμό, ώστε οι κωδικοί που δεν " +"αποθηκεύονται να χρησιμοποιούνται σε μόνο μία επιτυχημένη σύνδεση.\n" +"Σημείωση: Για να λειτουργήσει δεν πρέπει να αποθηκευτεί ο κωδικός λογαριασμού" #. *< type #. *< ui_requirement @@ -2900,18 +2905,15 @@ "χρησιμοποιήσετε πρόσθετα TCL εγκαταστήστε το ActiveTCL από το http://www." "activestate.com\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"Δε βρέθηκε το σετ εργαλείων Apple Bonjour για Windows, δείτε τις Συχνές " -"Ερωτήσεις στο: http://d.pidgin.im/BonjourWindows για περισσότερες " -"πληροφορίες." - -#, fuzzy +"Δε βρέθηκε το σετ εργαλείων της Apple, \"Bonjour για Windows\", δείτε το " +"http://d.pidgin.im/BonjourWindows για περισσότερες πληροφορίες." + msgid "Unable to listen for incoming IM connections" -msgstr "Αδυναμία ακρόασης εισερχόμενων συνδέσεων άμεσων μηνυμάτων\n" +msgstr "Αδυναμία ακρόασης εισερχόμενων συνδέσεων άμεσων μηνυμάτων" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2951,9 +2953,8 @@ msgstr "" #. Creating the options for the protocol -#, fuzzy msgid "Local Port" -msgstr "Συνοικία" +msgstr "Τοπική θύρα" msgid "Bonjour" msgstr "Bonjour" @@ -2965,21 +2966,17 @@ msgid "Unable to send the message, the conversation couldn't be started." msgstr "Αδύνατο να σταλεί το μήνυμα, η συνομιλία δεν ξεκίνησε." -#, fuzzy, c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"Αδυναμία δημιουργίας υποδοχέα\n" -"%s" - -#, fuzzy, c-format +msgstr "Αδυναμία δημιουργίας υποδοχέα: %s" + +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "Αδυναμία απαγόρευσης εισόδου σε %s" - -#, fuzzy, c-format +msgstr "" + +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"Αδυναμία δημιουργίας υποδοχέα\n" -"%s" +msgstr "Αδυναμία ακρόασης στον υποδοχέα: %s" msgid "Error communicating with local mDNSResponder." msgstr "" @@ -3028,17 +3025,14 @@ msgid "Load buddylist from file..." msgstr "Φόρτωμα λίστας φίλων από αρχείο..." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "Συμπληρώστε τα πεδία καταχώρησης." - -#, fuzzy +msgstr "Πρέπει να συμπληρώσετε τα πεδία εγγραφής" + msgid "Passwords do not match" -msgstr "Οι κωδικοί δεν ταιριάζουν." - -#, fuzzy +msgstr "Οι κωδικοί δεν ταιριάζουν" + msgid "Unable to register new account. An unknown error occurred." -msgstr "Αδυναμία καταχώρησης νέου λογαριασμού. Συνέβη σφάλμα.\n" +msgstr "Αδυναμία καταχώρησης νέου λογαριασμού. Συνέβη ένα άγνωστο σφάλμα." msgid "New Gadu-Gadu Account Registered" msgstr "Καταχωρήθηκε νέος λογαριασμός Gadu-Gadu" @@ -3196,9 +3190,9 @@ msgid "Chat _name:" msgstr "Όνομα _συζήτησης:" -#, fuzzy, c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Αδύνατη η σύνδεση με τον εξυπηρετητή." +msgstr "" #. 1. connect to server #. connect to the server @@ -3211,9 +3205,8 @@ msgid "This chat name is already in use" msgstr "Αυτό το όνομα συζήτησης χρησιμοποιείται ήδη" -#, fuzzy msgid "Not connected to the server" -msgstr "Δεν είστε συνδεδεμένοι με τον εξυπηρετητή." +msgstr "Δεν υπάρχει σύνδεση με τον εξυπηρετητή" msgid "Find buddies..." msgstr "Εύρεση φίλων..." @@ -3254,9 +3247,8 @@ msgid "Gadu-Gadu User" msgstr "Χρήστης Gadu-Gadu" -#, fuzzy msgid "GG server" -msgstr "Λήψη εξυπηρετητή" +msgstr "Εξυπηρετητής GG" #, c-format msgid "Unknown command: %s" @@ -3272,9 +3264,8 @@ msgid "File Transfer Failed" msgstr "Αποτυχία μεταφοράς αρχείου" -#, fuzzy msgid "Unable to open a listening port." -msgstr "Αδυναμία ανοίγματος μιας θύρας ακρόασης." +msgstr "Αδυναμία ανοίγματος μιας θύρας ακρόασης" msgid "Error displaying MOTD" msgstr "Σφάλμα εμφάνισης μηνύματος της ημέρας" @@ -3296,11 +3287,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"Η σύνδεση με τον εξυπηρετητή χάθηκε:\n" -"%s" +msgstr "Η σύνδεση με τον εξυπηρετητή χάθηκε: %s" msgid "View MOTD" msgstr "Εμφάνιση μηνύματος της ημέρας" @@ -3311,9 +3300,8 @@ msgid "_Password:" msgstr "_Κωδικός:" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "Τα ψευδώνυμα IRC δεν πρέπει να περιέχουν κενά" +msgstr "Τα ψευδώνυμα και οι εξυπηρετητές IRC δεν πρέπει να περιέχουν κενά" msgid "SSL support unavailable" msgstr "Υποστήριξη SSL μη διαθέσιμη" @@ -3322,11 +3310,11 @@ msgstr "Αδυναμία σύνδεσης" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "Αδυναμία σύνδεσης με %s" - -#, fuzzy, c-format +msgstr "Αδυναμία σύνδεσης: %s" + +#, c-format msgid "Server closed the connection" msgstr "Ο εξυπηρετητής έκλεισε τη σύνδεση" @@ -3512,13 +3500,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 "Δεν είναι δυνατή η αλλαγή του ψευδωνύμου" @@ -3761,15 +3748,11 @@ msgid "execute" msgstr "εκτέλεση" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." -msgstr "" -"Ο εξυπηρετητής απαιτεί TLS/SSL για να γίνει σύνδεση. Δε βρέθηκε υποστήριξη " -"TLS/SSL." - -#, fuzzy +msgstr "Ο εξυπηρετητής απαιτεί TLS/SSL, όμως δε βρέθηκε υποστήριξη TLS/SSL." + msgid "You require encryption, but no TLS/SSL support was found." -msgstr "Θέλετε κρυπτογράφηση αλλά δε βρέθηκε υποστήριξη TLS/SSL." +msgstr "Θέλετε κρυπτογράφηση, όμως δε βρέθηκε υποστήριξη TLS/SSL." msgid "Server requires plaintext authentication over an unencrypted stream" msgstr "" @@ -3787,13 +3770,11 @@ msgid "Plaintext Authentication" msgstr "Έγκριση με σκέτο κείμενο" -#, fuzzy msgid "SASL authentication failed" -msgstr "Αποτυχία έγκρισης" - -#, fuzzy +msgstr "Αποτυχία έγκρισης SASL" + msgid "Invalid response from server" -msgstr "Λανθασμένη ανταπόκριση του εξυπηρετητή." +msgstr "Λανθασμένη ανταπόκριση του εξυπηρετητή" msgid "Server does not use any supported authentication method" msgstr "Ο εξυπηρετητής δε χρησιμοποιεί καμία υποστηριζόμενη μέθοδο έγκρισης" @@ -3805,36 +3786,28 @@ msgid "Invalid challenge from server" msgstr "Μη έγκυρη πρόκληση από τον εξυπηρετητή" -#, fuzzy, c-format +#, c-format msgid "SASL error: %s" -msgstr "Σφάλμα SASL" +msgstr "Σφάλμα SASL: %s" 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" - -#, fuzzy, c-format +msgstr "Αδυναμία δημιουργίας σύνδεσης με τον εξυπηρετητή" + +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "" -"Αδυναμία δημιουργίας σύνδεσης με τον εξυπηρετητή:\n" -"%s" - -#, fuzzy +msgstr "Αδυναμία δημιουργίας σύνδεσης με τον εξυπηρετητή %s" + msgid "Unable to establish SSL connection" -msgstr "Αδυναμία δημιουργίας σύνδεσης" +msgstr "Αδυναμίας δημιουργίας σύνδεσης SSL" msgid "Full Name" msgstr "Ονοματεπώνυμο" @@ -3902,9 +3875,8 @@ msgid "Operating System" msgstr "Λειτουργικό σύστημα" -#, fuzzy msgid "Local Time" -msgstr "Τοπικό αρχείο:" +msgstr "Τοπική ώρα" msgid "Priority" msgstr "Προτεραιότητα" @@ -3916,9 +3888,8 @@ msgid "%s ago" msgstr "" -#, fuzzy msgid "Logged Off" -msgstr "Συνδεδεμένος" +msgstr "Αποσυνδεδεμένος" msgid "Middle Name" msgstr "Πατρώνυμο" @@ -4086,19 +4057,15 @@ msgid "Find Rooms" msgstr "Εύρεση δωματίων" -#, fuzzy msgid "Affiliations:" -msgstr "Γνωστός ως:" - -#, fuzzy +msgstr "" + msgid "No users found" -msgstr "Δε βρέθηκαν χρήστες που να ταιριάζουν" - -#, fuzzy +msgstr "Δε βρέθηκαν χρήστες" + msgid "Roles:" -msgstr "Ρόλος" - -#, fuzzy +msgstr "Ρόλοι:" + msgid "Ping timed out" msgstr "Τέλος χρονικού ορίου για ping" @@ -4113,9 +4080,8 @@ msgid "Invalid XMPP ID. Domain must be set." msgstr "" -#, fuzzy msgid "Malformed BOSH URL" -msgstr "Αποτυχία σύνδεσης με τον εξυπηρετητή." +msgstr "Παραμορφωμένο BOSH URL" #, c-format msgid "Registration of %s@%s successful" @@ -4187,10 +4153,6 @@ msgid "Change Registration" msgstr "Αλλαγή καταχώρησης" -#, fuzzy -msgid "Malformed BOSH Connect Server" -msgstr "Αποτυχία σύνδεσης με τον εξυπηρετητή." - msgid "Error unregistering account" msgstr "Σφάλμα κατά την διαγραφή της καταχώρησης του λογαριασμού" @@ -4210,7 +4172,7 @@ msgstr "Επανεκκίνηση ροής" msgid "Server doesn't support blocking" -msgstr "" +msgstr "Ο εξυπηρετητής δεν υπηστηρίζει αποκλεισμούς" msgid "Not Authorized" msgstr "Δεν εγκρίθηκε" @@ -4503,35 +4465,34 @@ msgid "%s has buzzed you!" msgstr "" -#, fuzzy, c-format +#, c-format msgid "Unable to initiate media with %s: invalid JID" -msgstr "Αδυναμία αποστολής αρχείου σε %s, μη έγκυρο JID" - -#, fuzzy, c-format +msgstr "Αδυναμία εκκίνησης πολυμέσων με %s: μη έγκυρο JID" + +#, c-format msgid "Unable to initiate media with %s: user is not online" -msgstr "Αδυναμία αποστολής αρχείου σε %s, ο χρήστης δεν είναι συνδεδεμένος" +msgstr "Αδυναμία εκκίνησης πολυμέσων με %s: ο χρήστης δεν είναι συνδεδεμένος" #, c-format msgid "Unable to initiate media with %s: not subscribed to user presence" msgstr "" -#, fuzzy msgid "Media Initiation Failed" -msgstr "Αποτυχία καταχώρησης" - -#, fuzzy, c-format +msgstr "Αδυναμία εκκίνησης πολυμέσων" + +#, c-format msgid "" "Please select the resource of %s with which you would like to start a media " "session." msgstr "" -"Παρακαλούμε επιλέξτε την πηγή του %s στο οποίο θέλετε να στείλετε ένα αρχείο" +"Παρακαλούμε εισάγετε την πηγή του %s με την οποία θέλετε να ξεκινήσετε τη " +"συνεδρία πολυμέσων." msgid "Select a Resource" msgstr "Επιλογή πηγής" -#, fuzzy msgid "Initiate Media" -msgstr "Έναρξη _συζήτησης" +msgstr "Έναρξη πολυμέσων" msgid "config: Configure a chat room." msgstr "config: Ρύθμιση του δωματίου συζήτησης." @@ -4557,13 +4518,12 @@ "the users with an affiliation or set users' affiliation with the room." msgstr "" -#, fuzzy msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <χρήστης> <moderator|participant|visitor|none>: Ορίζει το " -"ρόλο ενός χρήστη στο δωμάτιο." +"role <moderator|participant|visitor|none> [ψευδώνυμο 1] [ψευδώνυμο " +"2] ... : Ορίζει το ρόλο ενός χρήστη στο δωμάτιο." msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <χρήστης> [μήνυμα]: Πρόσκληση ενός χρήστη στο δωμάτιο." @@ -4627,7 +4587,7 @@ msgstr "Διαμεσολαβητές μεταφοράς αρχείων" msgid "BOSH URL" -msgstr "" +msgstr "BOSH URL" #. this should probably be part of global smiley theme settings later on, #. shared with MSN @@ -4691,29 +4651,25 @@ msgid "_Accept Defaults" msgstr "_Αποδοχή προεπιλεγμένων" -#, fuzzy msgid "No reason" -msgstr "Δεν δόθηκε αιτία" - -#, fuzzy, c-format +msgstr "Χωρίς αιτία" + +#, c-format msgid "You have been kicked: (%s)" -msgstr "Έχετε εκδιωχθεί από τον %s: (%s)" - -#, fuzzy, c-format +msgstr "Έχετε εκδιωχθεί: (%s)" + +#, c-format msgid "Kicked (%s)" -msgstr "Εκδιωγμένος από τον %s (%s)" - -#, fuzzy +msgstr "Εκδιωγμένος (%s)" + msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Ένα σφάλμα συνέβη κατά το άνοιγμα του αρχείου." - -#, fuzzy +msgstr "" + msgid "Transfer was closed." -msgstr "Αποτυχία μεταφοράς αρχείου" - -#, fuzzy +msgstr "Η μεταφορά έκλεισε." + msgid "Failed to open the file" -msgstr "Αποτυχία κατά το άνοιγμα του αρχείου '%s': %s" +msgstr "Αποτυχία κατά το άνοιγμα του αρχείου" msgid "Failed to open in-band bytestream" msgstr "" @@ -5039,21 +4995,38 @@ msgid "Non-IM Contacts" msgstr "Επαφές μη-άμεσων μηνυμάτων" -#, fuzzy, c-format +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "" + +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "" -"%s σας έστειλε πρόσκληση με κάμερα, κάτι το οποίο δεν υποστηρίζεται ακόμα." +"%s σας έστειλε πρόσκληση για συζήτηση με φωνή, κάτι το οποίο δεν " +"υποστηρίζεται ακόμα." msgid "Nudge" -msgstr "" +msgstr "Σκούντηγμα" #, c-format msgid "%s has nudged you!" -msgstr "" +msgstr "%s σας σκούντηξε" #, c-format msgid "Nudging %s..." -msgstr "" +msgstr "Σκούντηγμα %s..." msgid "Email Address..." msgstr "Διεύθυνση email..." @@ -5171,7 +5144,7 @@ msgstr "Ορισμός τηλεφώνου εργασίας..." msgid "Set Mobile Phone Number..." -msgstr "Ορισμός κινητού τηλεφώνου..." +msgstr "Ορισ�ός κινητού τηλεφώνου..." msgid "Enable/Disable Mobile Devices..." msgstr "Ενεργοποίηση/Απενεργοποίηση φορητών συσκευών..." @@ -5196,6 +5169,30 @@ "Χρειάζεται υποστήριξη SSL για το MSN. Παρακαλούμε εγκαταστήστε μία " "υποστηριζόμενη βιβλιοθήκη SSL." +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Δεν ήταν δυνατή η προσθήκη του φίλου %s επειδή το όνομα χρήστη δεν είναι " +"έγκυρο. Τα ονόματα χρήστη πρέπει να είναι μία έγκυρη διεύθυνση ηλεκτρονικού " +"ταχυδρομείου." + +msgid "Unable to Add" +msgstr "Αδυναμία προσθήκης" + +msgid "Authorization Request Message:" +msgstr "Μήνυμα αίτησης έγκρισης:" + +msgid "Please authorize me!" +msgstr "Παρακαλώ δώστε μου έγκριση!" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "_Εντάξει" + msgid "Error retrieving profile" msgstr "Σφάλμα κατά τη λήψη του προφίλ" @@ -5376,7 +5373,7 @@ msgstr "Εμφάνισε τις προσαρμοσμένες φατσούλες" msgid "nudge: nudge a user to get their attention" -msgstr "" +msgstr "nudge: σκούντηγμα ενός χρήστη για να ζητήσετε την προσοχή του" msgid "Windows Live ID authentication:Unable to connect" msgstr "Έγκριση Windows Live ID:Αδυναμία σύνδεσης" @@ -5386,15 +5383,16 @@ #, c-format msgid "%s just sent you a Nudge!" -msgstr "" - -#, fuzzy, c-format +msgstr "%s μόλις σας σκούντηξε!" + +#, c-format msgid "Unknown error (%d): %s" -msgstr "Άγνωστο σφάλμα (%d)" +msgstr "Άγνωστο σφάλμα (%d): %s" msgid "Unable to add user" msgstr "Αδυναμία προσθήκης χρήστη" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "Άγνωστο σφάλμα (%d)" @@ -5463,26 +5461,22 @@ "Σφάλμα σύνδεσης από %s διακομιστή:\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" -msgstr "Το πρωτόκολλό μας δεν υποστηρίζεται από τον εξυπηρετητή." - -#, fuzzy +msgstr "Το πρωτόκολλό μας δεν υποστηρίζεται από τον εξυπηρετητή" + msgid "Error parsing HTTP" -msgstr "Σφάλμα ανάλυσης HTTP." - -#, fuzzy +msgstr "Σφάλμα ανάλυσης HTTP" + msgid "You have signed on from another location" -msgstr "Έχετε συνδεθεί από άλλη τοποθεσία." +msgstr "Έχετε συνδεθεί από άλλη τοποθεσία" msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" "Οι εξυπηρετητές του MSN είναι προσωρινά μη διαθέσιμοι. Παρακαλούμε " "περιμένετε και ξαναδοκιμάστε." -#, fuzzy msgid "The MSN servers are going down temporarily" -msgstr "Οι εξυπηρετητές του MSN κλείνουν προσωρινά." +msgstr "Οι εξυπηρετητές του MSN κλείνουν προσωρινά" #, c-format msgid "Unable to authenticate: %s" @@ -5512,7 +5506,7 @@ msgid "Retrieving buddy list" msgstr "Λήψη λίστας φίλων" -#, fuzzy, c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." msgstr "" "%s σας έστειλε πρόσκληση με κάμερα, κάτι το οποίο δεν υποστηρίζεται ακόμα." @@ -5714,16 +5708,16 @@ msgid "Protocol error, code %d: %s" msgstr "Σφάλμα πρωτοκόλλου, κώδικας %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 Ο κωδικό σας είναι %d χαρακτήρες, μεγαλύτερος από το μέγιστο επιτρεπόμενο " -"μήκος των %d για το MySpaceIM. Παρακαλούμε μικρύνετε τον κωδικό σας στο " -"http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings." -"changePassword και δοκιμάστε ξανά." +"%s Ο κωδικός σας είναι %zu χαρακτήρες, μεγαλύτερος από το μέγιστο " +"επιτρεπόμενο μήκος των %d. Παρακαλούμε μικρύνετε τον κωδικό σας στο http://" +"profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword " +"και δοκιμάστε ξανά." msgid "Incorrect username or password" msgstr "Λανθασμένο όνομα χρήστη ή κωδικός." @@ -6085,9 +6079,9 @@ msgid "Unknown error: 0x%X" msgstr "Άγνωστο σφάλμα: 0x%X" -#, fuzzy, c-format +#, c-format msgid "Unable to login: %s" -msgstr "Αδυναμία εισόδου" +msgstr "Αδυναμία εισόδου: %s" #, c-format msgid "Unable to send message. Could not get details for user (%s)." @@ -6227,7 +6221,6 @@ "%s φαίνεται ότι δεν είναι συνδεδεμένος και δεν έλαβε το μήνυμα που μόλις " "στείλατε." -#, fuzzy msgid "" "Unable to connect to server. Please enter the address of the server to which " "you wish to connect." @@ -6257,9 +6250,8 @@ msgid "Server port" msgstr "Θύρα εξυπηρετητή" -#, fuzzy msgid "Received unexpected response from " -msgstr "Λήφθηκε αναπάντεχη ανταπόκριση HTTP από τον εξυπηρετητή." +msgstr "Λήφθηκε αναπάντεχη ανταπόκριση από " #. username connecting too frequently msgid "" @@ -6270,9 +6262,9 @@ "ξαναπροσπαθήστε. Αν συνεχίσετε να προσπαθείτε, θα πρέπει να περιμένετε ακόμα " "περισσότερο." -#, fuzzy, c-format +#, c-format msgid "Error requesting " -msgstr "Σφάλμα εύρεσης του %s" +msgstr "Σφάλμα αίτησης " msgid "AOL does not allow your screen name to authenticate here" msgstr "" @@ -6283,9 +6275,8 @@ msgid "Invalid chat room name" msgstr "Μη έγκυρο όνομα δωματίου" -#, fuzzy msgid "Received invalid data on connection with server" -msgstr "Λήφθηκαν μη έγκυρα δεδομένα κατά τη σύνδεση με τον εξυπηρετητή." +msgstr "Λήφθηκαν μη έγκυρα δεδομένα κατά τη σύνδεση με τον εξυπηρετητή" #. *< type #. *< ui_requirement @@ -6333,7 +6324,6 @@ msgstr "" "Λήφθηκαν μη έγκυρα δεδομένα κατά τη σύνδεση με τον απομακρυσμένο χρήστη." -#, fuzzy msgid "Unable to establish a connection with the remote user." msgstr "Δεν ήταν δυνατή η δημιουργία σύνδεσης με τον απομακρυσμένο χρήστη." @@ -6537,15 +6527,13 @@ msgid "Buddy Comment" msgstr "Σχόλιο φίλου" -#, fuzzy, c-format +#, c-format msgid "Unable to connect to authentication server: %s" -msgstr "" -"Δεν ήταν δυνατή η σύνδεση με τον εξυπηρετητή πιστοποίησης:\n" -"%s" - -#, fuzzy, c-format +msgstr "Δεν ήταν δυνατή η σύνδεση με τον εξυπηρετητή πιστοποίησης: %s" + +#, c-format msgid "Unable to connect to BOS server: %s" -msgstr "Αδύνατη η σύνδεση με τον εξυπηρετητή." +msgstr "Δεν ήταν δυνατή η σύνδεση με τον εξυπηρετητή BOS: %s" msgid "Username sent" msgstr "Το όνομα χρήστη στάλθηκε" @@ -6557,20 +6545,22 @@ msgid "Finalizing connection" msgstr "Ολοκλήρωση σύνδεσης" -#, fuzzy, c-format +#, c-format msgid "" "Unable to sign on as %s because the username is invalid. Usernames must be " "a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"Αδυναμία εισόδου: Δεν ήταν δυνατό να συνδεθείτε ως %s επειδή το όνομα χρήστη " -"δεν είναι έγκυρο. Τα ονόματα χρήστη πρέπει είτε να είναι μία έγκυρη " -"διεύθυνση ηλεκτρονικού ταχυδρομείου, είτε να ξεκινούν με ένα γράμμα και να " -"περιέχουν μόνο γράμματα, αριθμούς και κενά, είτε να περιέχουν μόνο αριθμούς." - -#, fuzzy, c-format +"Αδυναμία εισόδου ως %s επειδή το όνομα χρήστη δεν είναι έγκυρο. Τα ονόματα " +"χρήστη πρέπει είτε να είναι μία έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου, " +"είτε να ξεκινούν με ένα γράμμα και να περιέχουν μόνο γράμματα, αριθμούς και " +"κενά, είτε να περιέχουν μόνο αριθμούς." + +#, c-format msgid "You may be disconnected shortly. If so, check %s for updates." -msgstr "Αποσυνδεθήκατε πολύ γρήγορα. Ελέγξτε το %s για αναβαθμίσεις." +msgstr "" +"Μπορεί να αποσυνδεθείτε πολύ γρήγορα. Αν γίνει αυτό, ελέγξτε το %s για " +"αναβαθμίσεις." msgid "Unable to get a valid AIM login hash." msgstr "Αδυναμία λήψης ενός έγκυρου hash εισόδου στο AIM." @@ -6584,19 +6574,18 @@ #. Unregistered username #. uid is not exist #. the username does not exist -#, fuzzy msgid "Username does not exist" -msgstr "Ο χρήστης δεν υπάρχει" +msgstr "Το όνομα χρήστη δεν υπάρχει" #. Suspended account -#, fuzzy msgid "Your account is currently suspended" -msgstr "Ο λογαριασμός σας είναι προς το παρόν σε αναστολή." +msgstr "Ο λογαριασμός σας είναι προς το παρόν σε αναστολή" #. service temporarily unavailable msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "Η υπηρεσία AOL Instant Messenger είναι προσωρινά μη διαθέσιμη." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "" @@ -6604,18 +6593,16 @@ "σε %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 "" -"Συνδεόσασταν και αποσυνδεόσασταν πολύ γρήγορα. Περιμένετε δέκα λεπτά και " +"Συνδεόσασταν και αποσυνδεόσασταν πολύ γρήγορα. Περιμένετε ένα λεπτό και " "ξαναπροσπαθήστε. Αν συνεχίσετε να προσπαθείτε, θα πρέπει να περιμένετε ακόμα " "περισσότερο." -#, fuzzy msgid "The SecurID key entered is invalid" -msgstr "Το SecurID που πληκτρολογήθηκε είναι λανθασμένο." +msgstr "Το SecurID που πληκτρολογήθηκε είναι λανθασμένο" msgid "Enter SecurID" msgstr "Εισαγωγή SecurID" @@ -6623,12 +6610,6 @@ msgid "Enter the 6 digit number from the digital display." msgstr "Δώστε τα 6 ψηφία από τη ψηφιακή οθόνη." -#. * -#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. -#. -msgid "_OK" -msgstr "_Εντάξει" - msgid "Password sent" msgstr "Κωδικός στάλθηκε" @@ -6639,12 +6620,6 @@ msgstr "" "Παρακαλώ δώστε μου έγκριση ώστε να μπορώ να σας προσθέσω στη λίστα φίλων μου." -msgid "Authorization Request Message:" -msgstr "Μήνυμα αίτησης έγκρισης:" - -msgid "Please authorize me!" -msgstr "Παρακαλώ δώστε μου έγκριση!" - msgid "No reason given." msgstr "Δεν δόθηκε αιτία." @@ -6976,7 +6951,7 @@ msgid "Away message too long." msgstr "Πολύ μεγάλο μήνυμα απουσίας." -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " "be a valid email address, or start with a letter and contain only letters, " @@ -6987,9 +6962,6 @@ "ταχυδρομείου, ή ξεκινούν με ένα γράμμα και να περιέχουν μόνο γράμματα, " "αριθμούς και κενά, ή να περιέχουν μόνο αριθμούς." -msgid "Unable to Add" -msgstr "Αδυναμία προσθήκης" - msgid "Unable to Retrieve Buddy List" msgstr "Αδυναμία λήψης της λίστας φίλων" @@ -7003,7 +6975,7 @@ msgid "Orphans" msgstr "Ορφανά" -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because you have too many buddies in your buddy " "list. Please remove one and try again." @@ -7014,7 +6986,7 @@ msgid "(no name)" msgstr "(χωρίς όνομα)" -#, fuzzy, c-format +#, c-format msgid "Unable to add the buddy %s for an unknown reason." msgstr "Δεν ήταν δυνατή η προσθήκη του φίλου %s για άγνωστο λόγο." @@ -7180,9 +7152,8 @@ msgid "Search for Buddy by Information" msgstr "Αναζήτηση φίλου με πληροφορίες" -#, fuzzy msgid "Use clientLogin" -msgstr "Ο χρήστης δεν είναι συνδεδεμένος" +msgstr "" msgid "" "Always use AIM/ICQ proxy server for\n" @@ -7381,24 +7352,20 @@ msgstr "Σημείωση" #. callback -#, fuzzy msgid "Buddy Memo" -msgstr "Εικονίδιο φίλου" +msgstr "" msgid "Change his/her memo as you like" msgstr "" -#, fuzzy msgid "_Modify" -msgstr "Τροποποίηση" - -#, fuzzy +msgstr "_Τροποποίηση" + msgid "Memo Modify" -msgstr "Τροποποίηση" - -#, fuzzy +msgstr "" + msgid "Server says:" -msgstr "Ο εξυπηρετητής είναι απασχολημένος" +msgstr "Ο εξυπηρετητής λέει:" msgid "Your request was accepted." msgstr "" @@ -7677,7 +7644,7 @@ #, c-format msgid "Resend: %lu
\n" -msgstr "" +msgstr "Αποστολή ξανά: %lu
\n" #, c-format msgid "Lost: %lu
\n" @@ -7712,11 +7679,10 @@ msgstr "" msgid "

Acknowledgement:
\n" -msgstr "" - -#, fuzzy +msgstr "

Αναγνώριση:
\n" + msgid "

Scrupulous Testers:
\n" -msgstr "

Αρχικός συγγραφέας:
\n" +msgstr "

Προσεκτικοί Δοκιμαστές:
\n" msgid "and more, please let me know... thank you!))" msgstr "" @@ -7746,9 +7712,8 @@ msgid "About OpenQ" msgstr "Σχετικά με το OpenQ" -#, fuzzy msgid "Modify Buddy Memo" -msgstr "Τροποποίηση διεύθυνσης" +msgstr "" #. *< type #. *< ui_requirement @@ -7788,7 +7753,7 @@ msgstr "Εμφάνιση νέων εξυπηρετητή" msgid "Show chat room when msg comes" -msgstr "" +msgstr "Εμφάνιση δωματίου συζήτησης όταν λαμβάνεται μήνυμα" msgid "Keep alive interval (seconds)" msgstr "" @@ -7796,9 +7761,8 @@ msgid "Update interval (seconds)" msgstr "" -#, fuzzy msgid "Unable to decrypt server reply" -msgstr "Δεν ήταν δυνατή η απόκρυψη της απάντησης του εξυπηρετητή" +msgstr "Δεν ήταν δυνατή η αποκρυπτογράφηση της απάντησης του εξυπηρετητή" #, c-format msgid "Failed requesting token, 0x%02X" @@ -7864,9 +7828,8 @@ msgid "Requesting token" msgstr "" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "Αδύνατη η σύνδεση με τον εξυπηρετητή." +msgstr "" msgid "Invalid server or port" msgstr "Μη έγκυρος εξυπηρετητής ή θύρα" @@ -7919,7 +7882,6 @@ msgid "QQ Qun Command" msgstr "Εντολή QQ Qun" -#, fuzzy msgid "Unable to decrypt login reply" msgstr "Δεν ήταν δυνατή η αποκρυπτογράφηση της απάντησης εισόδου" @@ -8895,7 +8857,6 @@ msgid "Disconnected by server" msgstr "Έγινε αποσύνδεση από τον εξυπηρετητή" -#, fuzzy msgid "Error connecting to SILC Server" msgstr "Σφάλμα κατά τη σύνδεση με τον εξυπηρετητή SILC" @@ -8911,24 +8872,21 @@ msgid "Performing key exchange" msgstr "Γίνεται ανταλλαγή κλειδιού" -#, fuzzy msgid "Unable to load SILC key pair" -msgstr "Αδυναμία φορτώματος του κλειδιού SILC" +msgstr "Αδυναμία φορτώματος του ζεύγους κλειδιών SILC" #. Progress msgid "Connecting to SILC Server" msgstr "Γίνεται σύνδεση με τον εξυπηρετητή SILC" -#, fuzzy msgid "Unable to not load SILC key pair" -msgstr "Αδυναμία φορτώματος του κλειδιού SILC" +msgstr "Αδυναμία μη φορτώματος του ζεύγους κλειδιών SILC" msgid "Out of memory" msgstr "Τέλος μνήμης" -#, fuzzy msgid "Unable to initialize SILC protocol" -msgstr "Αδυναμία εκκίνησης πρωτοκόλλου SILC" +msgstr "Αδυναμία αρχικοποίησης πρωτοκόλλου SILC" msgid "Error loading SILC key pair" msgstr "Σφάλμα κατά το φόρτωμα του κλειδιού SILC" @@ -9235,9 +9193,8 @@ msgid "Creating SILC key pair..." msgstr "Δημιουργία κλειδιού SILC..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "Αδύνατη η δημιουργία κλειδιού SILC\n" +msgstr "Αδύνατη η δημιουργία του ζεύγους κλειδιών SILC" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9376,34 +9333,30 @@ msgid "Failure: Authentication failed" msgstr "Αποτυχία: Η έγκρισή απέτυχε" -#, fuzzy msgid "Unable to initialize SILC Client connection" -msgstr "Αδυναμία έναρξης σύνδεσης του πελάτη SILC" +msgstr "Αδυναμία αρχικοποίησης σύνδεσης του πελάτη SILC" msgid "John Noname" msgstr "Γιάννης Χωρίς-όνομα" -#, fuzzy, c-format +#, c-format msgid "Unable to load SILC key pair: %s" msgstr "Δεν ήταν δυνατό το φόρτωμα του ζεύγους κλειδιών SILC: %s" msgid "Unable to create connection" msgstr "Αδυναμία δημιουργίας σύνδεσης" -#, fuzzy msgid "Unknown server response" -msgstr "Άγνωστη απάντηση εξυπηρετητή." - -#, fuzzy +msgstr "Άγνωστη απάντηση εξυπηρετητή" + msgid "Unable to create listen socket" -msgstr "Αδυναμία δημιουργίας υποδοχέα" +msgstr "Αδυναμία δημιουργίας υποδοχέα ακρόασης" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "Τα ονόματα χρήστη χρηστών SIP δεν πρέπει να περιέχουν κενά ή σύμβολα @" -#, fuzzy msgid "SIP connect server not specified" -msgstr "Εμφάνιση μηνύματος εξυπηρετητή" +msgstr "Δεν ορίστηκε εξυπηρετητής SIP" #. *< type #. *< ui_requirement @@ -9461,9 +9414,8 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" -msgstr "Πρόσθετο πρωτοκόλλου Yahoo" +msgstr "Πρόσθετο πρωτοκόλλου Yahoo!" msgid "Pager server" msgstr "Εξυπηρετητής τηλεειδοποίησης" @@ -9492,9 +9444,8 @@ msgid "Yahoo Chat port" msgstr "Θύρα συζητήσεων Yahoo" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "Yahoo ID..." +msgstr "Yahoo JAPAN ID..." #. *< type #. *< ui_requirement @@ -9506,12 +9457,11 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Πρόσθετο πρωτοκόλλου Yahoo" +msgstr "Πρόσθετο πρωτοκόλλου Yahoo! JAPAN" msgid "Your SMS was not delivered" -msgstr "" +msgstr "Το SMS σας δεν παραδόθηκε" msgid "Your Yahoo! message did not get sent." msgstr "Το μήνυμα σας Yahoo! δε στάλθηκε." @@ -9537,32 +9487,28 @@ msgstr "Η προσθήκη φίλου απορρίφθηκε" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "Λήφθηκαν μη έγκυρα δεδομένα κατά τη σύνδεση με τον εξυπηρετητή." +msgstr "Λήφθηκαν μη έγκυρα δεδομένα" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." msgstr "" -"Άγνωστο σφάλμα με αριθμό %d. Αν συνδεθείτε στην ιστοσελίδα του Yahoo! ίσως " -"διορθωθεί." +"Ο λογαριασμός κλειδώθηκε: Πολλές αποτυχημένες προσπάθειες εισόδου. Η είσοδος " +"στην ιστοσελίδα του Yahoo! πιθανώς να το διορθώσει αυτό." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." msgstr "" -"Άγνωστο σφάλμα με αριθμό %d. Αν συνδεθείτε στην ιστοσελίδα του Yahoo! ίσως " -"διορθωθεί." +"Ο λογαριασμός κλειδώθηκε: Άγνωστη αιτία. Η είσοδος στην ιστοσελίδα του " +"Yahoo! πιθανώς να το διορθώσει αυτό." #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "Λανθασμένο όνομα χρήστη ή κωδικός." +msgstr "Λείπει το όνομα χρήστη ή ο κωδικός." #, c-format msgid "" @@ -9599,13 +9545,12 @@ "Άγνωστο σφάλμα με αριθμό %d. Αν συνδεθείτε στην ιστοσελίδα του Yahoo! ίσως " "διορθωθεί." -#, fuzzy, c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." msgstr "" -"Δεν ήταν δυνατή η προσθήκη του φίλου %s στην ομάδα %s της λίστας εξυπηρετητή " -"στο λογαριασμό %s." - -#, fuzzy +"Δεν ήταν δυνατή η προσθήκη του φίλου %s στην ομάδα %s στη λίστα του " +"εξυπηρετητή για το λογαριασμό %s." + msgid "Unable to add buddy to server list" msgstr "Δεν ήταν δυνατή η προσθήκη του φίλου στη λίστα εξυπηρετητή" @@ -9613,21 +9558,16 @@ msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ %s/%s/%s.swf με ήχο ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" -msgstr "Λήφθηκε αναπάντεχη ανταπόκριση HTTP από τον εξυπηρετητή." - -#, fuzzy, c-format +msgstr "Λήφθηκε αναπάντεχη ανταπόκριση HTTP από τον εξυπηρετητή" + +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"Χάθηκε η σύνδεση με %s:\n" -"%s" - -#, fuzzy, c-format +msgstr "Χάθηκε η σύνδεση με %s: %s" + +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "" -"Αδυναμία δημιουργίας σύνδεσης με τον εξυπηρετητή:\n" -"%s" +msgstr "Αδυναμία δημιουργίας σύνδεσης με %s: %s" msgid "Not at Home" msgstr "Εκτός σπιτιού" @@ -9834,9 +9774,8 @@ msgid "User Rooms" msgstr "Δωμάτια χρηστών" -#, fuzzy msgid "Connection problem with the YCHT server" -msgstr "Πρόβλημα σύνδεσης με τον εξυπηρετητή YCHT." +msgstr "Πρόβλημα σύνδεσης με τον εξυπηρετητή YCHT" msgid "" "(There was an error converting this message.\t Check the 'Encoding' option " @@ -9955,15 +9894,15 @@ msgid "Exposure" msgstr "Έκθεση" -#, fuzzy, c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "Αδυναμία ανάλυσης της ανταπόκρισης του διακομιστή HTTP: %s\n" +msgstr "Αδυναμία ανάλυσης της ανταπόκρισης του διακομιστή HTTP: %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "Σφάλμα σύνδεσης διαμεσολαβητή HTTP %d" -#, fuzzy, c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" msgstr "" "Άρνηση πρόσβασης: ο διαμεσολαβητής HTTP απαγορεύει την σηράγγωση της θύρας %" @@ -10211,7 +10150,7 @@ msgid "Error Reading %s" msgstr "Σφάλμα ανάγνωσης του %s" -#, fuzzy, c-format +#, c-format msgid "" "An error was encountered reading your %s. The file has not been loaded, and " "the old file has been renamed to %s~." @@ -10261,7 +10200,7 @@ msgid "Use this buddy _icon for this account:" msgstr "Χρήση αυτού του _εικονιδίου φίλου για αυτόν το λογαριασμό." -msgid "_Advanced" +msgid "Ad_vanced" msgstr "_Για προχωρημένους" msgid "Use GNOME Proxy Settings" @@ -10324,9 +10263,8 @@ msgid "Create _this new account on the server" msgstr "Δημιουργία αυτού του νέου _λογαριασμού στον εξυπηρετητή" -#, fuzzy -msgid "_Proxy" -msgstr "Διαμεσολαβητής" +msgid "P_roxy" +msgstr "_Διαμεσολαβητής" msgid "Enabled" msgstr "Ενεργοποιήθηκε" @@ -10374,9 +10312,8 @@ msgid "Please update the necessary fields." msgstr "Παρακαλούμε ανανεώστε τα απαραίτητα πεδία." -#, fuzzy msgid "A_ccount" -msgstr "_Λογαριασμός:" +msgstr "_Λογαριασμός" msgid "" "Please enter the appropriate information about the chat you would like to " @@ -10403,16 +10340,14 @@ msgid "I_M" msgstr "_Μήνυμα" -#, fuzzy msgid "_Audio Call" -msgstr "_Προσθήκη συζήτησης" +msgstr "Κλήση _ήχου" msgid "Audio/_Video Call" -msgstr "" - -#, fuzzy +msgstr "Ήχος/_Κλήση βίντεο" + msgid "_Video Call" -msgstr "Βιντεοσυνομιλία" +msgstr "Κλήση _βίντεο" msgid "_Send File..." msgstr "_Αποστολή αρχείου..." @@ -10426,9 +10361,8 @@ msgid "Hide When Offline" msgstr "" -#, fuzzy msgid "Show When Offline" -msgstr "Εμφάνιση μη συνδεδεμένων φίλων" +msgstr "Εμφάνιση και χωρίς σύνδεση" msgid "_Alias..." msgstr "_Γνωστός ως..." @@ -10465,7 +10399,7 @@ msgstr "" msgid "_Edit Settings..." -msgstr "_Επεξεργασία ρυθμίσεων..." +msgstr "_Επεξεργασία ρυ�μίσεων..." msgid "_Collapse" msgstr "_Σύμπτυξη" @@ -10554,9 +10488,8 @@ msgid "/Tools/_Certificates" msgstr "/Εργαλεία/_Πιστοποιητικά" -#, fuzzy msgid "/Tools/Custom Smile_ys" -msgstr "/Εργαλεία/Smile_y" +msgstr "/Εργαλεία/Προσαρμοσμένες _φατσούλες" msgid "/Tools/Plu_gins" msgstr "/Εργαλεία/_Πρόσθετα" @@ -10702,7 +10635,7 @@ msgstr "Επανενεργοποίηση" msgid "SSL FAQs" -msgstr "" +msgstr "Συχνές ερωτήσεις SSL" msgid "Welcome back!" msgstr "Καλώς ήρθατε πίσω!" @@ -10835,92 +10768,79 @@ msgid "Background Color" msgstr "Χρώμα παρασκηνίου" -#, fuzzy msgid "The background color for the buddy list" -msgstr "Αυτή η ομάδα προστέθηκε στη λίστα φίλων σας" - -#, fuzzy +msgstr "Το χρώμα παρασκηνίου της λίστας φίλων" + msgid "Layout" -msgstr "Αποσύνδεση" +msgstr "" msgid "The layout of icons, name, and status of the blist" msgstr "" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "Χρώμα παρασκηνίου" +msgstr "" msgid "The background color of an expanded group" msgstr "" -#, fuzzy msgid "Expanded Text" -msgstr "_Ανάπτυξη" +msgstr "" msgid "The text information for when a group is expanded" msgstr "" -#, fuzzy msgid "Collapsed Background Color" -msgstr "Επιλογή χρώματος παρασκηνίου" +msgstr "" msgid "The background color of a collapsed group" msgstr "" -#, fuzzy msgid "Collapsed Text" -msgstr "_Σύμπτυξη" +msgstr "" msgid "The text information for when a group is collapsed" msgstr "" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "Επιλογή χρώματος παρασκηνίου" +msgstr "Χρώμα παρασκηνίου συζητήσεων/επαφών" msgid "The background color of a contact or chat" msgstr "" -#, fuzzy msgid "Contact Text" -msgstr "Συντόμευση" +msgstr "Κείμενο επαφών" msgid "The text information for when a contact is expanded" msgstr "" -#, fuzzy msgid "On-line Text" -msgstr "Συνδεδεμένος" +msgstr "" msgid "The text information for when a buddy is online" msgstr "" -#, fuzzy msgid "Away Text" -msgstr "Απών" +msgstr "" msgid "The text information for when a buddy is away" msgstr "" -#, fuzzy msgid "Off-line Text" -msgstr "Χωρίς σύνδεση" +msgstr "" msgid "The text information for when a buddy is off-line" msgstr "" -#, fuzzy msgid "Idle Text" -msgstr "Κείμενο διάθεσης" +msgstr "" msgid "The text information for when a buddy is idle" msgstr "" -#, fuzzy msgid "Message Text" -msgstr "Στάλθηκε μήνυμα" +msgstr "Κείμενο μηνύματος" msgid "The text information for when a buddy has an unread message" msgstr "" @@ -10932,15 +10852,14 @@ "The text information for when a chat has an unread message that mentions " "your nick" msgstr "" - -#, fuzzy +"Το κείμενο πληροφορίας για όταν μία συζήτηση έχει ένα μη αναγνωσμένο μήνυμα " +"που αναφέρει το ψυεδώνυμό σας" + msgid "The text information for a buddy's status" -msgstr "Αλλαγή πληροφοριών χρήστη για %s" - -#, fuzzy +msgstr "Το κείμενο πληροφοριών για την κατάσταση ενός φίλου" + msgid "Type the host name for this certificate." -msgstr "" -"Εισάγετε το όνομα του υπολογιστή για τον οποίο είναι αυτό το πιστοποιητικό." +msgstr "Εισάγετε το όνομα του υπολογιστή για αυτό το πιστοποιητικό" #. Widget creation function msgid "SSL Servers" @@ -10989,7 +10908,6 @@ msgid "Get Away Message" msgstr "Λήψη μηνύματος απουσίας" -#, fuzzy msgid "Last Said" msgstr "Τελευταία φράση" @@ -11036,21 +10954,17 @@ msgid "/Conversation/Clea_r Scrollback" msgstr "/Συνομιλία/_Καθαρισμός αναδίφησης" -#, fuzzy msgid "/Conversation/M_edia" -msgstr "/Συνομιλία/Π_ερισσότερα" - -#, fuzzy +msgstr "/Συνομιλία/Πολυ_μέσα" + msgid "/Conversation/Media/_Audio Call" -msgstr "/Συνομιλία/Π_ερισσότερα" - -#, fuzzy +msgstr "/Συνομιλία/Πολυμέσα/_Κλήση ήχου" + msgid "/Conversation/Media/_Video Call" -msgstr "/Συνομιλία/Π_ερισσότερα" - -#, fuzzy +msgstr "/Συνομιλία/Πολυμέσα/Κλήση _βίντεο" + msgid "/Conversation/Media/Audio\\/Video _Call" -msgstr "/Συνομιλία/Εμφάνιση _καταγραφής" +msgstr "/Συνομιλία/Πολυμέσα/Ήχος\\/Κλήση _βίντεο" msgid "/Conversation/Se_nd File..." msgstr "/Συνομιλία/_Αποστολή αρχείου..." @@ -11124,17 +11038,14 @@ msgid "/Conversation/View Log" msgstr "/Συνομιλία/Εμφάνιση καταγραφής" -#, fuzzy msgid "/Conversation/Media/Audio Call" -msgstr "/Συνομιλία/Περισσότερα" - -#, fuzzy +msgstr "/Συνομιλία/Πολυμέσα/Κλήση ήχου" + msgid "/Conversation/Media/Video Call" -msgstr "/Συνομιλία/Εμφάνιση καταγραφής" - -#, fuzzy +msgstr "/Συνομιλία/Πολυμέσα/Κλήση βίντεο" + msgid "/Conversation/Media/Audio\\/Video Call" -msgstr "/Συνομιλία/Περισσότερα" +msgstr "/Συνομιλία/Πολυμέσα/Ήχος\\/Κλήση βίντεο" msgid "/Conversation/Send File..." msgstr "/Συνομιλία/Αποστολή αρχείου..." @@ -11225,7 +11136,7 @@ msgstr "Νέο γεγονός" msgid "clear: Clears all conversation scrollbacks." -msgstr "" +msgstr "clear: Καθαρίζει όλες τις αναδιφήσεις συνομιλιών" msgid "Confirm close" msgstr "Επιβεβαίωση κλεισίματος" @@ -11318,10 +11229,10 @@ #. feel free to not translate this msgid "Ka-Hing Cheung" -msgstr "" +msgstr "Ka-Hing Cheung" msgid "voice and video" -msgstr "" +msgstr "Φωνή και βίντεο" msgid "support" msgstr "υποστήριξη" @@ -11447,9 +11358,8 @@ msgid "Hungarian" msgstr "Ουγγρικά" -#, fuzzy msgid "Armenian" -msgstr "Ρουμάνικα" +msgstr "Αρμένικα" msgid "Indonesian" msgstr "Ινδονησιακά" @@ -11466,9 +11376,8 @@ msgid "Ubuntu Georgian Translators" msgstr "Γεωργιανοί μεταφραστές Ubuntu" -#, fuzzy msgid "Khmer" -msgstr "Άλλο" +msgstr "" msgid "Kannada" msgstr "" @@ -11491,9 +11400,8 @@ msgid "Macedonian" msgstr "Μακεδονικά (Σλαβικά)" -#, fuzzy msgid "Mongolian" -msgstr "Μακεδονικά (Σλαβικά)" +msgstr "Μογγολικά" msgid "Bokmål Norwegian" msgstr "" @@ -11617,21 +11525,26 @@ "FAQ: http://developer.pidgin.im/wiki/FAQ

" msgstr "" +"Συχνές ερωτήσεις: http://developer.pidgin.im/wiki/FAQ

" #, c-format msgid "" "Help via e-mail: support@pidgin.im

" msgstr "" - -#, fuzzy, c-format +"Βοήθεια μέσω ηλ. ταχυδρομίου: support@pidgin.im

" + +#, c-format msgid "" "IRC Channel: #pidgin on irc.freenode.net

" -msgstr "IRC: #pidgin στο irc.freenode.net

" - -#, fuzzy, c-format +msgstr "" +"Κανάλι IRC: #pidgin στο irc.freenode.net

" + +#, c-format msgid "XMPP MUC: devel@conference.pidgin.im

" -msgstr "IRC: #pidgin στο irc.freenode.net

" +msgstr "XMPP MUC: devel@conference.pidgin.im

" msgid "Current Developers" msgstr "Υπεύθυνοι ανάπτυξης" @@ -11643,7 +11556,7 @@ msgstr "Υπεύθυνοι ανάπτυξης που έχουν πλέον αποσυρθεί" msgid "Retired Crazy Patch Writers" -msgstr "" +msgstr "Τρελοί συγγραφείς μπαλωμάτων που έχουν πλέον αποσυρθεί" msgid "Current Translators" msgstr "Τωρινοί μεταφραστές" @@ -11880,9 +11793,8 @@ msgstr "Χρώμα για να ζωγραφιστούν οι υπερσύνδεσμοι." msgid "Hyperlink visited color" -msgstr "" - -#, fuzzy +msgstr "Χρώμα υπερσυνδέσμου που έχει επισκεφτεί" + msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "" "Χρώμα για να ζωγραφιστούν οι υπερσύνδεσμοι αφού τους έχετε επισκεφτεί (ή " @@ -11924,21 +11836,18 @@ msgid "Action Message Name Color for Whispered Message" msgstr "" -#, fuzzy msgid "Color to draw the name of a whispered action message." -msgstr "Χρώμα που θα ζωγραφίζεται το όνομα ενός μηνύματος ενέργειας." +msgstr "" msgid "Whisper Message Name Color" msgstr "" -#, fuzzy msgid "Color to draw the name of a whispered message." -msgstr "Χρώμα που θα ζωγραφίζεται το όνομα ενός μηνύματος ενέργειας." +msgstr "" msgid "Typing notification color" msgstr "Χρώμα ειδοποίησης πληκτρολόγησης" -#, fuzzy msgid "The color to use for the typing notification" msgstr "" "Το χρώμα που θα χρησιμοποιείται για τη γραμματοσειρά ειδοποίησης " @@ -12197,7 +12106,7 @@ msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%s %s. Δοκιμάστε `%s -h' για περισσότερες πληροφορίες.\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12222,14 +12131,16 @@ " -h, --help εμφάνιση αυτής της βοήθειας και έξοδος\n" " -m, --multiple do not ensure single instance\n" " -n, --nologin χωρίς αυτόματη είσοδο\n" -" -l, --login[=ΟΝΟΜΑ] αυτόματη είσοδος (το όρισμα ΟΝΟΜΑ προσδιορίζει\n" -" τους λογαριασμούς που θα χρησιμοποιηθούν, χωρισμένους " -"με κόμμα\n" -"Χωρίς αυτό θα ενεργοποιηθεί μόνο ο πρώτος λογαριασμός)\n" -" --display=DISPLAY Οθόνη X που θα χρησιμοποιηθεί\n" +" -l, --login[=ΟΝΟΜΑ] ενεργοποίηση συγκεκριμένων λογαριασμών (το όρισμα " +"ΟΝΟΜΑ προσδιορίζει\n" +" τους λογαριασμούς που θα χρησιμοποιηθούν, " +"χωρισμένους με κόμματα.\n" +" Χωρίς αυτό θα ενεργοποιηθεί μόνο ο πρώτος " +"λογαριασμός)\n" +" --display=ΟΘΟΝΗ Οθόνη X που θα χρησιμοποιηθεί\n" " -v, --version εμφάνιση τρέχουσας έκδοσης και έξοδος\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12253,10 +12164,12 @@ " -h, --help εμφάνιση αυτής της βοήθειας και έξοδος\n" " -m, --multiple do not ensure single instance\n" " -n, --nologin χωρίς αυτόματη είσοδο\n" -" -l, --login[=ΟΝΟΜΑ] αυτόματη είσοδος (το όρισμα ΟΝΟΜΑ προσδιορίζει\n" +" -l, --login[=ΟΝΟΜΑ] ενεργοποίηση συγκεκριμένων λογαριασμών (το όρισμα " +"ΟΝΟΜΑ προσδιορίζει\n" " τους λογαριασμούς που θα χρησιμοποιηθούν, χωρισμένους " -"με κόμμα)\n" -"Χωρίς αυτό θα ενεργοποιηθεί μόνο ο πρώτος λογαριασμός)\n" +"με κόμματα.\n" +" Χωρίς αυτό θα ενεργοποιηθεί μόνο ο πρώτος " +"λογαριασμός).\n" " -v, --version εμφάνιση τρέχουσας έκδοσης και έξοδος\n" #, c-format @@ -12282,25 +12195,24 @@ #, c-format msgid "Exiting because another libpurple client is already running.\n" -msgstr "" +msgstr "Έξοδος επειδή ήδη τρέχει ένας άλλος πελάτης της libpurple.\n" msgid "/_Media" -msgstr "" +msgstr "/_Πολυμέσα" msgid "/Media/_Hangup" msgstr "" -#, fuzzy msgid "Calling..." -msgstr "Υπολογισμός..." +msgstr "Κλήση..." #, c-format msgid "%s wishes to start an audio/video session with you." -msgstr "" +msgstr "%s επιθυμεί να ξεκινήσει μία συνεδρία ήχου/βίντεο μαζί σας." #, c-format msgid "%s wishes to start a video session with you." -msgstr "" +msgstr "%s επιθυμεί να ξεκινήσει μία συνεδρία βίντεο μαζί σας." #, c-format msgid "%s has %d new message." @@ -12331,9 +12243,8 @@ "Έχει επιλεχθεί η 'με το χέρι' εντολή του περιηγητή, αλλά δεν έχει ορισθεί " "καμία εντολή." -#, fuzzy msgid "No message" -msgstr "Άγνωστο μήνυμα" +msgstr "Χωρίς μήνυμα" msgid "Open All Messages" msgstr "Άνοιγμα όλων των μηνυμάτων" @@ -12344,19 +12255,14 @@ "\n" "%s" -#, fuzzy msgid "New Pounces" -msgstr "Νέα εφόρμηση φίλου" +msgstr "Νέες εφορμήσεις" msgid "Dismiss" msgstr "" -#, fuzzy msgid "You have pounced!" msgstr "" -"Έχετε αλληλογραφία!\n" -"\n" -"%s" msgid "The following plugins will be unloaded." msgstr "Τα ακόλουθα πρόσθετα θα αποφορτωθούν." @@ -12406,7 +12312,6 @@ msgid "Select a file" msgstr "Επιλογή αρχείου" -#, fuzzy msgid "Modify Buddy Pounce" msgstr "Επεξεργασία εφόρμησης φίλου" @@ -12483,57 +12388,55 @@ msgid "Pounce Target" msgstr "Στόχος εφόρμησης" -#, fuzzy, c-format +#, c-format msgid "Started typing" -msgstr "Ξεκινάει να πληκτρολογεί" - -#, fuzzy, c-format +msgstr "Ξεκίνησε να πληκτρολογεί" + +#, c-format msgid "Paused while typing" -msgstr "Κάνει παύση κατά την πληκτρολόγηση" - -#, fuzzy, c-format +msgstr "Έκανε παύση κατά την πληκτρολόγηση" + +#, c-format msgid "Signed on" -msgstr "Συνδέεται" - -#, fuzzy, c-format +msgstr "Συνδέθηκε" + +#, c-format msgid "Returned from being idle" -msgstr "%s δεν είναι πια ανενεργός (%s)" - -#, fuzzy, c-format +msgstr "" + +#, c-format msgid "Returned from being away" msgstr "Επιστρέφει από απών" -#, fuzzy, c-format +#, c-format msgid "Stopped typing" msgstr "Σταμάτησε την πληκτρολόγηση" -#, fuzzy, c-format +#, c-format msgid "Signed off" -msgstr "Αποσυνδέεται" - -#, fuzzy, c-format +msgstr "Αποσυνδέθηκε" + +#, c-format msgid "Became idle" -msgstr "Γίνεται ανενεργός" - -#, fuzzy, c-format +msgstr "Έγινε ανενεργός" + +#, c-format msgid "Went away" -msgstr "Κατά την απουσία" - -#, fuzzy, c-format +msgstr "Έγινε απών" + +#, c-format msgid "Sent a message" -msgstr "Αποστολή μηνύματος" - -#, fuzzy, c-format +msgstr "Έστειλε ένα μήνυμα" + +#, c-format msgid "Unknown.... Please report this!" -msgstr "Άγνωστο γεγονός εφόρμησης. Παρακαλούμε αναφέρετέ το!" - -#, fuzzy +msgstr "Άγνωστο.... Παρακαλούμε αναφέρετέ το!" + msgid "Theme failed to unpack." -msgstr "Το GStreamer απέτυχε να αρχικοποιηθεί." - -#, fuzzy +msgstr "" + msgid "Theme failed to load." -msgstr "Αποτυχία φορτώματος εικόνας" +msgstr "Αποτυχία φορτώματος του θέματος" msgid "Theme failed to copy." msgstr "" @@ -12559,9 +12462,8 @@ msgstr "_Κλείσιμο των συνομιλιών με το Escape" #. Buddy List Themes -#, fuzzy msgid "Buddy List Theme" -msgstr "Λίστα φίλων" +msgstr "Θέμα λίστα φίλων" #. System Tray msgid "System Tray Icon" @@ -12573,9 +12475,8 @@ msgid "On unread messages" msgstr "Όταν υπάρχουν μη αναγνωσμένα μηνύματα" -#, fuzzy msgid "Conversation Window" -msgstr "Παράθυρα άμεσων μηνυμάτων" +msgstr "Παράθυρο συζήτησης" msgid "_Hide new IM conversations:" msgstr "_Απόκρυψη νέων συνομιλιών άμεσων μηνυμάτων:" @@ -12651,7 +12552,7 @@ msgstr "Γραμματοσειρά" msgid "Use document font from _theme" -msgstr "" +msgstr "Χρήση γραμματοσειράς κειμένου από το _θέμα" msgid "Use font from _theme" msgstr "Χρήση γραμματοσειράς _θέματος" @@ -12678,9 +12579,9 @@ msgid "Example: stunserver.org" msgstr "Παράδειγμα: stunserver.org" -#, fuzzy, c-format +#, c-format msgid "Use _automatically detected IP address: %s" -msgstr "_Αυτόματος εντοπισμός διεύθυνσης IP" +msgstr "Χρήση _αυτόματου εντοπισμού διεύθυνσης IP: %s" msgid "Public _IP:" msgstr "Δημόσια _IP:" @@ -13055,12 +12956,12 @@ msgid "Status for %s" msgstr "Κατάσταση %s" -#, fuzzy, c-format +#, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "" -"Υπάρχει ήδη μία προσπαρμοσμένη φατσούλα για την επιλεγμένη συντόμευση. " -"Παρακαλούμε εισάγετε μία διαφορετική συντόμευση." +"Υπάρχει ήδη μία προσπαρμοσμένη φατσούλα για το %s. Παρακαλούμε " +"χρησιμοποιείστε μία διαφορετική συντόμευση." msgid "Custom Smiley" msgstr "Προσαρμοσμένη φατσούλα" @@ -13074,28 +12975,24 @@ msgid "Add Smiley" msgstr "Προσθήκη φατσούλας" -#, fuzzy msgid "_Image:" -msgstr "Ει_κόνα" +msgstr "Ει_κόνα:" #. Shortcut text -#, fuzzy msgid "S_hortcut text:" -msgstr "Συντόμευση" +msgstr "_Κείμενο συντόμευσης:" msgid "Smiley" msgstr "Φατσούλα" -#, fuzzy msgid "Shortcut Text" -msgstr "Συντόμευση" +msgstr "Κείμενο συντόμευσης" msgid "Custom Smiley Manager" msgstr "Διαχειριστής προσαρμοσμένων φατσουλών" -#, fuzzy msgid "Select Buddy Icon" -msgstr "Επιλογή φίλου" +msgstr "Επιλογή εικονιδίου φίλου" msgid "Click to change your buddyicon for this account." msgstr "Κάντε κλικ για να αλλάξετε την εικόνα φίλου για αυτό το λογαριασμό." @@ -13182,7 +13079,6 @@ msgid "Cannot send launcher" msgstr "Δεν είναι δυνατή η αποστολή συντόμευσης" -#, fuzzy msgid "" "You dragged a desktop launcher. Most likely you wanted to send the target of " "this launcher instead of this launcher itself." @@ -13223,9 +13119,8 @@ "Αποτυχία κατά το φόρτωμα της εικόνας '%s': άγνωστη αιτία, πιθανώς ένα " "κατεστραμμένο αρχείο εικόνας" -#, fuzzy msgid "_Open Link" -msgstr "_Άνοιγμα συνδέσμου σε:" +msgstr "_Άνοιγμα συνδέσμου" msgid "_Copy Link Location" msgstr "_Αντιγραφή τοποθεσίας συνδέσμου" @@ -13233,9 +13128,21 @@ msgid "_Copy Email Address" msgstr "_Αντιγραφή διεύθυνσης email" +msgid "_Open File" +msgstr "_Άνοιγμα αρχείου" + +msgid "Open _Containing Directory" +msgstr "Άνοιγμα _περιεχόμενου καταλόγου" + msgid "Save File" msgstr "Αποθήκευση αρχείου" +msgid "_Play Sound" +msgstr "Αναπαραγωγή _ήχου" + +msgid "_Save File" +msgstr "_Αποθήκευση αρχείου" + msgid "Select color" msgstr "Επιλογή χρώματος" @@ -13324,78 +13231,63 @@ msgstr "" "Εμφανίζει στατιστικές πληροφορίες σχετικά με τη διαθεσιμότητα των φίλων σας" -#, fuzzy msgid "Server name request" -msgstr "Διεύθυνση εξυπηρετητή" - -#, fuzzy +msgstr "Αίτημα ονόματος εξυπηρετητή" + msgid "Enter an XMPP Server" -msgstr "Είσοδος σε εξυπηρετητή συζητήσεων" - -#, fuzzy +msgstr "Εισάγετε έναν εξυπηρετητή XMPP" + msgid "Select an XMPP server to query" -msgstr "Επιλέξτε τον εξυπηρετητή συνομιλίας που θέλετε να ζητήσετε πληροφορίες" - -#, fuzzy +msgstr "Επιλέξτε έναν εξυπηρετητή XMPP για ερώτημα" + msgid "Find Services" -msgstr "Υπηρεσίες με σύνδεση" - -#, fuzzy +msgstr "Εύρεση υπηρεσιών" + msgid "Add to Buddy List" -msgstr "Αποστολή λίστας φίλων" - -#, fuzzy +msgstr "Προσθήκη στη λίστα φίλων" + msgid "Gateway" -msgstr "Γίνεται απών" - -#, fuzzy +msgstr "" + msgid "Directory" -msgstr "Κατάλογος καταγραφών" - -#, fuzzy +msgstr "Κατάλογος" + msgid "PubSub Collection" -msgstr "Επιλογή ήχου" +msgstr "" msgid "PubSub Leaf" msgstr "" -#, fuzzy msgid "" "\n" "Description: " -msgstr "Περιγραφή" +msgstr "" +"\n" +"Περιγραφή: " #. Create the window. -#, fuzzy msgid "Service Discovery" -msgstr "Κατάλογος αναζήτησης" - -#, fuzzy +msgstr "Ανακάλυψη υπηρεσιών" + msgid "_Browse" -msgstr "_Περιηγητής:" - -#, fuzzy +msgstr "_Περιήγηση" + msgid "Server does not exist" -msgstr "Ο χρήστης δεν υπάρχει" - -#, fuzzy +msgstr "Ο εξυπηρετητής δεν υπάρχει" + msgid "Server does not support service discovery" -msgstr "Ο εξυπηρετητής δε χρησιμοποιεί καμία υποστηριζόμενη μέθοδο έγκρισης" - -#, fuzzy +msgstr "Ο εξυπηρετητής δεν επιτρέπη την ανακάλυψη υπηρεσιών" + msgid "XMPP Service Discovery" -msgstr "υπεύθυνος ανάπτυξης XMPP" +msgstr "Ανακάλυψη υπηρεσιών XMPP" msgid "Allows browsing and registering services." -msgstr "" - -#, fuzzy +msgstr "Επιτρέπει την περιήγηση και την εγγραφή σε υπηρεσίες." + msgid "" "This plugin is useful for registering with legacy transports or other XMPP " "services." msgstr "" -"Αυτό το πρόσθετο είναι χρήσιμο για την αποσφαλμάτωση εξυπηρετητών και " -"πελατών XMPP." msgid "Buddy is idle" msgstr "Ο φίλος είναι ανενεργός" @@ -13800,7 +13692,6 @@ msgstr "Πρόσθετο μουσικών μηνυμάτων για συνεργαζόμενη σύνθεση." #. * 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." @@ -13839,7 +13730,7 @@ msgstr "Καθορισμός της υπόδειξης \"_URGENT\" του διαχειριστή παραθύρων" msgid "_Flash window" -msgstr "" +msgstr "_Αναβόσβημα παραθύρου" #. Raise window method button msgid "R_aise conversation window" @@ -13847,7 +13738,7 @@ #. Present conversation method button msgid "_Present conversation window" -msgstr "" +msgstr "_Παράθυρο τρέχουσας συνομιλίας" #. ---------- "Notification Removals" ---------- msgid "Notification Removal" @@ -13926,7 +13817,6 @@ msgid "Highlighted Message Name Color" msgstr "Χρώμα ονομάτων τονισμένων μηνυμάτων" -#, fuzzy msgid "Typing Notification Color" msgstr "Χρώμα ειδοποίησης πληκτρολόγησης" @@ -13959,23 +13849,20 @@ msgid "GTK+ Text Shortcut Theme" msgstr "Θέμα κειμένου συντόμευσης GTK+" -#, fuzzy msgid "Disable Typing Notification Text" -msgstr "Ενεργοποίηση ειδοποίησης πληκτρολόγησης" - -#, fuzzy +msgstr "Απενεργοποίηση κειμένου ειδοποίησης πληκτρολόγησης" + msgid "GTK+ Theme Control Settings" -msgstr "Έλεγχος θεμάτων Pidgin GTK+" - -#, fuzzy +msgstr "Ρυθμίσεις ελέγχου θεμάτων GTK+" + msgid "Colors" -msgstr "Κλείσιμο" +msgstr "Χρώματα" msgid "Fonts" msgstr "Γραμματοσειρές" msgid "Miscellaneous" -msgstr "" +msgstr "Διάφορα" msgid "Gtkrc File Tools" msgstr "Εργαλεία αρχείων Gtkrc" @@ -14062,13 +13949,12 @@ msgstr "Κουμπί αποστολής παραθύρου συνομιλίας." #. *< summary -#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for use when no physical keyboard is present." msgstr "" -"Προσθέτει ένα κουμπί αποστολής στο πεδίο εισαγωγής στο παράθυρο συνομιλίας. " -"Προορίζεται για περιπτώσης που δεν υπάρχει πραγματικό πληκτρολόγιο." +"Προσθέτει ένα κουμπί Αποστολή στο πεδίο εισαγωγής στο παράθυρο συνομιλίας. " +"Προορίζεται για περιπτώσεις που δεν υπάρχει πραγματικό πληκτρολόγιο." msgid "Duplicate Correction" msgstr "Διόρθωση επανάληψης" @@ -14123,94 +14009,78 @@ "Αντικαθιστά το κείμενο στα εξερχόμενα μηνύματα σύμφωνα με ορισμένους από τον " "χρήστη κανόνες." -#, fuzzy msgid "Just logged in" -msgstr "Αποσυνδεδεμένος" - -#, fuzzy +msgstr "Μόλις συνδέθηκε" + msgid "Just logged out" -msgstr "Αποσυνδεδεμένος" +msgstr "Μόλις αποσυνδέθηκε" msgid "" "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"Εικονίδιο για επαφή/\n" +"Εικονίδιο για άγνωστο άτομο" + msgid "Icon for Chat" -msgstr "Συμμετοχή σε συζήτηση" - -#, fuzzy +msgstr "Εικονίδιο για συζήτηση" + msgid "Ignored" -msgstr "Παράβλεψη" - -#, fuzzy +msgstr "Παραβλέφθηκε" + msgid "Founder" -msgstr "Περισσότερο θορυβώδης" - -#, fuzzy +msgstr "Ιδρυτής" + msgid "Operator" -msgstr "Opera" +msgstr "" msgid "Half Operator" msgstr "" -#, fuzzy msgid "Authorization dialog" -msgstr "Δόθηκε έγκριση" - -#, fuzzy +msgstr "Διάλογος έγκρισης" + msgid "Error dialog" -msgstr "Σφάλμα " - -#, fuzzy +msgstr "Διάλογος σφάλματος" + msgid "Information dialog" -msgstr "Πληροφορίες" +msgstr "Διάλογος πληροφοριών" msgid "Mail dialog" -msgstr "" - -#, fuzzy +msgstr "Διάλογος αλληλογραφίας" + msgid "Question dialog" -msgstr "Διάλογος αιτήματος" - -#, fuzzy +msgstr "Διάλογος ερώτησης" + msgid "Warning dialog" -msgstr "Επίπεδο προειδοποίησης" +msgstr "Διάλογος προειδοποίησης" msgid "What kind of dialog is this?" -msgstr "" - -#, fuzzy +msgstr "Τι είδος διαλόγου είναι αυτό;" + msgid "Status Icons" -msgstr "Κατάσταση %s" - -#, fuzzy +msgstr "Εικονίδια κατάστασης" + msgid "Chatroom Emblems" -msgstr "Εντοπιότητα δωματίου συζήτησης" - -#, fuzzy +msgstr "Εμβλήματα δωματίων συζητήσεων" + msgid "Dialog Icons" -msgstr "Αλλαγή εικόνας" - -#, fuzzy +msgstr "Εικονίδια διαλόγων" + msgid "Pidgin Icon Theme Editor" -msgstr "Έλεγχος θεμάτων Pidgin GTK+" - -#, fuzzy +msgstr "Έλεγχος θεμάτων εικονιδίων Pidgin" + msgid "Contact" -msgstr "Πληροφορίες επικοινωνίας" - -#, fuzzy +msgstr "Επικοινωνία" + msgid "Pidgin Buddylist Theme Editor" -msgstr "Λίστα φίλων" - -#, fuzzy +msgstr "Επεξεργαστής θεμάτων λίστα φίλων Pidgin" + msgid "Edit Buddylist Theme" -msgstr "Λίστα φίλων" +msgstr "Επεξεργασία θεμάτων λίστας φίλων" msgid "Edit Icon Theme" -msgstr "" +msgstr "Επεξεργασία θέματος εικονιδίων" #. *< type #. *< ui_requirement @@ -14219,16 +14089,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "Έλεγχος θεμάτων Pidgin GTK+" +msgstr "Επεξεργαστής θεμάτων Pidgin" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "Έλεγχος θεμάτων Pidgin GTK+" +msgstr "Επεξεργαστής θεμάτων Pidgin" #. *< type #. *< ui_requirement @@ -14397,12 +14265,11 @@ msgid "Options specific to Pidgin for Windows." msgstr "Επιλογές ειδικά για το Pidgin για Windows." -#, fuzzy msgid "" "Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr "" -"Παρέχει επιλογές ειδικά για το Windows Pidgin, όπως είναι η προσάρτηση της " -"λίστας φίλων." +"Παρέχει επιλογές ειδικά για το Pidgin για Windows, όπως είναι η προσάρτηση " +"της λίστας φίλων." msgid "Logged out." msgstr "Αποσυνδέθηκε." @@ -14443,6 +14310,10 @@ "Αυτό το πρόσθετο είναι χρήσιμο για την αποσφαλμάτωση εξυπηρετητών και " "πελατών XMPP." +#, fuzzy +#~ msgid "_Proxy" +#~ msgstr "Διαμεσολαβητής" + #~ msgid "Cannot open socket" #~ msgstr "Δεν είναι δυνατό το άνοιγμα του υποδοχέα" diff -r b4daae0798e3 -r e1cd44c7c7af po/fi.po --- a/po/fi.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/fi.po Sat Jul 25 04:54:36 2009 +0000 @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2009-07-05 01:14+0300\n" +"POT-Creation-Date: 2009-07-16 21:37+0300\n" +"PO-Revision-Date: 2009-07-16 21:36+0300\n" "Last-Translator: Timo Jyrinki \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -1776,7 +1776,6 @@ msgstr "+++ %s kirjautui ulos" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "Tuntematon virhe" @@ -1964,6 +1963,10 @@ msgstr "Aloitetaan tiedoston %s siirto käyttäjältä %s" #, c-format +msgid "Transfer of file %s complete" +msgstr "Tiedoston %s siirto valmis" + +#, c-format msgid "Transfer of file %s complete" msgstr "Tiedoston %s siirto valmis" @@ -2893,18 +2896,15 @@ "ActiveTCL-asennusta ei havaittu. Jos haluat käyttää TCL-liitännäisiä, asenna " "ActiveTCL osoitteesta http://www.activestate.com\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"Apple Bonjour for Windows -työkalupakettia ei löytynyt, tarkista usein " -"kysytyt kysymykset osoitteessa http://developer.pidgin.im/wiki/Using%" -"20Pidgin#CanIusePidginforBonjourLink-LocalMessaging ." - -#, fuzzy +"Applen ”Bonjour for Windows” -työkalupakettia ei löytynyt, katso lisätietoja " +"osoitteesta http://d.pidgin.im/BonjourWindows." + msgid "Unable to listen for incoming IM connections" -msgstr "Sisääntulevia pikaviestintäyhteyksiä ei voi kuunnella\n" +msgstr "Sisääntulevia pikaviestintäyhteyksiä ei voi kuunnella" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2956,21 +2956,17 @@ msgid "Unable to send the message, the conversation couldn't be started." msgstr "Viestiä ei voi lähettää, keskustelua ei voi aloittaa." -#, fuzzy, c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"Pistokkeen luonti epäonnistui:\n" -"%s" - -#, fuzzy, c-format +msgstr "Pistokkeen luonti epäonnistui: %s" + +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "Pistoketta ei voi liittää porttiin" - -#, fuzzy, c-format +msgstr "Pistoketta ei voi liittää porttiin: %s" + +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"Pistokkeen luonti epäonnistui:\n" -"%s" +msgstr "Pistokkeen kuuntelu epäonnistui: %s" msgid "Error communicating with local mDNSResponder." msgstr "Virhe viestittäessä paikallisen mDNSResponderin kanssa." @@ -3018,17 +3014,15 @@ msgid "Load buddylist from file..." msgstr "Tuo tuttavat tiedostosta..." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "Täytä rekisteröitymiskentät." - -#, fuzzy +msgstr "Täytä kaikki rekisteröitymiskentät" + msgid "Passwords do not match" -msgstr "Salasanat eivät täsmää." - -#, fuzzy +msgstr "Salasanat eivät täsmää" + msgid "Unable to register new account. An unknown error occurred." -msgstr "Uuden käyttäjätilin rekisteröinti epäonnistui virheen takia.\n" +msgstr "" +"Uuden käyttäjätilin rekisteröinti epäonnistui tuntemattoman virheen takia." msgid "New Gadu-Gadu Account Registered" msgstr "Uusi Gadu-Gadu-käyttäjätili rekisteröity" @@ -3043,11 +3037,10 @@ msgstr "Salasana (uudelleen)" msgid "Enter captcha text" -msgstr "" - -#, fuzzy +msgstr "Syötä captcha-teksti" + msgid "Captcha" -msgstr "Captcha-kuva" +msgstr "Captcha" msgid "Register New Gadu-Gadu Account" msgstr "Rekisteröi uusi Gadu-Gadu-käyttäjätili" @@ -3186,9 +3179,9 @@ msgid "Chat _name:" msgstr "Keskustelunimi:" -#, fuzzy, c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Ei kyetty selvittämään palvelimen nimeä." +msgstr "Ei kyetty selvittämään palvelimen nimeä ”%s”: %s" #. 1. connect to server #. connect to the server @@ -3201,9 +3194,8 @@ msgid "This chat name is already in use" msgstr "Tämä keskustelunimi on jo käytössä" -#, fuzzy msgid "Not connected to the server" -msgstr "Ei yhdistettynä palvelimeen." +msgstr "Ei yhdistettynä palvelimeen" msgid "Find buddies..." msgstr "Etsi tuttavia..." @@ -3261,7 +3253,6 @@ msgid "File Transfer Failed" msgstr "Tiedostonsiirto epäonnistui" -#, fuzzy msgid "Unable to open a listening port." msgstr "Kuuntelevaa porttia ei voi avata." @@ -3285,11 +3276,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"Yhteys palvelimeen katkesi:\n" -"%s" +msgstr "Yhteys palvelimeen katkesi: %s" msgid "View MOTD" msgstr "Näytä MOTD" @@ -3310,13 +3299,13 @@ msgstr "Yhteyden muodostaminen epäonnistui" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "Kohteeseen %s ei kyetty muodostamaan yhteyttä" - -#, fuzzy, c-format +msgstr "Ei voi yhdistää: %s" + +#, c-format msgid "Server closed the connection" -msgstr "Palvelin on katkaissut yhteyden." +msgstr "Palvelin on katkaissut yhteyden" msgid "Users" msgstr "Käyttäjät" @@ -3743,11 +3732,9 @@ msgid "execute" msgstr "suorita" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." -msgstr "Palvelin vaatii TSL/SSL-tuen kirjautumiseen. TLS/SSL-tukea ei löydy." - -#, fuzzy +msgstr "Palvelin vaatii TSL/SSL-tuen, mutta TLS/SSL-tukea ei löydy." + msgid "You require encryption, but no TLS/SSL support was found." msgstr "Salausta vaadittu, mutta TLS/SSL-tukea ei löydy." @@ -3766,13 +3753,11 @@ msgid "Plaintext Authentication" msgstr "Tekstipohjainen tunnistus" -#, fuzzy msgid "SASL authentication failed" -msgstr "Todennus epäonnistui" - -#, fuzzy +msgstr "SASL-todennus epäonnistui" + msgid "Invalid response from server" -msgstr "Kelvoton vastaus palvelimelta." +msgstr "Kelvoton vastaus palvelimelta" msgid "Server does not use any supported authentication method" msgstr "Palvelin ei käytä mitään tuetuista tunnistautumismenetelmistä" @@ -3783,9 +3768,9 @@ msgid "Invalid challenge from server" msgstr "Virheellinen tunnistushaaste palvelimelta" -#, fuzzy, c-format +#, c-format msgid "SASL error: %s" -msgstr "SASL-virhe" +msgstr "SASL-virhe: %s" msgid "The BOSH connection manager terminated your session." msgstr "BOSH-yhteyshallinta lopetti istunnon." @@ -3799,9 +3784,9 @@ msgid "Unable to establish a connection with the server" msgstr "Yhteyttä palvelimeen ei voi muodostaa" -#, fuzzy, c-format +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "Yhteyttä palvelimeen ei voi muodostaa" +msgstr "Yhteyttä palvelimeen ei voi muodostaa: %s" msgid "Unable to establish SSL connection" msgstr "SSL-yhteyden muodostaminen ei onnistu" @@ -3885,7 +3870,6 @@ msgid "%s ago" msgstr "%s sitten" -#, fuzzy msgid "Logged Off" msgstr "Kirjautunut ulos" @@ -4064,17 +4048,15 @@ msgid "Roles:" msgstr "Roolit:" -#, fuzzy msgid "Ping timed out" msgstr "Pingin aikakatkaisu" -#, fuzzy msgid "" "Unable to find alternative XMPP connection methods after failing to connect " "directly." msgstr "" "Vaihtoehtoisia XMPP-yhteystapoja ei löytynyt suoran yhdistämisen " -"epäonnistumisen jälkeen.\n" +"epäonnistumisen jälkeen." msgid "Invalid XMPP ID" msgstr "Epäkelpo XMPP-ID" @@ -4654,17 +4636,16 @@ msgid "_Accept Defaults" msgstr "_Hyväksy oletusasetukset" -#, fuzzy msgid "No reason" msgstr "Syytä ei annettu" -#, fuzzy, c-format +#, c-format msgid "You have been kicked: (%s)" -msgstr "%s on poistanut sinut kanavalta: (%s)" - -#, fuzzy, c-format +msgstr "Sinut on potkaistu kanavalta: (%s)" + +#, c-format msgid "Kicked (%s)" -msgstr "%s potkaisi (%s)" +msgstr "Potkaisi (%s)" msgid "An error occurred on the in-band bytestream transfer\n" msgstr "Kaistansisäisessä tavuvirtasiirrossa tapahtui virhe\n" @@ -5000,6 +4981,26 @@ msgstr "Pikaviestittömät yhteystiedot" #, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" +"%s lähetti animoidun hymiön. Napsauta tästä " +"toistaaksesi sen" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "%s lähetti animoidun hymiön, mutta sitä ei voi tallentaa" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" +"%s lähetti äänipätkän. Napsauta tässä toistaaksesi sen" + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "%s on lähettänyt äänipätkän, mutta sitä ei voi tallentaa" + +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "%s on lähettänyt puhekeskustelukutsun, mitä ei vielä tueta." @@ -5155,6 +5156,29 @@ msgid "SSL support is needed for MSN. Please install a supported SSL library." msgstr "MSN vaatii SSL-tuen. Asenna tuettu SSL-kirjasto." +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Tuttavaa %s ei voi lisätä koska käyttäjänimi on virheellinen. Käyttäjänimen " +"tulee olla oikea sähköpostiosoite." + +msgid "Unable to Add" +msgstr "Lisääminen epäonnistui" + +msgid "Authorization Request Message:" +msgstr "Valtuutuksen pyyntöviesti:" + +msgid "Please authorize me!" +msgstr "Voisitko valtuuttaa minut?" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "_OK" + msgid "Error retrieving profile" msgstr "Virhe haettaessa profiilia" @@ -5353,6 +5377,7 @@ msgid "Unable to add user" msgstr "Käyttäjää ei voi lisätä" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "Tuntematon virhe (%d)" @@ -5421,26 +5446,22 @@ "Yhteysvirhe palvelimelta %s:\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" -msgstr "Palvelin ei tue yhteyskäytäntöä." - -#, fuzzy +msgstr "Palvelin ei tue tämän ohjelman yhteyskäytäntöä." + msgid "Error parsing HTTP" -msgstr "Virhe jäsennettäessä HTTP:tä." - -#, fuzzy +msgstr "Virhe jäsennettäessä HTTP:tä" + msgid "You have signed on from another location" -msgstr "Olet kirjautunut sisään toisesta paikasta." +msgstr "Olet kirjautunut sisään toisesta paikasta" msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" "MSN-palvelimet ovat väliaikaisesti tavoittamattomissa. Odota ja yritä " "uudelleen." -#, fuzzy msgid "The MSN servers are going down temporarily" -msgstr "MSN-palvelimet ajetaan alas väliaikaisesti." +msgstr "MSN-palvelimet ajetaan alas väliaikaisesti" #, c-format msgid "Unable to authenticate: %s" @@ -5767,15 +5788,14 @@ msgid "Client Version" msgstr "Asiakasohjelman versio" -#, fuzzy msgid "" "An error occurred while trying to set the username. Please try again, or " "visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " "to set your username." msgstr "" -"Mene osoitteeseen http://editprofile.myspace.com/index.cfm?" -"fuseaction=profile.username ja valitse käyttäjänimesi. Kirjaudu sitten " -"uudestaan." +"Virhe asetettaessa käyttäjänimeä. Yritä uudelleen tai mene osoitteeseen " +"http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " +"valitaksesi käyttäjänimen." msgid "MySpaceIM - Username Available" msgstr "MySpaceIM - Käyttäjänimi saatavilla" @@ -6035,9 +6055,9 @@ msgid "Unknown error: 0x%X" msgstr "Tuntematon virhe: 0x%X" -#, fuzzy, c-format +#, c-format msgid "Unable to login: %s" -msgstr "Ei voi kirjautua" +msgstr "Kirjautuminen ei onnistu: %s" #, c-format msgid "Unable to send message. Could not get details for user (%s)." @@ -6214,9 +6234,8 @@ msgid "Error requesting " msgstr "Virhe pyydettäessä " -#, fuzzy msgid "AOL does not allow your screen name to authenticate here" -msgstr "AOL ei salli näyttönimen todentamista tämän sivuston kautta." +msgstr "AOL ei salli näyttönimen todentamista tätä kautta" msgid "Could not join chat room" msgstr "Keskusteluhuoneeseen ei voi liittyä" @@ -6224,9 +6243,8 @@ msgid "Invalid chat room name" msgstr "Epäkelpo keskusteluhuoneen nimi" -#, fuzzy msgid "Received invalid data on connection with server" -msgstr "Palvelimeen yhdistettäessä vastaanotettiin virheellisiä tietoja." +msgstr "Palvelimeen yhdistettäessä vastaanotettiin virheellisiä tietoja" #. *< type #. *< ui_requirement @@ -6273,9 +6291,8 @@ msgid "Received invalid data on connection with remote user." msgstr "Vastaanotettiin virheellisiä tietoja luotaessa yhteyttä käyttäjään." -#, fuzzy msgid "Unable to establish a connection with the remote user." -msgstr "Yhteyttä käyttäjän kanssa ei voi muodostaa." +msgstr "Yhteyttä etäkäyttäjän kanssa ei voi muodostaa." msgid "Direct IM established" msgstr "Suora pikaviestiyhteys muodostettu" @@ -6476,15 +6493,13 @@ msgid "Buddy Comment" msgstr "Tuttavakommentti" -#, fuzzy, c-format +#, c-format msgid "Unable to connect to authentication server: %s" -msgstr "" -"Ei saatu yhteyttä todentamispalvelimeen:\n" -"%s" - -#, fuzzy, c-format +msgstr "Ei saatu yhteyttä todentamispalvelimeen: %s" + +#, c-format msgid "Unable to connect to BOS server: %s" -msgstr "Palvelimeen ei kyetty muodostamaan yhteyttä." +msgstr "BOS-palvelimeen ei kyetty muodostamaan yhteyttä: %s" msgid "Username sent" msgstr "Käyttäjänimi lähetetty" @@ -6496,16 +6511,16 @@ msgid "Finalizing connection" msgstr "Viimeistellään yhteyttä" -#, fuzzy, c-format +#, c-format msgid "" "Unable to sign on as %s because the username is invalid. Usernames must be " "a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"Kirjautuminen epäonnistui: käyttäjänä %s ei voi kirjautua koska käyttäjänimi " -"on virheellinen. Käyttäjänimen tulee olla oikea sähköpostiosoite, tai alkaa " -"kirjaimella ja sisältää vain kirjaimia, numeroita ja välilyöntejä, tai " -"sisältää vain numeroita." +"Kirjautuminen epäonnistui käyttäjänä %s, koska käyttäjänimi on virheellinen. " +"Käyttäjänimen tulee olla oikea sähköpostiosoite, tai alkaa kirjaimella ja " +"sisältää vain kirjaimia, numeroita ja välilyöntejä, tai sisältää vain " +"numeroita." #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." @@ -6528,14 +6543,14 @@ msgstr "Käyttäjänimeä ei ole" #. Suspended account -#, fuzzy msgid "Your account is currently suspended" -msgstr "Käyttäjätilisi palvelu on parhaillaan keskeytetty." +msgstr "Käyttäjätilisi palvelu on parhaillaan keskeytetty" #. service temporarily unavailable msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "AOL-pikaviestipalvelu ei tilapäisesti ole käytössä." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "Asiakasohjelmasi versio on liian vanha. Päivitä osoitteessa %s" @@ -6548,9 +6563,8 @@ "Olet ottanut ja katkaissut yhteyden liian tiheästi. Odota jonkin aikaa ja " "yritä uudelleen. Jos jatkat yrittämistä, joudut odottamaan vielä pidempään." -#, fuzzy msgid "The SecurID key entered is invalid" -msgstr "Syötetty SecurID-avain on virheellinen." +msgstr "Syötetty SecurID-avain on virheellinen" msgid "Enter SecurID" msgstr "Syötä SecurID" @@ -6558,12 +6572,6 @@ msgid "Enter the 6 digit number from the digital display." msgstr "Syötä 6 numeroinen luku digitaaliselta näytöltä." -#. * -#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. -#. -msgid "_OK" -msgstr "_OK" - msgid "Password sent" msgstr "Salasana lähetetty" @@ -6573,12 +6581,6 @@ msgid "Please authorize me so I can add you to my buddy list." msgstr "Valtuuttaisitko minut, jotta voin lisätä sinut tuttaviini?" -msgid "Authorization Request Message:" -msgstr "Valtuutuksen pyyntöviesti:" - -msgid "Please authorize me!" -msgstr "Voisitko valtuuttaa minut?" - msgid "No reason given." msgstr "Syytä ei annettu." @@ -6900,7 +6902,7 @@ msgid "Away message too long." msgstr "Poissaoloviesti on liian pitkä." -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " "be a valid email address, or start with a letter and contain only letters, " @@ -6910,9 +6912,6 @@ "tulee olla oikea sähköpostiosoite, tai alkaa kirjaimella ja sisältää vain " "kirjaimia, numeroita ja välilyöntejä, tai sisältää vain numeroita." -msgid "Unable to Add" -msgstr "Lisääminen epäonnistui" - msgid "Unable to Retrieve Buddy List" msgstr "Tuttavien noutaminen ei onnistunut" @@ -6927,18 +6926,18 @@ msgid "Orphans" msgstr "Orvot" -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because you have too many buddies in your buddy " "list. Please remove one and try again." msgstr "" -"Tuttavaa %s ei voi lisätä koska tuttaviasi on liian monta. Ole hyvä ja " -"poista joku ja yritä uudelleen." +"Tuttavaa %s ei voi lisätä koska tuttavia on liian monta. Ole hyvä ja poista " +"joku ja yritä uudelleen." msgid "(no name)" msgstr "(nimetön)" -#, fuzzy, c-format +#, c-format msgid "Unable to add the buddy %s for an unknown reason." msgstr "Tuttavaa %s ei voi lisätä tuntemattomasta syystä." @@ -7710,7 +7709,6 @@ msgid "Update interval (seconds)" msgstr "Päivitysten aikaväli (sekunneissa)" -#, fuzzy msgid "Unable to decrypt server reply" msgstr "Palvelinvastauksen salausta ei voi purkaa" @@ -7778,9 +7776,8 @@ msgid "Requesting token" msgstr "Pyydetään polettia" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "Ei kyetty selvittämään palvelimen nimeä." +msgstr "Ei kyetty selvittämään palvelimen nimeä" msgid "Invalid server or port" msgstr "Epäkelpo palvelin tai portti" @@ -7833,7 +7830,6 @@ msgid "QQ Qun Command" msgstr "QQ-Qun-komento" -#, fuzzy msgid "Unable to decrypt login reply" msgstr "Kirjautumisvastauksen salausta ei voi purkaa" @@ -8814,7 +8810,6 @@ msgid "Disconnected by server" msgstr "Palvelin katkaisi yhteyden" -#, fuzzy msgid "Error connecting to SILC Server" msgstr "Virhe luotaessa yhteyttä SILC-palvelimelle" @@ -8830,7 +8825,6 @@ msgid "Performing key exchange" msgstr "Suoritetaan avaintenvaihto" -#, fuzzy msgid "Unable to load SILC key pair" msgstr "SILC-avainparia ei voi ladata" @@ -8838,14 +8832,12 @@ msgid "Connecting to SILC Server" msgstr "Yhdistetään SILC-palvelimelle" -#, fuzzy msgid "Unable to not load SILC key pair" -msgstr "SILC-avainparia ei voi ladata" +msgstr "SILC-avainparin lataamatta jättäminen ei onnistu" msgid "Out of memory" msgstr "Muisti loppu" -#, fuzzy msgid "Unable to initialize SILC protocol" msgstr "SILC-yhteyskäytäntöä ei voi alustaa" @@ -9138,9 +9130,8 @@ msgid "Creating SILC key pair..." msgstr "Luodaan SILC-avainpari..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "SILC-avainparia ei voi luoda\n" +msgstr "SILC-avainparia ei voi luoda" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9279,27 +9270,24 @@ msgid "Failure: Authentication failed" msgstr "Virhe: Todennus epäonnistui" -#, fuzzy msgid "Unable to initialize SILC Client connection" msgstr "SILC-asiakasyhteyttä ei voi alustaa" msgid "John Noname" msgstr "Pertti Perusnimi" -#, fuzzy, c-format +#, c-format msgid "Unable to load SILC key pair: %s" msgstr "SILC-avainparia ei voi ladata: %s" msgid "Unable to create connection" msgstr "Yhteyden luominen epäonnistui" -#, fuzzy msgid "Unknown server response" -msgstr "Tuntematon palvelinvastaus." - -#, fuzzy +msgstr "Tuntematon palvelinvastaus" + msgid "Unable to create listen socket" -msgstr "Pistokkeen luonti epäonnistui" +msgstr "Kuuntelupistokkeen luonti epäonnistui" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP-käyttäjänimissä ei tule olla välilyöntejä tai @-merkkejä" @@ -9362,9 +9350,8 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" -msgstr "Yahoo-yhteyskäytäntöliitännäinen" +msgstr "Yahoo!-yhteyskäytäntöliitännäinen" msgid "Pager server" msgstr "Hakulaitepalvelin" @@ -9393,9 +9380,8 @@ msgid "Yahoo Chat port" msgstr "Yahoo-ryhmäkeskustelupalvelimen portti" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "Yahoo ID..." +msgstr "Yahoo JAPAN ID..." #. *< type #. *< ui_requirement @@ -9407,9 +9393,8 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Yahoo-yhteyskäytäntöliitännäinen" +msgstr "Yahoo! JAPAN -yhteyskäytäntöliitännäinen" msgid "Your SMS was not delivered" msgstr "Tekstiviestiä (SMS) ei välitetty" @@ -9442,22 +9427,20 @@ msgstr "Vastaanotettiin virheellisiä tietoja" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." msgstr "" -"Käyttäjätili lukittu: liian monta epäonnistuttu kirjautumisyritystä.\n" -"Yahoo!-WWW-sivustolle kirjautuminen saatta korjata tämän." +"Käyttäjätili lukittu: liian monta epäonnistuttu kirjautumisyritystä. Yahoo!-" +"WWW-sivustolle kirjautuminen saatta korjata tämän." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." msgstr "" -"Käyttäjätili lukittu: tuntematon syy.\n" -"Yahoo!-WWW-sivustolle kirjautuminen saatta korjata tämän." +"Käyttäjätili lukittu: tuntematon syy. Yahoo!-WWW-sivustolle kirjautuminen " +"saatta korjata tämän." #. username or password missing msgid "Username or password missing" @@ -9497,12 +9480,11 @@ "Tuntematon viesti numero %d. Kirjautumalla Yahoo! verkkosivuille saattaa " "korjata tämän." -#, fuzzy, c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." msgstr "" "Tuttavaa %s ei voi lisätä ryhmään %s palvelimen tuttavissa, tilillä %s." -#, fuzzy msgid "Unable to add buddy to server list" msgstr "Tuttavaa ei voi lisätä palvelimen tuttaviin" @@ -9510,19 +9492,16 @@ msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ Ääniäinen %s/%s/%s.swf ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" -msgstr "Odottamaton HTTP-vastaus palvelimelta." - -#, fuzzy, c-format +msgstr "Odottamaton HTTP-vastaus palvelimelta" + +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"Yhteys palvelimeen %s katkesi:\n" -"%s" - -#, fuzzy, c-format +msgstr "Yhteys palvelimeen %s katkesi: %s" + +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "Yhteyttä palvelimeen ei voi muodostaa" +msgstr "Yhteyttä palvelimeen %s ei voi muodostaa: %s" msgid "Not at Home" msgstr "Poissa kotoa" @@ -9730,7 +9709,6 @@ msgid "User Rooms" msgstr "Käyttäjän huoneet" -#, fuzzy msgid "Connection problem with the YCHT server" msgstr "Yhteysvirhe YCHT-palvelimen kanssa" @@ -9860,17 +9838,17 @@ msgid "Exposure" msgstr "Altistus" -#, fuzzy, c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "Vastausta HTTP-välipalvelimelta ei voi jäsentää: %s\n" +msgstr "Vastausta HTTP-välipalvelimelta ei voi jäsentää: %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "HTTP-välipalvelimen yhteysvirhe %d" -#, fuzzy, c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" -msgstr "Pääsy evätty: HTTP-välipalvelin estää portin %d tunneloinnin." +msgstr "Pääsy evätty: HTTP-välipalvelin estää portin %d tunneloinnin" #, c-format msgid "Error resolving %s" @@ -10164,7 +10142,7 @@ msgid "Use this buddy _icon for this account:" msgstr "Käytä tätä tuttavakuvaketta tälle käyttäjät_ilille:" -msgid "_Advanced" +msgid "Ad_vanced" msgstr "_Lisäasetukset" msgid "Use GNOME Proxy Settings" @@ -10227,8 +10205,8 @@ msgid "Create _this new account on the server" msgstr "Luo _tämä uusi käyttäjätili palvelimelle" -msgid "_Proxy" -msgstr "_Välipalvelin" +msgid "P_roxy" +msgstr "Vä_lipalvelin" msgid "Enabled" msgstr "Käytössä" @@ -10321,11 +10299,9 @@ msgid "View _Log" msgstr "Näytä _loki" -#, fuzzy msgid "Hide When Offline" msgstr "Piilota kun poissa linjoilta" -#, fuzzy msgid "Show When Offline" msgstr "Näytä kun poissa linjoilta" @@ -10872,7 +10848,6 @@ msgid "Get Away Message" msgstr "Hae poissaoloviesti" -#, fuzzy msgid "Last Said" msgstr "Viimeksi sanottu" @@ -12426,9 +12401,8 @@ msgid "On unread messages" msgstr "Kun lukemattomia viestejä" -#, fuzzy msgid "Conversation Window" -msgstr "Pikaviesti-ikkunat" +msgstr "Keskusteluikkuna" msgid "_Hide new IM conversations:" msgstr "_Piilota uudet pikaviestikeskustelut:" @@ -13067,9 +13041,21 @@ msgid "_Copy Email Address" msgstr "_Kopioi sähköpostiosoite" +msgid "_Open File" +msgstr "_Avaa tiedosto..." + +msgid "Open _Containing Directory" +msgstr "Avaa kansio joka _sisältää tämän" + msgid "Save File" msgstr "Tallenna tiedosto" +msgid "_Play Sound" +msgstr "_Toista ääni" + +msgid "_Save File" +msgstr "_Tallenna tiedosto" + msgid "Select color" msgstr "Valitse väri" @@ -14224,6 +14210,9 @@ "Tätä liitännäistä voidaan käyttää XMPP-palvelimien tai -asiakasohjelmien " "virheenjäljitykseen." +#~ msgid "_Proxy" +#~ msgstr "_Välipalvelin" + #~ msgid "Cannot open socket" #~ msgstr "Pistoketta ei voi avata" diff -r b4daae0798e3 -r e1cd44c7c7af po/fr.po --- a/po/fr.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/fr.po Sat Jul 25 04:54:36 2009 +0000 @@ -21,8 +21,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2009-02-23 01:25+0100\n" +"POT-Creation-Date: 2009-07-19 22:15+0200\n" +"PO-Revision-Date: 2009-07-19 22:15+0200\n" "Last-Translator: Éric Boumaour \n" "Language-Team: fr \n" "MIME-Version: 1.0\n" @@ -884,12 +884,11 @@ msgid "System Log" msgstr "Archives des messages système" -#, fuzzy msgid "Calling ... " -msgstr "Calcul en cours" +msgstr "Appel... " msgid "Hangup" -msgstr "" +msgstr "Raccrocher" #. Number of actions msgid "Accept" @@ -899,25 +898,24 @@ msgstr "Refuser" msgid "Call in progress." -msgstr "" +msgstr "Appel en cours." msgid "The call has been terminated." -msgstr "" +msgstr "L'appel s'est terminé." #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s veut engager une session audio." #, c-format msgid "%s is trying to start an unsupported media session type with you." -msgstr "" - -#, fuzzy +msgstr "%s essaie d'engager une session audio de type non supportée." + msgid "You have rejected the call." -msgstr "Vous avez quitté le salon %s%s" +msgstr "Vous avez refusé l'appel." msgid "call: Make an audio call." -msgstr "" +msgstr "call : appel audio." msgid "Emails" msgstr "Courriers électroniques" @@ -1573,22 +1571,25 @@ "\n" "Fetching TinyURL..." msgstr "" +"\n" +"Récupération TinyURL..." msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "Création de TinyURL seulement pour les liens de cette taille mini" msgid "TinyURL (or other) address prefix" -msgstr "" - -#, fuzzy +msgstr "Préfixe d'adresse TinyURL (ou autre)" + msgid "TinyURL" -msgstr "URL musicale" +msgstr "TinyURL" msgid "TinyURL plugin" -msgstr "" +msgstr "Plugin TinyURL" msgid "When receiving a message with URL(s), TinyURL for easier copying" msgstr "" +"À la réception d'un message avec un ou plusieurs liens hypertextes, utilise " +"TinyURL pour les copier plus facilement." msgid "accounts" msgstr "Comptes" @@ -1793,7 +1794,6 @@ msgstr "+++ %s a quitté" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "Erreur inconnue" @@ -1840,9 +1840,8 @@ msgid "%s left the room (%s)." msgstr "%s a quitté le salon (%s)" -#, fuzzy msgid "Invite to chat" -msgstr "Inviter à une conférence" +msgstr "Inviter à une discussion" #. Put our happy label in it. msgid "" @@ -1985,6 +1984,10 @@ msgstr "Démarrage du transfert de %s depuis %s." #, c-format +msgid "Transfer of file %s complete" +msgstr "Transfert du fichier %s terminé" + +#, c-format msgid "Transfer of file %s complete" msgstr "Transfert du fichier « %s » terminé" @@ -2200,9 +2203,8 @@ msgid "(%s) %s : %s\n" msgstr "(%s) %s  : %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "Erreur à l'ouverture de la connexion" +msgstr "Erreur à la création de la conférence." #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2611,7 +2613,6 @@ "d'archives." #. * 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" @@ -2621,7 +2622,7 @@ msgstr "" "Quand les archives sont consultés, ce plugin ajoute les archives d'autres " "clients de messagerie instantanée. Cela inclut actuellement Adium, MSN " -"Messenger et Trillian.\n" +"Messenger, aMSN et Trillian.\n" "\n" "ATTENTION : ce plugin est encore en phase de développement précoce et peut " "planter fréquemment. Utilisez le à vos risques et périls !" @@ -2671,12 +2672,11 @@ "Enregistre les messages envoyés à un utilisateur déconnecté en tant " "qu'alerte." -#, fuzzy msgid "" "The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." msgstr "" -"Les messages seront enregistrés en tant qu'alerte. Vous pouvez modifier ou " +"Les messages seront enregistrés en tant qu'alertes. Vous pouvez modifier ou " "supprimer l'alerte dans la fenêtre « Alerte »." #, c-format @@ -2705,9 +2705,8 @@ msgid "Do not ask. Always save in pounce." msgstr "Ne jamais demander. Toujours créer une alerte." -#, fuzzy msgid "One Time Password" -msgstr "Saisissez le mot de passe" +msgstr "Mot de passe jetable" #. *< type #. *< ui_requirement @@ -2716,13 +2715,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "Support de mot de passe à usage unique" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "S'assure que les mots de passe ne peuvent être utilisés qu'une fois." #. * description msgid "" @@ -2730,6 +2729,10 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Permet de s'assurer pour certains comptes que les mot de passe n'est pas " +"sauvegardé et qu'il n'est utilisé que pour une seule connexion validée.\n" +"NB : le mot de passe ne doit pas déjà être sauvegardé pour que cela " +"fonctionne." #. *< type #. *< ui_requirement @@ -2883,10 +2886,10 @@ msgstr "Notification quand" msgid "Buddy Goes _Away" -msgstr "L'utilisateur s'absente" +msgstr "L'utilisateur s'_absente" msgid "Buddy Goes _Idle" -msgstr "L'utilisateur passe inactif" +msgstr "L'utilisateur passe _inactif" msgid "Buddy _Signs On/Off" msgstr "_Connexion/déconnexion d'un contact" @@ -2925,18 +2928,15 @@ "utiliser les plugins TCL, veuillez installer ActiveTCL depuis http://www." "activestate.com\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"Le kit Apple Bonjour pour Windows n'a pas été trouvé. Veuillez consulter la " -"FAQ disponible sur : http://d.pidgin.im/wiki/BonjourWindows pour plus " -"d'informations." - -#, fuzzy +"Impossible de trouver le kit Apple Bonjour pour Windows. Veuillez consulter " +"http://d.pidgin.im/wiki/BonjourWindows pour plus d'informations." + msgid "Unable to listen for incoming IM connections" -msgstr "Impossible d'attendre des connexions rentrantes de messages.\n" +msgstr "Impossible d'attendre des connexions rentrantes de messages" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2990,21 +2990,17 @@ msgstr "" "Impossible d'envoyer le message, la conversation n'a pas pu être commencée." -#, fuzzy, c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"Impossible de créer le socket :\n" -"%s" - -#, fuzzy, c-format +msgstr "Impossible de créer le socket : %s" + +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "Impossible d'affecter un port à la connexion." - -#, fuzzy, c-format +msgstr "Impossible d'affecter un port à la connexion : %s" + +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"Impossible de créer le socket :\n" -"%s" +msgstr "Impossible de se mettre en écoute sur la connexion : %s" msgid "Error communicating with local mDNSResponder." msgstr "Erreur de communication avec le mDNSResponder local." @@ -3051,17 +3047,14 @@ msgid "Load buddylist from file..." msgstr "Charger la liste de contacts depuis un fichier..." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "Renseignez les rubriques d'inscription." - -#, fuzzy +msgstr "Vous devez renseignez toutes les rubriques d'inscription" + msgid "Passwords do not match" -msgstr "Les mots de passe diffèrent." - -#, fuzzy +msgstr "Les mots de passe diffèrent" + msgid "Unable to register new account. An unknown error occurred." -msgstr "Une erreur est survenue. Impossible d'inscrire un nouveau compte.\n" +msgstr "Une erreur est survenue. Impossible d'inscrire un nouveau compte." msgid "New Gadu-Gadu Account Registered" msgstr "Nouveau compte Gadu-Gadu créé." @@ -3076,11 +3069,10 @@ msgstr "Mot de passe (confirmation)" msgid "Enter captcha text" -msgstr "" - -#, fuzzy +msgstr "Saisissez le texte captcha" + msgid "Captcha" -msgstr "Image captcha" +msgstr "Captcha" msgid "Register New Gadu-Gadu Account" msgstr "Créer un nouveau compte Gadu-Gadu" @@ -3220,9 +3212,9 @@ msgid "Chat _name:" msgstr "_Nom de la discussion :" -#, fuzzy, c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Impossible de se connecter au serveur" +msgstr "Impossible de résoudre le nom internet « %s » : %s" #. 1. connect to server #. connect to the server @@ -3235,9 +3227,8 @@ msgid "This chat name is already in use" msgstr "Ce nom de discussion est déjà utilisé." -#, fuzzy msgid "Not connected to the server" -msgstr "Vous n'êtes pas connecté au serveur." +msgstr "Vous n'êtes pas connecté au serveur" msgid "Find buddies..." msgstr "Trouver des contacts..." @@ -3278,9 +3269,8 @@ msgid "Gadu-Gadu User" msgstr "Utilisateur Gadu-Gadu" -#, fuzzy msgid "GG server" -msgstr "Récupération du serveur" +msgstr "Serveur GG" #, c-format msgid "Unknown command: %s" @@ -3296,7 +3286,6 @@ msgid "File Transfer Failed" msgstr "Échec du transfert de fichier." -#, fuzzy msgid "Unable to open a listening port." msgstr "Impossible d'ouvrir un port en écoute." @@ -3320,11 +3309,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"Connexion perdue avec le serveur :\n" -"%s" +msgstr "Connexion perdue avec le serveur : %s" msgid "View MOTD" msgstr "Voir le message du jour" @@ -3335,9 +3322,8 @@ msgid "_Password:" msgstr "Mot de _passe :" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "Les pseudonymes IRC ne doivent pas avoir d'espace" +msgstr "Le pseudonyme et le serveur IRC ne doivent pas avoir d'espace" msgid "SSL support unavailable" msgstr "Support SSL non disponible" @@ -3346,11 +3332,11 @@ msgstr "Impossible de se connecter" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "Impossible de se connecter à %s." - -#, fuzzy, c-format +msgstr "Impossible de se connecter : %s" + +#, c-format msgid "Server closed the connection" msgstr "Le serveur a fermé la connexion." @@ -3536,19 +3522,18 @@ #. 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 "Ce nom de discussion est déjà utilisé." - -#, fuzzy +msgstr "Le pseudonyme « %s » est déjà utilisé." + msgid "Nickname in use" -msgstr "Pseudonyme" +msgstr "Pseudonyme utilisé" msgid "Cannot change nick" -msgstr "Impossible de changer de surnom" +msgstr "Impossible de changer de pseudonyme" msgid "Could not change nick" -msgstr "Impossible de changer de surnom" +msgstr "Impossible de changer de pseudonyme" #, c-format msgid "You have parted the channel%s%s" @@ -3786,13 +3771,11 @@ msgid "execute" msgstr "execute" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." msgstr "" "TLS/SSL est nécessaire pour la connexion au serveur. Aucun support de TLS/" "SSL n'a pu être trouvé." -#, fuzzy msgid "You require encryption, but no TLS/SSL support was found." msgstr "" "Vous demandez un chiffrement mais aucun support de TLS/SSL n'a pu être " @@ -3814,11 +3797,9 @@ msgid "Plaintext Authentication" msgstr "Authentification en texte non chiffré" -#, fuzzy msgid "SASL authentication failed" -msgstr "Échec de l'authentification" - -#, fuzzy +msgstr "Échec de l'authentification SASL" + msgid "Invalid response from server" msgstr "Réponse non valide du serveur" @@ -3832,36 +3813,28 @@ msgid "Invalid challenge from server" msgstr "Demande d'accès non valide du serveur" -#, fuzzy, c-format +#, c-format msgid "SASL error: %s" -msgstr "Erreur SASL" +msgstr "Erreur SASL : %s" msgid "The BOSH connection manager terminated your session." -msgstr "" - -#, fuzzy +msgstr "Le gestionnaire de connexion BOSH a interrompu votre session." + msgid "No session ID given" -msgstr "Pas de raison donnée" - -#, fuzzy +msgstr "Pas d'ID de session" + msgid "Unsupported version of BOSH protocol" -msgstr "Version non supportée" - -#, fuzzy +msgstr "Version non supportée du protocole BOSH" + msgid "Unable to establish a connection with the server" -msgstr "" -"Impossible de se connecter au serveur :\n" -"%s" - -#, fuzzy, c-format +msgstr "Impossible de se connecter au serveur" + +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "" -"Impossible de se connecter au serveur :\n" -"%s" - -#, fuzzy +msgstr "Impossible de se connecter au serveur : %s" + msgid "Unable to establish SSL connection" -msgstr "Impossible de créer une connexion." +msgstr "Impossible de créer une connexion SSL" msgid "Full Name" msgstr "Nom complet" @@ -3929,9 +3902,8 @@ msgid "Operating System" msgstr "Système d'exploitation" -#, fuzzy msgid "Local Time" -msgstr "Fichier local :" +msgstr "Heure locale" msgid "Priority" msgstr "Priorité" @@ -3941,11 +3913,10 @@ #, c-format msgid "%s ago" -msgstr "" - -#, fuzzy +msgstr "il y a %s" + msgid "Logged Off" -msgstr "Connecté" +msgstr "Deconnecté" msgid "Middle Name" msgstr "Deuxième prénom" @@ -3987,9 +3958,9 @@ msgid "Log Out" msgstr "Déconnexion" -# Repris du fr.po de gabber +# Pour avoir le même texte que « Free for Chat » msgid "Chatty" -msgstr "Bavard" +msgstr "Libre pour discuter" msgid "Extended Away" msgstr "Longue absence" @@ -4116,19 +4087,15 @@ msgid "Find Rooms" msgstr "Chercher un salon de discussions" -#, fuzzy msgid "Affiliations:" -msgstr "Alias :" - -#, fuzzy +msgstr "Affiliations :" + msgid "No users found" -msgstr "Aucun utilisateur correspondant trouvé." - -#, fuzzy +msgstr "Aucun utilisateur trouvé." + msgid "Roles:" -msgstr "Rôle" - -#, fuzzy +msgstr "Rôles :" + msgid "Ping timed out" msgstr "Pas de réponse au ping" @@ -4136,6 +4103,8 @@ "Unable to find alternative XMPP connection methods after failing to connect " "directly." msgstr "" +"Impossible de trouver une autre méthode de connexion XMPP après l'échec de " +"connexion directe." msgid "Invalid XMPP ID" msgstr "Identifiant XMPP non valide." @@ -4143,9 +4112,8 @@ msgid "Invalid XMPP ID. Domain must be set." msgstr "Identifiant XMPP non valide. Le domaine doit être saisi." -#, fuzzy msgid "Malformed BOSH URL" -msgstr "Impossible de se connecter au serveur." +msgstr "URL BOSH mal formée" #, c-format msgid "Registration of %s@%s successful" @@ -4217,10 +4185,6 @@ msgid "Change Registration" msgstr "Changer l'enregistrement" -#, fuzzy -msgid "Malformed BOSH Connect Server" -msgstr "Impossible de se connecter au serveur." - msgid "Error unregistering account" msgstr "Erreur à la désinscription du compte" @@ -4506,19 +4470,21 @@ msgid "Unable to ping user %s" msgstr "Impossible d'envoyer un ping à l'utilisateur %s" -#, fuzzy, c-format +#, c-format msgid "Unable to buzz, because there is nothing known about %s." msgstr "Impossible de buzzer, rien n'est connu sur l'utilisateur %s." -#, fuzzy, c-format +#, c-format msgid "Unable to buzz, because %s might be offline." msgstr "Impossible de buzzer, l'utilisateur %s est peut-être déconnecté." -#, fuzzy, c-format +#, c-format msgid "" "Unable to buzz, because %s does not support it or does not wish to receive " "buzzes now." -msgstr "Impossible de buzzer, l'utilisateur %s l'interdit." +msgstr "" +"Impossible de buzzer, l'utilisateur %s l'interdit ou n'est pas capable de le " +"recevoir." #, c-format msgid "Buzzing %s..." @@ -4533,38 +4499,38 @@ msgid "%s has buzzed you!" msgstr "%s vient de vous buzzer !" -#, fuzzy, c-format +#, c-format msgid "Unable to initiate media with %s: invalid JID" -msgstr "Impossible d'envoyer le fichier à %s, JID non valide" - -#, fuzzy, c-format +msgstr "Impossible d'engager une session média avec %s : JID non valide" + +#, c-format msgid "Unable to initiate media with %s: user is not online" -msgstr "Impossible d'envoyer le fichier à %s, l'utilisateur n'est pas en ligne" - -#, fuzzy, c-format +msgstr "" +"Impossible d'engager une session média avec %s : l'utilisateur n'est pas en " +"ligne" + +#, c-format msgid "Unable to initiate media with %s: not subscribed to user presence" msgstr "" -"Impossible d'envoyer le fichier à %s, pas d'inscription à la présence de " -"l'utilisateur" - -#, fuzzy +"Impossible d'engager une session média avec %s : pas d'inscription à la " +"présence de l'utilisateur" + msgid "Media Initiation Failed" -msgstr "Erreur d'enregistrement" - -#, fuzzy, c-format +msgstr "Échec de la session média" + +#, c-format msgid "" "Please select the resource of %s with which you would like to start a media " "session." msgstr "" -"Veuillez sélectionner parmi les ressources de %s, à laquelle vous voulez " -"envoyer un fichier" +"Veuillez choisir parmi les ressources de %s, avec laquelle vous voulez " +"engager une session média" msgid "Select a Resource" msgstr "Choisissez une ressource" -#, fuzzy msgid "Initiate Media" -msgstr "Lancer une _discussion" +msgstr "Session média" msgid "config: Configure a chat room." msgstr "config : Configurer un salon de discussions" @@ -4584,21 +4550,21 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <utilisateur> [salon] : Bannir un utilisateur d'un salon" -#, 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 <utilisateur> <owner|admin|member|outcast|none> : " -"Change l'affiliation d'un utilisateur dans le salon." - -#, fuzzy +"affiliate <owner|admin|member|outcast|none> [pseudo1] [pseudo2] ... : " +"Récupère les utilisateurs avec une certaine affiliation ou change " +"l'affiliation d'utilisateurs dans le salon." + msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <utilisateur> <moderator|participant|visitor|none> : " -"Assigne à un utilisateur un rôle dans le salon." +"role <moderator|participant|visitor|none> [pseudo1] [pseudo2] ... : " +"Récupère les utilisateurs avec un certain rôle ou change le rôle " +"d'utilisateurs dans le salon." msgid "invite <user> [message]: Invite a user to the room." msgstr "" @@ -4661,7 +4627,7 @@ msgstr "Serveur mandataire de transfert de fichiers" msgid "BOSH URL" -msgstr "" +msgstr "URL BOSH" #. this should probably be part of global smiley theme settings later on, #. shared with MSN @@ -4725,32 +4691,28 @@ msgid "_Accept Defaults" msgstr "_Accepter les paramètres par défaut" -#, fuzzy msgid "No reason" -msgstr "Pas de raison donnée" - -#, fuzzy, c-format +msgstr "Pas de raison" + +#, c-format msgid "You have been kicked: (%s)" -msgstr "Vous avez été expulsé par %s (%s)" - -#, fuzzy, c-format +msgstr "Vous avez été expulsé : (%s)" + +#, c-format msgid "Kicked (%s)" -msgstr "Expulsé par %s (%s)" - -#, fuzzy +msgstr "Expulsé (%s)" + msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Erreur lors de l'ouverture du fichier." - -#, fuzzy +msgstr "Erreur lors du transfert dans le flux de données in-band.\n" + msgid "Transfer was closed." -msgstr "Échec du transfert de fichier." - -#, fuzzy +msgstr "Le transfert a été interrompu." + msgid "Failed to open the file" -msgstr "Impossible d'ouvrir le fichier « %s » : %s" +msgstr "Impossible d'ouvrir le fichier" msgid "Failed to open in-band bytestream" -msgstr "" +msgstr "Impossible d'ouvrir le flux de données in-band" #, c-format msgid "Unable to send file to %s, user does not support file transfers" @@ -5077,10 +5039,30 @@ msgid "Non-IM Contacts" msgstr "Contacts non instantanés" -#, fuzzy, c-format +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" +"%s a envoyé un clin d'œil. Cliquez ici pour le jouer." +"" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "%s a envoyé un clin d'œil, mais il n'a pas pu être sauvé." + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" +"%s a envoyé un clip audio. Cliquez ici pour le jouer." + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "%s a envoyé un clip audio, mais il n'a pas pu être sauvé." + +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "" -"%s vous a envoyé une invitation webcam, ce qui n'est pas encore supporté." +"%s vous a envoyé une invitation voix, ce qui n'est pas encore supporté." msgid "Nudge" msgstr "Nudge" @@ -5236,6 +5218,29 @@ "Le support de SSL est nécessaire pour MSN. Veuillez installer une " "bibliothèque SSL pour l'application." +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Impossible d'ajouter le contact %s car son nom d'utilisateur est non valide. " +"Les noms des contacts doivent être une adresse électronique valide." + +msgid "Unable to Add" +msgstr "Impossible d'ajouter" + +msgid "Authorization Request Message:" +msgstr "Message pour la demande d'autorisation :" + +msgid "Please authorize me!" +msgstr "Autorise moi, s'il te plaît !" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "_OK" + msgid "Error retrieving profile" msgstr "Erreur à la récupération du profil." @@ -5427,13 +5432,14 @@ msgid "%s just sent you a Nudge!" msgstr "%s vient de vous envoyer un « Nudge. »" -#, fuzzy, c-format +#, c-format msgid "Unknown error (%d): %s" -msgstr "Erreur inconnue (%d)" +msgstr "Erreur inconnue (%d) : %s" msgid "Unable to add user" msgstr "Impossible d'ajouter un utilisateur" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "Erreur inconnue (%d)" @@ -5504,24 +5510,20 @@ "Erreur de connexion du serveur %s :\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" -msgstr "Notre protocole n'est pas supportés par le serveur." - -#, fuzzy +msgstr "Notre protocole n'est pas supporté par le serveur." + msgid "Error parsing HTTP" msgstr "Erreur à l'analyse du HTTP" -#, fuzzy msgid "You have signed on from another location" -msgstr "Vous venez de vous connecter depuis un autre endroit." +msgstr "Vous vous êtes connecté depuis un autre endroit." msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" "Les serveurs MSN ne sont pas disponibles pour l'instant. Veuillez attendre " "un peu puis réessayer." -#, fuzzy msgid "The MSN servers are going down temporarily" msgstr "Les serveurs MSN sont coupés temporairement." @@ -5553,10 +5555,9 @@ msgid "Retrieving buddy list" msgstr "Récupération de la liste de contacts" -#, fuzzy, c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." -msgstr "" -"%s vous a envoyé une invitation webcam, ce qui n'est pas encore supporté." +msgstr "%s demande à voir votre webcam, ce qui n'est pas encore supporté." #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." @@ -5756,16 +5757,16 @@ msgid "Protocol error, code %d: %s" msgstr "Erreur de protocole, code %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, votre mot de passe fait %d caractères, ce qui est supérieur à la " -"longueur maximale de %d attendue par MySpaceIM. Veuillez raccourcir votre " -"mot de passe à http://profileedit.myspace.com/index.cfm?" -"fuseaction=accountSettings.changePassword puis réessayer." +"%s, votre mot de passe fait %zu caractères, ce qui est supérieur à la " +"longueur maximale de %d. Veuillez raccourcir votre mot de passe à http://" +"profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword " +"puis réessayer." msgid "Incorrect username or password" msgstr "Nom d'utilisateur ou mot de passe incorrect" @@ -5864,6 +5865,9 @@ "visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " "to set your username." msgstr "" +"Une erreur est survenue en essayant de changer le nom d'utilisateur. " +"Veuillez réessayer ou aller sur http://editprofile.myspace.com/index.cfm?" +"fuseaction=profile.username pour changer de nom d'utilisateur." msgid "MySpaceIM - Username Available" msgstr "MySpaceIM - Nom d'utilisateur disponible" @@ -6123,9 +6127,9 @@ msgid "Unknown error: 0x%X" msgstr "Erreur inconnue :0x%X" -#, fuzzy, c-format +#, c-format msgid "Unable to login: %s" -msgstr "Impossible d'envoyer un ping à l'utilisateur %s" +msgstr "Impossible de s'authentifier : %s" #, c-format msgid "Unable to send message. Could not get details for user (%s)." @@ -6259,7 +6263,6 @@ "%s appears to be offline and did not receive the message that you just sent." msgstr "%s est déconnecté et n'a pas reçu le message que vous venez d'envoyer." -#, fuzzy msgid "" "Unable to connect to server. Please enter the address of the server to which " "you wish to connect." @@ -6289,9 +6292,8 @@ msgid "Server port" msgstr "Port du serveur" -#, fuzzy msgid "Received unexpected response from " -msgstr "Réception d'un message HTTP non attendu du serveur." +msgstr "Réception d'un message non attendu de " #. username connecting too frequently msgid "" @@ -6302,12 +6304,12 @@ "réessayez. Si vous persistez maintenant, il vous faudra attendre encore plus " "longtemps." -#, fuzzy, c-format +#, c-format msgid "Error requesting " -msgstr "Erreur à la résolution du nom %s." +msgstr "Erreur à la demande de " msgid "AOL does not allow your screen name to authenticate here" -msgstr "" +msgstr "AOL n'autorise pas votre nom d'utilisateur pour authentification ici." msgid "Could not join chat room" msgstr "Impossible de rejoindre le salon de discussions" @@ -6315,9 +6317,8 @@ msgid "Invalid chat room name" msgstr "Nom de salon non valide" -#, fuzzy msgid "Received invalid data on connection with server" -msgstr "Données non valides reçues sur la connexion du serveur." +msgstr "Données non valides reçues à la connexion sur le serveur." #. *< type #. *< ui_requirement @@ -6364,7 +6365,6 @@ msgid "Received invalid data on connection with remote user." msgstr "Données non valides reçues sur la connexion avec l'interlocuteur." -#, fuzzy msgid "Unable to establish a connection with the remote user." msgstr "Impossible de se connecter à l'interlocuteur." @@ -6567,15 +6567,13 @@ msgid "Buddy Comment" msgstr "Commentaire" -#, fuzzy, c-format +#, c-format msgid "Unable to connect to authentication server: %s" -msgstr "" -"Impossible de se connecter au serveur d'authentification :\n" -"%s" - -#, fuzzy, c-format +msgstr "Impossible de se connecter au serveur d'authentification : %s" + +#, c-format msgid "Unable to connect to BOS server: %s" -msgstr "Impossible de se connecter au serveur" +msgstr "Impossible de se connecter au serveur BOS : %s" msgid "Username sent" msgstr "Nom d'utilisateur envoyé" @@ -6587,16 +6585,16 @@ msgid "Finalizing connection" msgstr "Finalisation de la connexion" -#, fuzzy, c-format +#, c-format msgid "" "Unable to sign on as %s because the username is invalid. Usernames must be " "a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"Impossible de se connecter : le nom d'utilisateur %s est non valide. Les " -"noms doivent soit être une adresse électronique valide, soit commencer par " -"une lettre et contenir uniquement des lettres, des chiffres et des espaces, " -"soit contenir uniquement des chiffres." +"Impossible de se connecter en tant que %s, ce nom n'est pas valide. Les noms " +"doivent soit être une adresse électronique valide, soit commencer par une " +"lettre et contenir uniquement des lettres, des chiffres et des espaces, soit " +"contenir uniquement des chiffres." #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." @@ -6616,12 +6614,10 @@ #. Unregistered username #. uid is not exist #. the username does not exist -#, fuzzy msgid "Username does not exist" msgstr "Cet utilisateur n'existe pas" #. Suspended account -#, fuzzy msgid "Your account is currently suspended" msgstr "Votre compte est actuellement suspendu." @@ -6629,6 +6625,7 @@ msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "Le service est temporairement indisponible." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "" @@ -6636,16 +6633,14 @@ "à jour sur %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 "" -"Vous vous êtes connecté/déconnecté trop rapidement. Attendez 10 minutes et " +"Vous vous reconnectez trop rapidement. Attendez quelques minutes et " "réessayez. Si vous persistez maintenant, il vous faudra attendre encore plus " "longtemps." -#, fuzzy msgid "The SecurID key entered is invalid" msgstr "La clé SecurID saisie est non valide." @@ -6655,12 +6650,6 @@ msgid "Enter the 6 digit number from the digital display." msgstr "Saisissez les 6 chiffres de l'affichage numérique." -#. * -#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. -#. -msgid "_OK" -msgstr "_OK" - msgid "Password sent" msgstr "Mot de passe envoyé" @@ -6670,12 +6659,6 @@ msgid "Please authorize me so I can add you to my buddy list." msgstr "Autorise moi pour que je t'ajoute à ma liste de contacts." -msgid "Authorization Request Message:" -msgstr "Message pour la demande d'autorisation :" - -msgid "Please authorize me!" -msgstr "Autorise moi, s'il te plaît !" - msgid "No reason given." msgstr "Pas de raison" @@ -7011,7 +6994,7 @@ msgid "Away message too long." msgstr "Message d'absence trop long" -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " "be a valid email address, or start with a letter and contain only letters, " @@ -7022,9 +7005,6 @@ "soit commencer par une lettre et contenir uniquement des lettres, des " "chiffres et des espaces, soit contenir uniquement des chiffres." -msgid "Unable to Add" -msgstr "Impossible d'ajouter" - msgid "Unable to Retrieve Buddy List" msgstr "Impossible de récupérer la liste de contacts" @@ -7039,7 +7019,7 @@ msgid "Orphans" msgstr "Orphelins" -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because you have too many buddies in your buddy " "list. Please remove one and try again." @@ -7050,7 +7030,7 @@ msgid "(no name)" msgstr "(pas de nom)" -#, fuzzy, c-format +#, c-format msgid "Unable to add the buddy %s for an unknown reason." msgstr "Impossible d'ajouter le contact %s pour une raison inconnue." @@ -7215,9 +7195,8 @@ msgid "Search for Buddy by Information" msgstr "Chercher d'après les informations..." -#, fuzzy msgid "Use clientLogin" -msgstr "Utilisateur non connecté" +msgstr "Utiliser clientLogin" msgid "" "Always use AIM/ICQ proxy server for\n" @@ -7415,30 +7394,26 @@ msgstr "Commentaire" #. callback -#, fuzzy msgid "Buddy Memo" -msgstr "Icône du contact" +msgstr "Mémo du contact" msgid "Change his/her memo as you like" -msgstr "" - -#, fuzzy +msgstr "Vous pouvez changer son mémo à votre convenance" + msgid "_Modify" -msgstr "Modifier" - -#, fuzzy +msgstr "_Modifier" + msgid "Memo Modify" -msgstr "Modifier" - -#, fuzzy +msgstr "Changer mémo" + msgid "Server says:" -msgstr "Serveur occupé" +msgstr "Message du serveur :" msgid "Your request was accepted." -msgstr "" +msgstr "Votre requête a été acceptée." msgid "Your request was rejected." -msgstr "" +msgstr "Votre requête a été rejetée." #, c-format msgid "%u requires verification" @@ -7748,18 +7723,17 @@ msgid "

Acknowledgement:
\n" msgstr "

Remerciements :
\n" -#, fuzzy msgid "

Scrupulous Testers:
\n" -msgstr "

Auteur original :
\n" +msgstr "

Testeurs scrupuleux :
\n" msgid "and more, please let me know... thank you!))" -msgstr "" +msgstr "et d'autres, faites-nous le savoir... merci !" msgid "

And, all the boys in the backroom...
\n" -msgstr "

et tous les personnes dans les coulisses...
\n" +msgstr "

et toutes les personnes dans les coulisses...
\n" msgid "Feel free to join us! :)" -msgstr "N'hésitez pas à mous rejoindre ! :)" +msgstr "N'hésitez pas à nous rejoindre ! :)" #, c-format msgid "About OpenQ %s" @@ -7780,9 +7754,8 @@ msgid "About OpenQ" msgstr "À propos de OpenQ" -#, fuzzy msgid "Modify Buddy Memo" -msgstr "Modifier l'adresse" +msgstr "Changer le mémo de l'utilisateur" #. *< type #. *< ui_requirement @@ -7830,7 +7803,6 @@ msgid "Update interval (seconds)" msgstr "Délai de mise à jour (en secondes)" -#, fuzzy msgid "Unable to decrypt server reply" msgstr "Impossible de déchiffrer la réponse du serveur" @@ -7898,9 +7870,8 @@ msgid "Requesting token" msgstr "Requête d'un token" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "Impossible de se connecter au serveur" +msgstr "Impossible de résoudre l'adresse internet." msgid "Invalid server or port" msgstr "Serveur ou port non valide" @@ -7953,7 +7924,6 @@ msgid "QQ Qun Command" msgstr "Commande Qun QQ" -#, fuzzy msgid "Unable to decrypt login reply" msgstr "Impossible de déchiffrer la réponse de connexion" @@ -8935,7 +8905,6 @@ msgid "Disconnected by server" msgstr "Déconnexion par le serveur" -#, fuzzy msgid "Error connecting to SILC Server" msgstr "Erreur à la connexion au serveur SILC" @@ -8951,7 +8920,6 @@ msgid "Performing key exchange" msgstr "Échange de clé en cours" -#, fuzzy msgid "Unable to load SILC key pair" msgstr "Impossible de charger la paire de clés SILC" @@ -8959,16 +8927,11 @@ msgid "Connecting to SILC Server" msgstr "Connexion au serveur SILC" -#, fuzzy -msgid "Unable to not load SILC key pair" -msgstr "Impossible de charger la paire de clés SILC" - msgid "Out of memory" msgstr "Pas assez de mémoire" -#, fuzzy msgid "Unable to initialize SILC protocol" -msgstr "Impossible d'initialiser le protocole SILC." +msgstr "Impossible d'initialiser le protocole SILC" msgid "Error loading SILC key pair" msgstr "Erreur de chargement de la paire de clés SILC" @@ -9267,9 +9230,8 @@ msgid "Creating SILC key pair..." msgstr "Création de la paire de clés SILC..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "Impossible de créer la paire de clés SILC\n" +msgstr "Impossible de créer la paire de clés SILC" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9411,27 +9373,24 @@ msgid "Failure: Authentication failed" msgstr "Échec de l'authentification" -#, fuzzy msgid "Unable to initialize SILC Client connection" msgstr "Impossible d'initialiser la connexion client SILC" msgid "John Noname" msgstr "Anne Onyme" -#, fuzzy, c-format +#, c-format msgid "Unable to load SILC key pair: %s" msgstr "Impossible de charger la paire de clés SILC : %s" msgid "Unable to create connection" msgstr "Impossible de créer une connexion." -#, fuzzy msgid "Unknown server response" -msgstr "Réponse du serveur inconnue." - -#, fuzzy +msgstr "Réponse du serveur inconnue" + msgid "Unable to create listen socket" -msgstr "Impossible de créer le socket." +msgstr "Impossible de se mettre en écoute sur la connexion" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "" @@ -9495,7 +9454,6 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" msgstr "Plugin pour le protocole Yahoo" @@ -9526,9 +9484,8 @@ msgid "Yahoo Chat port" msgstr "Port Yahoo Chat" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "ID Yahoo..." +msgstr "ID Yahoo Japon..." #. *< type #. *< ui_requirement @@ -9540,12 +9497,11 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Plugin pour le protocole Yahoo" +msgstr "Plugin pour le protocole Yahoo Japon" msgid "Your SMS was not delivered" -msgstr "" +msgstr "Votre SMS n'a pas été transmis" msgid "Your Yahoo! message did not get sent." msgstr "Votre message Yahoo! n'a pas été envoyé" @@ -9572,32 +9528,28 @@ msgstr "Ajout du contact refusé" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "Données non valides reçues sur la connexion du serveur." +msgstr "Données reçues non valides" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." msgstr "" -"Erreur inconnue n°%d. Se connecter sur le site web Yahoo! peut corriger le " -"problème." +"Compte bloqué : trop de mauvais mots de passe. Se connecter sur le site web " +"Yahoo! peut corriger le problème." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." msgstr "" -"Erreur inconnue n°%d. Se connecter sur le site web Yahoo! peut corriger le " -"problème." +"Compte bloqué : raison inconnue. Se connecter sur le site web Yahoo! peut " +"corriger le problème." #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "Nom d'utilisateur ou mot de passe incorrect" +msgstr "Nom d'utilisateur ou mot de passe manquant" #, c-format msgid "" @@ -9634,35 +9586,29 @@ "Erreur inconnue n°%d. Se connecter sur le site web Yahoo! peut corriger le " "problème." -#, fuzzy, c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." msgstr "" "Impossible d'ajouter le contact %s au groupe %s sur la liste du serveur pour " "le compte %s." -#, fuzzy msgid "Unable to add buddy to server list" -msgstr "Impossible d'ajouter le contact sur la liste du serveur." +msgstr "Impossible d'ajouter le contact sur la liste du serveur" #, c-format msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ Audible %s/%s/%s.swf ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" -msgstr "Réception d'un message HTTP non attendu du serveur." - -#, fuzzy, c-format +msgstr "Réception d'un message HTTP non attendu du serveur" + +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"Connexion perdue avec %s :\n" -"%s" - -#, fuzzy, c-format +msgstr "Connexion perdue avec %s : %s" + +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "" -"Impossible de se connecter au serveur :\n" -"%s" +msgstr "Impossible de se connecter à %s : %s" msgid "Not at Home" msgstr "Pas à la maison" @@ -9710,7 +9656,7 @@ msgstr "Commencer à griffonner" msgid "Select the ID you want to activate" -msgstr "" +msgstr "Choisissez l'ID que vous voulez activer" msgid "Join whom in chat?" msgstr "Qui rejoindre dans une discussion ?" @@ -9815,12 +9761,8 @@ msgstr "Le profil de l'utilisateur est vide" #, c-format -msgid "%s declined your conference invitation to room \"%s\" because \"%s\"." -msgstr "" -"%s a décliné votre invitation à la conférence « %s » pour la raison : %s" - -msgid "Invitation Rejected" -msgstr "Invitation refusée" +msgid "%s has declined to join." +msgstr "%s a décliné l'invitation." msgid "Failed to join chat" msgstr "Impossible de rejoindre la discussion." @@ -9872,7 +9814,6 @@ msgid "User Rooms" msgstr "Salon de discussions utilisateur" -#, fuzzy msgid "Connection problem with the YCHT server" msgstr "Problème de connexion avec le serveur YCHT" @@ -10006,19 +9947,19 @@ msgid "Exposure" msgstr "Exposition" -#, fuzzy, c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "Impossible de reconnaître la réponse du serveur mandataire HTTP : %s\n" +msgstr "Impossible de reconnaître la réponse du serveur mandataire HTTP : %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "Erreur de connexion au serveur mandataire HTTP %d." -#, fuzzy, c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" msgstr "" "Accès interdit : le serveur mandataire n'autorise pas le passage par le port " -"%d." +"%d" #, c-format msgid "Error resolving %s" @@ -10262,7 +10203,7 @@ msgid "Error Reading %s" msgstr "Erreur à la lecture de « %s »." -#, fuzzy, c-format +#, c-format msgid "" "An error was encountered reading your %s. The file has not been loaded, and " "the old file has been renamed to %s~." @@ -10312,7 +10253,7 @@ msgid "Use this buddy _icon for this account:" msgstr "Utiliser cette _icône pour ce compte :" -msgid "_Advanced" +msgid "Ad_vanced" msgstr "_Avancé" msgid "Use GNOME Proxy Settings" @@ -10375,9 +10316,8 @@ msgid "Create _this new account on the server" msgstr "Créer ce _nouveau compte sur le serveur" -#, fuzzy -msgid "_Proxy" -msgstr "Serveur mandataire" +msgid "P_roxy" +msgstr "Serveur _mandataire" msgid "Enabled" msgstr "Activé" @@ -10412,8 +10352,8 @@ 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] "" -msgstr[1] "" +msgstr[0] "Vous avez %d contact nommé %s. Voulez-vous le fusionner ?" +msgstr[1] "Vous avez %d contacts nommé %s. Voulez-vous les fusionner ?" msgid "" "Merging these contacts will cause them to share a single entry on the buddy " @@ -10428,9 +10368,8 @@ msgid "Please update the necessary fields." msgstr "Veuillez mettre à jour les rubriques nécessaires." -#, fuzzy msgid "A_ccount" -msgstr "_Compte :" +msgstr "_Compte" msgid "" "Please enter the appropriate information about the chat you would like to " @@ -10457,16 +10396,14 @@ msgid "I_M" msgstr "_Message" -#, fuzzy msgid "_Audio Call" -msgstr "_Ajouter une discussion" +msgstr "Appel _audio" msgid "Audio/_Video Call" -msgstr "" - -#, fuzzy +msgstr "Appel audio/_vidéo" + msgid "_Video Call" -msgstr "Visioconférence" +msgstr "Appel _vidéo" msgid "_Send File..." msgstr "Envoyer un _fichier..." @@ -10477,11 +10414,9 @@ msgid "View _Log" msgstr "_Voir les archives" -#, fuzzy msgid "Hide When Offline" msgstr "Cacher si déconnecté" -#, fuzzy msgid "Show When Offline" msgstr "Afficher si déconnecté" @@ -10607,9 +10542,8 @@ msgid "/Tools/_Certificates" msgstr "/Outils/_Certificats" -#, fuzzy msgid "/Tools/Custom Smile_ys" -msgstr "/Outils/Frim_ousses" +msgstr "/Outils/Frimo_usses personnalisée" msgid "/Tools/Plu_gins" msgstr "/Outils/Plu_gins" @@ -10738,7 +10672,7 @@ msgstr "Par état" msgid "By recent log activity" -msgstr "" +msgstr "Par discussions récentes" #, c-format msgid "%s disconnected" @@ -10755,7 +10689,7 @@ msgstr "Réactiver" msgid "SSL FAQs" -msgstr "" +msgstr "FAQs SSL" msgid "Welcome back!" msgstr "Content de vous revoir !" @@ -10890,107 +10824,95 @@ msgstr "Couleur de fond" msgid "The background color for the buddy list" -msgstr "" - -#, fuzzy +msgstr "La couleur de fond pour la liste de contacts" + msgid "Layout" -msgstr "Lao" +msgstr "Arrangement" msgid "The layout of icons, name, and status of the blist" -msgstr "" +msgstr "L'arrangement des icônes, noms et états dans la liste" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "Couleur de fond" +msgstr "Couleur de fond déplié" msgid "The background color of an expanded group" -msgstr "" - -#, fuzzy +msgstr "La couleur de fond pour un groupe de contacts déplié" + msgid "Expanded Text" -msgstr "_Etendre" +msgstr "Texte déplié" msgid "The text information for when a group is expanded" -msgstr "" - -#, fuzzy +msgstr "L'information textuelle pour un groupe de contacts déplié" + msgid "Collapsed Background Color" -msgstr "Changer la couleur du fond" +msgstr "Couleur de fond replié" msgid "The background color of a collapsed group" -msgstr "" - -#, fuzzy +msgstr "La couleur de fond pour un groupe de contacts replié" + msgid "Collapsed Text" -msgstr "Re_plier" +msgstr "Texte replié" msgid "The text information for when a group is collapsed" -msgstr "" +msgstr "L'information textuelle pour un groupe de contacts replié" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "Changer la couleur du fond" +msgstr "Couleur du fond des contacts et salons" msgid "The background color of a contact or chat" -msgstr "" - -#, fuzzy +msgstr "La couleur de fond pour un contact ou un salon de discussions" + msgid "Contact Text" -msgstr "Raccourci" +msgstr "Texte des contacts" msgid "The text information for when a contact is expanded" -msgstr "" - -#, fuzzy +msgstr "L'information textuelle pour un contact déplié" + msgid "On-line Text" -msgstr "En ligne" +msgstr "Texte des contacts connectés" msgid "The text information for when a buddy is online" -msgstr "" - -#, fuzzy +msgstr "L'information textuelle pour un contact connecté" + msgid "Away Text" -msgstr "Absent" +msgstr "Texte des contacts absents" msgid "The text information for when a buddy is away" -msgstr "" - -#, fuzzy +msgstr "L'information textuelle pour un contact absent" + msgid "Off-line Text" -msgstr "Déconnecté" +msgstr "Texte des contacts déconnectés" msgid "The text information for when a buddy is off-line" -msgstr "" - -#, fuzzy +msgstr "L'information textuelle pour un contact déconnecté" + msgid "Idle Text" -msgstr "Texte d'humeur" +msgstr "Texte des contacts inactifs" msgid "The text information for when a buddy is idle" -msgstr "" - -#, fuzzy +msgstr "L'information textuelle pour un contact inactif" + msgid "Message Text" -msgstr "Envoi d'un message" +msgstr "Texte des messages non-lus" msgid "The text information for when a buddy has an unread message" -msgstr "" +msgstr "L'information textuelle pour les messages non-lus d'un contact" msgid "Message (Nick Said) Text" -msgstr "" +msgstr "Texte des messages avec pseudo" msgid "" "The text information for when a chat has an unread message that mentions " "your nick" msgstr "" - -#, fuzzy +"L'information textuelle pour les messages dans lesquels apparaissent votre " +"pseudo" + msgid "The text information for a buddy's status" -msgstr "Changer les informations pour %s" - -#, fuzzy +msgstr "L'information textuelle pour l'état des contacts" + msgid "Type the host name for this certificate." msgstr "Saisissez le nom d'hôte correspondant à ce certificat." @@ -11040,7 +10962,6 @@ msgid "Get Away Message" msgstr "Récupérer le message d'absence" -#, fuzzy msgid "Last Said" msgstr "Dernières paroles" @@ -11087,21 +11008,17 @@ msgid "/Conversation/Clea_r Scrollback" msgstr "/Conversation/_Effacer la conversation" -#, fuzzy msgid "/Conversation/M_edia" -msgstr "/Conversation/_Plus" - -#, fuzzy +msgstr "/Conversation/Mé_dia" + msgid "/Conversation/Media/_Audio Call" -msgstr "/Conversation/_Plus" - -#, fuzzy +msgstr "/Conversation/Média/Appel _audio" + msgid "/Conversation/Media/_Video Call" -msgstr "/Conversation/_Plus" - -#, fuzzy +msgstr "/Conversation/Média/Appel _vidéo" + msgid "/Conversation/Media/Audio\\/Video _Call" -msgstr "/Conversation/_Voir les archives" +msgstr "/Conversation/Média/A_ppel audio\\/vidéo" msgid "/Conversation/Se_nd File..." msgstr "/Conversation/Envoyer un _fichier..." @@ -11175,17 +11092,14 @@ msgid "/Conversation/View Log" msgstr "/Conversation/Voir les archives" -#, fuzzy msgid "/Conversation/Media/Audio Call" -msgstr "/Conversation/Plus" - -#, fuzzy +msgstr "/Conversation/Média/Appel audio" + msgid "/Conversation/Media/Video Call" -msgstr "/Conversation/Voir les archives" - -#, fuzzy +msgstr "/Conversation/Média/Appel vidéo" + msgid "/Conversation/Media/Audio\\/Video Call" -msgstr "/Conversation/Plus" +msgstr "/Conversation/Média/Appel audio\\/vidéo" msgid "/Conversation/Send File..." msgstr "/Conversation/Envoyer un fichier..." @@ -11369,10 +11283,10 @@ #. feel free to not translate this msgid "Ka-Hing Cheung" -msgstr "" +msgstr "Ka-Hing Cheung" msgid "voice and video" -msgstr "" +msgstr "voix et vidéo" msgid "support" msgstr "support" @@ -11498,9 +11412,8 @@ msgid "Hungarian" msgstr "Hongrois" -#, fuzzy msgid "Armenian" -msgstr "Roumain" +msgstr "Arménien" msgid "Indonesian" msgstr "Indonésien" @@ -11517,9 +11430,8 @@ msgid "Ubuntu Georgian Translators" msgstr "Traducteurs géorgiens d'Ubuntu" -#, fuzzy msgid "Khmer" -msgstr "Autre" +msgstr "Khmer" msgid "Kannada" msgstr "Kannara" @@ -11600,7 +11512,7 @@ msgstr "Suédois" msgid "Swahili" -msgstr "" +msgstr "Swahili" msgid "Tamil" msgstr "Tamoul" @@ -11937,7 +11849,6 @@ msgid "Hyperlink visited color" msgstr "Couleur des liens visités" -#, fuzzy msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "" "Couleur pour afficher les liens hypertextes une fois visités (ou activés)." @@ -11974,23 +11885,20 @@ msgstr "Couleur pour afficher le nom pour les messages d'action." msgid "Action Message Name Color for Whispered Message" -msgstr "Nom de la couleur des messages chuchotés." - -#, fuzzy +msgstr "Nom de la couleur des messages d'action chuchotés." + msgid "Color to draw the name of a whispered action message." -msgstr "Couleur pour afficher le nom pour les messages d'action." +msgstr "Couleur pour afficher le nom pour les messages d'actions chuchotés." msgid "Whisper Message Name Color" -msgstr "Nom de la couleur pour les messages envoyés" - -#, fuzzy +msgstr "Nom de la couleur des messages chuchotés." + msgid "Color to draw the name of a whispered message." -msgstr "Couleur pour afficher le nom pour les messages d'action." +msgstr "Couleur pour afficher le nom pour les messages chuchotés." msgid "Typing notification color" msgstr "Couleur de la notification de saisie" -#, fuzzy msgid "The color to use for the typing notification" msgstr "" "Couleur pour afficher que quelqu'un est en train de vous écrire un message" @@ -12246,7 +12154,7 @@ msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%s %s. « %s -h » pour plus d'informations.\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12264,11 +12172,12 @@ " -v, --version display the current version and exit\n" msgstr "" "%s %s\n" -"Usage : %s [option] ...\n" +"Usage : %s [option]...\n" "\n" " -c, --config=DOS lit les fichiers de configuration depuis le dossier " "DOS\n" " -d, --debug affiche les messages de debug sur la sortie standard\n" +" -f, --force-online force online, quelque soit l'état du réseau\n" " -h, --help affiche ce texte d'aide\n" " -m, --multiple ne vérifie pas la présence d'une seule instance du " "programme\n" @@ -12280,7 +12189,7 @@ " --display=DISPLAY affichage X à utiliser\n" " -v, --version affiche le numéro de la version actuelle\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12302,6 +12211,7 @@ " -c, --config=REP lit les fichiers de configuration depuis le dossier " "REP\n" " -d, --debug affiche les messages de debug sur la sortie standard\n" +" -f, --force-online force online, quelque soit l'état du réseau\n" " -h, --help affiche ce texte d'aide\n" " -m, --multiple ne vérifie pas la présence d'une seule instance du " "programme\n" @@ -12351,22 +12261,21 @@ msgstr "Arrêt à cause d'un autre client libpurple existant.\n" msgid "/_Media" -msgstr "" +msgstr "/_Média" msgid "/Media/_Hangup" -msgstr "" - -#, fuzzy +msgstr "/Média/_Raccrocher" + msgid "Calling..." -msgstr "Calcul en cours" +msgstr "Appel..." #, c-format msgid "%s wishes to start an audio/video session with you." -msgstr "" +msgstr "%s veut engager une session audio/vidéo." #, c-format msgid "%s wishes to start a video session with you." -msgstr "" +msgstr "%s veut engager une session vidéo." #, c-format msgid "%s has %d new message." @@ -12397,9 +12306,8 @@ "Un navigateur « Manuel » a été choisi choisi mais la ligne de commande est " "vide." -#, fuzzy msgid "No message" -msgstr "Message inconnu" +msgstr "Pas de message" msgid "Open All Messages" msgstr "Ouvrir tous les messages" @@ -12407,16 +12315,14 @@ msgid "You have mail!" msgstr "Vous avez du courrier !" -#, fuzzy msgid "New Pounces" -msgstr "Nouvelle alerte" +msgstr "Nouvelles alertes" msgid "Dismiss" -msgstr "" - -#, fuzzy +msgstr "Fermer" + msgid "You have pounced!" -msgstr "Vous avez du courrier !" +msgstr "Vous avez des alertes !" msgid "The following plugins will be unloaded." msgstr "Les plugins suivants vont être déchargés." @@ -12466,7 +12372,6 @@ msgid "Select a file" msgstr "Choisissez un fichier" -#, fuzzy msgid "Modify Buddy Pounce" msgstr "Modifier une alerte" @@ -12543,61 +12448,58 @@ msgid "Pounce Target" msgstr "Cible de l'alerte" -#, fuzzy, c-format +#, c-format msgid "Started typing" msgstr "Commence à écrire" -#, fuzzy, c-format +#, c-format msgid "Paused while typing" msgstr "Pause pendant la saisie" -#, fuzzy, c-format +#, c-format msgid "Signed on" msgstr "Se connecte" -#, fuzzy, c-format +#, c-format msgid "Returned from being idle" -msgstr "%s n'est plus inactif (%s)" - -#, fuzzy, c-format +msgstr "N'est plus inactif" + +#, c-format msgid "Returned from being away" msgstr "Revient d'absence" -#, fuzzy, c-format +#, c-format msgid "Stopped typing" msgstr "S'arrête d'écrire" -#, fuzzy, c-format +#, c-format msgid "Signed off" msgstr "Se déconnecte" -#, fuzzy, c-format +#, c-format msgid "Became idle" msgstr "Devient inactif" -#, fuzzy, c-format +#, c-format msgid "Went away" -msgstr "Lorsque absent" - -#, fuzzy, c-format +msgstr "Devient absent" + +#, c-format msgid "Sent a message" -msgstr "Envoyer un message" - -#, fuzzy, c-format +msgstr "Envoi un message" + +#, c-format msgid "Unknown.... Please report this!" msgstr "Événement d'alerte inconnu. Veuillez reporter cette erreur." -#, fuzzy msgid "Theme failed to unpack." msgstr "Le thème de frimousses n'a pas pu être déballé." -#, fuzzy msgid "Theme failed to load." -msgstr "Le thème de frimousses n'a pas pu être déballé." - -#, fuzzy +msgstr "Le thème de frimousses n'a pas pu être chargé." + msgid "Theme failed to copy." -msgstr "Le thème de frimousses n'a pas pu être déballé." +msgstr "Le thème de frimousses n'a pas pu être copié." msgid "Install Theme" msgstr "Installer un thème" @@ -12620,9 +12522,8 @@ msgstr "Fermer les conversations avec la touche _Echap" #. Buddy List Themes -#, fuzzy msgid "Buddy List Theme" -msgstr "Liste de contacts" +msgstr "Thème de liste de contacts" #. System Tray msgid "System Tray Icon" @@ -12634,9 +12535,8 @@ msgid "On unread messages" msgstr "Quand des messages sont non lus" -#, fuzzy msgid "Conversation Window" -msgstr "Fenêtres de conversation" +msgstr "Fenêtre de conversation" msgid "_Hide new IM conversations:" msgstr "_Cacher les nouvelles conversations :" @@ -12739,9 +12639,9 @@ msgid "Example: stunserver.org" msgstr "Exemple : stunserver.org" -#, fuzzy, c-format +#, c-format msgid "Use _automatically detected IP address: %s" -msgstr "_Détection auto de l'adresse IP" +msgstr "_Détection auto de l'adresse IP : %s" msgid "Public _IP:" msgstr "Adresse _IP publique :" @@ -12763,7 +12663,7 @@ #. TURN server msgid "Relay Server (TURN)" -msgstr "" +msgstr "Serveur relai (TURN)" msgid "Proxy Server & Browser" msgstr "Serveur mandataire & navigateur" @@ -13110,11 +13010,11 @@ msgid "Status for %s" msgstr "État pour %s" -#, fuzzy, c-format +#, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "" -"Une frimousse spécialisée pour ce raccourci existe déjà. Veuillez choisir un " +"Une frimousse personnalisée pour « %s » existe déjà. Veuillez choisir un " "autre raccourci." msgid "Custom Smiley" @@ -13129,28 +13029,24 @@ msgid "Add Smiley" msgstr "Ajouter la frimousse" -#, fuzzy msgid "_Image:" -msgstr "_Image" +msgstr "_Image :" #. Shortcut text -#, fuzzy msgid "S_hortcut text:" -msgstr "Raccourci" +msgstr "Texte de _raccourci :" msgid "Smiley" msgstr "Frimousse" -#, fuzzy msgid "Shortcut Text" -msgstr "Raccourci" +msgstr "Texte de raccourci" msgid "Custom Smiley Manager" msgstr "Gestionnaire de frimousses personnalisée" -#, fuzzy msgid "Select Buddy Icon" -msgstr "Choisir contact" +msgstr "Choisir l'icône de contact" msgid "Click to change your buddyicon for this account." msgstr "Cliquer pour changer votre icône pour ce compte." @@ -13234,9 +13130,8 @@ #. * Probably not. I'll just give an error and return. #. The original patch sent the icon used by the launcher. That's probably wrong msgid "Cannot send launcher" -msgstr "Impossible d'envoyer ce lien." - -#, fuzzy +msgstr "Impossible d'envoyer ce lien" + msgid "" "You dragged a desktop launcher. Most likely you wanted to send the target of " "this launcher instead of this launcher itself." @@ -13277,9 +13172,8 @@ "Impossible de charger l'image « %s » : la raison est inconnue, le fichier est " "peut-être endommagé." -#, fuzzy msgid "_Open Link" -msgstr "_Ouvrir les liens :" +msgstr "_Ouvrir le lien" msgid "_Copy Link Location" msgstr "_Copier l'adresse du lien" @@ -13287,9 +13181,21 @@ msgid "_Copy Email Address" msgstr "_Copier l'adresse électronique" +msgid "_Open File" +msgstr "Ouvrir le _fichier" + +msgid "Open _Containing Directory" +msgstr "Ouvrir le _dossier du fichier" + msgid "Save File" msgstr "Sauver le fichier" +msgid "_Play Sound" +msgstr "_Jouer le son" + +msgid "_Save File" +msgstr "_Sauver le fichier" + msgid "Select color" msgstr "Choisir la couleur" @@ -13377,77 +13283,65 @@ msgid "Displays statistical information about your buddies' availability" msgstr "Affiche des statistiques sur la disponibilité de vos contacts" -#, fuzzy msgid "Server name request" -msgstr "Hôte du serveur" - -#, fuzzy +msgstr "Demande du nom du serveur" + msgid "Enter an XMPP Server" -msgstr "Rejoindre un serveur de conférences" - -#, fuzzy +msgstr "Saisissez l'adresse d'un serveur XMPP" + msgid "Select an XMPP server to query" -msgstr "Choisissez un serveur de conférences" - -#, fuzzy +msgstr "Choisissez un serveur XMPP à consulter" + msgid "Find Services" -msgstr "Services en ligne" - -#, fuzzy +msgstr "Trouver des services" + msgid "Add to Buddy List" -msgstr "Envoyer sa liste de contacts" - -#, fuzzy +msgstr "Ajouter à la liste de contacts" + msgid "Gateway" -msgstr "S'absente" - -#, fuzzy +msgstr "Portail" + msgid "Directory" -msgstr "Dossier des archives" - -#, fuzzy +msgstr "Annuaire" + msgid "PubSub Collection" -msgstr "Choix des sons" - -#, fuzzy +msgstr "Ensemble PubSub" + msgid "PubSub Leaf" -msgstr "Service PubSub" - -#, fuzzy +msgstr "Feuillet PubSub" + msgid "" "\n" "Description: " -msgstr "Description" +msgstr "" +"\n" +"Description : " #. Create the window. -#, fuzzy msgid "Service Discovery" -msgstr "Informations du service de découverte" - -#, fuzzy +msgstr "Découverte de services" + msgid "_Browse" -msgstr "_Navigateur :" - -#, fuzzy +msgstr "_Parcourir" + msgid "Server does not exist" -msgstr "Cet utilisateur n'existe pas" - -#, fuzzy +msgstr "Le serveur n'existe pas" + msgid "Server does not support service discovery" -msgstr "Le serveur ne supporte pas le blocage" - -#, fuzzy +msgstr "Le serveur ne supporte pas la découverte de services" + msgid "XMPP Service Discovery" -msgstr "Informations du service de découverte" +msgstr "Découverte de services XMPP" msgid "Allows browsing and registering services." -msgstr "" - -#, fuzzy +msgstr "Permet la visualisation et l'enregistrement de services." + msgid "" "This plugin is useful for registering with legacy transports or other XMPP " "services." -msgstr "Ce plugin est utile pour débugger les clients ou serveurs XMPP." +msgstr "" +"Ce plugin est utile pour s'abonner avec d'anciens transports ou d'autres " +"services XMPP." msgid "Buddy is idle" msgstr "L'utilisateur est inactif" @@ -13854,7 +13748,6 @@ msgstr "Plugin de messagerie musicale pour la composition collaborative." #. * 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." @@ -13978,7 +13871,6 @@ msgid "Highlighted Message Name Color" msgstr "Nom de la couleur des messages en surbrillance" -#, fuzzy msgid "Typing Notification Color" msgstr "Couleur de la notification de saisie" @@ -14011,23 +13903,20 @@ msgid "GTK+ Text Shortcut Theme" msgstr "Raccourci du thème GTK+" -#, fuzzy msgid "Disable Typing Notification Text" -msgstr "Activer la notification de saise" - -#, fuzzy +msgstr "Désactiver le texte de notification de saisie" + msgid "GTK+ Theme Control Settings" -msgstr "Contrôle Pidgin du thème GTK+" - -#, fuzzy +msgstr "Contrôle des paramètres du thème GTK+" + msgid "Colors" -msgstr "Fermer" +msgstr "Couleurs" msgid "Fonts" msgstr "Polices" msgid "Miscellaneous" -msgstr "" +msgstr "Divers" msgid "Gtkrc File Tools" msgstr "Outils du fichier Gtkrc" @@ -14112,7 +14001,6 @@ msgstr "Bouton Envoyer dans la fenêtre de conversation." #. *< summary -#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for use when no physical keyboard is present." @@ -14171,94 +14059,78 @@ "Remplace le texte dans les messages envoyés grâce à des règles de " "substitution." -#, fuzzy msgid "Just logged in" -msgstr "Non connecté" - -#, fuzzy +msgstr "Vient de se connecter" + msgid "Just logged out" -msgstr "Non connecté" +msgstr "Vient de se déconnecter" msgid "" "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"Icône pour le contact/\n" +"Icône pour une personne inconnue" + msgid "Icon for Chat" -msgstr "Rejoindre une discussion" - -#, fuzzy +msgstr "Icône pour un salon de discussions" + msgid "Ignored" -msgstr "Ignorer" - -#, fuzzy +msgstr "Ignoré" + msgid "Founder" -msgstr "Très fort" - -#, fuzzy +msgstr "Fondateur" + msgid "Operator" -msgstr "Opéra" +msgstr "Opérateur" msgid "Half Operator" -msgstr "" - -#, fuzzy +msgstr "Demi-opérateur" + msgid "Authorization dialog" -msgstr "Autorisation donnée" - -#, fuzzy +msgstr "Boite de message pour autorisation" + msgid "Error dialog" -msgstr "Erreur " - -#, fuzzy +msgstr "Boite de message pour erreur" + msgid "Information dialog" -msgstr "Informations" +msgstr "Boite de message pour informations" msgid "Mail dialog" -msgstr "" - -#, fuzzy +msgstr "Boite de message pour courrier" + msgid "Question dialog" -msgstr "Boite de message pour requête" - -#, fuzzy +msgstr "Boite de message pour demande" + msgid "Warning dialog" -msgstr "Niveau d'avertissement" +msgstr "Boite de message pour avertissement" msgid "What kind of dialog is this?" -msgstr "" - -#, fuzzy +msgstr "Quel genre de boite de message est-ce là ?" + msgid "Status Icons" -msgstr "État pour %s" - -#, fuzzy +msgstr "Icônes d'état" + msgid "Chatroom Emblems" -msgstr "Langue du salon de discussions" - -#, fuzzy +msgstr "Emblêmes de salon de discussions" + msgid "Dialog Icons" -msgstr "Changer l'icône" - -#, fuzzy +msgstr "Icônes des boites de message" + msgid "Pidgin Icon Theme Editor" -msgstr "Contrôle Pidgin du thème GTK+" - -#, fuzzy +msgstr "Éditeur de thème d'icônes Pidgin" + msgid "Contact" -msgstr "Infos du contact" - -#, fuzzy +msgstr "Contact" + msgid "Pidgin Buddylist Theme Editor" -msgstr "Liste de contacts" - -#, fuzzy +msgstr "Éditeur de thème de liste de contacts Pidgin" + msgid "Edit Buddylist Theme" -msgstr "Liste de contacts" +msgstr "Permet de modifier le thème de la liste de contacts" msgid "Edit Icon Theme" -msgstr "" +msgstr "Permet de modifier le thème des icônes" #. *< type #. *< ui_requirement @@ -14267,16 +14139,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "Contrôle Pidgin du thème GTK+" +msgstr "Éditeur de thème Pidgin" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "Contrôle Pidgin du thème GTK+" +msgstr "Permet de modifier le thème de Pidgin" #. *< type #. *< ui_requirement @@ -14445,7 +14315,6 @@ msgid "Options specific to Pidgin for Windows." msgstr "Options spécifiques à Pidgin Windows" -#, fuzzy msgid "" "Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr "" @@ -14489,6 +14358,9 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Ce plugin est utile pour débugger les clients ou serveurs XMPP." +#~ msgid "Invitation Rejected" +#~ msgstr "Invitation refusée" + #~ msgid "Cannot open socket" #~ msgstr "Impossible d'ouvrir la connexion." @@ -14513,22 +14385,12 @@ #~ msgid "Read error" #~ msgstr "Erreur de lecture" -#~ msgid "" -#~ "Could not establish a connection with the server:\n" -#~ "%s" -#~ msgstr "" -#~ "Impossible de se connecter au serveur :\n" -#~ "%s" - #~ msgid "Write error" #~ msgstr "Erreur d'écriture" #~ msgid "Last Activity" #~ msgstr "Dernière activité" -#~ msgid "Service Discovery Info" -#~ msgstr "Informations du service de découverte" - #~ msgid "Service Discovery Items" #~ msgstr "Items du service de découverte" @@ -14547,18 +14409,12 @@ #~ msgid "Ad-Hoc Commands" #~ msgstr "Commandes ad-hoc" -#~ msgid "PubSub Service" -#~ msgstr "Service PubSub" - #~ msgid "SOCKS5 Bytestreams" #~ msgstr "Flux de données SOCKS5" #~ msgid "Out of Band Data" #~ msgstr "Données hors de la bande passante" -#~ msgid "XHTML-IM" -#~ msgstr "XHTML-IM" - #~ msgid "In-Band Registration" #~ msgstr "Enregistrement intrabande" @@ -14655,9 +14511,6 @@ #~ msgid "Failed to connect to server." #~ msgstr "Impossible de se connecter au serveur." -#~ msgid "Read buffer full (2)" -#~ msgstr "Buffer de lecture plein (2)" - #~ msgid "Unparseable message" #~ msgstr "Impossible d'interpréter le message." @@ -14676,27 +14529,20 @@ #~ msgid "Error. SSL support is not installed." #~ msgstr "Support SSL non installé" +#~ msgid "Invalid username." +#~ msgstr "Nom d'utilisateur non valide." + #~ msgid "Incorrect password." #~ msgstr "Mot de passe incorrect." -#~ msgid "" -#~ "Could not connect to BOS server:\n" -#~ "%s" -#~ msgstr "" -#~ "Impossible de se connecter au serveur BOS :\n" -#~ "%s" +#~ msgid "Could Not Connect" +#~ msgstr "Impossible de se connecter." #~ msgid "You may be disconnected shortly. Check %s for updates." #~ msgstr "" #~ "Vous risquez être déconnecté sous peu. Consultez %s pour plus " #~ "d'informations." -#~ msgid "Could Not Connect" -#~ msgstr "Impossible de se connecter." - -#~ msgid "Invalid username." -#~ msgstr "Nom d'utilisateur non valide." - #~ msgid "Could not decrypt server reply" #~ msgstr "Impossible de déchiffrer la réponse du serveur" @@ -14727,46 +14573,30 @@ #~ msgid "Could not create listen socket" #~ msgstr "Impossible de créer le socket d'écoute." -#~ msgid "Could not resolve hostname" -#~ msgstr "Impossible de résoudre le nom de l'hôte." - -#, fuzzy #~ msgid "Incorrect Password" -#~ msgstr "Mot de passe incorrect." - -#~ msgid "" -#~ "Could not establish a connection with %s:\n" -#~ "%s" -#~ msgstr "" -#~ "Impossible de se connecter avec %s :\n" -#~ "%s" - -#~ msgid "Yahoo Japan" -#~ msgstr "Yahoo Japon" - -#~ msgid "Japan Pager server" -#~ msgstr "Serveur japonais de texto" - -#~ msgid "Japan file transfer server" -#~ msgstr "Server japonais de transfert de fichiers" - -#~ msgid "" -#~ "Lost connection with server\n" -#~ "%s" -#~ msgstr "" -#~ "Connexion perdue avec le serveur :\n" -#~ "%s" +#~ msgstr "Mot de passe incorrect" + +#~ msgid "Account locked: Too many failed login attempts" +#~ msgstr "Compte bloqué : trop de mauvais mots de passe" + +#~ msgid "Account locked: See the debug log" +#~ msgstr "Compte bloqué : regarder le journal de debug" + +#~ msgid "Activate which ID?" +#~ msgstr "Activer quelle identité ?" #~ msgid "Could not resolve host name" #~ msgstr "Impossible de résoudre le nom de l'hôte." -#, fuzzy #~ msgid "" #~ "Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support " #~ "was found." #~ msgstr "" -#~ "TLS/SSL est nécessaire pour la connexion au serveur. Aucun support de TLS/" -#~ "SSL n'a pu être trouvé." +#~ "Impossible de se connecter à %s : TLS/SSL est nécessaire mais aucun " +#~ "support n'est disponible." + +#~ msgid "_Proxy" +#~ msgstr "Serveur _mandataire" #~ msgid "Conversation Window Hiding" #~ msgstr "Quand la fenêtre de conversation est cachée" @@ -14780,9 +14610,6 @@ #~ msgid "Please select an image for the smiley." #~ msgstr "Veuillez choisir une image pour cette frimousse." -#~ msgid "Activate which ID?" -#~ msgstr "Activer quelle identité ?" - #~ msgid "Cursor Color" #~ msgstr "Couleur du curseur" @@ -14950,9 +14777,6 @@ #~ msgid "%s requests you to send them a file" #~ msgstr "%s vous demande de leur envoyer un fichier" -#~ msgid "TOC Protocol Plugin" -#~ msgstr "Plugin pour le protocole TOC" - #~ msgid "%s Options" #~ msgstr "Options de %s" diff -r b4daae0798e3 -r e1cd44c7c7af po/gl.po --- a/po/gl.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/gl.po Sat Jul 25 04:54:36 2009 +0000 @@ -1,22 +1,23 @@ -# translation of gl.po to Galego +# translation of gl.po to Galician # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# Frco. Javier Rial Rodríguez , 2008. +# Frco. Javier Rial Rodríguez , 2008,2009 +# Antón Méixome , 2009. # Previously translators: # Mar Castro 2007. msgid "" msgstr "" "Project-Id-Version: gl\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2008-12-15 13:44+0100\n" -"Last-Translator: Frco. Javier Rial Rodríguez \n" -"Language-Team: Galego \n" +"POT-Creation-Date: 2009-07-18 01:43-0700\n" +"PO-Revision-Date: 2009-07-15 15:15+0200\n" +"Last-Translator: Antón Méixome \n" +"Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.11.4\n" #. Translators may want to transliterate the name. @@ -28,7 +29,7 @@ msgid "%s. Try `%s -h' for more information.\n" msgstr "%s. Tente `%s -h' para máis información.\n" -#, fuzzy, c-format +#, c-format msgid "" "%s\n" "Usage: %s [OPTION]...\n" @@ -43,7 +44,7 @@ "Uso: %s [OPTION]...\n" "\n" " -c, --config=DIR usar DIR para ficheiros de configuración\n" -" -d, --debug imprimir mensaxes de depuración en stdout\n" +" -d, --debug imprimir mensaxes de depuración en stderr\n" " -h, --help mostrar esta axuda e saír\n" " -n, --nologin non iniciar a sesión automaticamente\n" " -v, --version mostrar a versión actual e saír\n" @@ -555,24 +556,23 @@ "novamente." msgid "No such command." -msgstr "Non existe o comando." +msgstr "Non existe a orde." msgid "Syntax Error: You typed the wrong number of arguments to that command." msgstr "" -"Erro de sintaxe: escribiu un número incorrecto de argumentos para ese " -"comando." +"Erro de sintaxe: escribiu un número incorrecto de argumentos para esa orde." msgid "Your command failed for an unknown reason." -msgstr "O seu comando fallou por motivos descoñecidos." +msgstr "A súa orde fallou por motivos descoñecidos." msgid "That command only works in chats, not IMs." -msgstr "Ese comando só funciona en conversas, non en MIs." +msgstr "Esa orde só funciona en conversas, non nas MI." msgid "That command only works in IMs, not chats." -msgstr "Ese comando só funciona en MIs, non en conversas." +msgstr "Esa orde só funciona nas MI, non en conversas." msgid "That command doesn't work on this protocol." -msgstr "Ese comando non funciona neste protocolo." +msgstr "Esa orde non funciona neste protocolo." msgid "Message was not sent, because you are not signed on." msgstr "Non se enviou a mensaxe porque non está conectado." @@ -638,41 +638,41 @@ msgid "List of %d user:\n" msgid_plural "List of %d users:\n" msgstr[0] "Lista de %d usuario:\n" -msgstr[1] "Lista de %d usuario:\n" +msgstr[1] "Lista de %d usuarios:\n" msgid "Supported debug options are: version" -msgstr "As opcións de depuración soportadas son: version" +msgstr "As opcións de depuración compatíbeis son: version" msgid "No such command (in this context)." -msgstr "Non existe o comando (neste contexto)." +msgstr "Non existe a orde (neste contexto)." msgid "" "Use \"/help <command>\" for help on a specific command.\n" "The following commands are available in this context:\n" msgstr "" -"Use \"/help <comando>\" para obter axuda sobre un comando específico.\n" -"Os seguintes comandos están dispoñíbeis neste contexto:\n" +"Use \"/help <orde>\" para obter axuda sobre unha orde específica.\n" +"As seguintes ordes están dispoñíbeis neste contexto:\n" #, c-format msgid "" "%s is not a valid message class. See '/help msgcolor' for valid message " "classes." msgstr "" -"%s non é unha clase válida de mensaxe. Consulte o ficheiro '/help msgcolor' " -"para ver as mensaxes de clase válidas." +"%s non é unha clase válida de mensaxe. Consulte '/help msgcolor' para ver as " +"mensaxes de clase válidas." #, c-format msgid "%s is not a valid color. See '/help msgcolor' for valid colors." msgstr "" -"%s non é unha cor válida. Consulte o ficheiro '/help msgcolor' para ver as " -"cores válidas." +"%s non é unha cor válida. Consulte '/help msgcolor' para ver as cores " +"válidas." msgid "" "say <message>: Send a message normally as if you weren't using a " "command." msgstr "" "say <mensaxe>: Envía unha mensaxe normalmente, como se non estivese " -"utilizando un comando." +"utilizando unha orde." msgid "me <action>: Send an IRC style action to a buddy or chat." msgstr "" @@ -690,7 +690,7 @@ msgstr "clear: Limpa o historial da conversa." msgid "help <command>: Help on a specific command." -msgstr "help <comando>: Axuda sobre un comando específico." +msgstr "help <orde>: Axuda sobre unha orde específica." msgid "users: Show the list of users in the chat." msgstr "users: Mostra a lista de usuarios na sala de conversa." @@ -741,7 +741,7 @@ msgstr "Limpar" msgid "Filter:" -msgstr "Filtro: " +msgstr "Filtro:" msgid "Pause" msgstr "Deter" @@ -750,7 +750,7 @@ msgid "File Transfers - %d%% of %d file" msgid_plural "File Transfers - %d%% of %d files" msgstr[0] "Transferencias de ficheiros - %d%% de %d ficheiro" -msgstr[1] "Transferencias de ficheiros - %d%% de %d ficheiro" +msgstr[1] "Transferencias de ficheiros - %d%% de %d ficheiros" #. Create the window. msgid "File Transfers" @@ -871,12 +871,11 @@ msgid "System Log" msgstr "Rexistro do sistema" -#, fuzzy msgid "Calling ... " -msgstr "Calculando..." +msgstr "Chamando... " msgid "Hangup" -msgstr "" +msgstr "Colgar" #. Number of actions msgid "Accept" @@ -886,31 +885,32 @@ msgstr "Rexeitar" msgid "Call in progress." -msgstr "" +msgstr "Chamada en curso." msgid "The call has been terminated." -msgstr "" +msgstr "A chamada terminou." #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s quere comezar unha sesión de audio contigo." #, c-format msgid "%s is trying to start an unsupported media session type with you." msgstr "" - -#, fuzzy +"%s está intentando comezar un tipo de sesión multimedia non compatíbel " +"contigo." + msgid "You have rejected the call." -msgstr "Vostede saíu da canle %s%s" +msgstr "Vostede rexeitou a chamada." msgid "call: Make an audio call." -msgstr "" +msgstr "chamada: Facer unha chamada de audio." msgid "Emails" msgstr "Correos electrónicos" msgid "You have mail!" -msgstr "Ten un correo!" +msgstr "Ten correo!" msgid "Sender" msgstr "Remitente" @@ -922,7 +922,7 @@ msgid "%s (%s) has %d new message." msgid_plural "%s (%s) has %d new messages." msgstr[0] "%s (%s) ten %d mensaxe nova." -msgstr[1] "%s (%s) ten %d mensaxe nova." +msgstr[1] "%s (%s) ten %d mensaxes novas." msgid "New Mail" msgstr "Correo novo" @@ -1021,7 +1021,7 @@ msgstr "Editar aviso de contacto" msgid "Pounce Who" -msgstr "Avisar a quen?" +msgstr "Avisar a quen" #. Account: msgid "Account:" @@ -1078,7 +1078,7 @@ msgstr "Enviar unha mensaxe" msgid "Execute a command" -msgstr "Executar un comando" +msgstr "Executar unha orde" msgid "Play a sound" msgstr "Reproducir un son" @@ -1279,7 +1279,7 @@ msgstr "Ton de aviso da consola" msgid "Command" -msgstr "Comando" +msgstr "Orde" msgid "No Sound" msgstr "Sen son" @@ -1295,7 +1295,7 @@ "Sound Command\n" "(%s for filename)" msgstr "" -"Comandos de son\n" +"Ordes de son\n" "(%s para nome de ficheiro)" #. Sound options @@ -1418,8 +1418,8 @@ msgid "This plugin cannot be loaded because it was not built with X11 support." msgstr "" -"Este complemento non se pode cargar porque non se construíu con soporte de " -"X11." +"Este complemento non se pode cargar porque non se construíu con " +"compatibilidade de X11." msgid "GntClipboard" msgstr "GntClipboard" @@ -1560,22 +1560,24 @@ "\n" "Fetching TinyURL..." msgstr "" +"\n" +"Obtendo TinyURL..." msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "Só crear TinyURL para enderezos deste tamaño ou superior" msgid "TinyURL (or other) address prefix" -msgstr "" - -#, fuzzy +msgstr "TinyURL (ou outro) prefixo de enderezo" + msgid "TinyURL" -msgstr "URL da canción" +msgstr "TinyURL" msgid "TinyURL plugin" -msgstr "" +msgstr "Plugin TinyURL" msgid "When receiving a message with URL(s), TinyURL for easier copying" msgstr "" +"Ao recibir unha mensaxe con URL, utilizar o TinyURL para o copiado rápido" msgid "accounts" msgstr "contas" @@ -1781,7 +1783,6 @@ msgstr "+++ %s desconectouse" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "Erro descoñecido" @@ -1828,9 +1829,8 @@ msgid "%s left the room (%s)." msgstr "%s saíu da sala (%s)." -#, fuzzy msgid "Invite to chat" -msgstr "Convidar a unha conferencia" +msgstr "Convidar a unha conversa" #. Put our happy label in it. msgid "" @@ -1973,6 +1973,10 @@ msgstr "Iniciando transferencia de %s desde %s" #, c-format +msgid "Transfer of file
%s complete" +msgstr "Transferencia do ficheiro %s completada" + +#, c-format msgid "Transfer of file %s complete" msgstr "Terminou a transferencia do ficheiro %s" @@ -2003,31 +2007,31 @@ msgstr "A transferencia de ficheiros desde %s fallou." msgid "Run the command in a terminal" -msgstr "Executar o comando nun terminal" +msgstr "Executar a orde nun terminal" msgid "The command used to handle \"aim\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"aim\", se está activado." +msgstr "A orde usada para manipular os URL \"aim\", se está activado." msgid "The command used to handle \"gg\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"gg\", se está activado." +msgstr "A orde usada para manipular os URL \"gg\", se está activado." msgid "The command used to handle \"icq\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"icq\", se está activado." +msgstr "A orde usada para manipular os URL \"icq\", se está activado." msgid "The command used to handle \"irc\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"irc\", se está activado." +msgstr "A orde usada para manipular os URL \"irc\", se está activado." msgid "The command used to handle \"msnim\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"msnim\", se está activado." +msgstr "A orde usada para manipular os URL \"msnim\", se está activado." msgid "The command used to handle \"sip\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"sip\", se está activado." +msgstr "A orde usada para manipular os URL \"sip\", se está activado." msgid "The command used to handle \"xmpp\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"xmpp\", se está activado." +msgstr "A orde usada para manipular os URL \"xmpp\", se está activado." msgid "The command used to handle \"ymsgr\" URLs, if enabled." -msgstr "O comando usado para manipular os URL \"ymsgr\", se está activado." +msgstr "A orde usada para manipular os URL \"ymsgr\", se está activado." msgid "The handler for \"aim\" URLs" msgstr "O manipulador dos URL \"aim\"" @@ -2057,88 +2061,88 @@ "True if the command specified in the \"command\" key should handle \"aim\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"aim\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"aim\"." msgid "" "True if the command specified in the \"command\" key should handle \"gg\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"gg\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"gg\"." msgid "" "True if the command specified in the \"command\" key should handle \"icq\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"icq\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"icq\"." msgid "" "True if the command specified in the \"command\" key should handle \"irc\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"irc\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"irc\"." msgid "" "True if the command specified in the \"command\" key should handle \"msnim\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"msnim\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"msnim\"." msgid "" "True if the command specified in the \"command\" key should handle \"sip\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"sip\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"sip\"." msgid "" "True if the command specified in the \"command\" key should handle \"xmpp\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"xmpp\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"xmpp\"." msgid "" "True if the command specified in the \"command\" key should handle \"ymsgr\" " "URLs." msgstr "" -"É verdadeiro se o comando especificado na chave \"command\" debe manipular " -"os URL \"ymsgr\"." +"É verdadeiro se a orde especificada na chave \"command\" debe manipular os " +"URL \"ymsgr\"." msgid "" "True if the command used to handle this type of URL should be run in a " "terminal." msgstr "" -"É verdadeiro se o comando usado para manipular este tipo de URL debe ser " +"É verdadeiro se a orde usada para manipular este tipo de URL debe ser " "executado nun terminal." msgid "Whether the specified command should handle \"aim\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"aim\"" +msgstr "Indica se a orde especificada debe manipular os URL \"aim\"" msgid "Whether the specified command should handle \"gg\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"gg\"" +msgstr "Indica se a orde especificada debe manipular os URL \"gg\"" msgid "Whether the specified command should handle \"icq\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"icq\"" +msgstr "Indica se a orde especificada debe manipular os URL \"icq\"" msgid "Whether the specified command should handle \"irc\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"irc\"" +msgstr "Indica se a orde especificada debe manipular os URL \"irc\"" msgid "Whether the specified command should handle \"msnim\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"msnim\"" +msgstr "Indica se a orde especificada debe manipular os URL \"msnim\"" msgid "Whether the specified command should handle \"sip\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"sip\"" +msgstr "Indica se a orde especificada debe manipular os URL \"sip\"" msgid "Whether the specified command should handle \"xmpp\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"xmpp\"" +msgstr "Indica se a orde especificada debe manipular os URL \"xmpp\"" msgid "Whether the specified command should handle \"ymsgr\" URLs" -msgstr "Indica se o comando especificado debe manipular os URL \"ymsgr\"" +msgstr "Indica se a orde especificada debe manipular os URL \"ymsgr\"" msgid "The logger has no read function" msgstr "" @@ -2188,9 +2192,8 @@ msgid "(%s) %s : %s\n" msgstr "(%s) %s : %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "Erro ao crear a conexión" +msgstr "Erro ao crear a conversa." #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2377,7 +2380,7 @@ #. * summary #. * description msgid "Allows control by entering commands in a file." -msgstr "Permite controlar o programa introducindo comandos nun ficheiro." +msgstr "Permite controlar o programa introducindo ordes nun ficheiro." msgid "Minutes" msgstr "Minutos" @@ -2424,15 +2427,15 @@ #. *< version #. * summary msgid "Test plugin IPC support, as a client." -msgstr "Probar o soporte do complemento IPC como un cliente." +msgstr "Probar a compatibilidade do complemento IPC como un cliente." #. * description msgid "" "Test plugin IPC support, as a client. This locates the server plugin and " "calls the commands registered." msgstr "" -"Probar o soporte do complemento IPC como un cliente. Isto localiza o " -"complemento de servidor e chama aos comandos rexistrados." +"Probar a compatibilidade do complemento IPC como un cliente. Isto localiza o " +"complemento de servidor e chama as ordes rexistradas." #. *< type #. *< ui_requirement @@ -2447,13 +2450,13 @@ #. *< version #. * summary msgid "Test plugin IPC support, as a server." -msgstr "Probar o soporte do complemento IPC como un servidor." +msgstr "Probar a compatibilidade do complemento IPC como un servidor." #. * description msgid "Test plugin IPC support, as a server. This registers the IPC commands." msgstr "" -"Probar o soporte do complemento IPC como un servidor. Isto rexistra os " -"comandos IPC." +"Probar a compatibilidade do complemento IPC como un servidor. Isto rexistra " +"as ordes IPC." msgid "Join/Part Hiding Configuration" msgstr "Configuración da ocultación de Unirse/Deixar" @@ -2598,7 +2601,6 @@ msgstr "Inclúe outros rexistros de clientes de MI no visualizador de rexistro." #. * 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" @@ -2656,13 +2658,12 @@ msgid "Save messages sent to an offline user as pounce." msgstr "Gardar como avisos as mensaxes enviadas a un usuario desconectado." -#, fuzzy msgid "" "The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." msgstr "" "O resto das mensaxes gardaranse como avisos. Pode editar/eliminar os avisos " -"na xanela de diálogo 'Avisos de amigo'." +"no cadro de diálogo 'Avisos de amigo'." #, c-format msgid "" @@ -2691,9 +2692,8 @@ msgid "Do not ask. Always save in pounce." msgstr "Non preguntar. Gardar sempre nun aviso." -#, fuzzy msgid "One Time Password" -msgstr "Introducir o contrasinal" +msgstr "Contrasinal de un só uso" #. *< type #. *< ui_requirement @@ -2702,13 +2702,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "Compatibilidade con contrasinal de un só uso" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "Obriga a que os contrasinais só teñan un uso." #. * description msgid "" @@ -2716,6 +2716,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Permítelle obrigar respecto dunha conta que os contrasinais que non sexan " +"gardados só sexan usados nunha única conexión correcta.\n" +"Nota. O contrasinal da conta non debe ser gardado para que isto funcione." #. *< type #. *< ui_requirement @@ -2730,7 +2733,7 @@ #. *< version #. *< summary msgid "Provides support for loading perl plugins." -msgstr "Proporciona o soporte para cargar complementos en perl." +msgstr "Proporciona a compatibilidade para cargar complementos en perl." msgid "Psychic Mode" msgstr "Modo psíquico" @@ -2811,7 +2814,7 @@ #. * summary #. * description msgid "Provides SSL support through GNUTLS." -msgstr "Proporciona soporte SSL a través de GNUTLS." +msgstr "Proporciona a compatibilidade SSL a través de GNUTLS." #. *< type #. *< ui_requirement @@ -2827,7 +2830,7 @@ #. * summary #. * description msgid "Provides SSL support through Mozilla NSS." -msgstr "Proporciona soporte SSL a través do NSS de Mozilla." +msgstr "Proporciona compatibilidade SSL a través do NSS de Mozilla." #. *< type #. *< ui_requirement @@ -2843,7 +2846,7 @@ #. * summary #. * description msgid "Provides a wrapper around SSL support libraries." -msgstr "Proporciona un wrapper para as bibliotecas de soporte de SSL." +msgstr "Proporciona un wrapper para as bibliotecas de compatibilidade con SSL." #, c-format msgid "%s is no longer away." @@ -2901,7 +2904,7 @@ msgstr "Cargador de complementos Tcl" msgid "Provides support for loading Tcl plugins" -msgstr "Proporciona o soporte para cargar complementos Tcl" +msgstr "Proporciona a compatabilidade para cargar complementos Tcl" msgid "" "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, " @@ -2911,18 +2914,16 @@ "complementos de TCL, precisa instalar ActiveTCL desde o enderezo http://www." "activestate.com\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"Non se encontrou o toolkit Apple Bonjour for Windows, vexa a sección de " +"Non se encontrou o toolkit Apple Bonjour para Windows, vexa a sección de " "preguntas máis frecuentes (FAQ) en: http://d.pidgin.im/BonjourWindows para " "máis información." -#, fuzzy msgid "Unable to listen for incoming IM connections" -msgstr "Non é posíbel escoitar as conexións entrantes de MI\n" +msgstr "Non é posíbel escoitar as conexións entrantes de MI" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2962,9 +2963,8 @@ msgstr "Persoa Purple" #. Creating the options for the protocol -#, fuzzy msgid "Local Port" -msgstr "Localidade" +msgstr "Porto local" msgid "Bonjour" msgstr "Bonjour" @@ -2976,24 +2976,20 @@ msgid "Unable to send the message, the conversation couldn't be started." msgstr "Non é posíbel enviar a mensaxe; non se puido iniciar a conversa." -#, fuzzy, c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"Non se puido crear un conectador:\n" -"%s" - -#, fuzzy, c-format +msgstr "Non se puido crear un conectador: %s" + +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "Non se puido vincular o conectador ao porto" - -#, fuzzy, c-format +msgstr "Non se puido vincular o conectador ao porto: %s" + +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"Non se puido crear un conectador:\n" -"%s" +msgstr "Non foi posíbel escoitar no conectador: %s" msgid "Error communicating with local mDNSResponder." -msgstr "Erro ao comunicar co mDNSResponder local" +msgstr "Erro ao comunicar co mDNSResponder local." msgid "Invalid proxy settings" msgstr "A configuración do proxy non é válida" @@ -3040,17 +3036,14 @@ msgid "Load buddylist from file..." msgstr "Cargar a lista de contactos desde un ficheiro..." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "Encher os campos de rexistro." - -#, fuzzy +msgstr "Encher en todos os campos de rexistro" + msgid "Passwords do not match" -msgstr "Os contrasinais non coinciden." - -#, fuzzy +msgstr "Os contrasinais non coinciden" + msgid "Unable to register new account. An unknown error occurred." -msgstr "Non se puido rexistrar a nova conta. Produciuse un erro.\n" +msgstr "Non se puido rexistrar a nova conta. Produciuse un erro." msgid "New Gadu-Gadu Account Registered" msgstr "Nova conta rexistrada de Gadu-Gadu" @@ -3065,11 +3058,10 @@ msgstr "Contrasinal (de novo)" msgid "Enter captcha text" -msgstr "" - -#, fuzzy +msgstr "Introduza o texto CAPTCHA" + msgid "Captcha" -msgstr "Imaxe captcha" +msgstr "Imaxe CAPTCHA" msgid "Register New Gadu-Gadu Account" msgstr "Rexistrar unha conta nova de Gadu-Gadu" @@ -3090,7 +3082,7 @@ msgstr "Home ou muller" msgid "Male" -msgstr "Male" +msgstr "Home" msgid "Female" msgstr "Muller" @@ -3208,9 +3200,9 @@ msgid "Chat _name:" msgstr "_Nome da conversa:" -#, fuzzy, c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Non se puido conectar ao servidor." +msgstr "Non se puido conectar ao servidor '%s': %s" #. 1. connect to server #. connect to the server @@ -3223,9 +3215,8 @@ msgid "This chat name is already in use" msgstr "O nome desta conversa xa está en uso" -#, fuzzy msgid "Not connected to the server" -msgstr "Non está conectado ao servidor." +msgstr "Non está conectado ao servidor" msgid "Find buddies..." msgstr "Buscar contactos..." @@ -3266,13 +3257,12 @@ msgid "Gadu-Gadu User" msgstr "Usuario de Gadu-Gadu" -#, fuzzy msgid "GG server" -msgstr "A obter o servidor" +msgstr "Servidor GC" #, c-format msgid "Unknown command: %s" -msgstr "Comando descoñecido: %s" +msgstr "Orde descoñecida: %s" #, c-format msgid "current topic is: %s" @@ -3284,7 +3274,6 @@ msgid "File Transfer Failed" msgstr "Fallou a transferencia do ficheiro" -#, fuzzy msgid "Unable to open a listening port." msgstr "Non se puido abrir un porto de escoita." @@ -3308,11 +3297,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"Perdeuse a conexión co servidor:\n" -"%s" +msgstr "Perdeuse a conexión co servidor: %s" msgid "View MOTD" msgstr "Ver MOTD" @@ -3323,24 +3310,23 @@ msgid "_Password:" msgstr "_Contrasinal:" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "Os alias de IRC non poden conter espazos en branco" +msgstr "Os alias de IRC e servidor non poden conter espazos en branco" msgid "SSL support unavailable" -msgstr "O soporte de SSL non está dispoñíbel" +msgstr "A compatibilidade con SSL non está dispoñíbel" msgid "Unable to connect" msgstr "Non é posíbel conectar" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "Non se puido conectar a %s" - -#, fuzzy, c-format +msgstr "Non se puido conectar: %s" + +#, c-format msgid "Server closed the connection" -msgstr "O servidor pechou a conexión." +msgstr "O servidor cerrou a conexión" msgid "Users" msgstr "Usuarios" @@ -3524,13 +3510,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 "O nome desta conversa xa está en uso" - -#, fuzzy +msgstr "O alcume \"%s\" xa está en uso." + msgid "Nickname in use" -msgstr "Alcume" +msgstr "Alcume en uso" msgid "Cannot change nick" msgstr "Non se pode cambiar o alias" @@ -3577,7 +3562,7 @@ msgstr "ctcp : envía unha mensaxe ctcp ao alias." msgid "chanserv: Send a command to chanserv" -msgstr "chanserv: Enviar un comando ao chanserv" +msgstr "chanserv: Enviar unha orde ao chanserv" msgid "" "deop <nick1> [nick2] ...: Remove channel operator status from " @@ -3633,7 +3618,7 @@ msgstr "me <acción para realizar>: Realizar unha acción." msgid "memoserv: Send a command to memoserv" -msgstr "memoserv: Enviar un comando ao memoserv" +msgstr "memoserv: Enviar unha orde ao memoserv" msgid "" "mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel " @@ -3656,7 +3641,7 @@ msgstr "nick <novo alias>: Cambia o seu alias." msgid "nickserv: Send a command to nickserv" -msgstr "nickserv: Enviar un comando ao nickserv" +msgstr "nickserv: Enviar unha orde ao nickserv" msgid "notice <target<: Send a notice to a user or channel." msgstr "notice <target<: Enviar un aviso a un usuario ou canle." @@ -3676,7 +3661,7 @@ "utilizalo." msgid "operserv: Send a command to operserv" -msgstr "operserv: Enviar un comando ao operserv" +msgstr "operserv: Enviar unha orde ao operserv" msgid "" "part [room] [message]: Leave the current channel, or a specified channel, " @@ -3701,10 +3686,10 @@ msgid "quit [message]: Disconnect from the server, with an optional message." msgstr "" -"quit [mensaxe]: Desconéctase do servidor actual cunha mensaxe opcional" +"quit [mensaxe]: Desconéctase do servidor actual cunha mensaxe opcional." msgid "quote [...]: Send a raw command to the server." -msgstr "quote [...]: Enviar un comando en bruto ao servidor." +msgstr "quote [...]: Enviar unha orde en bruto ao servidor." msgid "" "remove <nick> [message]: Remove someone from a room. You must be a " @@ -3764,22 +3749,17 @@ msgstr "Erro descoñecido" msgid "Ad-Hoc Command Failed" -msgstr "Fallou o comando Ad-Hoc" +msgstr "Fallou a orde Ad-Hoc" msgid "execute" msgstr "executar" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." -msgstr "" -"O servidor require TLS/SSL para iniciar a sesión. Non se dispón de soporte " -"TLS/SSL." - -#, fuzzy +msgstr "O servidor require TLS/SSL mais non está dispoñíbel." + msgid "You require encryption, but no TLS/SSL support was found." msgstr "" -"O servidor require TLS/SSL para iniciar a sesión. Non se dispón de soporte " -"TLS/SSL." +"Solicitou o cifrado mais non está dispoñíbel a capacidade para TLS/SSL." msgid "Server requires plaintext authentication over an unencrypted stream" msgstr "" @@ -3796,13 +3776,11 @@ msgid "Plaintext Authentication" msgstr "Autenticación con texto plano" -#, fuzzy msgid "SASL authentication failed" -msgstr "Fallou a autenticación" - -#, fuzzy +msgstr "Fallou a autenticación SASL" + msgid "Invalid response from server" -msgstr "Resposta non válida do servidor." +msgstr "A resposta do servidor non é válida" msgid "Server does not use any supported authentication method" msgstr "O servidor non usa ningún método de autenticación coñecido" @@ -3812,41 +3790,33 @@ "Vostede solicitou a codificación, mais non está dispoñíbel neste servidor." msgid "Invalid challenge from server" -msgstr "O desafío do servidor non é válido." - -#, fuzzy, c-format +msgstr "O desafío do servidor non é válido" + +#, c-format msgid "SASL error: %s" -msgstr "Erro de SASL" +msgstr "Erro de SASL: %s" msgid "The BOSH connection manager terminated your session." -msgstr "" - -#, fuzzy +msgstr "O xestor de conexión BOSH terminou a súa sesión." + msgid "No session ID given" -msgstr "Non se deu ningunha razón" - -#, fuzzy +msgstr "Non se proporcionou ningún ID de sesión" + msgid "Unsupported version of BOSH protocol" -msgstr "Versión non soportada" - -#, fuzzy +msgstr "A versión do protocolo BOSH non é compatíbel" + msgid "Unable to establish a connection with the server" -msgstr "" -"Non se puido establecer unha conexión co servidor:\n" -"%s" - -#, fuzzy, c-format +msgstr "Non se puido estabelecer unha conexión co servidor" + +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "" -"Non se puido establecer unha conexión co servidor:\n" -"%s" - -#, fuzzy +msgstr "Non se puido establecer unha conexión co servidor: %s" + msgid "Unable to establish SSL connection" -msgstr "Non é posíbel comezar a conexión" +msgstr "Non é posíbel comezar a conexión SSL" msgid "Full Name" -msgstr "Nome completo:" +msgstr "Nome completo" msgid "Family Name" msgstr "Apelidos" @@ -3911,9 +3881,8 @@ msgid "Operating System" msgstr "Sistema operativo" -#, fuzzy msgid "Local Time" -msgstr "Ficheiro local:" +msgstr "Hora local" msgid "Priority" msgstr "Prioridade" @@ -3923,11 +3892,10 @@ #, c-format msgid "%s ago" -msgstr "" - -#, fuzzy +msgstr "Hai %s " + msgid "Logged Off" -msgstr "Con sesión iniciada" +msgstr "Sesión cerrada" msgid "Middle Name" msgstr "Segundo nome" @@ -4096,19 +4064,15 @@ msgid "Find Rooms" msgstr "Buscar salas" -#, fuzzy msgid "Affiliations:" -msgstr "Alias:" - -#, fuzzy +msgstr "Afiliacións:" + msgid "No users found" -msgstr "Non se encontrou usuarios coincidentes" - -#, fuzzy +msgstr "Non se encontrou usuarios" + msgid "Roles:" -msgstr "Papel" - -#, fuzzy +msgstr "Roles:" + msgid "Ping timed out" msgstr "Excedeuse o tempo de espera do ping" @@ -4116,6 +4080,8 @@ "Unable to find alternative XMPP connection methods after failing to connect " "directly." msgstr "" +"Non foi posíbel encontrar métodos de conexión XMPP alternativos despois de " +"que fallase a conexión directa." msgid "Invalid XMPP ID" msgstr "ID de XMPP non válido" @@ -4123,9 +4089,8 @@ msgid "Invalid XMPP ID. Domain must be set." msgstr "ID de XMPP non válido. Débese definir o dominio." -#, fuzzy msgid "Malformed BOSH URL" -msgstr "Fallou ao conectar ao servidor." +msgstr "O enderezo URL BOSH está malformado" #, c-format msgid "Registration of %s@%s successful" @@ -4196,10 +4161,6 @@ msgid "Change Registration" msgstr "Modificar rexistro" -#, fuzzy -msgid "Malformed BOSH Connect Server" -msgstr "Fallou ao conectar ao servidor." - msgid "Error unregistering account" msgstr "Erro ao cancelar o rexistro de conta" @@ -4219,7 +4180,7 @@ msgstr "Reinicializando o fluxo" msgid "Server doesn't support blocking" -msgstr "" +msgstr "O servidor non admite o bloqueo" msgid "Not Authorized" msgstr "Non autorizado" @@ -4443,13 +4404,13 @@ msgstr "Condición non definida" msgid "Unsupported Encoding" -msgstr "Codificación non soportada" +msgstr "Codificación incompatíbel" msgid "Unsupported Stanza Type" -msgstr "Tipo de parágrafo non soportado" +msgstr "Tipo de parágrafo non compatíbel" msgid "Unsupported Version" -msgstr "Versión non soportada" +msgstr "Versión non compatíbel" msgid "XML Not Well Formed" msgstr "XML incorrectamente formado" @@ -4485,22 +4446,21 @@ msgid "Unable to ping user %s" msgstr "Non é posíbel facer ping ao usuario %s" -#, fuzzy, c-format +#, c-format msgid "Unable to buzz, because there is nothing known about %s." -msgstr "" -"Non é posíbel enviar un zunido porque non se coñece nada do usuario %s." - -#, fuzzy, c-format +msgstr "Non é posíbel enviar un zunido porque non se coñece nada de %s." + +#, c-format msgid "Unable to buzz, because %s might be offline." -msgstr "" -"Non é posíbel enviar un zunido porque pode que o usuario %s estea " -"desconectado." - -#, fuzzy, c-format +msgstr "Non é posíbel enviar un zunido porque %s pode que estea desconectado." + +#, c-format msgid "" "Unable to buzz, because %s does not support it or does not wish to receive " "buzzes now." -msgstr "Non é posíbel enviar un zunido porque o usuario %s non o soporta." +msgstr "" +"Non é posíbel enviar un zunido porque %s non o admite ou non quere recibir " +"zunidos agora." #, c-format msgid "Buzzing %s..." @@ -4515,35 +4475,33 @@ msgid "%s has buzzed you!" msgstr "%s envioulle un zunido!" -#, fuzzy, c-format +#, c-format msgid "Unable to initiate media with %s: invalid JID" -msgstr "Non se puido enviar o ficheiro a %s, JID non válido" - -#, fuzzy, c-format +msgstr "Non se puido iniciar o medio con %s: o JID non é correcto" + +#, c-format msgid "Unable to initiate media with %s: user is not online" -msgstr "Non se puido enviar o ficheiro a %s, o usuario non está conectado" - -#, fuzzy, c-format +msgstr "Non se puido iniciar o medio con %s: o usuario non está conectado" + +#, c-format msgid "Unable to initiate media with %s: not subscribed to user presence" msgstr "" -"Non se puido enviar o ficheiro a %s, non está subscrito á presenza do usuario" - -#, fuzzy +"Non se puido iniciar o medio con %s: non está subscrito á presenza do usuario" + msgid "Media Initiation Failed" -msgstr "Fallou o rexistro" - -#, fuzzy, c-format +msgstr "Fallou o iniciación do medio" + +#, c-format msgid "" "Please select the resource of %s with which you would like to start a media " "session." -msgstr "Seleccione o recurso de %s ao que quere enviar o ficheiro" +msgstr "Seleccione o recurso de %s co que quere iniciar unha sesión no medio." msgid "Select a Resource" msgstr "Seleccione un recurso" -#, fuzzy msgid "Initiate Media" -msgstr "Iniciar a _conversa" +msgstr "Iniciar o medio" msgid "config: Configure a chat room." msgstr "config: Configurar unha sala de conversa." @@ -4563,21 +4521,21 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <usuario> [sala]: Excluír un usuario da sala." -#, 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 <usuario> <owner|admin|member|outcast|none>: Definir a " -"afiliación dun usuario coa sala." - -#, fuzzy +"affiliado <usuario> <propietario|admin|membro|outcast|ningún> " +"[nick1] [nick2] ...: Obter os usuarios cunha afiliación ou conxunto de " +"afiliación de usuarios coa sala." + msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <usuario> <moderator|participant|visitor|none>: Definir o " -"papel dun usuario na sala." +"rol <usuario> <moderador|participante|visitante|ningún>: " +"[nick1] [nick2] ...: Obter os usuarios cun rol ou conxunto de roles de " +"usuario coa sala." msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <usuario> [mensaxe]: Convidar un usuario á sala." @@ -4641,7 +4599,7 @@ msgstr "Proxies de transferencia de ficheiros" msgid "BOSH URL" -msgstr "" +msgstr "URL BOSH" #. this should probably be part of global smiley theme settings later on, #. shared with MSN @@ -4705,38 +4663,34 @@ msgid "_Accept Defaults" msgstr "_Aceptar os valores predeterminados" -#, fuzzy msgid "No reason" msgstr "Non se deu ningunha razón" -#, fuzzy, c-format +#, c-format msgid "You have been kicked: (%s)" -msgstr "Foi expulsado por %s: (%s)" - -#, fuzzy, c-format +msgstr "Vostede foi expulsado: (%s)" + +#, c-format msgid "Kicked (%s)" -msgstr "Expulsado por %s (%s)" - -#, fuzzy +msgstr "Expulsado (%s)" + msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Produciuse un erro ao abrir o ficheiro." - -#, fuzzy +msgstr "Produciuse un erro na transferencia do fluxo de bytes in-band\n" + msgid "Transfer was closed." -msgstr "Fallou a transferencia do ficheiro" - -#, fuzzy +msgstr "A transferencia foi cerrada." + msgid "Failed to open the file" -msgstr "Fallo ao abrir o ficheiro '%s': %s" +msgstr "Fallou ao abrir o ficheiro" msgid "Failed to open in-band bytestream" -msgstr "" +msgstr "Produciuse un erro no fluxo de bytes in-band" #, c-format msgid "Unable to send file to %s, user does not support file transfers" msgstr "" -"Non se puido enviar o ficheiro a %s, o usuario non soporta a transferencia " -"de ficheiros" +"Non se puido enviar o ficheiro a %s, o usuario non admite a transferencia de " +"ficheiros" msgid "File Send Failed" msgstr "Fallou o envío do ficheiro" @@ -4935,7 +4889,7 @@ #, c-format msgid "Command disabled" -msgstr "Comando desactivado" +msgstr "Orde desactivada" #, c-format msgid "File operation error" @@ -5027,7 +4981,7 @@ #, c-format msgid "Kids Passport without parental consent" -msgstr "Pasaporte de menores sen consentimento paterno" +msgstr "Pasaporte de menores sen consentemento paterno" #, c-format msgid "Passport account not yet verified" @@ -5054,9 +5008,29 @@ msgid "Non-IM Contacts" msgstr "Contactos non MI" -#, fuzzy, c-format +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" +"%s envía unha chiscadela. Prema aquí para " +"reproducila" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "%s enviou unha chiscadel mais pode que non se garde" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" +"%s enviou un clip de voz. Prema aquí para reproducilo" + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "%s enviou clip de voz mais pode que non se garde" + +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." -msgstr "%s enviou unconvite de cámara web, mais aínda non está soportada." +msgstr "%s enviou un convite de chat de voz mais isto aínda non é posíbel." msgid "Nudge" msgstr "Chamar a atención" @@ -5175,9 +5149,8 @@ msgid "Game Title" msgstr "Título do xogo" -#, fuzzy msgid "Office Title" -msgstr "Título" +msgstr "Título de oficina" msgid "Set Friendly Name..." msgstr "Establecer o nome do contacto..." @@ -5211,7 +5184,31 @@ msgid "SSL support is needed for MSN. Please install a supported SSL library." msgstr "" -"Necesítase o soporte SSL para o MSN. Instale unha biblioteca SSL soportada." +"Necesítase a compatibilidade con SSL para o MSN. Instale unha biblioteca SSL " +"compatíbel." + +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Non se puido engadir o contacto %s porque o nome de usuario non é válido. Os " +"nomes de usuario deben ser enderezos de correo electrónico válidos." + +msgid "Unable to Add" +msgstr "Non se puido engadir" + +msgid "Authorization Request Message:" +msgstr "Mensaxe de solicitude de autorización:" + +msgid "Please authorize me!" +msgstr "Por favor, autoríceme!" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "_Aceptar" msgid "Error retrieving profile" msgstr "Erro ao obter o perfil" @@ -5405,13 +5402,14 @@ msgid "%s just sent you a Nudge!" msgstr "%s acáballe de dar un cobadazo!" -#, fuzzy, c-format +#, c-format msgid "Unknown error (%d): %s" -msgstr "Erro descoñecido (%d)" +msgstr "Erro descoñecido (%d): %s" msgid "Unable to add user" msgstr "Non é posíbel engadir o usuario" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "Erro descoñecido (%d)" @@ -5445,9 +5443,9 @@ "Despois de que rematen as tarefas de mantemento poderá conectarse con éxito " "de novo." msgstr[1] "" -"O servidor de MSN desconectarase para as tarefas de mantemento en %d minuto. " -"Desconectaráselle automaticamente nese momento. Remate calquera conversa " -"activa.\n" +"O servidor de MSN desconectarase para as tarefas de mantemento en %d " +"minutos. Desconectaráselle automaticamente nese momento. Remate calquera " +"conversa activa.\n" "\n" "Despois de que rematen as tarefas de mantemento poderá conectarse con éxito " "de novo." @@ -5484,26 +5482,22 @@ "Erro de conexión do servidor %s :\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" -msgstr "O servidor non soporta o noso protocolo." - -#, fuzzy +msgstr "O servidor non é compatíbel co noso protocolo" + msgid "Error parsing HTTP" -msgstr "Erro na análise HTTP." - -#, fuzzy +msgstr "Erro no procesamento de HTTP" + msgid "You have signed on from another location" -msgstr "Conectouse desde outra localización." +msgstr "Conectouse desde outra localización" msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" "Os servidores MSN non están dispoñíbeis temporalmente. Agarde e volva " "tentalo máis tarde." -#, fuzzy msgid "The MSN servers are going down temporarily" -msgstr "Os servidores MSN van sufrir un apagado temporal." +msgstr "Os servidores MSN van sufrir un apagado temporal" #, c-format msgid "Unable to authenticate: %s" @@ -5533,13 +5527,13 @@ msgid "Retrieving buddy list" msgstr "Recuperando a lista de contactos" -#, fuzzy, c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." -msgstr "%s enviou unconvite de cámara web, mais aínda non está soportada." +msgstr "%s enviou unconvite de cámara web mais aínda isto aínda non é posíbel." #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." -msgstr "%s enviou unconvite de cámara web, mais aínda non está soportada." +msgstr "%s enviou unconvite de cámara web, mais aínda non está dispoñíbel." msgid "Away From Computer" msgstr "Ausente do computador" @@ -5724,7 +5718,7 @@ "Engadiuse ou actualizouse %d contacto desde o servidor (incluídos os " "contactos que xa estaban na lista do lado do servidor)" msgstr[1] "" -"Engadiuse ou actualizouse %d contacto desde o servidor (incluídos os " +"Engadíronse ou actualizáronse %d contactos desde o servidor (incluídos os " "contactos que xa estaban na lista do lado do servidor)" msgid "Add contacts from server" @@ -5734,16 +5728,15 @@ msgid "Protocol error, code %d: %s" msgstr "Erro de protocolo, código %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 O seu contrasinal ten %d caracteres, maior do que a lonxitude máxima de %" -"d para o MySpaceIM. Faga a súa conta máis curta en http://profileedit." -"myspace.com/index.cfm?fuseaction=accountSettings.changePassword e ténteo de " -"novo." +"%s O seu contrasinal ten %zu caracteres, maior do que a lonxitude máxima de %" +"d.Acúrte o seu contrasinal en http://profileedit.myspace.com/index.cfm?" +"fuseaction=accountSettings.changePassword e ténteo de novo." msgid "Incorrect username or password" msgstr "O nome de conta ou contrasinal non é correcto" @@ -5758,19 +5751,19 @@ msgstr "Fallou ao engadir un contacto" msgid "'addbuddy' command failed." -msgstr "O comando 'addbuddy' fallou." +msgstr "A orde 'addbuddy' fallou." msgid "persist command failed" -msgstr "O comando 'persist' fallou" +msgstr "A orde 'persist' fallou" msgid "Failed to remove buddy" msgstr "Fallou ao eliminar o contacto" msgid "'delbuddy' command failed" -msgstr "O comando 'delbuddy' fallou." +msgstr "A orde 'delbuddy' fallou" msgid "blocklist command failed" -msgstr "O comando 'blocklist' fallou" +msgstr "A orde 'blocklist' fallou" msgid "Missing Cipher" msgstr "Falta o cifrado" @@ -5782,8 +5775,8 @@ "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " "not be loaded." msgstr "" -" Actualice a unha versión do libpurple con soporte de RC4 (>= 2.0.1). Non se " -"cargará o complemento MySpaceIM." +" Actualice a unha versión do libpurple con compatibilidade de RC4 (>= " +"2.0.1). Non se cargará o complemento MySpaceIM." msgid "Add friends from MySpace.com" msgstr "Engadir amigos desde MySpace.com" @@ -5843,6 +5836,9 @@ "visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " "to set your username." msgstr "" +"Produciuse un erro mentres se estabelecía o nome de usuario/a. Probe outra " +"vez, ou visite http://editprofile.myspace.com/index.cfm?fuseaction=profile." +"username para estabelecer o seu nome de usuario/a." msgid "MySpaceIM - Username Available" msgstr "MySpaceIM - O nome de usuario está dispoñíbel" @@ -5958,7 +5954,7 @@ #, c-format msgid "Goosing %s..." -msgstr "Beliscando a %s" +msgstr "Beliscando %s..." #. A high-five is when two people's hands slap each other #. * in the air above their heads. It is done to celebrate @@ -6028,7 +6024,7 @@ msgstr "Xa existe un cartafol con ese nome" msgid "Not supported" -msgstr "Non soportado" +msgstr "Non compatíbel" msgid "Password has expired" msgstr "O contrasinal expirou" @@ -6102,9 +6098,9 @@ msgid "Unknown error: 0x%X" msgstr "Erro descoñecido: 0x%X" -#, fuzzy, c-format +#, c-format msgid "Unable to login: %s" -msgstr "Non é posíbel facer ping ao usuario %s" +msgstr "Non é posíbel abrir sesión: %s" #, c-format msgid "Unable to send message. Could not get details for user (%s)." @@ -6241,12 +6237,11 @@ "Non parece que %s estea conectado e non recibiu a mensaxe que lle acaba de " "enviar." -#, fuzzy msgid "" "Unable to connect to server. Please enter the address of the server to which " "you wish to connect." msgstr "" -"Non se puido contactar co servidor. Indique o enderezo do servidor co que " +"Non se puido conectar co servidor. Indique o enderezo do servidor co que " "desexa conectar." msgid "This conference has been closed. No more messages can be sent." @@ -6271,9 +6266,8 @@ msgid "Server port" msgstr "Porto do servidor" -#, fuzzy msgid "Received unexpected response from " -msgstr "Recibiuse unha resposta HTTP inesperada do servidor." +msgstr "Recibiuse unha resposta inesperada de " #. username connecting too frequently msgid "" @@ -6281,14 +6275,14 @@ "and try again. If you continue to try, you will need to wait even longer." msgstr "" "Conectouse e desconectouse demasiadas veces. Agarde dez minutos e inténteo " -"de novo. Se segue a intentalo pode que precise agardar aínda máis tempo." - -#, fuzzy, c-format +"de novo. Se segue a intentalo vai precisar agardar cada vez máis tempo." + +#, c-format msgid "Error requesting " -msgstr "Erro ao resolver %s" +msgstr "Erro ao consultar" msgid "AOL does not allow your screen name to authenticate here" -msgstr "" +msgstr "AOL non lle permite usar o nome de pantalla para autenticarse aquí" msgid "Could not join chat room" msgstr "Non se puido unir á sala de conversa" @@ -6296,9 +6290,8 @@ msgid "Invalid chat room name" msgstr "Nome de sala de conversa non válido" -#, fuzzy msgid "Received invalid data on connection with server" -msgstr "Recibíronse datos non válidos na conexión co servidor." +msgstr "Recibíronse datos incorrectos na conexión co servidor" #. *< type #. *< ui_requirement @@ -6345,7 +6338,6 @@ msgid "Received invalid data on connection with remote user." msgstr "Recibíronse datos non válidos na conexión co usuario remoto." -#, fuzzy msgid "Unable to establish a connection with the remote user." msgstr "Non se puido establecer unha conexión co usuario remoto." @@ -6387,10 +6379,10 @@ msgstr "SNAC obsoleto" msgid "Not supported by host" -msgstr "Non soportado polo host" +msgstr "Non compatíbel co host" msgid "Not supported by client" -msgstr "Non soportado polo cliente" +msgstr "Non compatíbel co cliente" msgid "Refused by client" msgstr "Rexeitado polo cliente" @@ -6445,7 +6437,7 @@ msgstr "" "(Houbo un erro ao recibir a mensaxe. O contacto co que está falando está a " "empregar unha codificación diferente da esperada. Se sabe cal está " -"empregando pode especificalo nas opcións avanzadas de conta para AIM/ICQ)." +"empregando pode especificalo nas opcións avanzadas de conta para AIM/ICQ)" #, c-format msgid "" @@ -6453,8 +6445,8 @@ "different encodings selected, or %s has a buggy client.)" msgstr "" "(Produciuse un erro ao recibir esta mensaxe. Pode deberse a que vostede e " -"mais %s teñen seleccionadaunha codificación diferente ou que %s ten un " -"cliente con erros)." +"mais %s teñen seleccionada unha codificación diferente ou que %s ten un " +"cliente con erros)" #. Label msgid "Buddy Icon" @@ -6491,7 +6483,7 @@ msgstr "Nihilista" msgid "ICQ Server Relay" -msgstr "ICQ Server Relay" +msgstr "Reenvío de servidor ICQ" msgid "Old ICQ UTF8" msgstr "Antigo ICQ UTF8" @@ -6547,15 +6539,13 @@ msgid "Buddy Comment" msgstr "Comentario de contacto" -#, fuzzy, c-format +#, c-format msgid "Unable to connect to authentication server: %s" -msgstr "" -"Non se puido conectar ao servidor de autenticación:\n" -"%s" - -#, fuzzy, c-format +msgstr "Non se puido conectar ao servidor de autenticación: %s" + +#, c-format msgid "Unable to connect to BOS server: %s" -msgstr "Non se puido conectar ao servidor." +msgstr "Non se puido conectar co servidor: %s" msgid "Username sent" msgstr "Enviouse o nome de usuario" @@ -6567,18 +6557,18 @@ msgid "Finalizing connection" msgstr "Rematando a conexión" -#, fuzzy, c-format +#, c-format msgid "" "Unable to sign on as %s because the username is invalid. Usernames must be " "a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"Non se puido iniciar a sesión: Non se iniciou a sesión como %s porque o nome " -"de usuario non é válido. Os nomes de usuario teñen que ser unha dirección " -"de correo electrónico válida ou comezar cunha letra e conter só letras, " -"números e espazos, ou conter só números." - -#, fuzzy, c-format +"Non se puido acceder como %s porque o nome de usuario non é válido. Os nomes " +"de usuario teñen que ser unha dirección de correo electrónico válida ou " +"comezar cunha letra e conter só letras, números e espazos, ou conter só " +"números." + +#, c-format msgid "You may be disconnected shortly. If so, check %s for updates." msgstr "Talvez sexa desconectado en breve. Comprobe %s para actualizacións." @@ -6594,36 +6584,33 @@ #. Unregistered username #. uid is not exist #. the username does not exist -#, fuzzy msgid "Username does not exist" -msgstr "O usuario non existe" +msgstr "O nome de usuario non existe" #. Suspended account -#, fuzzy msgid "Your account is currently suspended" -msgstr "A conta está actualmente deshabilitada." +msgstr "A súa conta está actualmente deshabilitada" #. service temporarily unavailable msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "" "O servizo de mensaxería instantánea AOL non está dispoñíbel temporalmente." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "A versión do cliente que usa é demasiado antiga. Actualízea en %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 "" "Conectouse e desconectouse demasiadas veces. Agarde dez minutos e inténteo " -"de novo. Se segue a intentalo pode que precise agardar aínda máis tempo." - -#, fuzzy +"de novo. Se segue a intentalo precisará agardar cada vez máis tempo." + msgid "The SecurID key entered is invalid" -msgstr "A chave SecurID que se introduciu non é válida." +msgstr "A chave SecurID que se introduciu non é válida" msgid "Enter SecurID" msgstr "Introduza o SecurID" @@ -6631,12 +6618,6 @@ msgid "Enter the 6 digit number from the digital display." msgstr "Introduza o díxito de seis números que aparece na pantalla." -#. * -#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. -#. -msgid "_OK" -msgstr "_Aceptar" - msgid "Password sent" msgstr "Contrasinal enviado" @@ -6646,12 +6627,6 @@ msgid "Please authorize me so I can add you to my buddy list." msgstr "Autoríceme para que poida engadilo á miña lista de contactos." -msgid "Authorization Request Message:" -msgstr "Mensaxe de solicitude de autorización:" - -msgid "Please authorize me!" -msgstr "Por favor, autoríceme!" - msgid "No reason given." msgstr "Non se indicou unha razón." @@ -6731,21 +6706,21 @@ 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] "Perdeuse %hu mensaxe de %s porque non era válida." -msgstr[1] "Perdeuse %hu mensaxe de %s porque non era válida." +msgstr[1] "Perdéronse %hu mensaxes de %s porque non eran válidas." #, 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] "Perdeuse %hu mensaxe de %s porque era demasiado longa." -msgstr[1] "Perdeuse %hu mensaxe de %s porque era demasiado longa." +msgstr[1] "Perdéronse %hu mensaxes de %s porque eran demasiado longas." #, 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] "Perdeu %hu mensaxe de %s porque se excedeu o límite de taxa." -msgstr[1] "Perdeu %hu mensaxe de %s porque se excedeu o límite de taxa." +msgstr[0] "Perdeuse %hu mensaxe de %s porque se excedeu o límite de taxa." +msgstr[1] "Perdéronse %hu mensaxes de %s porque se excedeu o límite de taxa." #, c-format msgid "" @@ -6753,24 +6728,26 @@ msgid_plural "" "You missed %hu messages from %s because his/her warning level is too high." msgstr[0] "" -"Perdeuse %hu mensaxe de %s porque o seu nivel de aviso é demasiado alto." +"Perdeuse %hu mensaxe de %s porque ten un nivel de aviso demasiado alto." msgstr[1] "" -"Perdeuse %hu mensaxe de %s porque o seu nivel de aviso é demasiado alto." +"Perdéronse %hu mensaxes de %s porque teñen un nivel de aviso demasiado alto." #, 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] "" -"Perdeuse %hu mensaxe de %s porque o seu nivel de aviso é demasiado alto." +"Perdeuse %hu mensaxe de %s porque vostede ten un nivel de aviso demasiado " +"alto." msgstr[1] "" -"Perdeuse %hu mensaxe de %s porque o seu nivel de aviso é demasiado alto." +"Perdéronse %hu mensaxes de %s porque vostede ten un nivel de aviso demasiado " +"alto." #, 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] "Perdeuse %hu mensaxe de %s por motivos descoñecidos." -msgstr[1] "Perdeuse %hu mensaxe de %s por motivos descoñecidos." +msgstr[1] "Perdéronse %hu mensaxes de %s por motivos descoñecidos." #. Data is assumed to be the destination bn #, c-format @@ -6855,7 +6832,7 @@ msgid "The following username is associated with %s" msgid_plural "The following usernames are associated with %s" msgstr[0] "O seguinte nome de usuario está asociado a %s" -msgstr[1] "O seguinte nome de usuario está asociado a %s" +msgstr[1] "Os seguintes nomes de usuarios están asociados a %s" #, c-format msgid "No results found for email address %s" @@ -6957,7 +6934,7 @@ "Excedeuse a lonxitude máxima de %d byte do perfil de usuario. Eliminouse o " "excedente." msgstr[1] "" -"Excedeuse a lonxitude máxima de %d byte do perfil de usuario. Eliminouse o " +"Excedeuse a lonxitude máxima de %d bytes do perfil de usuario. Eliminouse o " "excedente." msgid "Profile too long." @@ -6974,13 +6951,13 @@ "Excedeuse a lonxitude máxima de %d byte da mensaxe de ausencia. Eliminouse " "o excedente." msgstr[1] "" -"Excedeuse a lonxitude máxima de %d byte da mensaxe de ausencia. Eliminouse " +"Excedeuse a lonxitude máxima de %d bytes da mensaxe de ausencia. Eliminouse " "o excedente." msgid "Away message too long." msgstr "A mensaxe de ausencia é demasiado longa." -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " "be a valid email address, or start with a letter and contain only letters, " @@ -6991,9 +6968,6 @@ "comezar cunha letra e conter só letras, números e espazos, ou só conter " "números." -msgid "Unable to Add" -msgstr "Non se puido engadir" - msgid "Unable to Retrieve Buddy List" msgstr "Non se puido obter a lista de contactos" @@ -7008,7 +6982,7 @@ msgid "Orphans" msgstr "Orfos" -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because you have too many buddies in your buddy " "list. Please remove one and try again." @@ -7019,7 +6993,7 @@ msgid "(no name)" msgstr "(sen nome)" -#, fuzzy, c-format +#, c-format msgid "Unable to add the buddy %s for an unknown reason." msgstr "Non se puido engadir o contacto %s por unha razón descoñecida." @@ -7183,9 +7157,8 @@ msgid "Search for Buddy by Information" msgstr "Localizar un contacto pola súa información" -#, fuzzy msgid "Use clientLogin" -msgstr "O usuario non está conectado" +msgstr "Usar login de cliente" msgid "" "Always use AIM/ICQ proxy server for\n" @@ -7298,7 +7271,7 @@ msgstr "Outros" msgid "Visible" -msgstr "Visible" +msgstr "Visíbel" msgid "Friend Only" msgstr "Só amigos" @@ -7333,13 +7306,11 @@ msgid "City/Area" msgstr "Cidade/Área" -#, fuzzy msgid "Publish Mobile" -msgstr "Móbil persoal" - -#, fuzzy +msgstr "Publicar móbil" + msgid "Publish Contact" -msgstr "Contacto público" +msgstr "Publicar o contacto" msgid "College" msgstr "Escola" @@ -7374,7 +7345,6 @@ msgid "Update" msgstr "Actualizar" -#, fuzzy msgid "Could not change buddy information." msgstr "Non se puido cambiar a información do contacto." @@ -7385,38 +7355,33 @@ msgstr "Nota" #. callback -#, fuzzy msgid "Buddy Memo" msgstr "Icona de contacto" msgid "Change his/her memo as you like" -msgstr "" - -#, fuzzy +msgstr "Cambiar o recordatorio del/dela segundo o seu gusto" + msgid "_Modify" -msgstr "Modificar" - -#, fuzzy +msgstr "_Modificar" + msgid "Memo Modify" -msgstr "Modificar" - -#, fuzzy +msgstr "Modificar o recordatorio" + msgid "Server says:" -msgstr "Servidor ocupado" +msgstr "O servidor di:" msgid "Your request was accepted." -msgstr "" +msgstr "A súa consulta foi aceptada." msgid "Your request was rejected." -msgstr "" +msgstr "A súa cosulta foi rexeitada." #, c-format msgid "%u requires verification" msgstr "%u require verificación" -#, fuzzy msgid "Add buddy question" -msgstr "Pregunta engadir contacto" +msgstr "Engadir pregunta de contacto" msgid "Enter answer here" msgstr "Introduza a resposta aquí" @@ -7424,9 +7389,8 @@ msgid "Send" msgstr "Enviar" -#, fuzzy msgid "Invalid answer." -msgstr "Resposta non válida." +msgstr "A resposta non é válida." msgid "Authorization denied message:" msgstr "Mensaxe de autorización rexeitada:" @@ -7438,9 +7402,8 @@ msgid "%u needs authorization" msgstr "%u necesita autorización" -#, fuzzy msgid "Add buddy authorize" -msgstr "Autorizar engadir contacto" +msgstr "Autorizar a adición do contacto" msgid "Enter request here" msgstr "Introducir a solicitude aquí" @@ -7532,9 +7495,8 @@ msgid "Category" msgstr "Categoría" -#, fuzzy msgid "The Qun does not allow others to join" -msgstr "O Qun non permite unirse a outros" +msgstr "O Qun non permite a outros unirse" msgid "Join QQ Qun" msgstr "Unirse a QQ Qun" @@ -7549,7 +7511,7 @@ msgid "Successfully joined Qun" msgstr "Uniuse a Qun con éxito" -#, fuzzy, c-format +#, c-format msgid "Qun %u denied from joining" msgstr "%u Qun denegada desde a unión" @@ -7585,7 +7547,7 @@ msgstr "Creou con éxito un Qun " msgid "Would you like to set up detailed information now?" -msgstr "Quere configurar agora a información ampliada" +msgstr "Quere configurar agora a información detallada?" msgid "Setup" msgstr "Configuración" @@ -7598,13 +7560,13 @@ msgid "%u request to join Qun %u" msgstr "%u solicitou unirse a Qun %u" -#, fuzzy, c-format +#, c-format msgid "Failed to join Qun %u, operated by admin %u" -msgstr "Fallou ao unirse a Qun %u, xestionado por admin %u" - -#, fuzzy, c-format +msgstr "Fallou ao unirse Qun %u, xestionado polo admin %u" + +#, c-format msgid "Joining Qun %u is approved by admin %u for %s" -msgstr "A unión a Qun %u é aprobada polo administrador %u para %s" +msgstr "A unión Qun %u é aprobada polo administrador %u para %s" #, c-format msgid "Removed buddy %u." @@ -7640,7 +7602,7 @@ msgstr "Zona" msgid "Flag" -msgstr "Flag" +msgstr "Bandeira" msgid "Ver" msgstr "Ver" @@ -7667,7 +7629,7 @@ msgid "Server: %s
\n" msgstr "Servidor: %s
\n" -#, fuzzy, c-format +#, c-format msgid "Client Tag: %s
\n" msgstr "Etiqueta do cliente: %s
\n" @@ -7722,12 +7684,11 @@ msgid "

Acknowledgement:
\n" msgstr "

Recoñecemento:
\n" -#, fuzzy msgid "

Scrupulous Testers:
\n" -msgstr "

Autor orixinal:
\n" +msgstr "

Probadores escrupulosos:
\n" msgid "and more, please let me know... thank you!))" -msgstr "" +msgstr "e máis, fágamo saber, por favor... grazas!)" msgid "

And, all the boys in the backroom...
\n" msgstr "

E ao resto da xente que está por detrás...
\n" @@ -7754,9 +7715,8 @@ msgid "About OpenQ" msgstr "Sobre OpenQ" -#, fuzzy msgid "Modify Buddy Memo" -msgstr "Modificar enderezo" +msgstr "Modificar o recordatorio do contact" #. *< type #. *< ui_requirement @@ -7796,16 +7756,14 @@ msgstr "Amosar as noticias do servidor" msgid "Show chat room when msg comes" -msgstr "" - -#, fuzzy +msgstr "Mostrar a sala de conversa cando chega a mensaxe" + msgid "Keep alive interval (seconds)" msgstr "Intervalo de keep alive (segundos)" msgid "Update interval (seconds)" msgstr "Intervalo de actualización (segundos)" -#, fuzzy msgid "Unable to decrypt server reply" msgstr "Non se pode descifrar a resposta do servidor" @@ -7846,9 +7804,8 @@ msgid "Enter code" msgstr "Introducir código" -#, fuzzy msgid "QQ Captcha Verification" -msgstr "Verificación de captcha QQ" +msgstr "Verificación de CAPTCHA QQ" msgid "Enter the text from the image" msgstr "Introduza o texto da imaxe" @@ -7874,9 +7831,8 @@ msgid "Requesting token" msgstr "Solicitando token" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "Non se puido conectar ao servidor." +msgstr "Non se puido conectar ao servidor" msgid "Invalid server or port" msgstr "O servidor ou o porto non son válidos" @@ -7918,7 +7874,7 @@ msgid "Unknown SERVER CMD" msgstr "SERVER CMD descoñecido" -#, fuzzy, c-format +#, c-format msgid "" "Error reply of %s(0x%02X)\n" "Room %u, reply 0x%02X" @@ -7927,17 +7883,14 @@ "sala %u, resposta 0x%02X" msgid "QQ Qun Command" -msgstr "Comando QQ Qun" - -#, fuzzy +msgstr "Orde QQ Qun" + msgid "Unable to decrypt login reply" msgstr "Non puido descifrar a resposta do inicio de sesión" -#, fuzzy msgid "Unknown LOGIN CMD" msgstr "LOGIN CMD descoñecido" -#, fuzzy msgid "Unknown CLIENT CMD" msgstr "CLIENT CMD descoñecido" @@ -8377,7 +8330,7 @@ "You can use the Get Public Key command to get the public key." msgstr "" "Non pode recibir notificacións do contacto hasta que importe a súa chave " -"pública. Pode empregar o comando \"Obter chave pública\" para obtela." +"pública. Pode empregar a orde \"Obter chave pública\" para obtela." #. Open file selector to select the public key. msgid "Open..." @@ -8650,13 +8603,13 @@ msgstr "Non se pode unir a un grupo privado" msgid "Call Command" -msgstr "Chamar ao comando" +msgstr "Chamar a orde" msgid "Cannot call command" -msgstr "Non se pode chamar ao comando" +msgstr "Non se pode chamar a orde" msgid "Unknown command" -msgstr "Comando descoñecido" +msgstr "Orde descoñecida" msgid "Secure File Transfer" msgstr "Transferencia segura de ficheiros" @@ -8912,12 +8865,11 @@ msgstr "_Ver..." msgid "Unsupported public key type" -msgstr "Tipo de chave pública non soportada" +msgstr "Tipo de chave pública non compatíbel" msgid "Disconnected by server" msgstr "Desconectado polo servidor" -#, fuzzy msgid "Error connecting to SILC Server" msgstr "Produciuse un erro durante a conexión ao servidor SILC" @@ -8933,7 +8885,6 @@ msgid "Performing key exchange" msgstr "Efectuando o intercambio de chaves" -#, fuzzy msgid "Unable to load SILC key pair" msgstr "Non se puido cargar o par de chaves SILC" @@ -8941,14 +8892,12 @@ msgid "Connecting to SILC Server" msgstr "Conectando co servidor SILC" -#, fuzzy msgid "Unable to not load SILC key pair" msgstr "Non se puido cargar o par de chaves SILC" msgid "Out of memory" msgstr "Sen memoria" -#, fuzzy msgid "Unable to initialize SILC protocol" msgstr "Non se puido inicializar o protocolo SILC" @@ -9085,7 +9034,7 @@ #, c-format msgid "Unknown command: %s, (may be a client bug)" -msgstr "Comando descoñecido: %s, (pode ser un erro do cliente)" +msgstr "Orde descoñecida: %s, (pode ser un erro do cliente)" msgid "part [channel]: Leave the chat" msgstr "part [canle]: Abandonar a conversa" @@ -9126,7 +9075,7 @@ msgstr "quit [mensaxe]: Desconecta do servidor, cunha mensaxe opcional" msgid "call <command>: Call any silc client command" -msgstr "call <comando>: Executar un comando calquera do cliente silc" +msgstr "call <orde>: Executar unha orde calquera do cliente silc" msgid "kill <nick> [-pubkey|<reason>]: Kill nick" msgstr "kill <alias> [-pubkey|<razón>]: Matar un alias" @@ -9248,9 +9197,8 @@ msgid "Creating SILC key pair..." msgstr "Creando o par de chaves SILC..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "Non se pode crear o par de chaves SILC\n" +msgstr "Non se pode crear o par de chaves SILC" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9353,27 +9301,28 @@ #, c-format msgid "Failure: Remote does not trust/support your public key" -msgstr "Fallo: O servidor remoto non soporta/confía na súa chave pública" +msgstr "Fallo: O servidor remoto non confía/admite a súa chave pública" #, c-format msgid "Failure: Remote does not support proposed KE group" -msgstr "Fallo: O servidor remoto non soporta o grupo de KE proposto" +msgstr "Fallo: O servidor remoto non admite o grupo de KE proposto" #, c-format msgid "Failure: Remote does not support proposed cipher" -msgstr "Fallo: O servidor remoto non soporta o sistema de cifrado proposto" +msgstr "" +"Fallo: O servidor remoto non é compatíbel co sistema de cifrado proposto" #, c-format msgid "Failure: Remote does not support proposed PKCS" -msgstr "Fallo: O servidor remoto non soporta os PKCS proposto" +msgstr "Fallo: O servidor remoto non é compatíbel o PKCS proposto" #, c-format msgid "Failure: Remote does not support proposed hash function" -msgstr "Fallo: O servidor remoto non soporta a función de hash proposta" +msgstr "Fallo: O servidor remoto non é compatíbel coa función de hash proposta" #, c-format msgid "Failure: Remote does not support proposed HMAC" -msgstr "Fallo: O servidor remoto non soporta o HMAC proposto" +msgstr "Fallo: O servidor remoto non é compatíbel co HMAC proposto" #, c-format msgid "Failure: Incorrect signature" @@ -9387,35 +9336,31 @@ msgid "Failure: Authentication failed" msgstr "Fallo: Fallou a autenticación" -#, fuzzy msgid "Unable to initialize SILC Client connection" msgstr "Non se puido inicializar a conexión do cliente SILC" msgid "John Noname" msgstr "Nome Apelidos" -#, fuzzy, c-format +#, c-format msgid "Unable to load SILC key pair: %s" msgstr "Non se puido cargar o par de chaves SILC: %s" msgid "Unable to create connection" msgstr "Non é posíbel crear a conexión" -#, fuzzy msgid "Unknown server response" -msgstr "Resposta do servidor descoñecida." - -#, fuzzy +msgstr "Resposta do servidor descoñecida" + msgid "Unable to create listen socket" -msgstr "Non é posíbel crear o conectador" +msgstr "Non é posíbel crear conectador de escoita" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "" "Os nomes de usuario SIP non poden conter espazos en branco nin o símbolo @" -#, fuzzy msgid "SIP connect server not specified" -msgstr "Amosar o aviso do servidor" +msgstr "A conexión SIP ao servidor non foi especificada" #. *< type #. *< ui_requirement @@ -9472,7 +9417,6 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" msgstr "Complemento de protocolo Yahoo" @@ -9503,9 +9447,8 @@ msgid "Yahoo Chat port" msgstr "Porto de conversa de Yahoo" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "ID de Yahoo..." +msgstr "ID de Yahoo JAPAN..." #. *< type #. *< ui_requirement @@ -9517,12 +9460,11 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Complemento de protocolo Yahoo" +msgstr "Complemento de protocolo Yahoo! JAPAN" msgid "Your SMS was not delivered" -msgstr "" +msgstr "O seu SMS non foi entregado" msgid "Your Yahoo! message did not get sent." msgstr "A súa mensaxe Yahoo! non se enviou." @@ -9549,32 +9491,28 @@ msgstr "Rexeitouse engadir o contacto" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "Recibíronse datos non válidos na conexión co servidor." +msgstr "Recibíronse datos incorrectos" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." msgstr "" -"Erro descoñecido número %d. Se inicia sesión no sitio web de Yahoo! é " -"posíbel que isto se arranxe." +"Conta bloqueada: Demasiados intentos fallos. Se inicia sesión no sitio web " +"de Yahoo! é posíbel que isto se arranxe." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." msgstr "" -"Erro descoñecido número %d. Se inicia sesión no sitio web de Yahoo! é " -"posíbel que isto se arranxe." +"Conta bloqueada: Razón descoñecida. Se inicia sesión no sitio web de Yahoo! " +"é posíbel que isto se arranxe." #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "O nome de conta ou contrasinal non é correcto" +msgstr "O nome de conta ou contrasinal non se encontran" #, c-format msgid "" @@ -9601,7 +9539,7 @@ msgstr "Quere ignorar o contacto?" msgid "Your account is locked, please log in to the Yahoo! website." -msgstr "A súa conta está bloqueada. Inicie unha sesión no sitio web de Yahoo!." +msgstr "A súa conta está bloqueada. Inicie unha sesión no sitio web de Yahoo!" #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." @@ -9609,35 +9547,29 @@ "Erro descoñecido número %d. Se inicia sesión no sitio web de Yahoo! é " "posíbel que isto se arranxe." -#, fuzzy, c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." msgstr "" -"Non se puido engadir o contacto %s ao grupo %s á lista no servidor para a " +"Non se puido engadir o contacto %s ao grupo %s para a lista de servidor na " "conta %s." -#, fuzzy msgid "Unable to add buddy to server list" -msgstr "Non se puido engadir o contacto á lista do servidor" +msgstr "Non se puido engadir o contacto na lista do servidor" #, c-format msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ Audíbel %s/%s/%s.swf ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" -msgstr "Recibiuse unha resposta HTTP inesperada do servidor." - -#, fuzzy, c-format +msgstr "Recibiuse unha resposta HTTP inesperada do servidor" + +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"Perdeuse a conexión con %s:\n" -"%s" - -#, fuzzy, c-format +msgstr "Perdeuse a conexión con %s: %s" + +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "" -"Non se puido establecer unha conexión co servidor:\n" -"%s" +msgstr "Non se puido establecer unha conexión con %s: %s" msgid "Not at Home" msgstr "Fóra da casa" @@ -9685,7 +9617,7 @@ msgstr "Comezar o Doodle" msgid "Select the ID you want to activate" -msgstr "" +msgstr "Seleccionar o ID que queres activar" msgid "Join whom in chat?" msgstr "A quen quere unir á conversa?" @@ -9842,9 +9774,8 @@ msgid "User Rooms" msgstr "Salas de usuarios" -#, fuzzy msgid "Connection problem with the YCHT server" -msgstr "Produciuse un problema ao conectarse co servidor YCHT." +msgstr "Produciuse un problema ao conectarse co servidor YCHT" msgid "" "(There was an error converting this message.\t Check the 'Encoding' option " @@ -9959,7 +9890,7 @@ msgstr "Usar tzc" msgid "tzc command" -msgstr "Comando tzc" +msgstr "Orde tzc" msgid "Export to .anyone" msgstr "Exportar a .anyone" @@ -9979,18 +9910,17 @@ msgid "Exposure" msgstr "Exposición" -#, fuzzy, c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "Non é posíbel analizar a resposta desde o proxy HTTP: %s\n" +msgstr "Non é posíbel analizar a resposta desde o proxy HTTP: %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "Erro de conexión no proxy HTTP %d" -#, fuzzy, c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" -msgstr "" -"Acceso denegado: o servidor de proxy HTTP prohibe o túnel polo porto %d." +msgstr "Acceso denegado: o servidor proxy HTTP prohibe o túnel polo porto %d" #, c-format msgid "Error resolving %s" @@ -10133,37 +10063,37 @@ msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" -msgstr[1] "%d segundo" +msgstr[1] "%d segundos" #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d día" -msgstr[1] "%d día" +msgstr[1] "%d días" #, c-format msgid "%s, %d hour" msgid_plural "%s, %d hours" msgstr[0] "%s, %d hora" -msgstr[1] "%s, %d hora" +msgstr[1] "%s, %d horas" #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" -msgstr[1] "%d hora" +msgstr[1] "%d horas" #, c-format msgid "%s, %d minute" msgid_plural "%s, %d minutes" msgstr[0] "%s, %d minuto" -msgstr[1] "%s, %d minuto" +msgstr[1] "%s, %d minutos" #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" -msgstr[1] "%d minuto" +msgstr[1] "%d minutos" #, c-format msgid "Could not open %s: Redirected too many times" @@ -10234,12 +10164,12 @@ msgid "Error Reading %s" msgstr "Erro ao ler %s" -#, fuzzy, c-format +#, c-format msgid "" "An error was encountered reading your %s. The file has not been loaded, and " "the old file has been renamed to %s~." msgstr "" -"Encontrouse un erro ao ler o seu %s. Non se cargaron e o ficheiro antigo " +"Encontrouse un erro lendo o seu %s. Non se cargou o ficheiro e o antigo " "renomeouse como %s~." msgid "Internet Messenger" @@ -10284,7 +10214,7 @@ msgid "Use this buddy _icon for this account:" msgstr "Usar esta icona de contacto para esta conta:" -msgid "_Advanced" +msgid "Ad_vanced" msgstr "_Avanzado" msgid "Use GNOME Proxy Settings" @@ -10347,8 +10277,7 @@ msgid "Create _this new account on the server" msgstr "Crear es_ta conta nova no servidor" -#, fuzzy -msgid "_Proxy" +msgid "P_roxy" msgstr "Proxy" msgid "Enabled" @@ -10384,7 +10313,7 @@ msgid_plural "" "You currently have %d contacts named %s. Would you like to merge them?" msgstr[0] "Ten %d contacto chamado %s. Quere combinalos?" -msgstr[1] "Ten %d contacto chamado %s. Quere combinalos?" +msgstr[1] "Ten %d contactos chamados %s. Quere combinalos?" msgid "" "Merging these contacts will cause them to share a single entry on the buddy " @@ -10399,7 +10328,6 @@ msgid "Please update the necessary fields." msgstr "Actualice os campos necesarios." -#, fuzzy msgid "A_ccount" msgstr "Conta" @@ -10427,16 +10355,14 @@ msgid "I_M" msgstr "M_I" -#, fuzzy msgid "_Audio Call" -msgstr "_Engadir conversa" +msgstr "Ch_amada de audio" msgid "Audio/_Video Call" -msgstr "" - -#, fuzzy +msgstr "Audio/_Videochamada" + msgid "_Video Call" -msgstr "Videoconferencia" +msgstr "_Videoconferencia" msgid "_Send File..." msgstr "E_nviar ficheiro..." @@ -10447,11 +10373,9 @@ msgid "View _Log" msgstr "Ver _rexistro" -#, fuzzy msgid "Hide When Offline" msgstr "Ocultar cando se está desconectado" -#, fuzzy msgid "Show When Offline" msgstr "Mostrar cando se está desconectado" @@ -10579,9 +10503,8 @@ msgid "/Tools/_Certificates" msgstr "/Ferramentas/_Certificados" -#, fuzzy msgid "/Tools/Custom Smile_ys" -msgstr "/Ferramentas/E_moticona" +msgstr "/Ferramentas/E_moticonas personalizadas" msgid "/Tools/Plu_gins" msgstr "/Ferramentas/C_omplementos" @@ -10701,7 +10624,7 @@ msgid "%d unread message from %s\n" msgid_plural "%d unread messages from %s\n" msgstr[0] "%d mensaxe sen ler de %s\n" -msgstr[1] "%d mensaxe sen ler de %s\n" +msgstr[1] "%d mensaxes sen ler de %s\n" msgid "Manually" msgstr "Manualmente" @@ -10710,7 +10633,7 @@ msgstr "Por estado" msgid "By recent log activity" -msgstr "" +msgstr "Por actividade rexistrada recente" #, c-format msgid "%s disconnected" @@ -10727,7 +10650,7 @@ msgstr "Activar de novo" msgid "SSL FAQs" -msgstr "" +msgstr "FAQ SSL" msgid "Welcome back!" msgstr "Benvida/o de novo!" @@ -10739,7 +10662,7 @@ msgstr[0] "" "%d conta foi desactivada porque se conectou desde outra localización:" msgstr[1] "" -"%d conta foi desactivada porque se conectou desde outra localización:" +"%d contas foron desactivadas porque se conectou desde outra localización:" msgid "Username:" msgstr "Nome de usuario:" @@ -10800,7 +10723,7 @@ msgstr "Engadir o contacto ao _grupo:" msgid "This protocol does not support chat rooms." -msgstr "Este protocolo non soporta as salas de conversa." +msgstr "Este protocolo non é compatíbel coas salas de conversa." msgid "" "You are not currently signed on with any protocols that have the ability to " @@ -10825,9 +10748,8 @@ msgid "Auto_join when account becomes online." msgstr "_Unirse automatiamente cando unha conta se volve activa." -#, fuzzy msgid "_Remain in chat after window is closed." -msgstr "_Permanecer na xanela de " +msgstr "_Permanecer no chat tras cerrar a xanela." msgid "Please enter the name of the group to be added." msgstr "Introduza o nome do grupo que quere engadir." @@ -10861,116 +10783,104 @@ msgstr "Cor do fondo" msgid "The background color for the buddy list" -msgstr "" - -#, fuzzy +msgstr "A cor de fondo para a lista de contactos" + msgid "Layout" -msgstr "Lao" +msgstr "Disposición" msgid "The layout of icons, name, and status of the blist" -msgstr "" +msgstr "A disposición das iconas, nome e estado da lista blist" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "Cor do fondo" +msgstr "Cor do fondo expandida" msgid "The background color of an expanded group" -msgstr "" - -#, fuzzy +msgstr "A cor de fondo dun grupo expandido" + msgid "Expanded Text" -msgstr "_Expandir" +msgstr "Texto _expandido" msgid "The text information for when a group is expanded" -msgstr "" - -#, fuzzy +msgstr "A información textual para cando se expande un grupo" + msgid "Collapsed Background Color" -msgstr "Seleccionar a cor do fondo" +msgstr "Cor do fondo colapsada" msgid "The background color of a collapsed group" -msgstr "" - -#, fuzzy +msgstr "A cor de fondo dun grupo colapsado" + msgid "Collapsed Text" -msgstr "_Contraer" +msgstr "_Contraer o texto" msgid "The text information for when a group is collapsed" -msgstr "" +msgstr "A inforamción textual para cando un grupo se colapsa" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "Seleccionar a cor do fondo" +msgstr "Cor de fondo para Contacto/Chat" msgid "The background color of a contact or chat" -msgstr "" - -#, fuzzy +msgstr "A cor de fondo dun contacto ou chat" + msgid "Contact Text" -msgstr "Atallo" +msgstr "Texto do contacto" msgid "The text information for when a contact is expanded" -msgstr "" - -#, fuzzy +msgstr "A información textual para cando un contacto se expande" + msgid "On-line Text" -msgstr "Conectado" +msgstr "Texto para conectado" msgid "The text information for when a buddy is online" -msgstr "" - -#, fuzzy +msgstr "A información textual para cando un contacto está en liña" + msgid "Away Text" -msgstr "Ausente" +msgstr "Texto de despedida" msgid "The text information for when a buddy is away" -msgstr "" - -#, fuzzy +msgstr "A información textual para cando un contacto se foi" + msgid "Off-line Text" -msgstr "Desconectado" +msgstr "Texto para Desconectado" msgid "The text information for when a buddy is off-line" -msgstr "" - -#, fuzzy +msgstr "A información textual para cando un contacto está desconectado" + msgid "Idle Text" -msgstr "Texto de estado de ánimo" +msgstr "Texto para Inactivo" msgid "The text information for when a buddy is idle" -msgstr "" - -#, fuzzy +msgstr "A información textual para cando un contacto está inactivo" + msgid "Message Text" -msgstr "Mensaxe enviada" +msgstr "Texto de mensaxe" msgid "The text information for when a buddy has an unread message" -msgstr "" +msgstr "A información textual para cando un contacto ten unha mensaxe sen ler" msgid "Message (Nick Said) Text" -msgstr "" +msgstr "Texto da mensaxe (Alcume referido)" msgid "" "The text information for when a chat has an unread message that mentions " "your nick" msgstr "" - -#, fuzzy +"A información textual para cando un chat ten unha mensaxe sen ler que " +"menciona o seu alcume" + msgid "The text information for a buddy's status" -msgstr "Modificar a información de usuario para %s" - -#, fuzzy +msgstr "Información textual para o estado do contacto" + msgid "Type the host name for this certificate." -msgstr "Escriba o nome do host para o que é este certificado." +msgstr "Escriba o nome do host deste certificado." #. Widget creation function msgid "SSL Servers" msgstr "Servidores SSL" msgid "Unknown command." -msgstr "Comando descoñecido." +msgstr "Orde descoñecida." msgid "That buddy is not on the same protocol as this chat." msgstr "Ese contacto non utiliza o mesmo protocolo que esta conversa." @@ -11011,9 +10921,8 @@ msgid "Get Away Message" msgstr "Mensaxe de ausencia" -#, fuzzy msgid "Last Said" -msgstr "Dito a última vez" +msgstr "O último que se dixo" msgid "Unable to save icon file to disk." msgstr "Non se puido gardar o ficheiro de iconas no disco." @@ -11058,21 +10967,17 @@ msgid "/Conversation/Clea_r Scrollback" msgstr "/Conversa/Limpar _historial" -#, fuzzy msgid "/Conversation/M_edia" -msgstr "/Conversa/Má_is" - -#, fuzzy +msgstr "/Conversa/M_edia" + msgid "/Conversation/Media/_Audio Call" -msgstr "/Conversa/Má_is" - -#, fuzzy +msgstr "/Conversa/Media/Chamada de _audio" + msgid "/Conversation/Media/_Video Call" -msgstr "/Conversa/Má_is" - -#, fuzzy +msgstr "/Conversa/Media/_Videochamada" + msgid "/Conversation/Media/Audio\\/Video _Call" -msgstr "/Conversa/Ver _rexistro" +msgstr "/Conversa/Media/Audio\\/Video _Chamada" msgid "/Conversation/Se_nd File..." msgstr "/Conversa/E_nviar ficheiro..." @@ -11146,17 +11051,14 @@ msgid "/Conversation/View Log" msgstr "/Conversa/Ver o rexistro" -#, fuzzy msgid "/Conversation/Media/Audio Call" -msgstr "/Conversa/Máis" - -#, fuzzy +msgstr "/Conversa/Media/Audiochamada" + msgid "/Conversation/Media/Video Call" -msgstr "/Conversa/Ver o rexistro" - -#, fuzzy +msgstr "/Conversation/Media/Videochamada" + msgid "/Conversation/Media/Audio\\/Video Call" -msgstr "/Conversa/Máis" +msgstr "/Conversation/Media/Audio\\/Videochamada" msgid "/Conversation/Send File..." msgstr "/Conversa/Enviar o ficheiro..." @@ -11229,7 +11131,7 @@ msgid "%d person in room" msgid_plural "%d people in room" msgstr[0] "%d persoa na sala" -msgstr[1] "%d persoa na sala" +msgstr[1] "%d persoas na sala" msgid "Typing" msgstr "Escribindo" @@ -11330,7 +11232,6 @@ msgid "Fatal Error" msgstr "Erro moi grave" -#, fuzzy msgid "bug master" msgstr "bug master" @@ -11342,14 +11243,13 @@ msgstr "Ka-Hing Cheung" msgid "voice and video" -msgstr "" +msgstr "voz e vídeo" msgid "support" -msgstr "soporte" - -#, fuzzy +msgstr "compatibilide" + msgid "webmaster" -msgstr "webmaster" +msgstr "webmáster" msgid "Senior Contributor/QA" msgstr "Contribuínte sénior/QA" @@ -11368,7 +11268,7 @@ msgstr "hacker e deseñador de controladores [vagabundo preguizoso]" msgid "support/QA" -msgstr "soporte/QA" +msgstr "compatibilidade/QA" msgid "XMPP" msgstr "XMPP" @@ -11469,9 +11369,8 @@ msgid "Hungarian" msgstr "Húngaro" -#, fuzzy msgid "Armenian" -msgstr "Romanés" +msgstr "Armenio" msgid "Indonesian" msgstr "Indonesio" @@ -11488,9 +11387,8 @@ msgid "Ubuntu Georgian Translators" msgstr "Tradutores xeorxianos de Ubuntu" -#, fuzzy msgid "Khmer" -msgstr "Outros" +msgstr "Khemer" msgid "Kannada" msgstr "Kannada" @@ -11513,7 +11411,6 @@ msgid "Macedonian" msgstr "Macedonio" -#, fuzzy msgid "Mongolian" msgstr "Macedonio" @@ -11533,7 +11430,7 @@ msgstr "Occitano" msgid "Punjabi" -msgstr "Punjabi" +msgstr "Punjabí" msgid "Polish" msgstr "Polaco" @@ -11572,7 +11469,7 @@ msgstr "Sueco" msgid "Swahili" -msgstr "" +msgstr "Suahili" msgid "Tamil" msgstr "Tamil" @@ -11638,19 +11535,23 @@ "FAQ:
http://developer.pidgin.im/wiki/FAQ

" msgstr "" +"FAQ: http://developer.pidgin.im/wiki/FAQ

" #, c-format msgid "" "Help via e-mail: support@pidgin.im

" msgstr "" - -#, fuzzy, c-format +"Axuda vía correo: support@pidgin.im

" + +#, c-format msgid "" "IRC Channel: #pidgin on irc.freenode.net

" msgstr "IRC: #pidgin en irc.freenode.net

" -#, fuzzy, c-format +#, c-format msgid "XMPP MUC: devel@conference.pidgin.im

" msgstr "IRC: #pidgin en irc.freenode.net

" @@ -11724,7 +11625,7 @@ "Está a punto de eliminar o contacto que contén a %s e %d contacto máis da " "lista de contactos. Quere continuar?" msgstr[1] "" -"Está a punto de eliminar o contacto que contén a %s e %d contacto máis da " +"Está a punto de eliminar o contacto que contén a %s e %d contactos máis da " "lista de contactos. Quere continuar?" msgid "Remove Contact" @@ -11835,8 +11736,7 @@ msgstr "Enviando como:" msgid "There is no application configured to open this type of file." -msgstr "" -"Non se configurou ningunha aplicación para abrir este tipo de ficheiro." +msgstr "Non se configurou ningún aplicativo para abrir este tipo de ficheiro." msgid "An error occurred while opening the file." msgstr "Produciuse un erro ao abrir o ficheiro." @@ -11904,10 +11804,9 @@ msgid "Hyperlink visited color" msgstr "Cor da ligazón visitada" -#, fuzzy msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "" -"A cor para debuxar as ligazóns despois de que se visiten (ou se activen)" +"A cor para debuxar as ligazóns despois de que se visiten (ou se activen)." msgid "Hyperlink prelight color" msgstr "Cor de ligazón iluminada previamente" @@ -11943,23 +11842,20 @@ msgid "Action Message Name Color for Whispered Message" msgstr "Cor do nome para a mensaxe de acción dunha mensaxe privada" -#, fuzzy msgid "Color to draw the name of a whispered action message." msgstr "A cor para debuxar o nome dunha mensaxe de acción." msgid "Whisper Message Name Color" msgstr "Cor do nome para as mensaxes privadas" -#, fuzzy msgid "Color to draw the name of a whispered message." msgstr "A cor para debuxar o nome dunha mensaxe de acción." msgid "Typing notification color" msgstr "Eliminación da notificación de escritura" -#, fuzzy msgid "The color to use for the typing notification" -msgstr "A cor que se usará para o tipo de letra da notificación de escritura" +msgstr "A cor que se usará para a notificación de escritura" msgid "Typing notification font" msgstr "Cor da notificación de escritura" @@ -12212,7 +12108,7 @@ msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%s %s. Probe `%s -h' para máis información.\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12234,17 +12130,19 @@ "\n" " -c, --config=DIR use DIR para ficheiros de configuración\n" " -d, --debug imprime as mensaxes de depuración á saída estándar\n" +" -f, --force-online forzar en liña, coidando o status da rede\n" " -h, --help mostra esta axuda e sae\n" " -m, --multiple non se asegurar de que hai só unha instancia\n" " -n, --nologin non iniciar a sesión de forma automática\n" -" -l, --login[=NOME] iniciar a sesión de forma automática (o argumento " -"opcional NOME especifica\n" -" a(s) conta(s) que hai que empregar separadas por " -"comas.\n" +" -l, --login[=NOME] activar a conta(s) específica(s) (o argumento " +"opcional\n" +" NOME especifica a(s) contas que hai que empregar " +"separadas por comas.\n" +" --display=DISPLAY X mostra para usa\n" " Sen isto só se activará a primeira conta).\n" " -v, --version mostra a versión actual e sae\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12265,6 +12163,7 @@ "\n" " -c, --config=DIR use DIR para ficheiros de configuración\n" " -d, --debug imprime as mensaxes de depuración á saída estándar\n" +" -f, --force-online forzar en liña, coidando o status da rede\n" " -h, --help mostra esta axuda e sae\n" " -m, --multiple non asegurarse de que hai só unha instancia\n" " -n, --nologin non conectarse de forma automática\n" @@ -12308,41 +12207,40 @@ #, c-format msgid "Exiting because another libpurple client is already running.\n" -msgstr "" +msgstr "Saíndo porque xa está executándose outro cliente libpurple.\n" msgid "/_Media" -msgstr "" +msgstr "/_Media" msgid "/Media/_Hangup" -msgstr "" - -#, fuzzy +msgstr "/Media/_Colgar" + msgid "Calling..." -msgstr "Calculando..." +msgstr "Chamando..." #, c-format msgid "%s wishes to start an audio/video session with you." -msgstr "" +msgstr "%s desexa comezar unha sesión de audio/video contigo." #, c-format msgid "%s wishes to start a video session with you." -msgstr "" +msgstr "%s desexa comezar unha sesión de video con vostede." #, c-format msgid "%s has %d new message." msgid_plural "%s has %d new messages." msgstr[0] "%s ten %d mensaxe nova." -msgstr[1] "%s ten %d mensaxe nova." +msgstr[1] "%s ten %d mensaxes novas." #, c-format msgid "%d new email." msgid_plural "%d new emails." msgstr[0] "Ten %d correo electrónico novo." -msgstr[1] "Ten %d correo electrónico novo." +msgstr[1] "Ten %d correos electrónicos novos." #, c-format msgid "The browser command \"%s\" is invalid." -msgstr "O comando do navegador \"%s\" non é válido." +msgstr "A orde do navegador \"%s\" non é válido." msgid "Unable to open URL" msgstr "Non se puido abrir o URL" @@ -12354,12 +12252,11 @@ msgid "" "The 'Manual' browser command has been chosen, but no command has been set." msgstr "" -"Elixiuse o navegador 'Manual', mais non se definiu ningún comando para " -"executalo." - -#, fuzzy +"Elixiuse o navegador 'Manual', mais non se definiu ningunha orde para " +"executala." + msgid "No message" -msgstr "Mensaxe descoñecida" +msgstr "Sen mensaxe" msgid "Open All Messages" msgstr "Abrir todas as mensaxes" @@ -12367,16 +12264,15 @@ msgid "You have mail!" msgstr "Ten correo!" -#, fuzzy msgid "New Pounces" -msgstr "Novo aviso de contacto" +msgstr "Novo aviso do seu contacto" msgid "Dismiss" -msgstr "" - -#, fuzzy +msgstr "Desbotar" + msgid "You have pounced!" -msgstr "Ten correo!" +msgstr "" +"Acaba de recibir un aviso!" msgid "The following plugins will be unloaded." msgstr "Desactivaranse os seguintes complementos." @@ -12426,9 +12322,8 @@ msgid "Select a file" msgstr "Seleccione un ficheiro" -#, fuzzy msgid "Modify Buddy Pounce" -msgstr "Editar aviso de contacto" +msgstr "Editar o aviso do seu contacto" #. Create the "Pounce on Whom" frame. msgid "Pounce on Whom" @@ -12480,7 +12375,7 @@ msgstr "Enviar unha _mensaxe" msgid "E_xecute a command" -msgstr "E_xecutar un comando" +msgstr "E_xecutar unha orde" msgid "P_lay a sound" msgstr "Re_producir un son" @@ -12503,61 +12398,58 @@ msgid "Pounce Target" msgstr "Sobre quen avisar" -#, fuzzy, c-format +#, c-format msgid "Started typing" -msgstr "Comeza a escribir" - -#, fuzzy, c-format +msgstr "Comezou a escribir" + +#, c-format msgid "Paused while typing" -msgstr "Fai unha pausa ao escribir" - -#, fuzzy, c-format +msgstr "Fixo unha pausa mentres escribía" + +#, c-format msgid "Signed on" -msgstr "Se conecta" - -#, fuzzy, c-format +msgstr "Conéctase" + +#, c-format msgid "Returned from being idle" -msgstr "%s volveu da inactividade (%s)" - -#, fuzzy, c-format +msgstr "Volveu da inactividade" + +#, c-format msgid "Returned from being away" -msgstr "Deixa de estar ausente" - -#, fuzzy, c-format +msgstr "Volveu da ausencia" + +#, c-format msgid "Stopped typing" msgstr "Deixou de escribir" -#, fuzzy, c-format +#, c-format msgid "Signed off" -msgstr "Se desconecta" - -#, fuzzy, c-format +msgstr "Desconectouse" + +#, c-format msgid "Became idle" -msgstr "Se volve inactivo" - -#, fuzzy, c-format +msgstr "Volveuse inactivo" + +#, c-format msgid "Went away" -msgstr "Cando estea ausente" - -#, fuzzy, c-format +msgstr "Cando non estea" + +#, c-format msgid "Sent a message" msgstr "Enviar unha mensaxe" -#, fuzzy, c-format +#, c-format msgid "Unknown.... Please report this!" -msgstr "Evento de aviso descoñecido. Informe disto!" - -#, fuzzy +msgstr "Descoñecido... Por favor informe disto!" + msgid "Theme failed to unpack." -msgstr "Fallou o desempaquetado do tema de emoticonas." - -#, fuzzy +msgstr "Fallou o desempaquetado do tema." + msgid "Theme failed to load." -msgstr "Fallou o desempaquetado do tema de emoticonas." - -#, fuzzy +msgstr "Fallou a carga do tema." + msgid "Theme failed to copy." -msgstr "Fallou o desempaquetado do tema de emoticonas." +msgstr "Fallou a copia do tema." msgid "Install Theme" msgstr "Instalar tema" @@ -12579,9 +12471,8 @@ msgstr "Pechar as c_onversas coa tecla Esc" #. Buddy List Themes -#, fuzzy msgid "Buddy List Theme" -msgstr "Lista de contactos" +msgstr "Tema da lista de contactos" #. System Tray msgid "System Tray Icon" @@ -12593,9 +12484,8 @@ msgid "On unread messages" msgstr "Se hai mensaxes sen ler" -#, fuzzy msgid "Conversation Window" -msgstr "Ventás de conversa de MI" +msgstr "Xanela de conversa" msgid "_Hide new IM conversations:" msgstr "_Ocultar as novas conversas de MI:" @@ -12687,7 +12577,7 @@ "that support formatting." msgstr "" "Isto é unha mostra de como aparecerá a súa mensaxe saínte cando use " -"protocolos que soportan o formatado." +"protocolos que son compatíbeis co formatado." msgid "Cannot start proxy configuration program." msgstr "Non se pode iniciar o programa de configuración do proxy." @@ -12698,9 +12588,9 @@ msgid "Example: stunserver.org" msgstr "Exemplo: stunserver.org" -#, fuzzy, c-format +#, c-format msgid "Use _automatically detected IP address: %s" -msgstr "Detectar _automaticamente o enderezo IP" +msgstr "Usar o enderezo IP detectado _automaticamente: %s" msgid "Public _IP:" msgstr "_IP público:" @@ -12722,7 +12612,7 @@ #. TURN server msgid "Relay Server (TURN)" -msgstr "" +msgstr "Servidor de reenvío (TURN)" msgid "Proxy Server & Browser" msgstr "Servidor proxy & Navegador" @@ -12754,7 +12644,7 @@ #. This is a global option that affects SOCKS4 usage even with account-specific proxy settings msgid "Use remote DNS with SOCKS4 proxies" -msgstr "" +msgstr "Usar DNS remoto con proxies SOCKS4" msgid "_User:" msgstr "_Usuario:" @@ -13070,12 +12960,11 @@ msgid "Status for %s" msgstr "Estado para %s" -#, fuzzy, c-format +#, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "" -"Xa existe unha emoticona personalizada para o atallo seleccionado. " -"Especifique un atallo diferente." +"Xa existe unha emoticona personalizada para '%s'. Use un atallo diferente." msgid "Custom Smiley" msgstr "Emoticona personalizada" @@ -13089,28 +12978,24 @@ msgid "Add Smiley" msgstr "Engadir emoticona" -#, fuzzy msgid "_Image:" -msgstr "_Imaxe" +msgstr "_Imaxe:" #. Shortcut text -#, fuzzy msgid "S_hortcut text:" -msgstr "Atallo" +msgstr "Te_xto de atallo:" msgid "Smiley" msgstr "Emoticona" -#, fuzzy msgid "Shortcut Text" -msgstr "Atallo" +msgstr "Texto de atallo" msgid "Custom Smiley Manager" msgstr "Xestor de emoticonas personalizadas" -#, fuzzy msgid "Select Buddy Icon" -msgstr "Seleccionar contacto" +msgstr "Seleccionar icona de contacto" msgid "Click to change your buddyicon for this account." msgstr "Prema para cambiar a súa icona de contacto para esta conta." @@ -13196,13 +13081,12 @@ msgid "Cannot send launcher" msgstr "Non se pode enviar o iniciador" -#, fuzzy msgid "" "You dragged a desktop launcher. Most likely you wanted to send the target of " "this launcher instead of this launcher itself." msgstr "" "Arrastrou un iniciador do escritorio. O máis probábel é que queira enviar o " -"contido ao que apunta o propio iniciador." +"destinodeste iniciador en lugar de enviar este mesmo iniciador." #, c-format msgid "" @@ -13236,9 +13120,8 @@ "Fallo ao cargar a imaxe '%s': causa descoñecida, probablemente o ficheiro " "está corrompido" -#, fuzzy msgid "_Open Link" -msgstr "_Abrir ligazón en:" +msgstr "_Abrir ligazón" msgid "_Copy Link Location" msgstr "_Copiar localización da ligazón" @@ -13246,9 +13129,21 @@ msgid "_Copy Email Address" msgstr "_Copiar enderezo de correo" +msgid "_Open File" +msgstr "_Abrir ficheiro" + +msgid "Open _Containing Directory" +msgstr "Abrir o cartafol que os _contén" + msgid "Save File" msgstr "Gardar o ficheiro" +msgid "_Play Sound" +msgstr "Re_producir un son" + +msgid "_Save File" +msgstr "_Gardar o ficheiro" + msgid "Select color" msgstr "Seleccione a cor" @@ -13337,77 +13232,65 @@ msgstr "" "Mostra información estatística sobre a dispoñibilidade dos seus contactos" -#, fuzzy msgid "Server name request" -msgstr "Enderezo do servidor" - -#, fuzzy +msgstr "Consulta do nome do servidor" + msgid "Enter an XMPP Server" -msgstr "Introduza un servidor de conferencias" - -#, fuzzy +msgstr "Introduza un servidor de XMPP" + msgid "Select an XMPP server to query" -msgstr "Seleccione un servidor de conferencias ao que consultar" - -#, fuzzy +msgstr "Seleccione un servidor de XMPP ao que consultar" + msgid "Find Services" -msgstr "Servizos en liña" - -#, fuzzy +msgstr "Encontrar servizos" + msgid "Add to Buddy List" -msgstr "Enviar lista de contactos" - -#, fuzzy +msgstr "Engadir á lista de contactos" + msgid "Gateway" -msgstr "Está ausente" - -#, fuzzy +msgstr "Pasarela" + msgid "Directory" -msgstr "Directorio de rexistro" - -#, fuzzy +msgstr "Directorio" + msgid "PubSub Collection" -msgstr "Selección de son" - -#, fuzzy +msgstr "Selección de PubSub" + msgid "PubSub Leaf" -msgstr "Servizo PubSub" - -#, fuzzy +msgstr "Folla PubSub" + msgid "" "\n" "Description: " -msgstr "Descrición" +msgstr "" +"\n" +"Descrición: " #. Create the window. -#, fuzzy msgid "Service Discovery" msgstr "Información de descubrimento de servizo" -#, fuzzy msgid "_Browse" -msgstr "_Navegador:" - -#, fuzzy +msgstr "_Navegador" + msgid "Server does not exist" msgstr "O usuario non existe" -#, fuzzy msgid "Server does not support service discovery" msgstr "O servidor non usa ningún método de autenticación coñecido" -#, fuzzy msgid "XMPP Service Discovery" -msgstr "Información de descubrimento de servizo" +msgstr "Información de descubrimento de servizo XMPP" msgid "Allows browsing and registering services." -msgstr "" - -#, fuzzy +msgstr "Permitir a navegación e o rexistro de servizos." + msgid "" "This plugin is useful for registering with legacy transports or other XMPP " "services." -msgstr "Este complemento é útil para depurar servidores XMPP ou clientes." +msgstr "" +"Este complemento é útil para rexistar transportes con herdanza ou outros " +"servizos sobre XMPP." msgid "Buddy is idle" msgstr "O contacto está inactivo" @@ -13568,7 +13451,7 @@ #. *< version #. * summary msgid "Provides support for mouse gestures" -msgstr "Proporciona soporte para os xestos co rato" +msgstr "Proporciona compatibilidade para os xestos co rato" #. * description msgid "" @@ -13578,8 +13461,8 @@ " • Drag up and then to the left to switch to the previous conversation.\n" " • Drag up and then to the right to switch to the next conversation." msgstr "" -"Permite o soporte de xestos co rato nas xanelas de conversa. Arrastre co " -"botón central do rato para realizar certas accións:\n" +"Permite dispoñibilidade de xestos co rato nas xanelas de conversa. Arrastre " +"co botón central do rato para realizar certas accións:\n" " • Abaixo e despois á dereita para pechar unha conversa.\n" " • Arriba e despois á esquerda para mudar á conversa anterior.\n" " • Arriba e despois á dereita para mudar á seguinte conversa." @@ -13770,7 +13653,7 @@ msgstr "Mensaxería musical" msgid "There was a conflict in running the command:" -msgstr "Produciuse un conflito ao executar o comando:" +msgstr "Produciuse un conflito ao executar a orde:" msgid "Error Running Editor" msgstr "Erro ao executar o editor" @@ -13800,13 +13683,12 @@ msgstr "Complemento de mensaxería musical para a composición colaborativa." #. * 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." msgstr "" "O complemento de mensaxería musical permíte que distintos usuarios traballen " -"de forma simultánea nunha peza de música editando unha partitura común en " +"de forma simultánea nunha peza músical editando unha partitura común en " "tempo real." #. ---------- "Notify For" ---------- @@ -13925,7 +13807,6 @@ msgid "Highlighted Message Name Color" msgstr "Cor do nome para a mensaxe realzada" -#, fuzzy msgid "Typing Notification Color" msgstr "Eliminación da notificación de escritura" @@ -13958,23 +13839,20 @@ msgid "GTK+ Text Shortcut Theme" msgstr "Tema de atallo de texto GTK+" -#, fuzzy msgid "Disable Typing Notification Text" msgstr "Activar a notificación de escritura" -#, fuzzy msgid "GTK+ Theme Control Settings" -msgstr "Control de temas GTK+ de Pidgin" - -#, fuzzy +msgstr "Configuración de temas GTK+" + msgid "Colors" -msgstr "Pechar" +msgstr "Cores" msgid "Fonts" msgstr "Tipos de letra" msgid "Miscellaneous" -msgstr "" +msgstr "Misceláneo" msgid "Gtkrc File Tools" msgstr "Ferramentas de ficheiros Gtkrc" @@ -14059,7 +13937,6 @@ msgstr "O botón para enviar a xanela de conversa." #. *< summary -#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for use when no physical keyboard is present." @@ -14120,94 +13997,78 @@ "Substitúe o texto das mensaxes saíntes segundo as regras definidas polo " "usuario." -#, fuzzy msgid "Just logged in" -msgstr "Non iniciou a sesión" - -#, fuzzy +msgstr "Acaba de iniciar a sesión" + msgid "Just logged out" -msgstr "Non iniciou a sesión" +msgstr "Acaba de rematar a sesión" msgid "" "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"Icona do contacto/\n" +"Icona de persoa descoñecida" + msgid "Icon for Chat" -msgstr "Unirse a unha conversa" - -#, fuzzy +msgstr "Icona para chat" + msgid "Ignored" -msgstr "Ignorar" - -#, fuzzy +msgstr "Ignorado" + msgid "Founder" -msgstr "Máis ruidoso" - -#, fuzzy +msgstr "Fundador" + msgid "Operator" -msgstr "Opera" +msgstr "Operador" msgid "Half Operator" -msgstr "" - -#, fuzzy +msgstr "Semioperador" + msgid "Authorization dialog" -msgstr "Autorización concedida" - -#, fuzzy +msgstr "Diálogo de autorización" + msgid "Error dialog" -msgstr "Erro " - -#, fuzzy +msgstr "Diálogo de erro " + msgid "Information dialog" -msgstr "Información" +msgstr "Diálogo de información" msgid "Mail dialog" -msgstr "" - -#, fuzzy +msgstr "Diálogo de correo" + msgid "Question dialog" msgstr "Diálogo de solicitude" -#, fuzzy msgid "Warning dialog" -msgstr "Nivel de aviso" +msgstr "Diálogo de aviso" msgid "What kind of dialog is this?" -msgstr "" - -#, fuzzy +msgstr "Que clase de diálogo é este?" + msgid "Status Icons" -msgstr "Estado para %s" - -#, fuzzy +msgstr "Iconas de estado" + msgid "Chatroom Emblems" -msgstr "Localización da sala de conversa" - -#, fuzzy +msgstr "Emblemas da sala de conversa" + msgid "Dialog Icons" -msgstr "Cambiar icona" - -#, fuzzy +msgstr "Iconas de diálogo" + msgid "Pidgin Icon Theme Editor" -msgstr "Control de temas GTK+ de Pidgin" - -#, fuzzy +msgstr "Editor de iconas de tema de Pidgin" + msgid "Contact" -msgstr "Información do contacto" - -#, fuzzy +msgstr "Contacto" + msgid "Pidgin Buddylist Theme Editor" -msgstr "Lista de contactos" - -#, fuzzy +msgstr "Editor de tema lista de contactos" + msgid "Edit Buddylist Theme" -msgstr "Lista de contactos" +msgstr "Editar o tema da lista de contactos" msgid "Edit Icon Theme" -msgstr "" +msgstr "Editar tema da icona" #. *< type #. *< ui_requirement @@ -14216,16 +14077,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "Control de temas GTK+ de Pidgin" +msgstr "Editor do tema de Pidgin" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "Control de temas GTK+ de Pidgin" +msgstr "Editor do tema de Pidgin." #. *< type #. *< ui_requirement @@ -14368,7 +14227,7 @@ "* Nota: este complemento require Win2000 ou outro máis novo." msgid "GTK+ Runtime Version" -msgstr "GTK+ Runtime Version" +msgstr "Versión de GTK+ Runtime" #. Autostart msgid "Startup" @@ -14395,11 +14254,10 @@ msgid "Options specific to Pidgin for Windows." msgstr "Opcións específicas do Pidgin no Windows." -#, fuzzy msgid "" "Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr "" -"Proporciona opcións específicas para o Pidgin no Windows, como a ancoraxe da " +"Proporciona opcións específicas para o Pidgin en Windows, como a ancoraxe da " "xanela de contactos." msgid "Logged out." @@ -14439,516 +14297,5 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Este complemento é útil para depurar servidores XMPP ou clientes." -#~ msgid "Cannot open socket" -#~ msgstr "Non se pode abrir o conectador" - -#~ msgid "Could not listen on socket" -#~ msgstr "Non se puido escoitar o conectador" - -#~ msgid "Unable to read socket" -#~ msgstr "Non é posíbel ler o conectador" - -#~ msgid "Connection failed." -#~ msgstr "Fallou a conexión." - -#~ msgid "Server has disconnected" -#~ msgstr "O servidor desconectouse" - -#~ msgid "Couldn't create socket" -#~ msgstr "Non se puido crear o conectador " - -#~ msgid "Couldn't connect to host" -#~ msgstr "Non se puido conectar ao servidor" - -#~ msgid "Read error" -#~ msgstr "Erro de lectura" - -#~ msgid "" -#~ "Could not establish a connection with the server:\n" -#~ "%s" -#~ msgstr "" -#~ "Non se puido establecer unha conexión co servidor:\n" -#~ "%s" - -#~ msgid "Write error" -#~ msgstr "Erro de escritura" - -#~ msgid "Last Activity" -#~ msgstr "Última actividade" - -#~ msgid "Service Discovery Info" -#~ msgstr "Información de descubrimento de servizo" - -#~ msgid "Service Discovery Items" -#~ msgstr "Elementos de descubrimento de servizo" - -#~ msgid "Extended Stanza Addressing" -#~ msgstr "Envío de parágrafos ampliado" - -#~ msgid "Multi-User Chat" -#~ msgstr "Conversa multiusuario" - -#~ msgid "Multi-User Chat Extended Presence Information" -#~ msgstr "Información de presencia ampliada de conversa multiusuario" - -#~ msgid "In-Band Bytestreams" -#~ msgstr "Fluxos de bytes In-Band" - -#~ msgid "Ad-Hoc Commands" -#~ msgstr "Comandos Ad-Hoc" - -#~ msgid "PubSub Service" -#~ msgstr "Servizo PubSub" - -#~ msgid "SOCKS5 Bytestreams" -#~ msgstr "Fluxos de bytes SOCKS5" - -#~ msgid "Out of Band Data" -#~ msgstr "Datos fóra de banda" - -#~ msgid "XHTML-IM" -#~ msgstr "XHTML-IM" - -#~ msgid "In-Band Registration" -#~ msgstr "Rexistro In-Band" - -#~ msgid "User Location" -#~ msgstr "Localización do usuario" - -#~ msgid "User Avatar" -#~ msgstr "Avatar de usuario" - -#~ msgid "Chat State Notifications" -#~ msgstr "Notificacións de estado da conversa" - -#~ msgid "Software Version" -#~ msgstr "Versión de software" - -#~ msgid "Stream Initiation" -#~ msgstr "Inicio de fluxo" - -#~ msgid "User Mood" -#~ msgstr "Estado de ánimo do usuario" - -#~ msgid "User Activity" -#~ msgstr "Actividade do usuario" - -#~ msgid "Entity Capabilities" -#~ msgstr "Capacidades da entidade" - -#~ msgid "Encrypted Session Negotiations" -#~ msgstr "Negociacións de sesión codificada" - -#~ msgid "User Tune" -#~ msgstr "Música do usuario" - -#~ msgid "Roster Item Exchange" -#~ msgstr "Intercambio de elementos da lista" - -#~ msgid "Reachability Address" -#~ msgstr "Enderezo de contacto" - -#~ msgid "User Profile" -#~ msgstr "Perfil de usuario" - -#~ msgid "Jingle" -#~ msgstr "Jingle" - -#~ msgid "Jingle Audio" -#~ msgstr "Jingle Audio" - -#~ msgid "User Nickname" -#~ msgstr "Alias do usuario" - -#~ msgid "Jingle ICE UDP" -#~ msgstr "Jingle ICE UDP" - -#~ msgid "Jingle ICE TCP" -#~ msgstr "Jingle ICE TCP" - -#~ msgid "Jingle Raw UDP" -#~ msgstr "Jingle UDP en bruto" - -#~ msgid "Jingle Video" -#~ msgstr "Jingle Video" - -#~ msgid "Jingle DTMF" -#~ msgstr "Jingle DTMF" - -#~ msgid "Message Receipts" -#~ msgstr "Recibos de mensaxe" - -#~ msgid "Public Key Publishing" -#~ msgstr "Publicación da chave pública" - -#~ msgid "User Chatting" -#~ msgstr "O usuario está conversando" - -#~ msgid "User Browsing" -#~ msgstr "O usuario está navegando" - -#~ msgid "User Gaming" -#~ msgstr "O usuario está xogando" - -#~ msgid "User Viewing" -#~ msgstr "O usuario está observando" - -#~ msgid "Stanza Encryption" -#~ msgstr "Cifrado de parágrafo" - -#~ msgid "Entity Time" -#~ msgstr "Hora da entidade" - -#~ msgid "Delayed Delivery" -#~ msgstr "Envío atrasado" - -#~ msgid "Collaborative Data Objects" -#~ msgstr "Collaborative Data Objects" - -#~ msgid "File Repository and Sharing" -#~ msgstr "Repositorio de ficheiros e compartidos" - -#~ msgid "STUN Service Discovery for Jingle" -#~ msgstr "Descubrimento de servizo STUN para o Jingle" - -#~ msgid "Simplified Encrypted Session Negotiation" -#~ msgstr "Negociación simplificada de sesión cifrada" - -#~ msgid "Hop Check" -#~ msgstr "Verificación de saltos" - -#~ msgid "Read Error" -#~ msgstr "Erro de lectura" - -#~ msgid "Failed to connect to server." -#~ msgstr "Fallou ao conectar ao servidor." - -#~ msgid "Read buffer full (2)" -#~ msgstr "O búfer de lectura está cheo (2)" - -#~ msgid "Unparseable message" -#~ msgstr "A mensaxe non é analizábel" - -#~ msgid "Couldn't connect to host: %s (%d)" -#~ msgstr "Non se puido conectar ao servidor: %s (%d)" - -#~ msgid "Login failed (%s)." -#~ msgstr "Fallou o inicio de sesión (%s)." - -#~ msgid "" -#~ "You have been logged out because you logged in at another workstation." -#~ msgstr "" -#~ "Foi desconectado porque se conectou desde outra estación de traballo." - -#~ msgid "Error. SSL support is not installed." -#~ msgstr "Erro. O soporte SSL non está instalado." - -#~ msgid "Incorrect password." -#~ msgstr "Contrasinal incorrecto." - -#~ msgid "" -#~ "Could not connect to BOS server:\n" -#~ "%s" -#~ msgstr "" -#~ "Non se puido conectar ao servidor BOS:\n" -#~ "%s" - -#~ msgid "You may be disconnected shortly. Check %s for updates." -#~ msgstr "Talvez sexa desconectado en breve. Comprobe %s para actualizacións." - -#~ msgid "Could Not Connect" -#~ msgstr "Non se puido conectar" - -#~ msgid "Invalid username." -#~ msgstr "Nome de usuario non válido." - -#~ msgid "Could not decrypt server reply" -#~ msgstr "Non se puido descrifrar a resposta do servidor" - -#~ msgid "Connection lost" -#~ msgstr "Conexión perdida" - -#~ msgid "Couldn't resolve host" -#~ msgstr "Non se puido resolver o host" - -#~ msgid "Connection closed (writing)" -#~ msgstr "Conexión pechada (escribindo)" - -#~ msgid "Connection reset" -#~ msgstr "Conexión reiniciada" - -#~ msgid "Error reading from socket: %s" -#~ msgstr "Erro ao ler do conectador: %s" - -#~ msgid "Unable to connect to host" -#~ msgstr "Non é posíbel conectarse ao host" - -#~ msgid "Could not write" -#~ msgstr "Non se puido escribir" - -#~ msgid "Could not connect" -#~ msgstr "Non se puido conectar" - -#~ msgid "Could not create listen socket" -#~ msgstr "Non se puido crear o conectador para escoitar" - -#~ msgid "Could not resolve hostname" -#~ msgstr "Non se puido resolver o nome do host" - -#, fuzzy -#~ msgid "Incorrect Password" -#~ msgstr "Contrasinal incorrecto" - -#~ msgid "" -#~ "Could not establish a connection with %s:\n" -#~ "%s" -#~ msgstr "" -#~ "Non se puido establecer unha conexión con %s:\n" -#~ "%s" - -#~ msgid "Yahoo Japan" -#~ msgstr "Yahoo Xapón" - -#~ msgid "Japan Pager server" -#~ msgstr "Servidor de buscapersoas xaponés" - -#~ msgid "Japan file transfer server" -#~ msgstr "Servidor de transferencia de ficheiros xaponés" - -#~ msgid "" -#~ "Lost connection with server\n" -#~ "%s" -#~ msgstr "" -#~ "Perdeuse a conexión co servidor\n" -#~ "%s" - -#~ msgid "Could not resolve host name" -#~ msgstr "Non se puido resolver o nome do host" - -#, fuzzy -#~ msgid "" -#~ "Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support " -#~ "was found." -#~ msgstr "" -#~ "O servidor require TLS/SSL para iniciar a sesión. Non se dispón de " -#~ "soporte TLS/SSL." - -#~ msgid "Conversation Window Hiding" -#~ msgstr "Ocultar a xanela de conversa" - -#~ msgid "More Data needed" -#~ msgstr "Precísanse máis datos" - -#~ msgid "Please provide a shortcut to associate with the smiley." -#~ msgstr "Proporcione un atallo para asociar á emoticona." - -#~ msgid "Please select an image for the smiley." -#~ msgstr "Escolla unha imaxe para a emoticona." - -#~ msgid "Activate which ID?" -#~ msgstr "Que ID quere activar?" - -#~ msgid "Cursor Color" -#~ msgstr "Cor do cursor" - -#~ msgid "Secondary Cursor Color" -#~ msgstr "Cor secundaria do cursor" - -#~ msgid "Interface colors" -#~ msgstr "Cores da interface" - -#~ msgid "Widget Sizes" -#~ msgstr "Tamaño dos widget" - -#~ msgid "Invite message" -#~ msgstr "Mensaxe de convite" - -#~ msgid "" -#~ "Please enter the name of the user you wish to invite,\n" -#~ "along with an optional invite message." -#~ msgstr "" -#~ "Introduza o nome do usuario que desexa convidar,\n" -#~ "xunto cunha mensaxe de convite opcional." - -#~ msgid "Unable to retrieve MSN Address Book" -#~ msgstr "Non é posíbel obter a axenda de enderezos do MSN" - -#~ msgid "" -#~ "You may be disconnected shortly. You may want to use TOC until this is " -#~ "fixed. Check %s for updates." -#~ msgstr "" -#~ "Talvez sexa desconectado en breve. Pode querer usar TOC até que se " -#~ "resolva isto. Comprobe %s para as actualizacións." - -#~ msgid "Looking up %s" -#~ msgstr "Buscando %s" - -#~ msgid "Connect to %s failed" -#~ msgstr "Fallou a conexión a %s" - -#~ msgid "Signon: %s" -#~ msgstr "Conectado: %s" - -#~ msgid "Unable to write file %s." -#~ msgstr "Non se puido escribir o ficheiro %s." - -#~ msgid "Unable to read file %s." -#~ msgstr "Non se puido ler o ficheiro %s." - -#~ msgid "Message too long, last %s bytes truncated." -#~ msgstr "A mensaxe é demasiado longa; borrouse os últimos %s bytes." - -#~ msgid "%s not currently logged in." -#~ msgstr "%s non está conectado agora." - -#~ msgid "Warning of %s not allowed." -#~ msgstr "Non se permiten avisos de %s." - -#~ msgid "" -#~ "A message has been dropped, you are exceeding the server speed limit." -#~ msgstr "" -#~ "Descartouse a mensaxe; vostede está a exceder o límite de velocidade do " -#~ "servidor." - -#~ msgid "Chat in %s is not available." -#~ msgstr "Non está dispoñíbel a conversa en %s." - -#~ msgid "You are sending messages too fast to %s." -#~ msgstr "Está a enviar mensaxes demasiado rápido a %s." - -#~ msgid "You missed an IM from %s because it was too big." -#~ msgstr "Perdeu unha MI de %s porque era demasiado grande." - -#~ msgid "You missed an IM from %s because it was sent too fast." -#~ msgstr "Perdeu unha MI de %s porque se mandou demasiado rápido." - -#~ msgid "Failure." -#~ msgstr "Fallo." - -#~ msgid "Too many matches." -#~ msgstr "Demasiados resultados." - -#~ msgid "Need more qualifiers." -#~ msgstr "Necesítanse máis cualificadores." - -#~ msgid "Dir service temporarily unavailable." -#~ msgstr "Servizo de directorio non dispoñíbel temporalmente." - -#~ msgid "Email lookup restricted." -#~ msgstr "Busca de enderezos de correo electrónico restrinxida." - -#~ msgid "Keyword ignored." -#~ msgstr "Palabra chave ignorada." - -#~ msgid "No keywords." -#~ msgstr "Sen palabras chave." - -#~ msgid "User has no directory information." -#~ msgstr "O usuario non ten información de directorio." - -#~ msgid "Country not supported." -#~ msgstr "País non soportado." - -#~ msgid "Failure unknown: %s." -#~ msgstr "Fallo descoñecido: %s." - -#~ msgid "Incorrect username or password." -#~ msgstr "O nome de usuario ou contrasinal non é correcto." - -#~ msgid "The service is temporarily unavailable." -#~ msgstr "O servizo non está dispoñíbel temporalmente." - -#~ msgid "Your warning level is currently too high to log in." -#~ msgstr "" -#~ "O seu nivel de advertencias é actualmente demasiado alto para iniciar a " -#~ "sesión." - -#~ msgid "" -#~ "You have been connecting and disconnecting too frequently. Wait ten " -#~ "minutes and try again. If you continue to try, you will need to wait " -#~ "even longer." -#~ msgstr "" -#~ "Conectouse e desconectouse con demasida frecuencia. Agarde dez minutos e " -#~ "inténteo de novo. Se segue intentándoo, poida que precise agardar aínda " -#~ "máis tempo." - -#~ msgid "An unknown signon error has occurred: %s." -#~ msgstr "Ocorreu un erro descoñecido ao conectarse: %s." - -#~ msgid "An unknown error, %d, has occurred. Info: %s" -#~ msgstr "Ocorreu un erro (%d) descoñecido. Información: %s" - -#~ msgid "Invalid Groupname" -#~ msgstr "Nome de grupo non válido" - -#~ msgid "Connection Closed" -#~ msgstr "Conexión pechada" - -#~ msgid "Waiting for reply..." -#~ msgstr "Agardando resposta..." - -#~ msgid "TOC has come back from its pause. You may now send messages again." -#~ msgstr "O TOC rematou a pausa. Xa pode volver a enviar mensaxes." - -#~ msgid "Password Change Successful" -#~ msgstr "O contrasinal modificouse con éxito" - -#~ msgid "Get Dir Info" -#~ msgstr "Obter a información do directorio" - -#~ msgid "Set Dir Info" -#~ msgstr "Establecer a información do directorio" - -#~ msgid "Could not open %s for writing!" -#~ msgstr "Non se puido abrir %s para escritura!" - -#~ msgid "File transfer failed; other side probably canceled." -#~ msgstr "" -#~ "Fallou a transferencia do ficheiro; posibelmente foi cancelado polo outro " -#~ "extremo." - -#~ msgid "Could not connect for transfer." -#~ msgstr "Non se puido conectar para realizar a transferencia." - -#~ msgid "Could not write file header. The file will not be transferred." -#~ msgstr "" -#~ "Non se puido escribir a cabeceira do ficheiro. O ficheiro non se " -#~ "transferirá." - -#~ msgid "Save As..." -#~ msgstr "Gardar como..." - -#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s" -#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s" -#~ msgstr[0] "%s solicita a %s que acepte %d ficheiro: %s (%.2f %s)%s%s" -#~ msgstr[1] "%s solicita a %s que acepte %d ficheiro: %s (%.2f %s)%s%s" - -#~ msgid "%s requests you to send them a file" -#~ msgstr "%s solicita que lles envíe un ficheiro" - -#~ msgid "TOC Protocol Plugin" -#~ msgstr "Complemento de protocolo TOC" - -#~ msgid "%s Options" -#~ msgstr "Opcións de %s" - -#~ msgid "Proxy Options" -#~ msgstr "Opcións do proxy" - -#~ msgid "By log size" -#~ msgstr "Por tamaño de rexistro" - -#~ msgid "_Open Link in Browser" -#~ msgstr "_Abrir ligazón no navegador" - -#~ msgid "ST_UN server:" -#~ msgstr "Servidor ST_UN:" - -#~ msgid "Smiley _Image" -#~ msgstr "_Imaxe de emoticona" - -#~ msgid "Smiley S_hortcut" -#~ msgstr "A_tallo de emoticona" - -#~ msgid "_Flash window when chat messages are received" -#~ msgstr "Facer escintilar a _xanela cando se reciben mensaxes de conversas" +#~ msgid "Malformed BOSH Connect Server" +#~ msgstr "A conexión BOSH ao servidor está malformada" diff -r b4daae0798e3 -r e1cd44c7c7af po/nl.po --- a/po/nl.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/nl.po Sat Jul 25 04:54:36 2009 +0000 @@ -10874,7 +10874,7 @@ #, fuzzy msgid "_Remain in chat after window is closed." -msgstr "Verberg c_hat wanneer de verbinding verbroken wordt." +msgstr "Verberg c_hat wanneer het venster gesloten is." msgid "Please enter the name of the group to be added." msgstr "Geef de naam van de toe te voegen groep." diff -r b4daae0798e3 -r e1cd44c7c7af po/nn.po --- a/po/nn.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/nn.po Sat Jul 25 04:54:36 2009 +0000 @@ -2,9 +2,9 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2009-02-20 23:45+0100\n" -"Last-Translator: YS Landro \n" +"POT-Creation-Date: 2009-07-12 20:58-0700\n" +"PO-Revision-Date: 2009-05-31 13:58+0100\n" +"Last-Translator: Yngve Spjeld Landro \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,7 +38,7 @@ " -d, --debug skriv ut feilsøkingsmeldingar til standard utkanal\n" " -h, --help vis denne hjelpa og avslutt\n" " -n, --nologin loggar ikkje på automatisk\n" -" -v, --version vis noverande versjon og avslutt\n" +" -v, --version vis noverande utgåve og avslutt\n" #, c-format msgid "" @@ -854,12 +854,11 @@ msgid "System Log" msgstr "Systemlogg" -#, fuzzy msgid "Calling ... " -msgstr "Reknar…" +msgstr "Ringjer…" msgid "Hangup" -msgstr "" +msgstr "Legg på" #. Number of actions msgid "Accept" @@ -869,25 +868,24 @@ msgstr "Avvis" msgid "Call in progress." -msgstr "" +msgstr "Held på å ringja." msgid "The call has been terminated." -msgstr "" +msgstr "Oppringinga er blitt avbroten." #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s ønskjer å starta ei lydøkt med deg." #, c-format msgid "%s is trying to start an unsupported media session type with you." -msgstr "" - -#, fuzzy +msgstr "%s prøver å starta ein mediaøkttype som ikkje er støtta." + msgid "You have rejected the call." -msgstr "Du har forlate kanalen %s%s" +msgstr "Du har avvist samtala." msgid "call: Make an audio call." -msgstr "" +msgstr "call: lag ei lydoppringing." msgid "Emails" msgstr "E-postmeldingar" @@ -1545,22 +1543,25 @@ "\n" "Fetching TinyURL..." msgstr "" +"\n" +"Hentar TinyURL…" msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "Lag berre TinyURL for adresser med denne eller større lengd" msgid "TinyURL (or other) address prefix" -msgstr "" - -#, fuzzy +msgstr "TinyURL-adresseprefiks (eller annan) " + msgid "TinyURL" -msgstr "Låtadresse" +msgstr "TinyURL" msgid "TinyURL plugin" -msgstr "" +msgstr "TinyURL-programtillegg" msgid "When receiving a message with URL(s), TinyURL for easier copying" msgstr "" +"Ved mottak av meldingar med adresser (URL), bruk TinyURL som gjev lettare " +"kopiering" msgid "accounts" msgstr "kontoar" @@ -1811,9 +1812,8 @@ msgid "%s left the room (%s)." msgstr "%s har gått ut av rommet (%s)." -#, fuzzy msgid "Invite to chat" -msgstr "Inviter til konferanse" +msgstr "Inviter til å prata" #. Put our happy label in it. msgid "" @@ -1954,6 +1954,10 @@ msgid "Starting transfer of %s from %s" msgstr "Startar overføring av %s frå %s" +#, fuzzy, c-format +msgid "Transfer of file %s complete" +msgstr "Overføringa av fila %s er ferdig" + #, c-format msgid "Transfer of file %s complete" msgstr "Overføringa av fila %s er ferdig" @@ -2184,7 +2188,7 @@ #, c-format msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" -msgstr "Samsvarsfeil %d i ABI-versjonen.%d.x (treng %d.%d.x)" +msgstr "Samsvarsfeil %d i ABI-utgåva.%d.x (treng %d.%d.x)" msgid "" "Plugin does not implement all required functions (list_icon, login and close)" @@ -2579,7 +2583,7 @@ "Når ein les loggar, vil dette programtillegget ta med loggar frå andre " "klientar. For tida gjeld dette Adium, MSN Messenger og Trillian.\n" "\n" -"ÅTVARING: Dette tillegget er framleis ein alfa-versjon og vil kanskje krasja " +"ÅTVARING: Dette tillegget er framleis ei alfa-utgåve og vil kanskje krasja " "ofte. Bruk det på eigen risiko!" msgid "Mono Plugin Loader" @@ -2659,9 +2663,8 @@ msgid "Do not ask. Always save in pounce." msgstr "Spør ikkje. Lagra alltid som eit varsel." -#, fuzzy msgid "One Time Password" -msgstr "Skriv inn passord" +msgstr "Eingongspassord" #. *< type #. *< ui_requirement @@ -2670,13 +2673,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "Eingongspassordstøtte" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "Sjå til at passord berre kan nyttast éin gong." #. * description msgid "" @@ -2684,6 +2687,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Tillèt deg å krevja på kontonivå at passord som ikkje blir lagra, berre kan " +"nyttast éin gong. \n" +"Merk: kontopassordet må ikkje vera lagra for at dette skal verka." #. *< type #. *< ui_requirement @@ -2925,9 +2931,8 @@ msgstr "Purple-person" #. Creating the options for the protocol -#, fuzzy msgid "Local Port" -msgstr "Stad" +msgstr "Lokalport" msgid "Bonjour" msgstr "Bonjour" @@ -3171,7 +3176,7 @@ #, fuzzy, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Klarer ikkje å kopla til tenaren." +msgstr "Klarte ikkje å kopla til %s: %s" #. 1. connect to server #. connect to the server @@ -3284,9 +3289,8 @@ msgid "_Password:" msgstr "_Passord:" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "IRC-kallenamn kan ikkje innehalda mellomrom" +msgstr "IRC-kallenamn og -tenar kan ikkje innehalda mellomrom" msgid "SSL support unavailable" msgstr "SSL-støtte er ikkje tilgjengeleg" @@ -3485,13 +3489,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 "Prateromsnamnet er allereie i bruk" - -#, fuzzy +msgstr "Kallenamnet \"%s\" er allereie i bruk." + msgid "Nickname in use" -msgstr "Kallenamn" +msgstr "Kallenamnet er i bruk" msgid "Cannot change nick" msgstr "Kan ikkje endra kallenamn" @@ -3774,31 +3777,23 @@ msgstr "SASL-feil" msgid "The BOSH connection manager terminated your session." -msgstr "" - -#, fuzzy +msgstr "Styringstenaren til BOSH avslutta økta di." + msgid "No session ID given" -msgstr "Gav ingen årsak" - -#, fuzzy +msgstr "Ingen økt-ID er oppgjeven" + msgid "Unsupported version of BOSH protocol" -msgstr "Versjonen er ikkje støtta" - -#, fuzzy +msgstr "BOSH-protokollutgåva er ikkje støtta" + msgid "Unable to establish a connection with the server" -msgstr "" -"Klarte ikkje å laga eit samband til tenaren:\n" -"%s" +msgstr "Klarte ikkje å kopla til tenaren" #, fuzzy, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "" -"Klarte ikkje å laga eit samband til tenaren:\n" -"%s" - -#, fuzzy +msgstr "Klarte ikkje å kopla til tenaren" + msgid "Unable to establish SSL connection" -msgstr "Klarte ikkje å setja i gang sambandet" +msgstr "Klarte ikkje å setja i gang SSL-sambandet" msgid "Full Name" msgstr "Fullt namn" @@ -3866,9 +3861,8 @@ msgid "Operating System" msgstr "Operativsystem" -#, fuzzy msgid "Local Time" -msgstr "Lokalfil:" +msgstr "Lokaltid" msgid "Priority" msgstr "Prioritet" @@ -3878,11 +3872,11 @@ #, c-format msgid "%s ago" -msgstr "" +msgstr "%s sidan" #, fuzzy msgid "Logged Off" -msgstr "Pålogga" +msgstr "Avlogga" msgid "Middle Name" msgstr "Mellomnamn" @@ -4051,26 +4045,26 @@ msgid "Find Rooms" msgstr "Finn rom" -#, fuzzy msgid "Affiliations:" -msgstr "Kallenamn:" - -#, fuzzy +msgstr "Tilknytingar:" + msgid "No users found" msgstr "Fann ingen brukarar" -#, fuzzy msgid "Roles:" -msgstr "Stilling" +msgstr "Roller:" #, fuzzy msgid "Ping timed out" msgstr "Tidsavbrot ping" +#, fuzzy msgid "" "Unable to find alternative XMPP connection methods after failing to connect " "directly." msgstr "" +"Klarte ikkje å finna alternative XMPP-tilkoplingar etter mislykka forsøk på " +"å kopla til direkte.\n" msgid "Invalid XMPP ID" msgstr "Ugyldig XMPP-id" @@ -4080,7 +4074,7 @@ #, fuzzy msgid "Malformed BOSH URL" -msgstr "Klarte ikkje å kopla til tenaren." +msgstr "BOSH-tilkoplingstenaren er ikkje velforma" #, c-format msgid "Registration of %s@%s successful" @@ -4148,9 +4142,8 @@ msgid "Change Registration" msgstr "Endra registreringa" -#, fuzzy msgid "Malformed BOSH Connect Server" -msgstr "Klarte ikkje å kopla til tenaren." +msgstr "BOSH-tilkoplingstenaren er ikkje velforma" msgid "Error unregistering account" msgstr "Feil ved avregistreringa av kontoen" @@ -4401,7 +4394,7 @@ msgstr "Blokktypen er ikkje støtta" msgid "Unsupported Version" -msgstr "Versjonen er ikkje støtta" +msgstr "Utgåva er ikkje støtta" msgid "XML Not Well Formed" msgstr "XML-koden er ikkje velforma" @@ -4437,19 +4430,21 @@ msgid "Unable to ping user %s" msgstr "Klarer ikkje å pinga brukaren %s" -#, fuzzy, c-format +#, c-format msgid "Unable to buzz, because there is nothing known about %s." -msgstr "Klarer ikkje å alarmera sidan ein ikkje veit noko om brukaren %s." - -#, fuzzy, c-format +msgstr "Klarer ikkje å alarmera sidan ein ikkje veit noko om %s." + +#, c-format msgid "Unable to buzz, because %s might be offline." -msgstr "Klarer ikkje å alarmera sidan brukaren %s kan vera fråkopla." - -#, fuzzy, c-format +msgstr "Klarer ikkje å alarmera sidan %s kan vera fråkopla." + +#, c-format msgid "" "Unable to buzz, because %s does not support it or does not wish to receive " "buzzes now." -msgstr "Klarer ikkje å alarmera fordi brukaren %s støttar ikkje dette." +msgstr "" +"Klarer ikkje å alarmera fordi %s støttar ikkje dette eller ikkje ønskjer å " +"ta i mot alarmar no." #, c-format msgid "Buzzing %s..." @@ -4464,34 +4459,32 @@ msgid "%s has buzzed you!" msgstr "%s har alarmert deg!" -#, fuzzy, c-format +#, c-format msgid "Unable to initiate media with %s: invalid JID" -msgstr "Klarte ikkje å senda fila til %s: ugyldig JID" - -#, fuzzy, c-format +msgstr "Klarte ikkje å klargjera media med %s: ugyldig JID" + +#, c-format msgid "Unable to initiate media with %s: user is not online" -msgstr "Klarte ikkje å senda fila til %s: brukaren er ikkje tilkopla" - -#, fuzzy, c-format +msgstr "Klarte ikkje å klargjera media med %s: brukaren er ikkje tilkopla" + +#, c-format msgid "Unable to initiate media with %s: not subscribed to user presence" -msgstr "Klarte ikkje å senda fila til %s. Abonnerer ikkje på brukarnærvær" - -#, fuzzy +msgstr "Klarte ikkje å klargjera media med %s: abonnerer ikkje på brukarnærvær" + msgid "Media Initiation Failed" -msgstr "Registreringa feila" - -#, fuzzy, c-format +msgstr "Medieklargjeringa feila" + +#, c-format msgid "" "Please select the resource of %s with which you would like to start a media " "session." -msgstr "Vel kva for ressurs av %s du ønskjer å senda fila til" +msgstr "Vel kva for ressurs av %s du ønskjer å starta ei medieøkt med." msgid "Select a Resource" msgstr "Vel ein ressurs" -#, fuzzy msgid "Initiate Media" -msgstr "Start ein _prat" +msgstr "Klargjer media" msgid "config: Configure a chat room." msgstr "config: Endra prateromsinnstillingane." @@ -4511,21 +4504,20 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <brukar> [årsak]: utesteng brukaren frå rommet." -#, 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 <brukar> <owner|admin|member|outcast|none>: vel kva " -"tilknyting brukaren har til rommet." - -#, fuzzy +"affiliate <brukar|eigar|admin|medlem|outcast|ingen>[kallenamn1]" +"[kallenamn2]…: hent brukarar med ei tilknyting til rommet eller lag slik " +"tilknyting." + msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <brukar> <moderator|participant|visitor|none>: vel kva " -"rolle brukaren har i rommet." +"role <moderator|deltakar|besøkjar|none>: hent brukarar med ei rolle i " +"rommet eller lag slik rolle." msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <brukar> [melding]: Invitér ein brukar til rommet." @@ -4665,18 +4657,16 @@ #, fuzzy msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Fekk ikkje opna fila grunna feil." - -#, fuzzy +msgstr "Overføringa av samtidsdatastraumen feila\n" + msgid "Transfer was closed." -msgstr "Filoverføringa feila" - -#, fuzzy +msgstr "Overføringa blei lukka." + msgid "Failed to open the file" -msgstr "Klarte ikkje å opna fila '%s': %s" +msgstr "Klarte ikkje å opna fila" msgid "Failed to open in-band bytestream" -msgstr "" +msgstr "Klarte ikkje å opna samtidsdatastraum" #, c-format msgid "Unable to send file to %s, user does not support file transfers" @@ -4998,6 +4988,22 @@ msgid "Non-IM Contacts" msgstr "Andre enn lynmeldingskontaktar" +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "" + #, fuzzy, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "" @@ -5154,6 +5160,18 @@ msgid "SSL support is needed for MSN. Please install a supported SSL library." msgstr "MSN krev bruk av SSL. Last ned eit støtta SSL-bibliotek. " +#, fuzzy, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Klarte ikkje å leggja til vennen %s fordi brukarnamnet ikkje er gyldig. " +"Brukarnamn må vera ei gyldig e-postadresse, eller begynna med ein bokstav og " +"berre innehalda bokstavar. tal og mellomrom, eller berre innehalda tal." + +msgid "Unable to Add" +msgstr "Klarer ikkje å leggja til" + msgid "Error retrieving profile" msgstr "Klarte ikkje å henta profilen" @@ -5345,9 +5363,9 @@ msgid "%s just sent you a Nudge!" msgstr "%s har nettopp sendt deg ein dytt!" -#, fuzzy, c-format +#, c-format msgid "Unknown error (%d): %s" -msgstr "ukjend feil (%d)" +msgstr "Ukjend feil (%d): %s" msgid "Unable to add user" msgstr "Klarte ikkje å leggja til brukar" @@ -5766,7 +5784,7 @@ msgstr "Tal på venner totalt" msgid "Client Version" -msgstr "Klientversjon" +msgstr "Klientutgåve" msgid "" "An error occurred while trying to set the username. Please try again, or " @@ -6020,7 +6038,7 @@ msgid "" "This evaluation version does not allow more than ten users to log in at one " "time" -msgstr "Prøveversjonen tillèt ikkje meir enn ti samstundes pålogga brukarar" +msgstr "Prøveutgåva tillèt ikkje meir enn ti samstundes pålogga brukarar" msgid "The user is either offline or you are blocked" msgstr "Brukaren er anten fråkopla eller du er blokkert" @@ -6513,9 +6531,8 @@ #. Unregistered username #. uid is not exist #. the username does not exist -#, fuzzy msgid "Username does not exist" -msgstr "Brukaren finst ikkje" +msgstr "Brukarnamnet finst ikkje" #. Suspended account #, fuzzy @@ -6526,9 +6543,10 @@ msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "AOL si lynmeldingsteneste er mellombels utilgjengeleg." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" -msgstr "Klientversjonen du bruker er for gammal. Oppgrader på %s" +msgstr "Klientutgåva du bruker er for gammal. Oppgrader på %s" #. IP address connecting too frequently #, fuzzy @@ -6906,9 +6924,6 @@ "Brukarnamn må vera ei gyldig e-postadresse, eller begynna med ein bokstav og " "berre innehalda bokstavar. tal og mellomrom, eller berre innehalda tal." -msgid "Unable to Add" -msgstr "Klarer ikkje å leggja til" - msgid "Unable to Retrieve Buddy List" msgstr "Klarer ikkje å henta vennelista" @@ -7296,30 +7311,26 @@ msgstr "Notat" #. callback -#, fuzzy msgid "Buddy Memo" -msgstr "Venneikon" +msgstr "Kontaktnotat" msgid "Change his/her memo as you like" -msgstr "" - -#, fuzzy +msgstr "Endra hans/hennar notat som du vil" + msgid "_Modify" -msgstr "Endra" - -#, fuzzy +msgstr "_Endra" + msgid "Memo Modify" -msgstr "Endra" - -#, fuzzy +msgstr "Endra notat" + msgid "Server says:" -msgstr "Tenaren er oppteken" +msgstr "Tenaren seier:" msgid "Your request was accepted." -msgstr "" +msgstr "Førespurnaden blei godteken." msgid "Your request was rejected." -msgstr "" +msgstr "Førespurnaden din blei avvist." #, c-format msgid "%u requires verification" @@ -7630,12 +7641,11 @@ msgid "

Acknowledgement:
\n" msgstr "Hyllest: %lu
\n" -#, fuzzy msgid "

Scrupulous Testers:
\n" -msgstr "

Original forfattar:
\n" +msgstr "

Grundige testarar:
\n" msgid "and more, please let me know... thank you!))" -msgstr "" +msgstr "ån og meir, gjer vel å la meg få vita det… takk! :-)" msgid "

And, all the boys in the backroom...
\n" msgstr "

Og alle gutane på bakrommet…
\n" @@ -7662,9 +7672,8 @@ msgid "About OpenQ" msgstr "Om OpenQ" -#, fuzzy msgid "Modify Buddy Memo" -msgstr "Endra adressa" +msgstr "Endra kontaktnotat" #. *< type #. *< ui_requirement @@ -7783,7 +7792,7 @@ #, fuzzy msgid "Unable to resolve hostname" -msgstr "Klarer ikkje å kopla til tenaren." +msgstr "Vertsnamnoppslaget feila" msgid "Invalid server or port" msgstr "Ugyldig tenar eller port" @@ -9191,7 +9200,7 @@ #, c-format msgid "Version: \t%s\n" -msgstr "Versjon: \t%s\n" +msgstr "Utgåve: \t%s\n" #, c-format msgid "" @@ -9250,7 +9259,7 @@ #, c-format msgid "Failure: Version mismatch, upgrade your client" -msgstr "Feil: versjonsfeil - oppgrader klienten din" +msgstr "Feil: utgåvefeil - oppgrader klienten din" #, c-format msgid "Failure: Remote does not trust/support your public key" @@ -9429,7 +9438,7 @@ msgstr "Yahoo-protokolltillegg" msgid "Your SMS was not delivered" -msgstr "" +msgstr "ra" msgid "Your Yahoo! message did not get sent." msgstr "Yahoo!-meldinga di blei ikkje sendt." @@ -9456,9 +9465,8 @@ msgstr "Er blitt nekta å leggja til venn" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "Det kom ugyldige data frå sambandet med tenaren." +msgstr "Det kom ugyldige data" #. security lock from too many failed login attempts #, fuzzy @@ -9479,9 +9487,8 @@ "nettstad for å logga deg på." #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "Feil brukarnamn eller passord" +msgstr "Brukarnamnet eller passordet finst ikkje" #, c-format msgid "" @@ -9541,9 +9548,7 @@ #, fuzzy, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "" -"Klarte ikkje å laga eit samband til tenaren:\n" -"%s" +msgstr "Klarte ikkje å kopla til tenaren" msgid "Not at Home" msgstr "Ikkje heime" @@ -10134,13 +10139,13 @@ msgid "Error Reading %s" msgstr "Klarte ikkje å lesa %s" -#, fuzzy, c-format +#, c-format msgid "" "An error was encountered reading your %s. The file has not been loaded, and " "the old file has been renamed to %s~." msgstr "" -"Ein feil oppstod under lesinga av %s. Dei er ikkje blitt lasta, og den gamle " -"fila har fått namnet %s~." +"Ein feil oppstod under lesinga av %s di. Fila er ikkje blitt lasta og den " +"gamle fila har fått det nye namnet %s~." msgid "Internet Messenger" msgstr "Lynmeldingsklient" @@ -10184,7 +10189,8 @@ msgid "Use this buddy _icon for this account:" msgstr "Bruk dette venne-_ikonet for denne kontoen:" -msgid "_Advanced" +#, fuzzy +msgid "Ad_vanced" msgstr "A_vansert" msgid "Use GNOME Proxy Settings" @@ -10248,7 +10254,7 @@ msgstr "Opprett denne _nye kontoen på tenaren" #, fuzzy -msgid "_Proxy" +msgid "P_roxy" msgstr "Mellomlager" msgid "Enabled" @@ -10299,9 +10305,8 @@ msgid "Please update the necessary fields." msgstr "Oppdater dei nødvendige felta." -#, fuzzy msgid "A_ccount" -msgstr "Konto" +msgstr "_Konto" msgid "" "Please enter the appropriate information about the chat you would like to " @@ -10327,16 +10332,14 @@ msgid "I_M" msgstr "_Lynmelding" -#, fuzzy msgid "_Audio Call" -msgstr "Legg til _praterom" +msgstr "_Lydsamtale" msgid "Audio/_Video Call" -msgstr "" - -#, fuzzy +msgstr "Lyd-/_biletsamtale" + msgid "_Video Call" -msgstr "Videoprat" +msgstr "_Biletsamtale" msgid "_Send File..." msgstr "_Send fil…" @@ -10477,9 +10480,8 @@ msgid "/Tools/_Certificates" msgstr "/Verktøy/_Sertifikat" -#, fuzzy msgid "/Tools/Custom Smile_ys" -msgstr "/Verktøy/Smile_fjes" +msgstr "/Verktøy/_Tilpassa smilefjes" msgid "/Tools/Plu_gins" msgstr "/Verktøy/Program_tillegg" @@ -10608,7 +10610,7 @@ msgstr "Etter status" msgid "By recent log activity" -msgstr "" +msgstr "Etter nyleg loggaktivitet" #, c-format msgid "%s disconnected" @@ -10625,7 +10627,7 @@ msgstr "Slå på att " msgid "SSL FAQs" -msgstr "" +msgstr "SSL OSS (FAQ)" msgid "Welcome back!" msgstr "Velkomen tilbake" @@ -10802,7 +10804,7 @@ #, fuzzy msgid "Contact Text" -msgstr "Snarveg" +msgstr "Snarvegstekst" msgid "The text information for when a contact is expanded" msgstr "" @@ -10951,21 +10953,17 @@ msgid "/Conversation/Clea_r Scrollback" msgstr "/Samtale/T_øm skjermen" -#, fuzzy msgid "/Conversation/M_edia" -msgstr "/Samtale/_Meir" - -#, fuzzy +msgstr "/Samtale/M_edia" + msgid "/Conversation/Media/_Audio Call" -msgstr "/Samtale/_Meir" - -#, fuzzy +msgstr "/Samtale/Media/_Lydsamtale" + msgid "/Conversation/Media/_Video Call" -msgstr "/Samtale/_Meir" - -#, fuzzy +msgstr "/Samtale/Media/_Biletsamtale" + msgid "/Conversation/Media/Audio\\/Video _Call" -msgstr "/Samtale/Vis l_ogg" +msgstr "/Samtale/Media/Lyd\\/_Biletsamtale" msgid "/Conversation/Se_nd File..." msgstr "/Samtale/S_end fil…" @@ -11039,17 +11037,14 @@ msgid "/Conversation/View Log" msgstr "/Samtale/Vis logg" -#, fuzzy msgid "/Conversation/Media/Audio Call" -msgstr "/Samtale/Meir" - -#, fuzzy +msgstr "/Samtale/Media/Lydsamtale" + msgid "/Conversation/Media/Video Call" -msgstr "/Samtale/Vis logg" - -#, fuzzy +msgstr "/Samtale/Media/Biletsamtale" + msgid "/Conversation/Media/Audio\\/Video Call" -msgstr "/Samtale/Meir" +msgstr "/Samtale/Media/Lyd\\/Biletsamtale" msgid "/Conversation/Send File..." msgstr "/Samtale/Send fil…" @@ -11234,7 +11229,7 @@ msgstr "Ka-Hing Cheung" msgid "voice and video" -msgstr "" +msgstr "tale og video" msgid "support" msgstr "brukarstøtte" @@ -11361,9 +11356,8 @@ msgid "Hungarian" msgstr "Ungarsk" -#, fuzzy msgid "Armenian" -msgstr "Rumensk" +msgstr "Armensk" msgid "Indonesian" msgstr "Indonesisk" @@ -11380,9 +11374,8 @@ msgid "Ubuntu Georgian Translators" msgstr "Ubuntu georgisk-omsetjarar" -#, fuzzy msgid "Khmer" -msgstr "Anna" +msgstr "Khmer" msgid "Kannada" msgstr "Kannada" @@ -11463,7 +11456,7 @@ msgstr "Svensk" msgid "Swahili" -msgstr "" +msgstr "Swahili" msgid "Tamil" msgstr "Tamil" @@ -11518,10 +11511,10 @@ "til å kopla seg opp mot AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, " "Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, Gadu-Gadu og QQ - alle på " "éin gong. Han er skriven ved å nytta GTK+.

Du kan endra og " -"vidareformidla programmet i samsvar med vilkåra i GPL (versjon 2 eller " +"vidareformidla programmet i samsvar med vilkåra i GPL (utgåve 2 eller " "seinare). Ein kopi av GPL ligg i fila 'COPYING' som kjem saman med %s. " "Opphavsretten til %s ligg hos bidragsytarane. Sjå i fila 'COPYRIGHT' for ei " -"fullstendig liste over bidragsytarar. Programmet kjem utan nokon som helst " +"fullstendig liste over bidragsytarar. Programmet kjem utan noka som helst " "form for garanti.

" #, c-format @@ -12104,7 +12097,7 @@ msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%s %s. Prøv `%s -h' for meir informasjon.\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12126,6 +12119,7 @@ "\n" " -c, --config=DIR bruk DIR for innstillingsfilene\n" " -d, --debug skriv ut feilsøkingsmeldingar til standard utkanal\n" +" -f, --force-online slå på tilkopling, uavhengig av nettverksstatus\n" " -h, --help vis denne hjelpa og avslutt\n" " -m, --multiple avgrens ikkje til berre éin instans\n" " -n, --nologin logg ikkje automatisk på\n" @@ -12133,9 +12127,10 @@ "spesifiserer\n" " konto(ar) å bruka, skilde med komma.\n" " Utan denne vil berre den første kontoen bli teken i " -"bruk). -v, --version vis noverande versjon og avslutt\n" - -#, fuzzy, c-format +"bruk). --display=DISPLAY kva for X-skjerm som skal nyttast \n" +" -v, --version vis noverande utgåve og avslutt\n" + +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12156,14 +12151,15 @@ "\n" " -c, --config=DIR bruk DIR for innstillingsfilene\n" " -d, --debug skriv ut feilsøkingsmeldingar til standard utkanal\n" +" -f, --force-online slå på tilkopling, uavhengig av nettverksstatus\n" " -h, --help vis denne hjelpa og avslutt\n" " -m, --multiple avgrens ikkje til berre éin instans\n" " -n, --nologin logg ikkje automatisk på\n" -" -l, --login[=NAMN] automatisk pålogging (valfritt argument NAMN " +" -l, --login[=NAMN] slå på spesifisert(e) konto(ar) (valfritt argument NAMN " "spesifiserer\n" " konto(ar) å bruka, skilde med komma.\n" -" Utan denne vil berre den første kontoen bli teken i " -"bruk). -v, --version vis noverande versjon og avslutt\n" +" Utan denne vil berre den første kontoen bli teken i " +"bruk). -v, --version vis noverande utgåve og avslutt\n" #, c-format msgid "" @@ -12189,7 +12185,7 @@ "%ssimpleticket/\n" "\n" "Sjå til at du fortel om kva du gjorde då feilen oppstod,\n" -"og send sporingsloggen (backtrace) frå minnefila. Om du ikkje veit korleis\n" +"og send sporingsloggen (backtrace) frå minnefila. Om du ikkje veit korleis\n" "laga sporingsloggen, les rettleiinga på\n" "%swiki/GetABacktrace\n" @@ -12203,22 +12199,21 @@ msgstr "Avsluttar sidan en annan libpurple-klient allereie kjører.\n" msgid "/_Media" -msgstr "" +msgstr "/_Media" msgid "/Media/_Hangup" -msgstr "" - -#, fuzzy +msgstr "/Media/_Legg på" + msgid "Calling..." -msgstr "Reknar…" +msgstr "Ringjer…" #, c-format msgid "%s wishes to start an audio/video session with you." -msgstr "" +msgstr "%s ønskjer å starta ei lyd-/biletøkt med deg." #, c-format msgid "%s wishes to start a video session with you." -msgstr "" +msgstr "%s ønskjer å starta ei biletøkt med deg." #, c-format msgid "%s has %d new message." @@ -12247,9 +12242,8 @@ "The 'Manual' browser command has been chosen, but no command has been set." msgstr "'Manuell' nettlesarkommando er vald, men ingen kommando er brukt." -#, fuzzy msgid "No message" -msgstr "Ukjend melding" +msgstr "Inga melding" msgid "Open All Messages" msgstr "Opna alle meldingar" @@ -12258,17 +12252,14 @@ msgstr "" "Du har fått e-postmeldingar" -#, fuzzy msgid "New Pounces" -msgstr "Nytt vennevarsel" +msgstr "Nye vennevarsel" msgid "Dismiss" -msgstr "" - -#, fuzzy +msgstr "Avvis" + msgid "You have pounced!" -msgstr "" -"Du har fått e-postmeldingar" +msgstr "Du har fått vennevarsel!" msgid "The following plugins will be unloaded." msgstr "Dei følgjande programtillegga vil bli lasta ut." @@ -12318,7 +12309,6 @@ msgid "Select a file" msgstr "Vel ei fil" -#, fuzzy msgid "Modify Buddy Pounce" msgstr "Endra vennevarsel" @@ -12395,49 +12385,49 @@ msgid "Pounce Target" msgstr "Varslingsmål" -#, fuzzy, c-format +#, c-format msgid "Started typing" -msgstr "Begynner å skriva" - -#, fuzzy, c-format +msgstr "Starta å skriva" + +#, c-format msgid "Paused while typing" msgstr "Tek pause frå skrivinga" -#, fuzzy, c-format +#, c-format msgid "Signed on" -msgstr "Loggar på" - -#, fuzzy, c-format +msgstr "Pålogga" + +#, c-format msgid "Returned from being idle" -msgstr "%s er ikkje uverksam lenger (%s)" - -#, fuzzy, c-format +msgstr "Er ikkje uverksam lenger" + +#, c-format msgid "Returned from being away" msgstr "Kjem attende" -#, fuzzy, c-format +#, c-format msgid "Stopped typing" msgstr "Stoppa å skriva" -#, fuzzy, c-format +#, c-format msgid "Signed off" -msgstr "Loggar av" - -#, fuzzy, c-format +msgstr "Logga av" + +#, c-format msgid "Became idle" -msgstr "Blir uverksam" - -#, fuzzy, c-format +msgstr "Blei uverksam" + +#, c-format msgid "Went away" -msgstr "Når vekke" - -#, fuzzy, c-format +msgstr "Gjekk vekk" + +#, c-format msgid "Sent a message" -msgstr "Send ei melding" - -#, fuzzy, c-format +msgstr "Sendt ei melding" + +#, c-format msgid "Unknown.... Please report this!" -msgstr "Ukjend varselhending. Rapporter feilen." +msgstr "Ukjend… . Rapporter feilen." #, fuzzy msgid "Theme failed to unpack." @@ -12467,13 +12457,13 @@ msgid "Keyboard Shortcuts" msgstr "Tastatursnarvegar" +# Trur det skal vera liten bokstav i escape :-) msgid "Cl_ose conversations with the Escape key" -msgstr "L_ukk samtaler med Escape-tasten" +msgstr "L_ukk samtaler med escape-tasten" #. Buddy List Themes -#, fuzzy msgid "Buddy List Theme" -msgstr "Venneliste" +msgstr "Vennelistedrakt" #. System Tray msgid "System Tray Icon" @@ -12614,7 +12604,7 @@ #. TURN server msgid "Relay Server (TURN)" -msgstr "" +msgstr "s" msgid "Proxy Server & Browser" msgstr "Mellomtenar & nettlesar" @@ -12959,12 +12949,11 @@ msgid "Status for %s" msgstr "Status for %s" -#, fuzzy, c-format +#, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "" -"Det finst allereie eit tilpassa smilefjes til denne snarvegen. Vel ein annan " -"snarveg." +"Det finst allereie eit tilpassa smilefjes til '%s'. Vel ein annan snarveg." msgid "Custom Smiley" msgstr "Tilpassa smilefjes" @@ -12978,28 +12967,24 @@ msgid "Add Smiley" msgstr "Legg til smilefjes" -#, fuzzy msgid "_Image:" -msgstr "_Bilete" +msgstr "_Bilete:" #. Shortcut text -#, fuzzy msgid "S_hortcut text:" -msgstr "Snarveg" +msgstr "Snar_vegstekst" msgid "Smiley" msgstr "Smilefjes" -#, fuzzy msgid "Shortcut Text" -msgstr "Snarveg" +msgstr "Snarvegstekst" msgid "Custom Smiley Manager" msgstr "Tilpassa smilefjesbehandling" -#, fuzzy msgid "Select Buddy Icon" -msgstr "Vel venn" +msgstr "Vel venneikon" msgid "Click to change your buddyicon for this account." msgstr "Klikk for å endra venneikonet til denne kontoen." @@ -13123,9 +13108,8 @@ "Klarte ikkje å lasta biletet '%s': grunnen er ikkje kjend, men er truleg " "grunna ei øydelagt biletfil" -#, fuzzy msgid "_Open Link" -msgstr "Opna _lenkje i:" +msgstr "_Opna lenkje" msgid "_Copy Link Location" msgstr "_Kopier lenkje" @@ -13133,9 +13117,25 @@ msgid "_Copy Email Address" msgstr "_Kopier e-postadressa" +#, fuzzy +msgid "_Open File" +msgstr "Opna fil…" + +#, fuzzy +msgid "Open _Containing Directory" +msgstr "Loggkatalog" + msgid "Save File" msgstr "Lagra fil" +#, fuzzy +msgid "_Play Sound" +msgstr "Spel ein lyd" + +#, fuzzy +msgid "_Save File" +msgstr "Lagra fil" + msgid "Select color" msgstr "Vel farge" @@ -13892,7 +13892,7 @@ msgstr "Du kan oppgradera til %s %s i dag." msgid "New Version Available" -msgstr "Ny versjon er tilgjengeleg" +msgstr "Ny utgåve er tilgjengeleg" msgid "Later" msgstr "Seinare" @@ -14078,11 +14078,11 @@ #, fuzzy msgid "Pidgin Buddylist Theme Editor" -msgstr "Venneliste" +msgstr "Vennelistedrakt" #, fuzzy msgid "Edit Buddylist Theme" -msgstr "Venneliste" +msgstr "Vennelistedrakt" msgid "Edit Icon Theme" msgstr "" @@ -14119,7 +14119,7 @@ #. * summary #. * description msgid "A horizontal scrolling version of the buddy list." -msgstr "Ein rullande, vassrett versjon av vennelista." +msgstr "Ei rullande, vassrett utgåve av vennelista." msgid "Display Timestamps Every" msgstr "Vis tidsstempel kvar(t)" @@ -14247,7 +14247,7 @@ "*Merk: Tillegget krev Windows 2000 eller seinare utgåver." msgid "GTK+ Runtime Version" -msgstr "GTK+ kjøremiljøversjon" +msgstr "GTK+ kjøremiljøutgåve" #. Autostart msgid "Startup" @@ -14356,9 +14356,6 @@ #~ msgid "Last Activity" #~ msgstr "Siste aktivitet" -#~ msgid "Service Discovery Info" -#~ msgstr "Tenesteoppdagingsinfo" - #~ msgid "Service Discovery Items" #~ msgstr "Tenesteoppdagingselement" @@ -14377,9 +14374,6 @@ #~ msgid "Ad-Hoc Commands" #~ msgstr "Ad hoc-kommandoar" -#~ msgid "PubSub Service" -#~ msgstr "PubSub-teneste" - #~ msgid "SOCKS5 Bytestreams" #~ msgstr "SOCKS5 bytesamband" @@ -14403,7 +14397,7 @@ #~ msgstr "Pratetilstandsvarsel" #~ msgid "Software Version" -#~ msgstr "Programvareversjon" +#~ msgstr "Programvareutgåve" #~ msgid "Stream Initiation" #~ msgstr "Straumoppstart" @@ -14524,9 +14518,6 @@ #~ msgid "Error. SSL support is not installed." #~ msgstr "Feil. SSL-støtte er ikkje installert." -#~ msgid "Incorrect password." -#~ msgstr "Feil passord." - #~ msgid "" #~ "Could not connect to BOS server:\n" #~ "%s" @@ -14534,14 +14525,17 @@ #~ "Klarte ikkje å kopla til BOS-tenaren:\n" #~ "%s" -#~ msgid "You may be disconnected shortly. Check %s for updates." -#~ msgstr "Du kan bli fråkopla snart. Sjå etter oppdateringar på %s." +#~ msgid "Invalid username." +#~ msgstr "Ugyldig rukarnamn." + +#~ msgid "Incorrect password." +#~ msgstr "Feil passord." #~ msgid "Could Not Connect" #~ msgstr "Klarte ikkje å kopla til" -#~ msgid "Invalid username." -#~ msgstr "Ugyldig rukarnamn." +#~ msgid "You may be disconnected shortly. Check %s for updates." +#~ msgstr "Du kan bli fråkopla snart. Sjå etter oppdateringar på %s." #~ msgid "Could not decrypt server reply" #~ msgstr "Klarte ikkje å dekryptera tenarsvaret" @@ -14573,13 +14567,15 @@ #~ msgid "Could not create listen socket" #~ msgstr "Klarte ikkje å laga lytte-endepunkt" -#~ msgid "Could not resolve hostname" -#~ msgstr "Vertsnamnoppslaget feila" - -#, fuzzy #~ msgid "Incorrect Password" #~ msgstr "Feil passord" +#~ msgid "Account locked: Too many failed login attempts" +#~ msgstr "Kontoen er låst: for mange feil påloggingar" + +#~ msgid "Account locked: See the debug log" +#~ msgstr "Kontoen er låst: sjå feilsøkingsloggen" + #~ msgid "" #~ "Could not establish a connection with %s:\n" #~ "%s" @@ -14587,6 +14583,9 @@ #~ "Klaret ikkje å få til samband med %s:\n" #~ "%s" +#~ msgid "Activate which ID?" +#~ msgstr "Kva ID skal takast i bruk?" + #~ msgid "Yahoo Japan" #~ msgstr "Yahoo Japan" @@ -14606,11 +14605,15 @@ #~ msgid "Could not resolve host name" #~ msgstr "Klarte ikkje å slå opp vertsnamnet" -#, fuzzy #~ msgid "" #~ "Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support " #~ "was found." -#~ msgstr "Tenaren krev TLS/SSL for pålogging. Fann inga TLS/SSL-støtte." +#~ msgstr "" +#~ "Klarte ikkje å kopla til %s: tenaren krev TLS/SSL, men fann inga TLS-/SSL-" +#~ "støtte." + +#~ msgid "_Proxy" +#~ msgstr "_Mellomlager" #~ msgid "Conversation Window Hiding" #~ msgstr "Skjul samtalevindauget" @@ -14624,9 +14627,6 @@ #~ msgid "Please select an image for the smiley." #~ msgstr "Vel eit bilete til smilefjeset." -#~ msgid "Activate which ID?" -#~ msgstr "Kva ID skal takast i bruk?" - #~ msgid "Cursor Color" #~ msgstr "Peikarfarge" @@ -14795,15 +14795,15 @@ #~ msgid "Proxy Options" #~ msgstr "Mellomtenarval" +#~ msgid "ST_UN server:" +#~ msgstr "ST_UN-tenar:" + #~ msgid "By log size" #~ msgstr "Etter loggstorleiken" #~ msgid "_Open Link in Browser" #~ msgstr "_Opna lenkja i nettlesar" -#~ msgid "ST_UN server:" -#~ msgstr "ST_UN-tenar:" - #~ msgid "Smiley _Image" #~ msgstr "Smilefjesbilete" diff -r b4daae0798e3 -r e1cd44c7c7af po/pa.po --- a/po/pa.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/pa.po Sat Jul 25 04:54:36 2009 +0000 @@ -8,17 +8,17 @@ msgstr "" "Project-Id-Version: pa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2009-02-26 22:23+0530\n" -"Last-Translator: Amanpreet Singh Alam \n" -"Language-Team: Punjabi \n" +"POT-Creation-Date: 2009-07-18 22:44-0700\n" +"PO-Revision-Date: 2009-07-19 07:35+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "\n" "\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Lokalize 0.3\n" #. Translators may want to transliterate the name. #. It is not to be translated. @@ -850,12 +850,11 @@ msgid "System Log" msgstr "ਸਿਸਟਮ ਲਾਗ" -#, fuzzy msgid "Calling ... " -msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..." +msgstr "ਕਾਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ ... " msgid "Hangup" -msgstr "" +msgstr "ਹੈਂਡ ਅੱਪ" #. Number of actions msgid "Accept" @@ -865,25 +864,24 @@ msgstr "ਰੱਦ ਕਰੋ" msgid "Call in progress." -msgstr "" +msgstr "ਕਾਲ ਜਾਰੀ ਹੈ।" msgid "The call has been terminated." -msgstr "" +msgstr "ਕਾਲ ਖਤਮ ਕੀਤੀ ਗਈ ਹੈ।" #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s ਤੁਹਾਡੇ ਨਾਲ ਆਡੀਓ ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ ਹੈ।" #, c-format msgid "%s is trying to start an unsupported media session type with you." -msgstr "" - -#, fuzzy +msgstr "%s ਤੁਹਾਡੇ ਨਾਲ ਗ਼ੈਰ-ਸਹਾਇਕ ਮੀਡਿਆ ਸ਼ੈਸ਼ਨ ਟਾਈਪ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ/ਰਹੀ ਹੈ।" + msgid "You have rejected the call." -msgstr "ਤੁਸੀਂ %s%s ਚੈਨਲ ਛੱਡਿਆ" +msgstr "ਤੁਸੀਂ ਕਾਲ ਰੱਦ ਕਰ ਦਿੱਤੀ ਹੈ।" msgid "call: Make an audio call." -msgstr "" +msgstr "ਕਾਲ: ਆਡੀਓ ਕਾਲ ਕਰੋ।" msgid "Emails" msgstr "ਈ-ਮੇਲ" @@ -1534,22 +1532,23 @@ "\n" "Fetching TinyURL..." msgstr "" +"\n" +"TinyURL ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ..." msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "ਕੇਵਲ ਤਾਂ ਹੀ TinyURL ਬਣਾਓ, ਜਦੋਂ ਇਸ ਦੀ ਲੰਬਾਈ ਵੱਧ ਹੋਵੇ" msgid "TinyURL (or other) address prefix" -msgstr "" - -#, fuzzy +msgstr "TinyURL (ਜਾਂ ਹੋਰ) ਐਡਰੈੱਸ ਪ੍ਰੀਫਿਕਸ" + msgid "TinyURL" -msgstr "ਟਿਊਨ URL" +msgstr "ਟਿਨੀURL" msgid "TinyURL plugin" -msgstr "" +msgstr "ਟਿਨੀURL ਪਲੱਗਇਨ" msgid "When receiving a message with URL(s), TinyURL for easier copying" -msgstr "" +msgstr "ਜਦੋਂ ਸੁਨੇਹੇ ਵਿੱਚ URL ਮਿਲੇ ਤਾਂ ਸੌਖੀ ਤਰ੍ਹਾਂ ਕਾਪੀ ਕਰਨ ਵਾਸਤੇ TinyURL ਬਣਾਓ" msgid "accounts" msgstr "ਅਕਾਊਂਟ" @@ -1750,7 +1749,6 @@ msgstr "+++ %s ਬੰਦ ਕਰ ਗਿਆ/ਗਈ" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "ਅਣਜਾਣੀ ਗਲਤੀ" @@ -1797,9 +1795,8 @@ msgid "%s left the room (%s)." msgstr "%s ਨੇ ਰੂਮ (%s) ਛੱਡਿਆ ਹੈ।" -#, fuzzy msgid "Invite to chat" -msgstr "ਕਾਨਫਰੰਸ ਲਈ ਸੱਦਾ" +msgstr "ਗੱਲਬਾਤ ਲਈ ਸੱਦਾ ਦਿਓ" #. Put our happy label in it. msgid "" @@ -1937,6 +1934,11 @@ msgid "Starting transfer of %s from %s" msgstr "%2$s ਤੋਂ %1$s ਦੀ ਟਰਾਂਸਫਰ ਸ਼ੁਰੂ ਹੋ ਗਈ ਹੈ" +# , c-format +#, c-format +msgid "Transfer of file %s complete" +msgstr "ਫਾਇਲ %s ਦੀ ਟਰਾਂਸਫਰ ਪੂਰੀ ਹੋਈ" + #, c-format msgid "Transfer of file %s complete" msgstr "ਫਾਇਲ %s ਦਾ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ ਹੋਇਆ" @@ -2132,9 +2134,8 @@ msgid "(%s) %s : %s\n" msgstr "(%s) %s : %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" +msgstr "ਕਨਫਰੰਸ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ ਹੈ।" #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2528,7 +2529,6 @@ msgstr "ਲਾਗ ਦਰਸ਼ਕ ਵਿੱਚ ਹੋਰ IM ਕਲਾਇਟ ਲਾਗ ਸ਼ਾਮਲ" #. * 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" @@ -2539,7 +2539,8 @@ "ਜਦੋਂ ਲਾਗ ਵੇਖਣਾ ਹੋਵੇ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਹੋਰ IM ਕਲਾਇਟ ਤੋਂ ਲਾਗ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਵੇਗਾ। ਇਸ ਸਮੇਂ, ਇਸ ਵਿੱਚ " "Adium, MSN ਮੈਸੰਜ਼ਰ, ਅਤੇ ਟਰਿੱਲਿਅਨ ਸ਼ਾਮਲ ਹਨ।\n" "\n" -"ਚੇਤਾਵਨੀ: ਇਹ ਪਲੱਗਇਨ ਹਾਲੇ ਐਲਫ਼ਾ ਕੋਡ ਵਿੱਚ ਹੈ ਅਤੇ ਕਰੈਸ਼ ਹੋ ਸਕਦੀ ਹੈ। ਇਸ ਨੂੰ ਆਪਣੇ ਖਤਰੇ ਉੱਤੇ ਵਰਤੋਂ ਜੀ!" +"ਚੇਤਾਵਨੀ: ਇਹ ਪਲੱਗਇਨ ਹਾਲੇ ਐਲਫ਼ਾ ਕੋਡ ਵਿੱਚ ਹੈ ਅਤੇ ਕਰੈਸ਼ ਹੋ ਸਕਦੀ ਹੈ। ਇਸ ਨੂੰ ਆਪਣੀ ਜਿੰਮੇਵਾਰੀ ਉੱਤੇ ਵਰਤੋਂ " +"ਜੀ!" msgid "Mono Plugin Loader" msgstr "ਮੋਨੋ ਪਲੱਗਇਨ ਲੋਡਰ" @@ -2583,11 +2584,11 @@ msgid "Save messages sent to an offline user as pounce." msgstr "ਇੱਕ ਆਫਲਾਈਨ ਯੂਜ਼ਰ ਨੂੰ ਭੇਜੇ ਸੁਨੇਹੇ ਪਉਨਸ ਵਾਂਗ ਸੰਭਾਲੋ।" -#, fuzzy msgid "" "The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." -msgstr "ਬਾਕੀ ਸੁਨੇਹੇ ਪਉਨਸ ਵਾਂਗ ਸੰਭਾਲੋ। ਤੁਸੀਂ `ਬੱਡੀ ਪਉਨਸ' ਡਾਈਲਾਗ ਤੋਂ ਪਉਨਸ ਨੂੰ ਸੋਧ/ਹਟਾ ਸਕਦੇ ਹੋ।" +msgstr "" +"ਬਾਕੀ ਸੁਨੇਹੇ ਪਉਨਸ ਵਾਂਗ ਸੰਭਾਲੇ ਜਾਣਗੇ। ਤੁਸੀਂ `ਬੱਡੀ ਪਉਨਸ' ਡਾਈਲਾਗ ਤੋਂ ਪਉਨਸ ਨੂੰ ਸੋਧ/ਹਟਾ ਸਕਦੇ ਹੋ।" #, c-format msgid "" @@ -2615,9 +2616,8 @@ msgid "Do not ask. Always save in pounce." msgstr "ਪੁੱਛੋ ਨਾ। ਹਮੇਸ਼ਾਂ ਪਉਨਸ ਵਿੱਚ ਸੰਭਾਲੋ।" -#, fuzzy msgid "One Time Password" -msgstr "ਪਾਸਵਰਡ ਦਿਓ" +msgstr "ਇੱਕ ਵਾਰ ਪਾਸਵਰਡ" #. *< type #. *< ui_requirement @@ -2626,13 +2626,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "ਇੱਕ ਵਾਰ ਪਾਸਵਰਡ ਸਹਿਯੋਗ" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "ਮਜ਼ਬੂਰ ਕਰਦਾ ਹੈ ਕਿ ਪਾਸਵਰਡ ਕੇਵਲ ਇੱਕ ਹੀ ਵਾਰ ਵਰਤੇ ਜਾਣ।" #. * description msgid "" @@ -2640,6 +2640,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"ਤੁਹਾਨੂੰ ਹਰੇਕ-ਅਕਾਊਂਟ ਉੱਤੇ ਮਜ਼ਬੂਰ ਕਰਨ ਲਈ ਸਹਾਇਕ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਵਾਰ ਸਫ਼ਲ ਕੁਨੈਕਸ਼ਨ ਵਰਤਣ ਦੌਰਾਨ " +"ਪਾਸਵਰਡ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਹੈ।\n" +"ਨੋਟ: ਅਕਾਊਂਟ ਪਾਸਵਰਡ ਇਸ ਦੇ ਕੰਮ ਕਰਨ ਲਈ ਸੰਭਾਲਣਾ ਨਹੀਂ ਚਾਹੀਦਾ ਹੈ।" #. *< type #. *< ui_requirement @@ -2831,17 +2834,15 @@ "ActiveTCL ਇੰਸਟਾਲੇਸ਼ਨ ਖੋਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਜੇ ਤੁਸੀਂ TCL ਪਲੱਗਇਨ ਵਰਤਣੀਆਂ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ http://" "www.activestate.com ਤੋਂ ActiveTCL ਇੰਸਟਾਲ ਕਰੋ।\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"Windows ਟੂਲਕਿੱਟ ਲਈ ਐਪਸ ਬੋਨਜੋਉਰ ਨਹੀਂ ਲੱਭਿਆ ਸਵਾਲ-ਜਵਾਬ ਵੇਖੋ: ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://d." +"ਐਪਲ ਦਾ \"Windows ਲਈ ਬੋਨਜੋਉਰ\" ਟੂਲਕਿੱਟ ਲੱਭਣ ਲਈ ਅਸਮਰੱਥ, ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://d." "pidgin.im/BonjourWindows ਵੇਖੋ।" -#, fuzzy msgid "Unable to listen for incoming IM connections" -msgstr "ਆ ਰਹੇ IM ਕੁਨੈਕਸ਼ਨ ਸੁਣਨ ਤੋਂ ਅਸਮੱਰਥ ਹੈ\n" +msgstr "ਆ ਰਹੇ IM ਕੁਨੈਕਸ਼ਨ ਸੁਣਨ ਤੋਂ ਅਸਮੱਰਥ ਹੈ" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2892,21 +2893,20 @@ msgid "Unable to send the message, the conversation couldn't be started." msgstr "ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਗੱਲਬਾਤ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ:\n" -"%s" - -#, fuzzy, c-format +msgstr "ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ: %s" + +# , c-format +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "ਸਾਕਟ ਪੋਰਟ ਨਾਲ ਜੋੜੀ ਨਹੀਂ ਜਾ ਸਕੀ" - -#, fuzzy, c-format +msgstr "ਸਾਕਟ ਪੋਰਟ ਨਾਲ ਜੋੜੀ ਨਹੀਂ ਜਾ ਸਕੀ: %s" + +# , c-format +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ:\n" -"%s" +msgstr "ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ: %s" msgid "Error communicating with local mDNSResponder." msgstr "mDNSResponder ਨਾਲ ਸੰਚਾਰ ਦੌਰਾਨ ਗਲਤੀ ਹੈ।" @@ -2954,17 +2954,14 @@ msgid "Load buddylist from file..." msgstr "ਫਾਇਲ ਤੋਂ ਬੱਡੀ ਲਿਸਟ ਲੋਡ ਕਰੋ..." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਖੇਤਰ ਭਰੋ।" - -#, fuzzy +msgstr "ਤੁਹਾਨੂੰ ਰਜਿਸਟਰੇਸ਼ਨ ਖੇਤਰ ਭਰਨੇ ਹੋਣਗੇ।" + msgid "Passwords do not match" msgstr "ਪਾਸਵਰਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ।" -#, fuzzy msgid "Unable to register new account. An unknown error occurred." -msgstr "ਨਵਾਂ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ। ਗਲਤੀ ਆਈ ਹੈ।\n" +msgstr "ਨਵਾਂ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਅਣਜਾਣੀ ਗਲਤੀ ਆਈ ਹੈ।" msgid "New Gadu-Gadu Account Registered" msgstr "ਨਵਾਂ ਗਡੂ-ਗਡੂ ਅਕਾਊਂਟ ਰਜਿਸਟਰ ਕੀਤਾ ਗਿਆ" @@ -2979,11 +2976,10 @@ msgstr "ਪਾਸਵਰਡ (ਮੁੜ)" msgid "Enter captcha text" -msgstr "" - -#, fuzzy +msgstr "ਕੈਪਟਚਾ ਟੈਕਸਟ ਦਿਓ" + msgid "Captcha" -msgstr "ਕੈਪਟਚਾ ਚਿੱਤਰ" +msgstr "ਕੈਪਟਚਾ" msgid "Register New Gadu-Gadu Account" msgstr "ਨਵਾਂ ਗਡੂ-ਗਡੂ ਅਕਾਊਟ ਰਜਿਸਟਰ ਕਰੋ" @@ -3122,14 +3118,15 @@ msgid "Chat _name:" msgstr "ਗੱਲ ਨਾਂ(_n):" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫਲ ਹੈ।" +msgstr "ਹੋਸਟ ਨਾਂ '%s' ਹੱਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s" #. 1. connect to server #. connect to the server msgid "Connecting" -msgstr "ਜੁੜ ਰਿਹਾ ਹੈ" +msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" msgid "Chat error" msgstr "ਗੱਲ ਗਲਤੀ" @@ -3137,9 +3134,8 @@ msgid "This chat name is already in use" msgstr "ਇਹ ਗੱਲ ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ 'ਚ ਹੈ" -#, fuzzy msgid "Not connected to the server" -msgstr "ਸਰਵਰ ਨਾਲ ਜੁੜਿਆ ਨਹੀਂ ਹੈ।" +msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ" msgid "Find buddies..." msgstr "ਬੱਡੀ ਖੋਜ..." @@ -3180,9 +3176,8 @@ msgid "Gadu-Gadu User" msgstr "ਗਡੂ-ਗਡੂ ਯੂਜ਼ਰ" -#, fuzzy msgid "GG server" -msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ" +msgstr "GG ਸਰਵਰ" #, c-format msgid "Unknown command: %s" @@ -3198,9 +3193,8 @@ msgid "File Transfer Failed" msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਫੇਲ੍ਹ" -#, fuzzy msgid "Unable to open a listening port." -msgstr "ਇੱਕ ਸੁਣਨ ਪੋਰਟ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ।" +msgstr "ਇੱਕ ਸੁਣਨ ਪੋਰਟ ਖੋਲ੍ਹਣ ਲਈ ਅਸਮਰੱਥ।" msgid "Error displaying MOTD" msgstr "MOTD ਵੇਖਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" @@ -3222,11 +3216,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"ਸਰਵਰ ਨਾਲ ਆਖਰੀ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ:\n" -"%s" +msgstr "ਸਰਵਰ ਨਾਲ ਆਖਰੀ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ: %s" msgid "View MOTD" msgstr "MOTD ਵੇਖੋ" @@ -3237,9 +3229,8 @@ msgid "_Password:" msgstr "ਪਾਸਵਰਡ(_P):" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "IRC ਨਾਂਵਾਂ 'ਚ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਹੋ ਸਕਦੀ ਹੈ" +msgstr "IRC ਨਾਂਵਾਂ ਅਤੇ ਸਰਵਰ ਲਈ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਹੋ ਸਕਦੀ ਹੈ" msgid "SSL support unavailable" msgstr "SSL ਸਹਿਯੋਗ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ" @@ -3248,11 +3239,12 @@ msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਮਰੱਥ" - -#, fuzzy, c-format +msgstr "%s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + +# , c-format +#, c-format msgid "Server closed the connection" msgstr "ਸਰਵਰ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ।" @@ -3434,19 +3426,18 @@ #. 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 "ਨਾਂ ਤਬਦੀਲ ਨਹੀਂ ਹੋ ਸਕਦਾ" +msgstr "ਨਾਂ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" msgid "Could not change nick" -msgstr "ਨਾਂ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" +msgstr "ਨਾਂ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" #, c-format msgid "You have parted the channel%s%s" @@ -3677,11 +3668,9 @@ msgid "execute" msgstr "ਚਲਾਓ" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." -msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।" - -#, fuzzy +msgstr "ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਲੱਭਿਆ ਹੈ।" + msgid "You require encryption, but no TLS/SSL support was found." msgstr "ਤੁਹਾਨੂੰ ਇੰਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਲੱਭਿਆ।" @@ -3699,13 +3688,11 @@ msgid "Plaintext Authentication" msgstr "ਪਲੇਨ-ਟੈਕਸਟ ਪਰਮਾਣਕਿਤਾ" -#, fuzzy msgid "SASL authentication failed" -msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ" - -#, fuzzy +msgstr "SASL ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ" + msgid "Invalid response from server" -msgstr "ਸਰਵਰ ਵਲੋਂ ਗਲਤ ਜਵਾਬ ਹੈ।" +msgstr "ਸਰਵਰ ਵਲੋਂ ਗਲਤ ਜਵਾਬ ਹੈ" msgid "Server does not use any supported authentication method" msgstr "ਸਰਵਰ ਕਿਸੇ ਸਹਿਯੋਗੀ ਪਰਮਾਣਕਿਤਾ ਢੰਗ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" @@ -3716,36 +3703,30 @@ msgid "Invalid challenge from server" msgstr "ਸਰਵਰ ਤੋਂ ਗਲਤ ਚੈਲੰਜ਼" -#, fuzzy, c-format +# , c-format +#, c-format msgid "SASL error: %s" -msgstr "SASL ਗਲਤੀ" +msgstr "SASL ਗਲਤੀ: %s" msgid "The BOSH connection manager terminated your session." -msgstr "" - -#, fuzzy +msgstr "BOSH ਕੁਨੈਕਸ਼ਨ ਮੈਨੇਜਰ ਨੇ ਤੁਹਾਡਾ ਸ਼ੈਸ਼ਨ ਖਤਮ ਕੀਤਾ।" + 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" - -#, fuzzy, c-format +msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ" + +# , c-format +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "" -"ਸਰਵਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ:\n" -"%s" - -#, fuzzy +msgstr "ਸਰਵਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" + msgid "Unable to establish SSL connection" -msgstr "ਕੁਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਲਈ ਅਸਫ਼ਲ।" +msgstr "SSL ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ" msgid "Full Name" msgstr "ਪੂਰਾ ਨਾਂ" @@ -3811,9 +3792,8 @@ msgid "Operating System" msgstr "ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ" -#, fuzzy msgid "Local Time" -msgstr "ਲੋਕਲ ਫਾਇਲ:" +msgstr "ਲੋਕਲ ਟਾਈਮ" msgid "Priority" msgstr "ਤਰਜੀਹ" @@ -3823,11 +3803,10 @@ #, c-format msgid "%s ago" -msgstr "" - -#, fuzzy +msgstr "%s ਪਹਿਲਾਂ" + msgid "Logged Off" -msgstr "ਲਾਗਇਨ ਹੈ" +msgstr "ਲਾਗ ਆਫ਼ ਕੀਤਾ" msgid "Middle Name" msgstr "ਮੱਧ ਨਾਂ" @@ -3995,26 +3974,22 @@ msgid "Find Rooms" msgstr "ਰੂਮ ਖੋਜ" -#, fuzzy msgid "Affiliations:" -msgstr "ਏਲੀਆਸ:" - -#, fuzzy +msgstr "ਸਬੰਧ:" + msgid "No users found" -msgstr "ਕੋਈ ਮਿਲਦਾ ਯੂਜ਼ਰ ਨਹੀਂ ਮਿਲਿਆ" - -#, fuzzy +msgstr "ਯੂਜ਼ਰ ਨਹੀਂ ਲੱਭੇ" + msgid "Roles:" -msgstr "ਕੰਮ" - -#, fuzzy +msgstr "ਰੋਲ:" + msgid "Ping timed out" msgstr "ਪਿੰਗ ਟਾਈਮ-ਆਉਟ" msgid "" "Unable to find alternative XMPP connection methods after failing to connect " "directly." -msgstr "" +msgstr "ਸਿੱਧਾ ਕੁਨਕੈਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੋਣ ਤੋਂ ਬਾਅਦ ਬਦਲਵਾਂ XMPP ਕੁਨੈਕਸ਼ਨ ਢੰਗ ਲੱਭਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।" msgid "Invalid XMPP ID" msgstr "ਗਲਤ XMPP ID" @@ -4022,9 +3997,8 @@ msgid "Invalid XMPP ID. Domain must be set." msgstr "ਗਲਤ XMPP ID ਹੈ। ਡੋਮੇਨ ਸੈੱਟ ਕਰਨੀ ਲਾਜ਼ਮੀ ਹੈ।" -#, fuzzy msgid "Malformed BOSH URL" -msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਦੌਰਨ ਗਲਤੀ" +msgstr "ਨਿਕਾਰਾ BOSH URL" #, c-format msgid "Registration of %s@%s successful" @@ -4051,7 +4025,7 @@ msgstr "ਅਣ-ਰਜਿਸਟਰੇਸ਼ਨ ਫੇਲ੍ਹ" msgid "State" -msgstr "ਸਥਿਤੀ" +msgstr "ਹਾਲਤ" msgid "Postal code" msgstr "ਡਾਕ-ਕੋਡ" @@ -4092,10 +4066,6 @@ msgid "Change Registration" msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਬਦਲੋ" -#, fuzzy -msgid "Malformed BOSH Connect Server" -msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਦੌਰਨ ਗਲਤੀ" - msgid "Error unregistering account" msgstr "ਅਕਾਊਂਟ ਅਣ-ਰਜਿਸਟਰੇਸ਼ਨ ਗਲਤੀ" @@ -4381,19 +4351,22 @@ msgid "Unable to ping user %s" msgstr "ਯੂਜ਼ਰ %s ਪਿੰਗ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to buzz, because there is nothing known about %s." -msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ %s ਬਾਰੇ ਕੁਝ ਵੀ ਪਤਾ ਨਹੀਂ ਹੈ।" - -#, fuzzy, c-format +msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ %s ਬਾਰੇ ਕੁਝ ਵੀ ਪਤਾ ਨਹੀਂ ਹੈ।" + +# , c-format +#, c-format msgid "Unable to buzz, because %s might be offline." -msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ %s ਸ਼ਾਇਦ ਆਫ਼ਲਾਈਨ ਹੈ।" - -#, fuzzy, c-format +msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ %s ਸ਼ਾਇਦ ਆਫ਼ਲਾਈਨ ਹੈ।" + +# , c-format +#, c-format msgid "" "Unable to buzz, because %s does not support it or does not wish to receive " "buzzes now." -msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ %s ਇਸ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" +msgstr "ਬੱਜ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਂਕਿ %s ਇਸ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ ਜਾਂ ਬੱਜ਼ ਲੈਣੇ ਨਹੀਂ ਚਾਹੁੰਦਾ ਹੈ।" #, c-format msgid "Buzzing %s..." @@ -4408,35 +4381,36 @@ msgid "%s has buzzed you!" msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਬੱਜ਼ ਭੇਜਿਆ ਹੈ!" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to initiate media with %s: invalid JID" -msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ, ਗਲਤ JID" - -#, fuzzy, c-format -msgid "Unable to initiate media with %s: user is not online" -msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ, ਯੂਜ਼ਰ ਆਨਲਾਈਨ ਨਹੀਂ ਹੈ" - -#, fuzzy, c-format -msgid "Unable to initiate media with %s: not subscribed to user presence" -msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਯੂਜ਼ਰ ਮੌਜੂਦਗੀ ਲਈ ਮੈਂਬਰ ਨਹੀਂ" - -#, fuzzy -msgid "Media Initiation Failed" -msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ" +msgstr "%s ਨੂੰ ਮੀਡਿਆ ਸ਼ੁਰੂ ਕਰਨ ਵਾਸਤੇ ਅਸਮਰੱਥ: ਗਲਤ JID" # , c-format -#, fuzzy, c-format +#, c-format +msgid "Unable to initiate media with %s: user is not online" +msgstr "%s ਲਈ ਮੀਡਿਆ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: ਯੂਜ਼ਰ ਆਨਲਾਈਨ ਨਹੀਂ ਹੈ" + +# , c-format +#, c-format +msgid "Unable to initiate media with %s: not subscribed to user presence" +msgstr "%s ਨੂੰ ਮੀਡਿਆ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ: ਯੂਜ਼ਰ ਮੌਜੂਦਗੀ ਲਈ ਮੈਂਬਰ ਨਹੀਂ" + +msgid "Media Initiation Failed" +msgstr "ਮੀਡਿਆ ਸ਼ੁਰੂਆਤ ਫੇਲ੍ਹ ਹੈ" + +# , c-format, c-format +#, c-format msgid "" "Please select the resource of %s with which you would like to start a media " "session." -msgstr "ਚੁਣੋ ਕਿ ਕਿਹੜੇ %s ਦੇ ਸਰੋਤ ਤੁਸੀਂ ਇੱਕ ਫਾਇਲ ਤੋਂ ਤੁਸੀਂ ਭੇਜਣੇ ਚਾਹੁੰਦੇ ਹੋ" +msgstr "%s ਦੇ ਸਰੋਤ ਚੁਣੋ, ਜੋ ਕਿ ਤੁਸੀਂ ਮੀਡਿਆ ਸ਼ੈਸ਼ਨ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।" msgid "Select a Resource" msgstr "ਇੱਕ ਸਰੋਤ ਚੁਣੋ" -#, fuzzy msgid "Initiate Media" -msgstr "ਗੱਲਬਾਤ ਚਾਲੂ(_C)" +msgstr "ਮੀਡਿਆ ਸ਼ੁਰੂ" msgid "config: Configure a chat room." msgstr "config: Configure a chat room." @@ -4456,21 +4430,19 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <user> [reason]: Ban a user from the room." -#, 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>: ਰੂਮ ਨਾਲ ਯੂਜ਼ਰ " -"ਦਾ ਸਬੰਧ ਸੈੱਟ ਕਰੋ" - -#, fuzzy +"affiliate <owner|admin|member|outcast|none> [nick1] [nick2] ...: ਯੂਜ਼ਰਾਂ " +"ਦਾ ਸਬੰਧ ਲਵੋ ਜਾਂ ਰੂਮ ਨਾਲ ਯੂਜ਼ਰ ਦਾ ਸਬੰਧ ਸੈੱਟ ਕਰੋ।" + 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>: ਰੂਮ ਵਿੱਚ ਯੂਜ਼ਰ ਦਾ " -"ਰੋਲ ਸੈੱਟ ਕਰੋ।" +"role <moderator|participant|visitor|none> [nick1] [nick2] ...: ਯੂਜ਼ਰਾਂ ਦਾ " +"ਰੋਲ ਲਵੋ ਜਾਂ ਯੂਜ਼ਰਾਂ ਦਾ ਰੂਮ ਨਾਲ ਰੋਲ ਸੈੱਟ ਕਰੋ।" msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <user> [room]: ਯੂਜ਼ਰ ਨੂੰ ਰੂਮ 'ਚ ਸੱਦੋ।" @@ -4531,7 +4503,7 @@ msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਪਰਾਕਸੀ" msgid "BOSH URL" -msgstr "" +msgstr "BOSH URL" #. this should probably be part of global smiley theme settings later on, #. shared with MSN @@ -4595,32 +4567,30 @@ msgid "_Accept Defaults" msgstr "ਮੂਲ ਮਨਜ਼ੂਰ ਕਰੋ(_A)" -#, fuzzy msgid "No reason" -msgstr "ਕੋਈ ਕਾਰਨ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।" - -#, fuzzy, c-format +msgstr "ਕਾਰਨ ਨਹੀਂ" + +# , c-format +#, c-format msgid "You have been kicked: (%s)" -msgstr "ਤੁਹਾਨੂੰ %s ਨੇ ਠੁੱਡਾ ਮਾਰਿਆ: (%s)" - -#, fuzzy, c-format +msgstr "ਤੁਹਾਨੂੰ ਠੁੱਡਾ ਮਾਰਿਆ: (%s)" + +# , c-format +#, c-format msgid "Kicked (%s)" -msgstr "%s (%s) ਨੇ ਸੁੱਟਿਆ" - -#, fuzzy +msgstr "ਠੁੱਡਾ ਮਾਰਿਆ (%s)" + msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "ਫਾਇਲ ਖੋਲਣ ਲਈ ਗਲਤੀ ਆਈ ਹੈ।" - -#, fuzzy +msgstr "ਇਨ-ਬੈਂਡ ਬਾਈਟ-ਸਟਰੀਮ ਟਰਾਂਸਫਰ ਉੱਤੇ ਗਲਤੀ ਆਈ ਹੈ।\n" + msgid "Transfer was closed." -msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਫੇਲ੍ਹ" - -#, fuzzy +msgstr "ਟਰਾਂਸਫਰ ਬੰਦ ਹੋ ਗਈ।" + msgid "Failed to open the file" -msgstr "ਫਾਇਲ '%s' ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ: %s" +msgstr "ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" msgid "Failed to open in-band bytestream" -msgstr "" +msgstr "ਇਨ-ਬੈਂਡ ਬਾਈਟਸਿਸਟਮ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ" #, c-format msgid "Unable to send file to %s, user does not support file transfers" @@ -4941,9 +4911,27 @@ msgid "Non-IM Contacts" msgstr "ਗ਼ੈਰ-IM ਸੰਪਰਕ" -#, fuzzy, c-format +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "%s ਨੇ ਸੈਨਤ ਭੇਜੀ ਹੈ। ਇਹ ਚਲਾਉਣ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "%s ਨੇ ਸੈਨਤ ਭੇਜੀ, ਪਰ ਇਸ ਨੂੰ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "%s ਨੇ ਵੀਡਿਓ ਕਲਿੱਪ ਭੇਜੀ। ਚਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" + +# , c-format +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "%s ਨੇ ਵੀਡਿਓ ਕਲਿੱਪ ਭੇਜੀ, ਪਰ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕੀ।" + +# , c-format +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." -msgstr "%s ਨੇ ਇੱਕ ਵੈੱਬ-ਕੈਮ ਸੱਦਾ ਭੇਜਿਆ ਹੈ, ਜੋ ਕਿ ਹਾਲੇ ਸਹਿਯੋਗੀ ਨਹੀਂ ਹੈ।" +msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਵਾਜ਼ ਗੱਲਬਾਤ ਲਈ ਸੱਦਿਆ, ਜੋ ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" msgid "Nudge" msgstr "ਸੈਨਤ" @@ -4988,7 +4976,7 @@ "ਫੋਨਾਂ ਉੱਤੇ ਭੇਜਣ ਦੇਣਾ ਚਾਹੁੰਦੇ ਹੋ?" msgid "Allow" -msgstr "ਸਵੀਕਾਰ" +msgstr "ਮਨਜ਼ੂਰ" msgid "Disallow" msgstr "ਪਾਬੰਦੀ" @@ -5095,6 +5083,30 @@ msgid "SSL support is needed for MSN. Please install a supported SSL library." msgstr "SSL ਸਹਿਯੋਗ MSN ਲਈ ਲੋੜੀਦਾ ਹੈ। ਇੱਕ ਸਹਾਇਕ SSL ਲਾਇਬਰੇਰੀ ਇੰਸਟਾਲ ਕਰੋ ਜੀ।" +# , c-format +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"ਬੱਡੀ %s ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। ਯੂਜ਼ਰ-ਨਾਂ ਇੱਕ ਵੈਧ। ਈਮੇਲ ਐਡਰੈੱਸ " +"ਚਾਹੀਦਾ ਹੈ।" + +msgid "Unable to Add" +msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + +msgid "Authorization Request Message:" +msgstr "ਪ੍ਰਮਾਣਿਤ ਬੇਨਤੀ ਸੁਨੇਹਾ:" + +msgid "Please authorize me!" +msgstr "ਮੈਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ ਜੀ!" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "ਠੀਕ ਹੈ(_O)" + msgid "Error retrieving profile" msgstr "ਪ੍ਰੋਫਾਇਲ ਪ੍ਰਾਪਤ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" @@ -5226,7 +5238,7 @@ msgstr "ਪਸੰਦ ਚੀਜ਼ਾਂ" msgid "Last Updated" -msgstr "ਆਖਰੀ ਨਵੀਨੀਕਰਨ" +msgstr "ਆਖਰੀ ਅੱਪਡੇਟ" msgid "Homepage" msgstr "ਮੁੱਖ ਸਫਾ" @@ -5284,13 +5296,15 @@ msgid "%s just sent you a Nudge!" msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਸੈਨਲ (ਨੱਜ) ਮਾਰੀ ਹੈ!" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unknown error (%d): %s" -msgstr "ਅਣਜਾਣੀ ਗਲਤੀ (%d)" +msgstr "ਅਣਜਾਣੀ ਗਲਤੀ (%d): %s" msgid "Unable to add user" msgstr "ਯੂਜ਼ਰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "ਅਣਜਾਣੀ ਗਲਤੀ (%d)" @@ -5347,7 +5361,7 @@ msgstr "ਲਿਖਣ ਗਲਤੀ" msgid "Reading error" -msgstr "ਪੜਨ ਦੌਰਾਨ ਗਲਤੀ" +msgstr "ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ" #, c-format msgid "" @@ -5357,22 +5371,18 @@ "ਸਰਵਰ (%s) ਵਲੋਂ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ:\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" msgstr "ਸਾਡੇ ਪ੍ਰੋਟੋਕਾਲ ਲਈ ਸਰਵਰ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" -#, fuzzy msgid "Error parsing HTTP" msgstr "HTTP ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਹੈ।" -#, fuzzy msgid "You have signed on from another location" msgstr "ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਥਾਂ ਤੋਂ ਲਾਗਇਨ ਹੋਏ" msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "MSN ਸਰਵਰ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ। ਉਡੀਕ ਕਰਨ ਉਪਰੰਤ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ।" -#, fuzzy msgid "The MSN servers are going down temporarily" msgstr "MSN ਸਰਵਰ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।" @@ -5402,9 +5412,10 @@ msgid "Retrieving buddy list" msgstr "ਬੱਡੀ ਲਿਸਟ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." -msgstr "%s ਨੇ ਇੱਕ ਵੈੱਬ-ਕੈਮ ਸੱਦਾ ਭੇਜਿਆ ਹੈ, ਜੋ ਕਿ ਹਾਲੇ ਸਹਿਯੋਗੀ ਨਹੀਂ ਹੈ।" +msgstr "%s ਨੇ ਵੈੱਬ-ਕੈਮ ਵੇਖਣ ਲਈ ਮੰਗ ਕੀਤੀ ਹੈ, ਜੋ ਕਿ ਇਹ ਮੰਗ ਹਾਲੇ ਸਹਿਯੋਗੀ ਨਹੀਂ ਹੈ।" #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." @@ -5597,14 +5608,15 @@ msgid "Protocol error, code %d: %s" msgstr "ਪਰੋਟੋਕਾਲ ਗਲਤੀ, ਕੋਡ %d: %s" -#, fuzzy, c-format +# , 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 ਤੁਹਾਡਾ ਪਾਸਵਰਡ %d ਅੱਖਰਾਂ ਦਾ ਹੈ, ਜੋ ਕਿ MySpaceIM ਲਈ %d ਦੀ ਲੰਬਾਈ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ। ਆਪਣਾ " -"ਪਾਸਵਰਡ http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings." +"%s ਤੁਹਾਡਾ ਪਾਸਵਰਡ %zu ਅੱਖਰਾਂ ਦਾ ਹੈ, ਜੋ ਕਿ %d ਦੀ ਲੰਬਾਈ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ। ਆਪਣਾ ਪਾਸਵਰਡ " +"http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings." "changePassword ਉੱਤੇ ਛੋਟਾ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ ਜੀ।" msgid "Incorrect username or password" @@ -5704,6 +5716,8 @@ "visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " "to set your username." msgstr "" +"ਯੂਜ਼ਰ ਨਾਂ ਸੈੱਟ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ http://editprofile.myspace.com/" +"index.cfm?fuseaction=profile.username ਨੂੰ ਆਪਣਾ ਯੂਜ਼ਰ ਨਾਂ ਸੈੱਟ ਕਰਨ ਲਈ ਵਰਤੋਂ।" msgid "MySpaceIM - Username Available" msgstr "MySpaceIM - ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਹੈ" @@ -5959,9 +5973,10 @@ msgid "Unknown error: 0x%X" msgstr "ਅਣਜਾਣ ਗਲਤੀ: 0x%X" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to login: %s" -msgstr "ਯੂਜ਼ਰ %s ਪਿੰਗ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" +msgstr "ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s" #, c-format msgid "Unable to send message. Could not get details for user (%s)." @@ -6091,11 +6106,12 @@ "%s appears to be offline and did not receive the message that you just sent." msgstr "%s ਮੌਜੂਦ ਨਹੀਂ (ਆਫਲਾਇਨ) ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਰਾਹੀਂ ਭੇਜੇ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕੇਗਾ।" -#, fuzzy msgid "" "Unable to connect to server. Please enter the address of the server to which " "you wish to connect." -msgstr "ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫਲ ਹੈ। ਜੁੜਨ ਵਾਲੇ ਸਰਵਰ ਦਾ ਐਡਰੈੱਸ ਦਿਓ ਜੀ।" +msgstr "" +"ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਸਰਵਰ ਦਾ ਐਡਰੈੱਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਕੁਨੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੇ " +"ਹੋ।" msgid "This conference has been closed. No more messages can be sent." msgstr "ਇਹ ਕਾਨਫਰੰਸ ਬੰਦ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ। ਕੋਈ ਹੋਰ ਸੁਨੇਹਾ ਨਹੀਂ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ।" @@ -6119,9 +6135,8 @@ msgid "Server port" msgstr "ਸਰਵਰ ਪੋਰਟ" -#, fuzzy msgid "Received unexpected response from " -msgstr "ਸਰਵਰ ਤੋਂ ਅਚਾਨਕ HTTP ਜਵਾਬ ਮਿਲਿਆ ਹੈ।" +msgstr "ਇਸ ਤੋਂ ਅਣਜਾਣ ਜਵਾਬ ਮਿਲਿਆ" #. username connecting too frequently msgid "" @@ -6131,12 +6146,13 @@ "ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਬੜੀ ਛੇਤੀ ਨਾਲ ਜੁੜ ਅਤੇ ਟੁੱਟ ਰਿਹਾ ਹੈ। 10 ਮਿੰਟ ਲਈ ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ। ਜੇਕਰ " "ਤੁਸੀਂ ਕੋਸ਼ਿਸ ਜਾਰੀ ਰੱਖੀ ਤਾਂ ਤੁਹਾਨੂੰ ਹੋਰ ਵੀ ਉਡੀਕ ਕਰਨੀ ਪਵੇਗੀ।" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Error requesting " -msgstr "%s ਹੱਲ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" +msgstr "ਮੰਗ ਦੌਰਾਨ ਗਲਤੀ " msgid "AOL does not allow your screen name to authenticate here" -msgstr "" +msgstr "AOL ਤੁਹਾਡੇ ਸਕਰੀਨ ਨਾਂ ਨੂੰ ਇੱਥੇ ਪਰਮਾਣਿਤ ਕਰਨ ਨਹੀਂ ਦਿੰਦਾ ਹੈ।" msgid "Could not join chat room" msgstr "ਚੈਟ ਰੂਮ ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋਇਆ ਜਾ ਸਕਿਆ" @@ -6144,7 +6160,6 @@ msgid "Invalid chat room name" msgstr "ਗਲਤ ਚੈਟ ਰੂਮ ਨਾਂ" -#, fuzzy msgid "Received invalid data on connection with server" msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਉੱਤੇ ਗਲਤ ਡਾਟਾ ਮਿਲਿਆ ਹੈ।" @@ -6193,9 +6208,8 @@ msgid "Received invalid data on connection with remote user." msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਉੱਤੇ ਗਲਤ ਡਾਟਾ ਮਿਲਿਆ ਹੈ।" -#, fuzzy msgid "Unable to establish a connection with the remote user." -msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਨਹੀਂ ਬਣਾਇਆ ਜਾ ਸਕਿਆ ਹੈ।" +msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ" msgid "Direct IM established" msgstr "ਸਿੱਧਾ IM ਬਣਾਇਆ ਗਿਆ।" @@ -6393,15 +6407,15 @@ msgid "Buddy Comment" msgstr "ਸੁਨੇਹੀ ਟਿੱਪਣੀ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to connect to authentication server: %s" -msgstr "" -"ਪਰਮਾਣਕਿਤਾ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ:\n" -"%s" - -#, fuzzy, c-format +msgstr "ਪਰਮਾਣਕਿਤਾ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s" + +# , c-format +#, c-format msgid "Unable to connect to BOS server: %s" -msgstr "ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫਲ ਹੈ।" +msgstr "BOS ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s" msgid "Username sent" msgstr "ਯੂਜ਼ਰ ਨਾਂ ਭੇਜਿਆ" @@ -6413,15 +6427,16 @@ msgid "Finalizing connection" msgstr "ਕੁਨੈਕਸ਼ਨ ਤਿਆਰ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "" "Unable to sign on as %s because the username is invalid. Usernames must be " "a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। ਯੂਜ਼ਰ " -"ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਅੱਖਰ, " -"ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।" +"%s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। ਯੂਜ਼ਰ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ " +"ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ " +"ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।" #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." @@ -6439,12 +6454,10 @@ #. Unregistered username #. uid is not exist #. the username does not exist -#, fuzzy msgid "Username does not exist" -msgstr "ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" +msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" #. Suspended account -#, fuzzy msgid "Your account is currently suspended" msgstr "ਤੁਹਾਡਾ ਅਕਾਊਂਟ ਇਸ ਸਮੇਂ ਮੁਅੱਤਲ ਕੀਤਾ ਗਿਆ ਹੈ।" @@ -6452,20 +6465,19 @@ msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "AOL Instant Messenger ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।" +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "ਤੁਹਾਡੇ ਰਾਹੀਂ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਕਲਾਇਟ ਦਾ ਵਰਜਨ ਬਹੁਤ ਪੁਰਾਣਾ ਹੈ। %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 "" -"ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਬੜੀ ਛੇਤੀ ਨਾਲ ਜੁੜ ਅਤੇ ਟੁੱਟ ਰਿਹਾ ਹੈ। 10 ਮਿੰਟ ਲਈ ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ। ਜੇਕਰ " +"ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਬੜੀ ਛੇਤੀ ਨਾਲ ਜੁੜ ਅਤੇ ਟੁੱਟ ਰਿਹਾ ਹੈ। ਇੱਕ ਮਿੰਟ ਲਈ ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ। ਜੇਕਰ " "ਤੁਸੀਂ ਕੋਸ਼ਿਸ ਜਾਰੀ ਰੱਖੀ ਤਾਂ ਤੁਹਾਨੂੰ ਹੋਰ ਵੀ ਉਡੀਕ ਕਰਨੀ ਪਵੇਗੀ।" -#, fuzzy msgid "The SecurID key entered is invalid" msgstr "ਦਿੱਤੀ SecurID ਕੁੰਜੀ ਗਲਤ ਹੈ।" @@ -6475,12 +6487,6 @@ msgid "Enter the 6 digit number from the digital display." msgstr "ਡਿਜ਼ੀਟਲ ਦਿੱਖ ਲਈ 6 ਡਿਜ਼ੀਟਲ ਅੰਕ ਦਿਓ" -#. * -#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. -#. -msgid "_OK" -msgstr "ਠੀਕ ਹੈ(_O)" - msgid "Password sent" msgstr "ਪਾਸਵਰਡ ਭੇਜਿਆ" @@ -6490,12 +6496,6 @@ msgid "Please authorize me so I can add you to my buddy list." msgstr "ਮੈਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ ਜੀ ਤਾਂ ਕਿ ਮੈਂ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰ ਸਕਾਂ।" -msgid "Authorization Request Message:" -msgstr "ਪ੍ਰਮਾਣਿਤ ਬੇਨਤੀ ਸੁਨੇਹਾ:" - -msgid "Please authorize me!" -msgstr "ਮੈਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ ਜੀ!" - msgid "No reason given." msgstr "ਕੋਈ ਕਾਰਨ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।" @@ -6802,7 +6802,8 @@ msgid "Away message too long." msgstr "ਦੂਰ ਸੁਨੇਹਾ ਬਹੁਤ ਲੰਮਾ ਹੈ।" -#, fuzzy, c-format +# , c-format +#, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " "be a valid email address, or start with a letter and contain only letters, " @@ -6812,9 +6813,6 @@ "ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ " "ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।" -msgid "Unable to Add" -msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" - msgid "Unable to Retrieve Buddy List" msgstr "ਬੱਡੀ ਲਿਸਟ ਲੈਣ ਲਈ ਅਸਮਰੱਥ" @@ -6828,7 +6826,8 @@ msgid "Orphans" msgstr "ਅਰਫਨ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "" "Unable to add the buddy %s because you have too many buddies in your buddy " "list. Please remove one and try again." @@ -6839,7 +6838,8 @@ msgid "(no name)" msgstr "(ਨਾਂ ਨਹੀਂ)" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to add the buddy %s for an unknown reason." msgstr "ਅਣਜਾਣੇ ਕਾਰਨ ਕਰਨੇ ਬੱਡੀ %s ਨੂੰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" @@ -6998,9 +6998,8 @@ msgid "Search for Buddy by Information" msgstr "ਜਾਣਕਾਰੀ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ" -#, fuzzy msgid "Use clientLogin" -msgstr "ਯੂਜ਼ਰ ਲਾਗਇਨ ਨਹੀਂ ਹੈ" +msgstr "ਕਲਾਇਟਲਾਗਇਨ ਵਰਤੋਂ" msgid "" "Always use AIM/ICQ proxy server for\n" @@ -7196,30 +7195,26 @@ msgstr "ਨੋਟ" #. callback -#, fuzzy msgid "Buddy Memo" -msgstr "ਬੱਡੀ ਆਈਕਾਨ" +msgstr "ਬੱਡੀ ਮੀਮੋ" msgid "Change his/her memo as you like" -msgstr "" - -#, fuzzy +msgstr "ਉਸ ਲਈ ਮੀਮੋ ਬਦਲੋ ਜਿਵੇਂ ਤੁਸੀਂ ਚਾਹੋ" + msgid "_Modify" -msgstr "ਸੋਧ" - -#, fuzzy +msgstr "ਸੋਧ(_M)" + msgid "Memo Modify" -msgstr "ਸੋਧ" - -#, fuzzy +msgstr "ਮੀਮੋ ਸੋਧ" + msgid "Server says:" -msgstr "ਸਰਵਰ ਰੁੱਝਿਆ ਹੈ" +msgstr "ਸਰਵਰ ਨੇ ਕਿਹਾ:" msgid "Your request was accepted." -msgstr "" +msgstr "ਤੁਹਾਡੀ ਮੰਗ ਮੰਨੀ ਗਈ।" msgid "Your request was rejected." -msgstr "" +msgstr "ਤੁਹਾਡੀ ਮੰਗ ਰੱਦ ਕੀਤੀ ਗਈ।" #, c-format msgid "%u requires verification" @@ -7529,12 +7524,11 @@ msgid "

Acknowledgement:
\n" msgstr "

ਰਸੀਦ:
\n" -#, fuzzy msgid "

Scrupulous Testers:
\n" -msgstr "

ਅਸਲੀ ਲੇਖਕ:
\n" +msgstr "

ਖਾਸ ਟੈਸਟਰ:
\n" msgid "and more, please let me know... thank you!))" -msgstr "" +msgstr "ਅਤੇ ਹੋਰ ਬਹੁਤ, ਬੱਸ ਮੈਨੂੰ ਦੱਸ ਦਿਓ... ਧੰਨਵਾਦ ਸਹਿਤ!))" msgid "

And, all the boys in the backroom...
\n" msgstr "

ਅਤੇ ਸਾਰੇ ਮੁੰਡੇ ਪਿਛਲੇ ਕਮਰੇ ਵਿੱਚ ਹਨ...
\n" @@ -7561,9 +7555,8 @@ msgid "About OpenQ" msgstr "OpenQ ਬਾਰੇ" -#, fuzzy msgid "Modify Buddy Memo" -msgstr "ਐਡਰੈੱਸ ਸੋਧ" +msgstr "ਬੱਡੀ ਮੀਮੋ ਸੋਧ" #. *< type #. *< ui_requirement @@ -7611,9 +7604,8 @@ msgid "Update interval (seconds)" msgstr "ਅੱਪਡੇਟ ਅੰਤਰਾਲ (ਸਕਿੰਟ)" -#, fuzzy msgid "Unable to decrypt server reply" -msgstr "ਸਰਵਰ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" +msgstr "ਸਰਵਰ ਜਵਾਬ ਨੂੰ ਡਿਕ੍ਰਿਪਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" #, c-format msgid "Failed requesting token, 0x%02X" @@ -7679,9 +7671,8 @@ msgid "Requesting token" msgstr "ਟੋਕਨ ਲਈ ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫਲ ਹੈ।" +msgstr "ਹੋਸਟ-ਨਾਂ ਹੱਲ਼ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" msgid "Invalid server or port" msgstr "ਗਲਤ ਸਰਵਰ ਜਾਂ ਪੋਰਟ" @@ -7734,9 +7725,8 @@ msgid "QQ Qun Command" msgstr "QQ ਕਿਉਨ ਕਮਾਂਡ" -#, fuzzy msgid "Unable to decrypt login reply" -msgstr "ਲਾਗਇਨ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" +msgstr "ਲਾਗਇਨ ਜਵਾਬ ਨੂੰ ਡਿਕ੍ਰਿਪਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" msgid "Unknown LOGIN CMD" msgstr "ਅਣਜਾਣ ਲਾਗਇਨ CMD" @@ -8699,9 +8689,8 @@ msgid "Disconnected by server" msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ" -#, fuzzy msgid "Error connecting to SILC Server" -msgstr "SILC ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਲਈ ਸਮੱਸਿਆ ਹੈ" +msgstr "SILC ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" msgid "Key Exchange failed" msgstr "ਕੁੰਜੀ ਤਬਾਦਲਾ ਅਸਫਲ" @@ -8713,24 +8702,21 @@ msgid "Performing key exchange" msgstr "ਕੁੰਜੀ ਤਬਾਦਲਾ ਜਾਰੀ" -#, fuzzy msgid "Unable to load SILC key pair" -msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" +msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" #. Progress msgid "Connecting to SILC Server" msgstr "SILC ਸਰਵਰ ਨਾਲ ਜੁੜ ਰਿਹਾ ਹੈ" -#, fuzzy msgid "Unable to not load SILC key pair" -msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" +msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" msgid "Out of memory" msgstr "ਮੈਮੋਰੀ ਤੋਂ ਬਾਹਰ" -#, fuzzy msgid "Unable to initialize SILC protocol" -msgstr "SILC ਪਰੋਟੋਕਾਲ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" +msgstr "SILC ਪਰੋਟੋਕਾਲ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" msgid "Error loading SILC key pair" msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" @@ -9019,9 +9005,8 @@ msgid "Creating SILC key pair..." msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ\n" +msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9157,27 +9142,25 @@ msgid "Failure: Authentication failed" msgstr "ਅਸਫ਼ਲ: ਪ੍ਰਮਾਣਕਿਤਾ ਅਸਫ਼ਲ" -#, fuzzy msgid "Unable to initialize SILC Client connection" -msgstr "SILC ਕਲਾਇਟ ਕੁਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" +msgstr "SILC ਕਲਾਇਟ ਕੁਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" msgid "John Noname" msgstr "ਜਾਨ ਬਿਨ-ਨਾਂ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to load SILC key pair: %s" -msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s" +msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s" msgid "Unable to create connection" msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ।" -#, fuzzy msgid "Unknown server response" -msgstr "ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ ਹੈ।" - -#, fuzzy +msgstr "ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ" + msgid "Unable to create listen socket" -msgstr "ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਫਲ" +msgstr "ਲਿਸਟ ਸਾਕਟ ਬਣਾਉਣ ਲਈ ਅਸਫਲ" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP ਸਕਰੀਨ ਨਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਜਾਂ @ ਨਿਸ਼ਾਨ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ" @@ -9240,9 +9223,8 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" -msgstr "Yahoo ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" +msgstr "Yahoo! ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" msgid "Pager server" msgstr "ਪੇਜ਼ਰ ਸਰਵਰ" @@ -9271,9 +9253,8 @@ msgid "Yahoo Chat port" msgstr "Yahoo ਚੈਟ ਪੋਰਟ" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "Yahoo ID..." +msgstr "Yahoo ਜਾਪਾਨ ID..." #. *< type #. *< ui_requirement @@ -9285,12 +9266,11 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Yahoo ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" +msgstr "Yahoo! ਜਾਪਾਨ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" msgid "Your SMS was not delivered" -msgstr "" +msgstr "ਤੁਹਾਡਾ SMS ਨਹੀਂ ਭੇਜਿਆ ਗਿਆ" msgid "Your Yahoo! message did not get sent." msgstr "ਤੁਹਾਡਾ Yahoo! ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਗਿਆ ਹੈ।" @@ -9315,30 +9295,27 @@ msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ ਕਰਨਾ ਠੁਕਰਾਇਆ" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਉੱਤੇ ਗਲਤ ਡਾਟਾ ਮਿਲਿਆ ਹੈ।" +msgstr "ਗਲਤ ਡਾਟਾ ਮਿਲਿਆ" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." msgstr "" -"ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।" +"ਅਕਾਊਂਟ ਲਾਕ ਹੋਇਆ: ਬਹੁਤ ਸਾਰੀਆਂ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ ਕਰਕੇ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ " +"ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।" #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." msgstr "" -"ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।" +"ਅਕਾਊਂਟ ਲਾਕ ਹੋਇਆ: ਅਣਜਾਣ ਕਾਰਨ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।" #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" +msgstr "ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ ਮੌਜੂਦ ਨਹੀਂ" #, c-format msgid "" @@ -9371,12 +9348,12 @@ msgstr "" "ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." msgstr "" "ਸੁਨੇਹੀ %s ਨੂੰ ਗਰੁੱਪ %s ਵਿੱਚ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਅਕਾਊਂਟ %s ਲਈ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।" -#, fuzzy msgid "Unable to add buddy to server list" msgstr "ਸਰਵਰ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" @@ -9384,21 +9361,18 @@ msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ ਸੁਣਨਯੋਗ %s/%s/%s.swf ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" msgstr "ਸਰਵਰ ਤੋਂ ਅਚਾਨਕ HTTP ਜਵਾਬ ਮਿਲਿਆ ਹੈ।" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"%s ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ ਹੈ:\n" -"%s" - -#, fuzzy, c-format +msgstr "%s ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ ਹੈ: %s" + +# , c-format +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "" -"ਸਰਵਰ ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ:\n" -"%s" +msgstr "%s ਨਾਲ ਇੱਕ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" msgid "Not at Home" msgstr "ਘਰੇ ਨਹੀਂ" @@ -9446,7 +9420,7 @@ msgstr "ਘੁੱਗੂ ਘਾਂਘੜੇ (ਡੂਡਲ) ਸਟਾਰਟ" msgid "Select the ID you want to activate" -msgstr "" +msgstr "ID ਚੁਣੋ, ਜੋ ਤੁਸੀਂ ਸਰਗਰਮ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ" msgid "Join whom in chat?" msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਕਿਸ ਨਾਲ ਜੁਆਇੰਨ?" @@ -9601,7 +9575,6 @@ msgid "User Rooms" msgstr "ਯੂਜਰ ਰੂਮ" -#, fuzzy msgid "Connection problem with the YCHT server" msgstr "YCHT ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਸਮੱਸਿਆ ਹੈ।" @@ -9727,15 +9700,17 @@ msgid "Exposure" msgstr "Exposure" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "HTTP ਪਰਾਕਸੀ ਤੋਂ ਜਵਾਬ ਪਾਰਸ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s\n" +msgstr "HTTP ਪਰਾਕਸੀ ਤੋਂ ਜਵਾਬ ਪਾਰਸ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "HTTP ਪਰਾਕਸੀ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ %d" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" msgstr "ਪਹੁੰਚ ਪਾਬੰਦੀ ਹੈ: HTTP ਪਰਾਕਸੀ ਸਰਵਰ ਨੇ ਪੋਰਟ %d ਟਨਲਿੰਗ ਓਹਲੇ ਰੱਖੀ ਹੈ।" @@ -9981,7 +9956,8 @@ msgid "Error Reading %s" msgstr "%s ਪੜਨ ਦੌਰਾਨ ਗਲਤੀ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "" "An error was encountered reading your %s. The file has not been loaded, and " "the old file has been renamed to %s~." @@ -10031,8 +10007,8 @@ msgid "Use this buddy _icon for this account:" msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):" -msgid "_Advanced" -msgstr "ਤਕਨੀਕੀ(_A)" +msgid "Ad_vanced" +msgstr "ਤਕਨੀਕੀ(_v)" msgid "Use GNOME Proxy Settings" msgstr "ਗਨੋਮ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਵਰਤੋਂ" @@ -10094,9 +10070,8 @@ msgid "Create _this new account on the server" msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ(_t)" -#, fuzzy -msgid "_Proxy" -msgstr "ਪਰਾਕਸੀ" +msgid "P_roxy" +msgstr "ਪਰਾਕਸੀ(_r)" msgid "Enabled" msgstr "ਯੋਗ ਕੀਤਾ" @@ -10144,9 +10119,8 @@ msgid "Please update the necessary fields." msgstr "ਲੋੜੀਦੇ ਖੇਤਰ ਅੱਪਡੇਟ ਕਰੋ ਜੀ।" -#, fuzzy msgid "A_ccount" -msgstr "ਅਕਾਊਂਟ" +msgstr "ਅਕਾਊਂਟ(_c)" msgid "" "Please enter the appropriate information about the chat you would like to " @@ -10171,16 +10145,14 @@ msgid "I_M" msgstr "I_M" -#, fuzzy msgid "_Audio Call" -msgstr "ਗੱਲਬਾਤ ਸ਼ਾਮਲ(_A)" +msgstr "ਆਡੀਓ ਕਾਲ(_A)" msgid "Audio/_Video Call" -msgstr "" - -#, fuzzy +msgstr "ਆਡੀਓ/ਵੀਡਿਓ ਕਾਲ(_V)" + msgid "_Video Call" -msgstr "ਵੀਡਿਓ ਗੱਲਬਾਤ" +msgstr "ਵੀਡਿਓ ਕਾਲ(_V)" msgid "_Send File..." msgstr "ਫਾਇਲ ਭੇਜੋ(_S)..." @@ -10191,13 +10163,11 @@ msgid "View _Log" msgstr "ਲਾਗ ਵੇਖੋ(_L)" -#, fuzzy msgid "Hide When Offline" -msgstr "ਜਦੋਂ ਆਫਲਾਇਨ ਹੋਵੇ ਤਾਂ ਓਹਲੇ" - -#, fuzzy +msgstr "ਆਫਲਾਇਨ ਹੋਵੇ ਤਾਂ ਓਹਲੇ" + msgid "Show When Offline" -msgstr "ਜਦੋਂ ਆਫਲਾਇਨ ਹੋਵੇ ਤਾਂ ਵੇਖੋ" +msgstr "ਆਫਲਾਇਨ ਹੋਵੇ ਤਾਂ ਵੇਖੋ" msgid "_Alias..." msgstr "ਏਲੀਆਸ(_A)..." @@ -10321,9 +10291,8 @@ msgid "/Tools/_Certificates" msgstr "/ਟੂਲ/ਸਰਟੀਫਿਕੇਟ(_C)" -#, fuzzy msgid "/Tools/Custom Smile_ys" -msgstr "/ਟੂਲ/ਸਮਾਈਲੀ(_y)" +msgstr "/ਟੂਲ/ਕਸਟਮ ਸਮਾਈਲੀ(_y)" msgid "/Tools/Plu_gins" msgstr "/ਟੂਲ/ਪਲੱਗਇਨ(_G)" @@ -10452,7 +10421,7 @@ msgstr "ਅਕਾਰ" msgid "By recent log activity" -msgstr "" +msgstr "ਤਾਜ਼ਾ ਲਾਗ ਸਰਗਰਮੀ ਰਾਹੀਂ" #, c-format msgid "%s disconnected" @@ -10469,7 +10438,7 @@ msgstr "ਮੁੜ-ਚਾਲੂ" msgid "SSL FAQs" -msgstr "" +msgstr "SSL ਸਵਾਲ-ਜਵਾਬ" msgid "Welcome back!" msgstr "ਫੇਰ ਜੀ ਆਇਆਂ ਨੂੰ!" @@ -10596,107 +10565,93 @@ msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ" msgid "The background color for the buddy list" -msgstr "" - -#, fuzzy +msgstr "ਬੱਡੀ ਲਿਸਟ ਲਈ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" + msgid "Layout" -msgstr "ਲਾਓ" +msgstr "ਲੇਆਉਟ" msgid "The layout of icons, name, and status of the blist" -msgstr "" +msgstr "ਬੱਡੀਲਿਸਟ ਲਈ ਆਈਕਾਨ, ਨਾਂ ਅਤੇ ਹਾਲਤ ਦਾ ਲੇਆਉਟ" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ" +msgstr "ਫੈਲਾਉਣ ਸਮੇਂ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" msgid "The background color of an expanded group" -msgstr "" - -#, fuzzy +msgstr "ਫੈਲੇ ਗਰੁੱਪ ਲਈ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" + msgid "Expanded Text" -msgstr "ਫੈਲਾਓ(_E)" +msgstr "ਫੈਲਾਉਣ ਟੈਕਸਟ" msgid "The text information for when a group is expanded" -msgstr "" - -#, fuzzy +msgstr "ਜਦੋਂ ਗਰੁੱਪ ਫੈਲਿਆ ਹੋਵੇ ਲਈ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" + msgid "Collapsed Background Color" -msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਚੁਣੋ" +msgstr "ਸਮੇਟਣ ਸਮੇਂ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" msgid "The background color of a collapsed group" -msgstr "" - -#, fuzzy +msgstr "ਸਮੇਟੇ ਗਰੁੱਪ ਲਈ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" + msgid "Collapsed Text" -msgstr "ਸਮੇਟੋ(_C)" +msgstr "ਸਮੇਟਣ ਟੈਕਸਟ" msgid "The text information for when a group is collapsed" -msgstr "" +msgstr "ਜਦੋਂ ਗਰੁੱਪ ਸਮੇਟਿਆ ਹੋਵੇ ਤਾਂ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਚੁਣੋ" +msgstr "ਸੰਪਰਕ/ਗੱਲਬਾਤ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" msgid "The background color of a contact or chat" -msgstr "" - -#, fuzzy +msgstr "ਸੰਪਰਕ ਜਾਂ ਗੱਲਬਾਤ ਲਈ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" + msgid "Contact Text" -msgstr "ਸ਼ਾਰਟਕੱਟ" +msgstr "ਸੰਪਰਕ ਟੈਕਸਟ" msgid "The text information for when a contact is expanded" -msgstr "" - -#, fuzzy +msgstr "ਜਦੋਂ ਸੰਪਰਕ ਫੈਲਿਆ ਹੋਵੇ ਤਾਂ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" + msgid "On-line Text" -msgstr "ਆਨਲਾਈਨ" +msgstr "ਆਨਲਾਈਨ ਟੈਕਸਟ" msgid "The text information for when a buddy is online" -msgstr "" - -#, fuzzy +msgstr "ਜਦੋਂ ਬੱਡੀ ਆਨਲਾਈਨ ਹੋਵੇ ਤਾਂ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" + msgid "Away Text" -msgstr "ਦੂਰ" +msgstr "ਦੂਰ ਟੈਕਸਟ" msgid "The text information for when a buddy is away" -msgstr "" - -#, fuzzy +msgstr "ਜਦੋਂ ਬੱਡੀ ਦੂਰ ਹੋਵੇ ਤਾਂ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" + msgid "Off-line Text" -msgstr "ਆਫਲਾਈਨ" +msgstr "ਆਫਲਾਈਨ ਟੈਕਸਟ" msgid "The text information for when a buddy is off-line" -msgstr "" - -#, fuzzy +msgstr "ਜਦੋਂ ਬੱਡੀ ਆਫਲਾਈਨ ਹੋਵੇ ਲਈ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" + msgid "Idle Text" -msgstr "ਮੂਡ ਟੈਕਸਟ" +msgstr "ਵੇਹਲਾ/ਵੇਹਲੀ ਟੈਕਸਟ" msgid "The text information for when a buddy is idle" -msgstr "" - -#, fuzzy +msgstr "ਜਦੋਂ ਬੱਡੀ ਵੇਹਲਾ ਹੋਵੇ ਤਾਂ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" + msgid "Message Text" -msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ" +msgstr "ਸੁਨੇਹਾ ਟੈਕਸਟ" msgid "The text information for when a buddy has an unread message" -msgstr "" +msgstr "ਜਦੋਂ ਬੱਡੀ ਦੇ ਨਾ-ਪੜ੍ਹਿਆ ਸੁਨੇਹਾ ਹੋਵੇ ਲਈ ਟੈਕਸਟ ਜਾਣਕਾਰੀ " msgid "Message (Nick Said) Text" -msgstr "" +msgstr "ਸੁਨੇਹਾ (ਨਾਂ ਕਿਹਾ) ਟੈਕਸਟ" msgid "" "The text information for when a chat has an unread message that mentions " "your nick" -msgstr "" - -#, fuzzy +msgstr "ਟੈਕਸਟ ਜਾਣਕਾਰੀ, ਜਦੋਂ ਕਿ ਗੱਲਬਾਤ ਵਿੱਚ ਨਾ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ ਹੋਣ, ਜਿੰਨ੍ਹਾਂ ਵਿੱਚ ਤੁਹਾਡਾ ਨਾਂ ਹੋਵੇ" + msgid "The text information for a buddy's status" -msgstr "%s ਲਈ ਯੂਜ਼ਰ ਸੁਨੇਹਾ ਤਬਦੀਲ" - -#, fuzzy +msgstr "ਬੱਡੀ ਦੀ ਹਾਲਤ ਬਾਰੇ ਟੈਕਸਟ ਜਾਣਕਾਰੀ" + msgid "Type the host name for this certificate." msgstr "ਇਹ ਸਰਟੀਫਿਕੇਟ ਲਈ ਹੋਸਟ ਨਾਂ ਦਿਓ" @@ -10745,7 +10700,6 @@ msgid "Get Away Message" msgstr "ਦੂਰ ਸੁਨੇਹਾ ਲਵੋ" -#, fuzzy msgid "Last Said" msgstr "ਆਖਰੀ ਵਾਰ ਕਿਹਾ" @@ -10792,21 +10746,17 @@ msgid "/Conversation/Clea_r Scrollback" msgstr "/ਗੱਲਬਾਤ/ਸਕਰੋਲ-ਬੈਕ ਸਾਫ਼ ਕਰੋ(_r)" -#, fuzzy msgid "/Conversation/M_edia" -msgstr "/ਗੱਲਬਾਤ/ਹੋਰ(_o)" - -#, fuzzy +msgstr "/ਗੱਲਬਾਤ/ਮੀਡਿਆ(_e)" + msgid "/Conversation/Media/_Audio Call" -msgstr "/ਗੱਲਬਾਤ/ਹੋਰ(_o)" - -#, fuzzy +msgstr "/ਗੱਲਬਾਤ/ਮੀਡਿਆ/ਆਡੀਓ ਕਾਲ(_A)" + msgid "/Conversation/Media/_Video Call" -msgstr "/ਗੱਲਬਾਤ/ਹੋਰ(_o)" - -#, fuzzy +msgstr "/ਗੱਲਬਾਤ/ਮੀਡਿਆ/ਵੀਡਿਓ ਕਾਲ(_V)" + msgid "/Conversation/Media/Audio\\/Video _Call" -msgstr "/ਗੱਲਬਾਤ/ਲਾਗ ਵੇਖੋ(_L)" +msgstr "/ਗੱਲਬਾਤ/ਮੀਡਿਆ/ਆਡੀਓ\\/ਵੀਡਿਓ ਕਾਲ(_C)" msgid "/Conversation/Se_nd File..." msgstr "/ਗੱਲਬਾਤ/ਫਾਇਲ ਭੇਜੋ(_n)..." @@ -10880,17 +10830,14 @@ msgid "/Conversation/View Log" msgstr "/ਗੱਲਬਾਤ/ਲਾਗ ਵੇਖੋ" -#, fuzzy msgid "/Conversation/Media/Audio Call" -msgstr "/ਗੱਲਬਾਤ/ਹੋਰ" - -#, fuzzy +msgstr "/ਗੱਲਬਾਤ/ਮੀਡਿਆ/ਆਡੀਓ ਕਾਲ" + msgid "/Conversation/Media/Video Call" -msgstr "/ਗੱਲਬਾਤ/ਲਾਗ ਵੇਖੋ" - -#, fuzzy +msgstr "/ਗੱਲਬਾਤ/ਮੀਡਿਆ/ਵੀਡਿਓ ਕਾਲ" + msgid "/Conversation/Media/Audio\\/Video Call" -msgstr "/ਗੱਲਬਾਤ/ਹੋਰ" +msgstr "/ਗੱਲਬਾਤ/ਮੀਡਿਆ/ਆਡੀਓ\\/ਵੀਡਿਓ ਕਾਲ" msgid "/Conversation/Send File..." msgstr "/ਗੱਲਬਾਤ/ਫਾਇਲ ਭੇਜੋ..." @@ -11075,7 +11022,7 @@ msgstr "ਕਾ-ਹਿੰਗ ਚੀਉਂਗ" msgid "voice and video" -msgstr "" +msgstr "ਆਵਾਜ਼ ਅਤੇ ਵੀਡਿਓ" msgid "support" msgstr "ਸਹਿਯੋਗ" @@ -11201,9 +11148,8 @@ msgid "Hungarian" msgstr "ਹੰਗਰੀਆਈ" -#, fuzzy msgid "Armenian" -msgstr "ਰੋਮਾਨੀਆਈ" +msgstr "ਅਰਮੀਨੀਆਈ" msgid "Indonesian" msgstr "ਇੰਡੋਨੇਸ਼ੀਆਈ" @@ -11220,9 +11166,8 @@ msgid "Ubuntu Georgian Translators" msgstr "ਉਬਤੂੰ ਜਾਰਜੀਆਈ ਅਨੁਵਾਦਕ" -#, fuzzy msgid "Khmer" -msgstr "ਹੋਰ" +msgstr "ਖਮੀਰ" msgid "Kannada" msgstr "ਕੰਨੜ" @@ -11303,7 +11248,7 @@ msgstr "ਸਵੀਡਸ਼" msgid "Swahili" -msgstr "" +msgstr "ਸਵਾਹੀਲੀ" msgid "Tamil" msgstr "ਤਾਮਿਲ" @@ -11613,7 +11558,7 @@ msgstr "ਮੁੜ-ਪ੍ਰਾਪਤ(_R)" msgid "Paste as Plain _Text" -msgstr "ਸਧਾਰਨ ਪਾਠ ਵਾਂਗ ਚੇਪੋ(_T)" +msgstr "ਪਲੇਨ ਟੈਕਸਟ ਵਾਂਗ ਚੇਪੋ(_T)" msgid "_Reset formatting" msgstr "ਫਾਰਮੈਟਿੰਗ ਮੁੜ-ਸੈੱਟ ਕਰੋ(_R)" @@ -11630,7 +11575,6 @@ msgid "Hyperlink visited color" msgstr "ਖੋਲ੍ਹੋ ਹਾਈਪਰਲਿੰਕ ਰੰਗ" -#, fuzzy msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "ਹਾਈਪਰਲਿੰਕ ਖੋਲ੍ਹਣ ਤੋਂ ਬਾਅਦ ਵਰਤਣ ਲਈ ਰੰਗ (ਜਾਂ ਐਕਟੀਵੇਟ ਹੋਣ ਤੋਂ ਬਾਅਦ)" @@ -11667,23 +11611,20 @@ msgid "Action Message Name Color for Whispered Message" msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹੇ ਲਈ ਐਕਟਿਵ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" -#, fuzzy msgid "Color to draw the name of a whispered action message." -msgstr "ਇੱਕ ਕਾਰਵਾਈ ਸੁਨੇਹੇ ਲਈ ਨਾਂ ਲਿਖਣ ਲਈ ਰੰਗ ਹੈ।" +msgstr "ਘੁਸਰ-ਮੁਸਰ ਕਾਰਵਾਈ ਸੁਨੇਹੇ ਲਈ ਨਾਂ ਲਿਖਣ ਲਈ ਰੰਗ ਹੈ।" msgid "Whisper Message Name Color" msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" -#, fuzzy msgid "Color to draw the name of a whispered message." -msgstr "ਇੱਕ ਕਾਰਵਾਈ ਸੁਨੇਹੇ ਲਈ ਨਾਂ ਲਿਖਣ ਲਈ ਰੰਗ ਹੈ।" +msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹੇ ਲਈ ਨਾਂ ਲਿਖਣ ਲਈ ਰੰਗ ਹੈ।" msgid "Typing notification color" msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਰੰਗ" -#, fuzzy msgid "The color to use for the typing notification" -msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਲਈ ਫੋਂਟ ਵਾਸਤੇ ਵਰਤਣ ਲਈ ਰੰਗ" +msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਲਿਖਣ ਲਈ ਫੋਂਟ ਵਾਸਤੇ ਵਰਤਣ ਲਈ ਰੰਗ" msgid "Typing notification font" msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਫੋਂਟ" @@ -11927,7 +11868,8 @@ msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%s %s। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ `%s -h' ਵੇਖੋ।\n" -#, fuzzy, c-format +# , c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -11949,6 +11891,7 @@ "\n" " -c, --config=DIR use DIR for config files\n" " -d, --debug print debugging messages to stdout\n" +" -f, --force-online force online, regardless of network status\n" " -h, --help display this help and exit\n" " -m, --multiple do not ensure single instance\n" " -n, --nologin don't automatically login\n" @@ -11958,7 +11901,8 @@ " --display=DISPLAY X display to use\n" " -v, --version display the current version and exit\n" -#, fuzzy, c-format +# , c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -11975,10 +11919,11 @@ " -v, --version display the current version and exit\n" msgstr "" "%s %s\n" -"ਵਰਤੋਂ: %s [OPTION]...\n" +"Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" " -d, --debug print debugging messages to stdout\n" +" -f, --force-online force online, regardless of network status\n" " -h, --help display this help and exit\n" " -m, --multiple do not ensure single instance\n" " -n, --nologin don't automatically login\n" @@ -12025,22 +11970,21 @@ msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਕਿਉਂਕਿ ਇੱਕ ਹੋਰ libpurple ਕਲਾਇਟ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ।\n" msgid "/_Media" -msgstr "" +msgstr "/ਮੀਡਿਆ(_M)" msgid "/Media/_Hangup" -msgstr "" - -#, fuzzy +msgstr "/ਮੀਡਿਆ/ਹੈਂਗਅੱਪ(_H)" + msgid "Calling..." -msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..." +msgstr "ਕਾਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..." #, c-format msgid "%s wishes to start an audio/video session with you." -msgstr "" +msgstr "%s ਤੁਹਾਡੇ ਨਾਲ ਆਡੀਓ/ਵੀਡਿਓ ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ ਹੈ।" #, c-format msgid "%s wishes to start a video session with you." -msgstr "" +msgstr "%s ਤੁਹਾਡੇ ਨਾਲ ਵੀਡਿਓ ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ ਹੈ।" #, c-format msgid "%s has %d new message." @@ -12069,9 +12013,8 @@ "The 'Manual' browser command has been chosen, but no command has been set." msgstr "'ਦਸਤੀ' ਝਲਕਾਰਾ ਕਮਾਂਡ ਚੁਣੀ ਗਈ ਹੈ, ਪਰ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਹੈ।" -#, fuzzy msgid "No message" -msgstr "ਅਣਜਾਣ ਸੁਨੇਹਾ" +msgstr "ਸੁਨੇਹਾ ਨਹੀਂ" msgid "Open All Messages" msgstr "ਸਭ ਸੁਨੇਹੇ ਖੋਲ੍ਹੋ" @@ -12079,16 +12022,14 @@ msgid "You have mail!" msgstr "ਤੁਹਾਨੂੰ ਚਿੱਠੀ ਆਈ ਹੈ!" -#, fuzzy msgid "New Pounces" -msgstr "ਨਵਾਂ ਪਉਨਸ ਬੱਡੀ" +msgstr "ਨਵਾਂ ਪਉਨਸ" msgid "Dismiss" -msgstr "" - -#, fuzzy +msgstr "ਅਣਡਿੱਠਾ" + msgid "You have pounced!" -msgstr "ਤੁਹਾਨੂੰ ਚਿੱਠੀ ਆਈ ਹੈ!" +msgstr "ਤੁਹਾਨੂੰ ਪਉਨਸ ਕੀਤਾ ਗਿਆ!" msgid "The following plugins will be unloaded." msgstr "ਹੇਠ ਦਿੱਤੀਆਂ ਪਲੱਗਇਨਾਂ ਨੂੰ ਅਣ-ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ।" @@ -12137,7 +12078,6 @@ msgid "Select a file" msgstr "ਇੱਕ ਫਾਇਲ ਚੁਣੋ" -#, fuzzy msgid "Modify Buddy Pounce" msgstr "ਬੱਡੀ ਪਉਨਸ ਸੋਧ" @@ -12214,61 +12154,69 @@ msgid "Pounce Target" msgstr "ਪਉਨਸ ਟਾਰਗੇਟ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Started typing" -msgstr "ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੇ" - -#, fuzzy, c-format +msgstr "ਲਿਖਣਾ ਸ਼ੁਰੂ ਕੀਤਾ" + +# , c-format +#, c-format msgid "Paused while typing" msgstr "ਲਿਖਣ ਦੌਰਾਨ ਵਿਰਾਮ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Signed on" -msgstr "ਸਾਇਨ ਆਨ" - -#, fuzzy, c-format +msgstr "ਸਾਇਨ ਆਨ ਕੀਤਾ" + +# , c-format +#, c-format msgid "Returned from being idle" -msgstr "%s ਵੇਹਲਾ (%s) ਤੋਂ ਵਾਪਸ ਆਇਆ ਹੈ" - -#, fuzzy, c-format +msgstr "ਵੇਹਲੇ ਤੋਂ ਵਾਪਸ ਆਇਆ/ਆਈ" + +# , c-format +#, c-format msgid "Returned from being away" -msgstr "ਦੂਰੋਂ ਵਾਪਸ ਆਏ" - -#, fuzzy, c-format +msgstr "ਦੂਰੋਂ ਵਾਪਸ" + +# , c-format +#, c-format msgid "Stopped typing" -msgstr "ਲਿਖਣ ਤੋਂ ਰੁਕਿਆ/ਰੁਕੀ" - -#, fuzzy, c-format +msgstr "ਲਿਖਦਾ/ਲਿਖਦੀ ਰੁਕੀ" + +# , c-format +#, c-format msgid "Signed off" msgstr "ਸਾਇਨ ਆਫ਼" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Became idle" -msgstr "ਵੇਹਲੇ ਬਣੇ" - -#, fuzzy, c-format +msgstr "ਵੇਹਲੇ ਬਣੋ" + +# , c-format +#, c-format msgid "Went away" -msgstr "ਜਦੋਂ ਦੂਰ" - -#, fuzzy, c-format +msgstr "ਦੂਰ ਗਿਆ/ਗਈ" + +# , c-format +#, c-format msgid "Sent a message" -msgstr "ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ" - -#, fuzzy, c-format +msgstr "ਸੁਨੇਹਾ ਭੇਜੋ" + +# , c-format +#, c-format msgid "Unknown.... Please report this!" -msgstr "ਅਣਜਾਣ ਪਉਨਸ ਘਟਨਾ ਹੈ। ਸੂਚਨਾ ਦਿਓ ਜੀ!" - -#, fuzzy +msgstr "ਅਣਜਾਣ... ਇਸ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰੋ ਜੀ!" + msgid "Theme failed to unpack." -msgstr "ਸਮਾਇਲੀ ਥੀਮ ਅਣ-ਪੈਕ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।" - -#, fuzzy +msgstr "ਥੀਮ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।" + msgid "Theme failed to load." -msgstr "ਸਮਾਇਲੀ ਥੀਮ ਅਣ-ਪੈਕ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।" - -#, fuzzy +msgstr "ਥੀਮ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।" + msgid "Theme failed to copy." -msgstr "ਸਮਾਇਲੀ ਥੀਮ ਅਣ-ਪੈਕ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।" +msgstr "ਥੀਮ ਕਾਪੀ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" msgid "Install Theme" msgstr "ਥੀਮ ਇੰਸਟਾਲ ਕਰੋ" @@ -12290,9 +12238,8 @@ msgstr "ਈਸਕੇਸ (Esc) ਸਵਿੱਚ ਨਾਲ ਗੱਲਾਬਾਤਾਂ ਬੰਦ ਕਰੋ(_o)" #. Buddy List Themes -#, fuzzy msgid "Buddy List Theme" -msgstr "ਬੱਡੀ ਲਿਸਟ" +msgstr "ਬੱਡੀ ਲਿਸਟ ਥੀਮ" #. System Tray msgid "System Tray Icon" @@ -12304,9 +12251,8 @@ msgid "On unread messages" msgstr "ਨਾ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ ਉੱਤੇ" -#, fuzzy msgid "Conversation Window" -msgstr "IM ਗੱਲਬਾਤ ਵਿੰਡੋ" +msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ" msgid "_Hide new IM conversations:" msgstr "ਨਵੀਆਂ IM ਗੱਲਬਾਤਾਂ ਓਹਲੇ(_H):" @@ -12409,9 +12355,10 @@ msgid "Example: stunserver.org" msgstr "ਜਿਵੇਂ: stunserver.org" -#, fuzzy, c-format +# , c-format +#, c-format msgid "Use _automatically detected IP address: %s" -msgstr "ਆਟੋ-ਖੋਜਿਆ IP ਐਡਰੈੱਸ(_A)" +msgstr "ਆਟੋ-ਖੋਜਿਆ IP ਐਡਰੈੱਸ ਵਰਤੋਂ(_A): %s" msgid "Public _IP:" msgstr "ਪਬਲਿਕ _IP:" @@ -12433,7 +12380,7 @@ #. TURN server msgid "Relay Server (TURN)" -msgstr "" +msgstr "ਰੀਲੇਅ ਸਰਵਰ (TURN)" msgid "Proxy Server & Browser" msgstr "ਪਰਾਕਸੀ ਸਰਵਰ & ਬਰਾਊਜ਼ਰ" @@ -12778,10 +12725,11 @@ msgid "Status for %s" msgstr "%s ਲਈ ਹਾਲਤ" -#, fuzzy, c-format +# , c-format +#, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." -msgstr "ਚੁਣੇ ਸ਼ਾਰਟਕੱਟ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਕਸਟਮ ਸਮਾਈਲੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰੇ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।" +msgstr "'%s' ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਕਸਟਮ ਸਮਾਈਲੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰੇ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।" msgid "Custom Smiley" msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ" @@ -12795,28 +12743,24 @@ msgid "Add Smiley" msgstr "ਸਮਾਈਲੀ ਸ਼ਾਮਲ" -#, fuzzy msgid "_Image:" -msgstr "ਚਿੱਤਰ(_I)" +msgstr "ਚਿੱਤਰ(_I):" #. Shortcut text -#, fuzzy msgid "S_hortcut text:" -msgstr "ਸ਼ਾਰਟਕੱਟ" +msgstr "ਸ਼ਾਰਟਕੱਟ ਟੈਕਸਟ(_h):" msgid "Smiley" msgstr "ਸਮਾਈਲੀ" -#, fuzzy msgid "Shortcut Text" -msgstr "ਸ਼ਾਰਟਕੱਟ" +msgstr "ਸ਼ਾਰਟਕੱਟ ਟੈਕਸਟ" msgid "Custom Smiley Manager" msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ ਮੈਨੇਜਰ" -#, fuzzy msgid "Select Buddy Icon" -msgstr "ਬੱਡੀ ਚੁਣੋ" +msgstr "ਬੱਡੀ ਆਈਕਾਨ ਚੁਣੋ" msgid "Click to change your buddyicon for this account." msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਆਪਣਾ ਬੱਡੀ-ਆਈਕਾਨ ਬਦਲਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।" @@ -12899,7 +12843,6 @@ msgid "Cannot send launcher" msgstr "ਲਾਂਚਰ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" -#, fuzzy msgid "" "You dragged a desktop launcher. Most likely you wanted to send the target of " "this launcher instead of this launcher itself." @@ -12937,9 +12880,8 @@ msgstr "" "ਚਿੱਤਰ '%s' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ" -#, fuzzy msgid "_Open Link" -msgstr "ਸਬੰਧ ਖੋਲੋ(_O):" +msgstr "ਲਿੰਕ ਖੋਲ੍ਹੋ(_O)" msgid "_Copy Link Location" msgstr "ਸੰਬੰਧ ਸਥਿਤੀ ਦੀ ਨਕਲ(_C)" @@ -12947,9 +12889,21 @@ msgid "_Copy Email Address" msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਨਕਲ(_C)" +msgid "_Open File" +msgstr "ਫਾਇਲ ਖੋਲ੍ਹੋ(_O)" + +msgid "Open _Containing Directory" +msgstr "ਲਾਗ ਰੱਖਣ ਵਾਲੀ ਡਾਇਰੈਕਟਰੀ ਖੋਲ੍ਹੋ(_C)" + msgid "Save File" msgstr "ਫਾਇਲ ਸੰਭਾਲੋ" +msgid "_Play Sound" +msgstr "ਸਾਊਂਡ ਚਲਾਓ(_P)" + +msgid "_Save File" +msgstr "ਫਾਇਲ ਸੰਭਾਲੋ(_S)" + msgid "Select color" msgstr "ਰੰਗ ਚੁਣੋ" @@ -13037,77 +12991,63 @@ msgid "Displays statistical information about your buddies' availability" msgstr "ਆਪਣੀ ਬੱਡੀ ਦੀ ਉਪਲੱਬਧਤਾ ਲਈ ਅੰਕੜੇ ਵੇਖੋ।" -#, fuzzy msgid "Server name request" -msgstr "ਸਰਵਰ ਐਡਰੈੱਸ" - -#, fuzzy +msgstr "ਸਰਵਰ ਨਾਂ ਮੰਗ" + msgid "Enter an XMPP Server" -msgstr "ਇੱਕ ਕਾਨਫਰੰਸ ਸਰਵਰ 'ਚ ਦਾਖਲ ਹੋਵੇ" - -#, fuzzy +msgstr "XMPP ਸਰਵਰ ਦਿਓ" + msgid "Select an XMPP server to query" -msgstr "ਕਿਊਰੀ ਲਈ ਇੱਕ ਕਾਨਫਰੰਸ ਸਰਵਰ ਚੁਣੋ" - -#, fuzzy +msgstr "ਕਿਊਰੀ ਲਈ XMPP ਸਰਵਰ ਚੁਣੋ" + msgid "Find Services" -msgstr "ਆਨਲਾਈਨ ਸਰਵਿਸਾਂ" - -#, fuzzy +msgstr "ਸਰਵਿਸਾਂ ਲੱਭੋ" + msgid "Add to Buddy List" -msgstr "ਬੱਡੀ ਲਿਸਟ ਭੇਜੋ" - -#, fuzzy +msgstr "ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ" + msgid "Gateway" -msgstr "ਦੂਰ ਗਏ" - -#, fuzzy +msgstr "ਗੇਟਵੇ" + msgid "Directory" -msgstr "ਲਾਗ ਡਾਇਰੈਕਟਰੀ" - -#, fuzzy +msgstr "ਡਾਇਰੈਕਟਰੀ" + msgid "PubSub Collection" -msgstr "ਆਵਾਜ਼ ਚੋਣ" - -#, fuzzy +msgstr "PubSub ਭੰਡਾਰ" + msgid "PubSub Leaf" -msgstr "PubSub ਸਰਵਿਸ" - -#, fuzzy +msgstr "PubSub ਭਾਗ" + msgid "" "\n" "Description: " -msgstr "ਵੇਰਵਾ" +msgstr "" +"\n" +"ਵੇਰਵਾ: " #. Create the window. -#, fuzzy msgid "Service Discovery" -msgstr "ਸਰਵਿਸ ਡਾਇਰੈਕਟਰੀ ਜਾਣਕਾਰੀ" - -#, fuzzy +msgstr "ਸਰਵਿਸ ਖੋਜ" + msgid "_Browse" -msgstr "ਝਲਕਾਰਾ(_B):" - -#, fuzzy +msgstr "ਬਰਾਊਜ਼ਰ(_B)" + msgid "Server does not exist" -msgstr "ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" - -#, fuzzy +msgstr "ਸਰਵਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + msgid "Server does not support service discovery" -msgstr "ਸਰਵਰ ਪਾਬੰਦੀ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" - -#, fuzzy +msgstr "ਸਰਵਰ ਸਰਵਿਸ ਖੋਜ ਲਈ ਸਹਾਇਕ ਨਹੀਂ" + msgid "XMPP Service Discovery" -msgstr "ਸਰਵਿਸ ਡਾਇਰੈਕਟਰੀ ਜਾਣਕਾਰੀ" +msgstr "XMPP ਸਰਵਿਸ ਖੋਜ" msgid "Allows browsing and registering services." -msgstr "" - -#, fuzzy +msgstr "ਬਰਾਊਜ਼ਿੰਗ ਅਤੇ ਰਜਿਟਰ ਕਰਨ ਲਈ ਸਰਵਿਸਾਂ ਲਈ ਮਨਜ਼ੂਰ।" + msgid "" "This plugin is useful for registering with legacy transports or other XMPP " "services." -msgstr "ਇਹ ਪਲੱਗਇਨ XMPP ਸਰਵਰ ਜਾਂ ਕਲਾਇਟ ਡੀਬੱਗ ਲਈ ਫਾਇਦੇਮੰਦ ਹੈ।" +msgstr "ਇਹ ਪਲੱਗਇਨ ਪੁਰਾਤਨ ਟਰਾਂਸਪੋਰਟ ਜਾਂ XMPP ਸਰਵਿਸ ਰਜਿਸਟਰ ਕਰਨ ਲਈ ਫਾਇਦੇਮੰਦ ਹੈ।" msgid "Buddy is idle" msgstr "ਬੱਡੀ ਵੇਹਲਾ ਹੈ" @@ -13484,7 +13424,6 @@ msgstr "ਸਾਂਝੀ ਕੰਪੋਜ਼ੀਸ਼ਨ ਵਾਸਤੇ ਸੰਗੀਤ ਸੁਨੇਹਾ ਪਲੱਗਇਨ ਹੈ।" #. * 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." @@ -13608,9 +13547,8 @@ msgid "Highlighted Message Name Color" msgstr "ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" -#, fuzzy msgid "Typing Notification Color" -msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਰੰਗ" +msgstr "ਲਿਖਣ ਨੋਟੀਫਿਕੇਸ਼ਨ ਰੰਗ" msgid "GtkTreeView Horizontal Separation" msgstr "GtkTreeView ਹਰੀਜ਼ਟਲ ਵੱਖਰੇਵਾ" @@ -13641,23 +13579,20 @@ msgid "GTK+ Text Shortcut Theme" msgstr "GTK+ ਪਾਠ ਸ਼ਾਰਟਕੱਟ ਥੀਮ" -#, fuzzy msgid "Disable Typing Notification Text" -msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਚਾਲੂ" - -#, fuzzy +msgstr "ਲਿਖਣ ਨੋਟੀਫਿਕੇਸ਼ਨ ਟੈਕਸਟ ਆਯੋਗ" + msgid "GTK+ Theme Control Settings" -msgstr "ਪਿਡਗਿਨ GTK+ ਸਰੂਪ ਕੰਟਰੋਲ" - -#, fuzzy +msgstr "GTK+ ਥੀਮ ਕੰਟਰੋਲ ਸੈਟਿੰਗ" + msgid "Colors" -msgstr "ਬੰਦ ਕਰੋ" +msgstr "ਰੰਗ" msgid "Fonts" msgstr "ਫੋਂਟ" msgid "Miscellaneous" -msgstr "" +msgstr "ਫੁਟਕਲ" msgid "Gtkrc File Tools" msgstr "Gtkrc ਫਾਇਲ ਟੂਲ" @@ -13739,7 +13674,6 @@ msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਭੇਜੋ ਬਟਨ ਹੈ।" #. *< summary -#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for use when no physical keyboard is present." @@ -13795,94 +13729,78 @@ msgid "Replaces text in outgoing messages according to user-defined rules." msgstr "ਯੂਜ਼ਰ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ ਨਿਯਮਾਂ ਮੁਤਾਬਕ ਭੇਜੇ ਜਾਣ ਵਾਲੇ ਸੁਨੇਹੇ ਤਬਦੀਲ ਕਰੋ।" -#, fuzzy msgid "Just logged in" -msgstr "ਲਾਗਇਨ ਨਹੀਂ ਹੈ" - -#, fuzzy +msgstr "ਹਾਲ ਲਾਗਇਨ ਹੀ ਕੀਤਾ ਹੈ" + msgid "Just logged out" -msgstr "ਲਾਗਇਨ ਨਹੀਂ ਹੈ" +msgstr "ਹੁਣੇ ਲਾਗ ਆਉਟ ਕੀਤਾ" msgid "" "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"ਸੰਪਰਕ ਲਈ ਆਈਕਾਨ/\n" +"ਅਣਜਾਣ ਵਿਅਕਤੀ ਲਈ ਆਈਕਾਨ" + msgid "Icon for Chat" -msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਸ਼ਾਮਿਲ" - -#, fuzzy +msgstr "ਗੱਲਬਾਤ ਲਈ ਆਈਕਾਨ" + msgid "Ignored" msgstr "ਅਣਡਿੱਠਾ" -#, fuzzy msgid "Founder" -msgstr "ਹੋਰ ਉੱਚੀ" - -#, fuzzy +msgstr "ਖੋਜੀ" + msgid "Operator" -msgstr "Opera" +msgstr "ਓਪਰੇਟਰ" msgid "Half Operator" -msgstr "" - -#, fuzzy +msgstr "ਅੱਧਾ ਓਪਰੇਟਰ" + msgid "Authorization dialog" -msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਦਿੱਤੀ" - -#, fuzzy +msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ" + msgid "Error dialog" -msgstr "ਗਲਤੀ " - -#, fuzzy +msgstr "ਗਲਤੀ ਡਾਈਲਾਗ" + msgid "Information dialog" -msgstr "ਜਾਣਕਾਰੀ" +msgstr "ਜਾਣਕਾਰੀ ਡਾਈਲਾਗ" msgid "Mail dialog" -msgstr "" - -#, fuzzy +msgstr "ਮੇਲ ਡਾਈਲਾਗ" + msgid "Question dialog" -msgstr "ਮੰਗ ਡਾਈਲਾਗ" - -#, fuzzy +msgstr "ਸਵਾਲ ਡਾਈਲਾਗ" + msgid "Warning dialog" -msgstr "ਚੇਤਾਵਨੀ ਪੱਧਰ" +msgstr "ਚੇਤਾਵਨੀ ਡਾਈਲਾਗ" msgid "What kind of dialog is this?" -msgstr "" - -#, fuzzy +msgstr "ਇਹ ਡਾਈਲਾਗ ਕਿਸ ਕਿਸਮ ਦਾ ਹੈ?" + msgid "Status Icons" -msgstr "%s ਲਈ ਹਾਲਤ" - -#, fuzzy +msgstr "ਹਾਲਤ ਆਈਕਾਨ" + msgid "Chatroom Emblems" -msgstr "ਚੈਟ ਰੂਮ ਭਾਸ਼ਾ" - -#, fuzzy +msgstr "ਗੱਲਬਾਤ-ਰੂਮ ਨਿਸ਼ਾਨ" + msgid "Dialog Icons" -msgstr "ਆਈਕਾਨ ਬਦਲੋ" - -#, fuzzy +msgstr "ਡਾਈਲਾਗ ਆਈਕਾਨ" + msgid "Pidgin Icon Theme Editor" -msgstr "ਪਿਡਗਿਨ GTK+ ਸਰੂਪ ਕੰਟਰੋਲ" - -#, fuzzy +msgstr "ਪਿਡਗਿਨ ਆਈਕਾਨ ਥੀਮ ਐਡੀਟਰ" + msgid "Contact" -msgstr "ਸੰਪਰਕ ਜਾਣਕਾਰੀ" - -#, fuzzy +msgstr "ਸੰਪਰਕ" + msgid "Pidgin Buddylist Theme Editor" -msgstr "ਬੱਡੀ ਲਿਸਟ" - -#, fuzzy +msgstr "ਪਿਡਗਿਨ ਬੱਡੀਲਿਸਟ ਥੀਮ ਐਡੀਟਰ" + msgid "Edit Buddylist Theme" -msgstr "ਬੱਡੀ ਲਿਸਟ" +msgstr "ਬੱਡੀ-ਲਿਸਟ ਥੀਮ ਸੋਧ" msgid "Edit Icon Theme" -msgstr "" +msgstr "ਆਈਕਾਨ ਥੀਮ ਸੋਧ" #. *< type #. *< ui_requirement @@ -13891,16 +13809,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "ਪਿਡਗਿਨ GTK+ ਸਰੂਪ ਕੰਟਰੋਲ" +msgstr "ਪਲੱਗਇਨ ਥੀਮ ਐਡੀਟਰ" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "ਪਿਡਗਿਨ GTK+ ਸਰੂਪ ਕੰਟਰੋਲ" +msgstr "ਪਿਡਗਿਨ ਥੀਮ ਐਡੀਟਰ।" #. *< type #. *< ui_requirement @@ -14066,10 +13982,9 @@ msgid "Options specific to Pidgin for Windows." msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਖਾਸ ਚੋਣਾਂ" -#, fuzzy msgid "" "Provides options specific to Pidgin for Windows, such as buddy list docking." -msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਲਈ ਖਾਸ ਚੋਣ ਹੈ, ਜਿਵੇਂ ਕਿ ਬੱਡੀ ਲਿਸਟ ਡੌਕਿੰਗ।" +msgstr "ਵਿੰਡੋਜ਼ ਲਈ ਪਿਡਗਿਨ ਲਈ ਖਾਸ ਚੋਣ ਦਿੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਬੱਡੀ ਲਿਸਟ ਡੌਕਿੰਗ।" msgid "Logged out." msgstr "ਲਾਗਆਉਟ।" @@ -14108,6 +14023,13 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "ਇਹ ਪਲੱਗਇਨ XMPP ਸਰਵਰ ਜਾਂ ਕਲਾਇਟ ਡੀਬੱਗ ਲਈ ਫਾਇਦੇਮੰਦ ਹੈ।" +#~ msgid "Malformed BOSH Connect Server" +#~ msgstr "ਨਿਕਾਰਾ ਹੋਇਆ BOSH ਕੁਨੈਕਟ ਸਰਵਰ" + +#, fuzzy +#~ msgid "_Proxy" +#~ msgstr "ਪਰਾਕਸੀ" + #~ msgid "Cannot open socket" #~ msgstr "ਸਾਕਟ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ" diff -r b4daae0798e3 -r e1cd44c7c7af po/pt_BR.po --- a/po/pt_BR.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/pt_BR.po Sat Jul 25 04:54:36 2009 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" +"POT-Creation-Date: 2009-07-20 11:50-0700\n" "PO-Revision-Date: 2009-02-24 22:11-0300\n" "Last-Translator: Rodrigo Luiz Marques Flores \n" "Language-Team: Rodrigo Luiz Marques Flores \n" @@ -52,9 +52,9 @@ "investigate and complete the migration by hand. Please report this error at " "http://developer.pidgin.im" msgstr "" -"%s encontrou erros ao migrar suas configurações de %s para %s. Favor " -"investigar e completar a migração manualmente. Pedimos também que você " -"relate este erro em http://developer.pidgin.im" +"%s encontrou erros ao migrar suas configurações de %s para %s. Por favor, " +"investigue e complete a migração manualmente. Pedimos também que você relate " +"este erro em http://developer.pidgin.im" msgid "Error" msgstr "Erro" @@ -114,11 +114,11 @@ msgstr "Você tem certeza de que deseja remover %s?" msgid "Delete Account" -msgstr "Remover conta" +msgstr "Excluir conta" #. Delete button msgid "Delete" -msgstr "Remover" +msgstr "Excluir" msgid "Accounts" msgstr "Contas" @@ -196,7 +196,7 @@ msgstr "Nome do usuário" msgid "Alias (optional)" -msgstr "Apelidar contato (opcional)" +msgstr "Apelidar (opcional)" msgid "Add in group" msgstr "Adicionar no grupo" @@ -208,7 +208,7 @@ msgstr "Adicionar amigo" msgid "Please enter buddy information." -msgstr "Favor digitar as informações do amigo." +msgstr "Por favor digite as informações do amigo." msgid "Chats" msgstr "Bate-papos" @@ -247,10 +247,10 @@ msgstr "Digite o nome do grupo" msgid "Edit Chat" -msgstr "Modificar bate-papo" +msgstr "Editar bate-papo" msgid "Please Update the necessary fields." -msgstr "Favor atualizar os campos necessários." +msgstr "Por favor atualize os campos necessários." msgid "Edit" msgstr "Editar" @@ -486,7 +486,7 @@ #, c-format msgid "Certificate for %s" -msgstr "Certificado de %s" +msgstr "Certificado para %s" #, c-format msgid "" @@ -505,7 +505,7 @@ #, c-format msgid "Really delete certificate for %s?" -msgstr "Tem certeza de que deseja deletar o certificado de %s?" +msgstr "Tem certeza de que deseja excluir o certificado de %s?" msgid "Confirm certificate delete" msgstr "Confirmação de remoção de certificado" @@ -868,12 +868,11 @@ msgid "System Log" msgstr "Histórico do sistema" -#, fuzzy msgid "Calling ... " -msgstr "Calculando..." +msgstr "Ligando ... " msgid "Hangup" -msgstr "" +msgstr "Colocar no gancho" #. Number of actions msgid "Accept" @@ -883,28 +882,28 @@ msgstr "Rejeitar" msgid "Call in progress." -msgstr "" +msgstr "Ligação em progresso." msgid "The call has been terminated." -msgstr "" +msgstr "A ligação foi finalizada." #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s quer iniciar uma sessão de aúdio com você." #, c-format msgid "%s is trying to start an unsupported media session type with you." msgstr "" - -#, fuzzy +"%s está tentando iniciar um tipo de sessão de mídia sem suporte com você." + msgid "You have rejected the call." -msgstr "Você saiu do canal%s%s" +msgstr "Você rejeitou a ligação." msgid "call: Make an audio call." -msgstr "" +msgstr "ligação: Fazer uma ligação de aúdio." msgid "Emails" -msgstr "Emails" +msgstr "E-mails" msgid "You have mail!" msgstr "Você tem email!" @@ -1070,7 +1069,7 @@ msgstr "Abrir uma janela de MI" msgid "Pop up a notification" -msgstr "Exibir notificação popup" +msgstr "Exibir pop-up de notificação" msgid "Send a message" msgstr "Enviar uma mensagem" @@ -1082,7 +1081,7 @@ msgstr "Tocar um som" msgid "Pounce only when my status is not Available" -msgstr "Executar apenas quando meu status não for Disponível" +msgstr "Receber ação apenas quando meu status não for Disponível" msgid "Recurring" msgstr "Recorrente" @@ -1144,7 +1143,7 @@ msgstr "%s te enviou uma mensagem. (%s)" msgid "Unknown pounce event. Please report this!" -msgstr "Evento de ação desconhecido. Por favor reporte isso!" +msgstr "Evento de ação desconhecido. Por favor nos avise disso!" msgid "Based on keyboard use" msgstr "A partir do uso do teclado" @@ -1286,7 +1285,7 @@ msgstr "Método para reproduzir o som" msgid "Method: " -msgstr "Método:" +msgstr "Método: " #, c-format msgid "" @@ -1339,7 +1338,7 @@ msgstr "Você tem certeza de que deseja remover \"%s\"" msgid "Delete Status" -msgstr "Remover status" +msgstr "Excluir status" msgid "Saved Statuses" msgstr "Status salvos" @@ -1359,7 +1358,7 @@ #. not independent #. Attributes - each status can have a message. msgid "Message" -msgstr "Mensagem:" +msgstr "Mensagem" #. Use msgid "Use" @@ -1372,7 +1371,7 @@ msgstr "Favor digitar um título não-vazio para o status." msgid "Duplicate title" -msgstr "Título duplicado duplicada" +msgstr "Título duplicado" msgid "Please enter a different title for the status." msgstr "Favor digitar um título diferente para o status." @@ -1499,7 +1498,7 @@ "mensagens recentes para os mesmos tipos de conversa." msgid "GntHistory" -msgstr "GntMensagens recentes" +msgstr "GntHistórico" msgid "Shows recently logged conversations in new conversations." msgstr "Mostra conversas gravadas recentemente em novas conversas." @@ -1536,13 +1535,13 @@ msgstr "Subgrupo aninhado" msgid "Nested Grouping (experimental)" -msgstr "Aninhas Grupos (experimental)" +msgstr "Aninhar Grupos (experimental)" msgid "Provides alternate buddylist grouping options." msgstr "Fornece opções alternativas de agrupamento da lista de amigos." msgid "Lastlog" -msgstr "Última menção" +msgstr "Último registro" #. Translator Note: The "backlog" is the conversation buffer/history. msgid "lastlog: Searches for a substring in the backlog." @@ -1552,29 +1551,32 @@ msgstr "GntLastLog" msgid "Lastlog plugin." -msgstr "Plug-in de busca de mensagens" +msgstr "Plug-in Lastlog" #, c-format msgid "" "\n" "Fetching TinyURL..." msgstr "" +"\n" +"Obtendo TinyURL..." msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "Somente criar TinyURL para endereços deste tamanho ou maiores" msgid "TinyURL (or other) address prefix" -msgstr "" - -#, fuzzy +msgstr "TinyURL (ou outro) prefixo de endereço" + msgid "TinyURL" -msgstr "URL da música" +msgstr "TinyURL" msgid "TinyURL plugin" -msgstr "" +msgstr "Plug-in do TinyURL" msgid "When receiving a message with URL(s), TinyURL for easier copying" msgstr "" +"Quando receber uma mensagem com endereço(s), usar o TinyURL para copiá-los " +"mais fácil" msgid "accounts" msgstr "contas" @@ -1619,7 +1621,7 @@ msgstr "Mudar senha para %s" msgid "Please enter your current password and your new password." -msgstr "Favor digitar sua senha atual e sua nova senha." +msgstr "Por favor, digite sua senha atual e sua nova senha." #, c-format msgid "Change user information for %s" @@ -1643,7 +1645,7 @@ #. Make messages #, c-format msgid "%s has presented the following certificate for just-this-once use:" -msgstr "%s enviou este certificado de uso único:" +msgstr "%s apresentou o seguinte certificado para o uso apenas-esta-vez:" #, c-format msgid "" @@ -1709,7 +1711,7 @@ "You have no database of root certificates, so this certificate cannot be " "validated." msgstr "" -"você não tem um banco de dados de certificados raiz, logo este certificado " +"Você não tem um banco de dados de certificados raiz, logo este certificado " "não pode ser validado." #. vrq will be completed by user_auth @@ -1779,7 +1781,6 @@ msgstr "+++ %s desconectou" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "Erro desconhecido" @@ -1826,9 +1827,8 @@ msgid "%s left the room (%s)." msgstr "%s saiu da sala (%s)." -#, fuzzy msgid "Invite to chat" -msgstr "Convidar para uma conferência" +msgstr "Convidar para um bate-papo" #. Put our happy label in it. msgid "" @@ -1906,7 +1906,7 @@ "Error writing %s: \n" "%s.\n" msgstr "" -"Erro ao gravar em %s: \n" +"Erro escrevendo em %s: \n" "%s.\n" #, c-format @@ -1969,8 +1969,12 @@ msgstr "Iniciar transferência de %s a partir de %s" #, c-format +msgid "Transfer of file %s complete" +msgstr "Transferência do arquivo %s completa" + +#, c-format msgid "Transfer of file %s complete" -msgstr "Transferência de %s completa" +msgstr "Transferência do arquivo %s completa" msgid "File transfer complete" msgstr "Transferência de arquivo completa" @@ -2185,9 +2189,8 @@ msgid "(%s) %s : %s\n" msgstr "(%s) %s : %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "Erro ao criar a conexão" +msgstr "Erro ao criar a conferência" #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2215,7 +2218,7 @@ "The required plugin %s was not found. Please install this plugin and try " "again." msgstr "" -"O plug-in requerido %s não foi encontrado. Por favor instale esse plug-in e " +"O plug-in necessário %s não foi encontrado. Por favor instale esse plug-in e " "tente novamente." msgid "Unable to load the plugin" @@ -2223,7 +2226,7 @@ #, c-format msgid "The required plugin %s was unable to load." -msgstr "O plug-in requerido %s não pôde ser carregado." +msgstr "O plug-in necessário %s não pôde ser carregado." msgid "Unable to load your plugin." msgstr "Não foi possível carregar seu plug-in." @@ -2279,7 +2282,7 @@ "Path to save the files in\n" "(Please provide the full path)" msgstr "" -"Caminho para salvar os arquivos\n" +"Caminho para salvar os arquivos em\n" "(Favor digitar o caminho completo)" msgid "Automatically reject from users not in buddy list" @@ -2377,7 +2380,7 @@ msgstr "Permite controlar ações inserindo comandos em um arquivo." msgid "Minutes" -msgstr "minutos" +msgstr "Minutos" #. This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin. #. If that doesn't translate well into your language, drop the 's before translating. @@ -2599,7 +2602,6 @@ "históricos." #. * 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" @@ -2657,7 +2659,6 @@ msgid "Save messages sent to an offline user as pounce." msgstr "Salva mensagens enviadas para um usuário desconectado numa ação." -#, fuzzy msgid "" "The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." @@ -2693,9 +2694,8 @@ msgid "Do not ask. Always save in pounce." msgstr "Não perguntar. Sempre salvar como ações." -#, fuzzy msgid "One Time Password" -msgstr "Digite a senha" +msgstr "Senha uma vez" #. *< type #. *< ui_requirement @@ -2704,13 +2704,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "Suporte de senha uma vez" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "Forçar que senhas são usadas somente uma vez." #. * description msgid "" @@ -2718,6 +2718,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Permite que você force, para uma conta, que as senhas não sejam salvas só " +"sejam utilizadas em uma conexão feita com sucesso.\n" +"Nota: A senha da conta não deve estar salva para isto funcionar." #. *< type #. *< ui_requirement @@ -2912,17 +2915,15 @@ "Não foi possível detectar uma instalação do ActiveTCL. Se você deseja usar " "plug-ins TCL, instale o ActiveTCL de http://www.activestate.com\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"O Kit de Ferramentas do Apple Bonjour para Windows não foi encontrado, veja " -"o FAQ no: http://d.pidgin.im/BonjourWindows para mais informações." - -#, fuzzy +"O toolkit \"Bonjour for Windows\" não foi encontrado, vá em http://d.pidgin." +"im/BonjourWindows para mais informações." + msgid "Unable to listen for incoming IM connections" -msgstr "Não foi possível escutar por conexões de mensagens instantâneas\n" +msgstr "Não foi possível escutar por conexões de mensagens instantâneas" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2931,7 +2932,7 @@ "rodando?" msgid "First name" -msgstr "Nome" +msgstr "Primeiro nome" msgid "Last name" msgstr "Sobrenome" @@ -2975,21 +2976,17 @@ msgid "Unable to send the message, the conversation couldn't be started." msgstr "Não foi possível enviar mensagem: a conversa não pôde ser iniciada." -#, fuzzy, c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"Não foi possível criar socket\n" -"%s" - -#, fuzzy, c-format +msgstr "Não foi possível criar socket: %s" + +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "Não foi possível vincular socket à porta" - -#, fuzzy, c-format +msgstr "Não foi possível vincular socket à porta: %s" + +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"Não foi possível criar socket\n" -"%s" +msgstr "Não foi possível escutar no socket: %s" msgid "Error communicating with local mDNSResponder." msgstr "Erro comunicando com o mDNSResponder local." @@ -3017,7 +3014,7 @@ msgstr "Sua lista de amigos está vazia, nada foi escrito no arquivo." msgid "Buddylist saved successfully!" -msgstr "Lista de amigos salva com sucesso" +msgstr "Lista de amigos salva com sucesso!" #, c-format msgid "Couldn't write buddy list for %s to %s" @@ -3038,17 +3035,15 @@ msgid "Load buddylist from file..." msgstr "Carregar lista de amigos do arquivo.." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "Preencha os campos de registro." - -#, fuzzy +msgstr "Você deve preencher todos os campos de registro" + msgid "Passwords do not match" msgstr "As senhas não conferem." -#, fuzzy msgid "Unable to register new account. An unknown error occurred." -msgstr "Não foi possível registrar uma nova conta. Ocorreu um erro.\n" +msgstr "" +"Não foi possível registrar uma nova conta. Ocorreu um erro desconhecido." msgid "New Gadu-Gadu Account Registered" msgstr "Nova conta do Gadu-Gadu registrada" @@ -3063,9 +3058,8 @@ msgstr "Senha (novamente)" msgid "Enter captcha text" -msgstr "" - -#, fuzzy +msgstr "Digite o texto do captcha" + msgid "Captcha" msgstr "Imagem do captcha" @@ -3100,7 +3094,7 @@ msgstr "Encontrar amigos" msgid "Please, enter your search criteria below" -msgstr "Favor digitar seu critério de busca abaixo" +msgstr "Por favor, digite seu critério de busca abaixo" msgid "Fill in the fields." msgstr "Preencha os campos." @@ -3112,7 +3106,7 @@ msgstr "Não foi possível alterar a senha. Ocorreu um erro.\n" msgid "Change password for the Gadu-Gadu account" -msgstr "Mudar senha da conta do Gadu-Gadu" +msgstr "Mudar a senha da conta do Gadu-Gadu" msgid "Password was changed successfully!" msgstr "Senha alterada com sucesso!" @@ -3206,9 +3200,9 @@ msgid "Chat _name:" msgstr "_Nome do bate-papo:" -#, fuzzy, c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Não foi possível conectar ao servidor." +msgstr "Não foi possível resolver nome do computador '%s': %s" #. 1. connect to server #. connect to the server @@ -3221,9 +3215,8 @@ msgid "This chat name is already in use" msgstr "Este nome de bate-papo já está sendo utilizado" -#, fuzzy msgid "Not connected to the server" -msgstr "Não conectado ao servidor." +msgstr "Não conectado ao servidor" msgid "Find buddies..." msgstr "Encontrar amigos..." @@ -3238,7 +3231,7 @@ msgstr "Transferir lista de amigos do servidor" msgid "Delete buddylist from Server" -msgstr "Remover lista de amigos do servidor" +msgstr "Excluir lista de amigos do servidor" msgid "Save buddylist to file..." msgstr "Salvar lista de amigos para um arquivo..." @@ -3264,9 +3257,8 @@ msgid "Gadu-Gadu User" msgstr "Usuário do Gadu-Gadu" -#, fuzzy msgid "GG server" -msgstr "Coletando servidor" +msgstr "Servidor do GG" #, c-format msgid "Unknown command: %s" @@ -3282,7 +3274,6 @@ msgid "File Transfer Failed" msgstr "Transferência de arquivo falhou" -#, fuzzy msgid "Unable to open a listening port." msgstr "Não foi possível abrir uma porta para escuta." @@ -3306,11 +3297,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"A conexão com o servidor foi perdida: \n" -"%s" +msgstr "A conexão com o servidor foi perdida: %s" msgid "View MOTD" msgstr "Ver mensagem do dia (MOTD)" @@ -3321,9 +3310,8 @@ msgid "_Password:" msgstr "_Senha:" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "Apelidos do IRC não podem conter espaços" +msgstr "Nome des servidor e Apelidos do IRC não podem conter espaços" msgid "SSL support unavailable" msgstr "Suporte a SSL indisponível" @@ -3332,13 +3320,13 @@ msgstr "Não foi possível conectar" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "Não foi possível conectar a %s" - -#, fuzzy, c-format +msgstr "Não foi possível conectar: %s" + +#, c-format msgid "Server closed the connection" -msgstr "O servidor encerrou a conexão." +msgstr "O servidor encerrou a conexão" msgid "Users" msgstr "Usuários" @@ -3522,13 +3510,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 "Este nome de bate-papo já está sendo utilizado" - -#, fuzzy +msgstr "Este apelido \"%s\" já está sendo utilizado" + msgid "Nickname in use" -msgstr "Apelido" +msgstr "Apelido em uso" msgid "Cannot change nick" msgstr "Não foi possível mudar apelido" @@ -3769,15 +3756,13 @@ msgid "execute" msgstr "execute" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." msgstr "" -"O servidor requer TLS/SSL para conexão. Nenhum suporte a TLS/SSL foi " -"encontrado." - -#, fuzzy +"O servidor requer TLS/SSL para conexão mas nenhum suporte a TLS/SSL " +"foiencontrado." + msgid "You require encryption, but no TLS/SSL support was found." -msgstr "Você requer TLS/SSL, mas nenhum suporte a TLS/SSL foi encontrado. " +msgstr "Você requer criptografia, mas nenhum suporte a TLS/SSL foi encontrado." msgid "Server requires plaintext authentication over an unencrypted stream" msgstr "" @@ -3794,11 +3779,9 @@ msgid "Plaintext Authentication" msgstr "Autenticação via texto puro" -#, fuzzy msgid "SASL authentication failed" -msgstr "Autenticação mal sucedida" - -#, fuzzy +msgstr "Autenticação SASL mal sucedida" + msgid "Invalid response from server" msgstr "O servidor retornou uma resposta inválida." @@ -3811,36 +3794,28 @@ msgid "Invalid challenge from server" msgstr "O servidor retornou uma identificação inválida" -#, fuzzy, c-format +#, c-format msgid "SASL error: %s" -msgstr "Erro de SASL" +msgstr "Erro de SASL: %s" msgid "The BOSH connection manager terminated your session." -msgstr "" - -#, fuzzy +msgstr "O gerenciador de conexão BOSH terminou sua sessão." + msgid "No session ID given" -msgstr "Nenhum motivo foi dado." - -#, fuzzy +msgstr "Nenhum ID da sessão foi dado." + msgid "Unsupported version of BOSH protocol" -msgstr "Versão não suportada" - -#, fuzzy +msgstr "Versão do protocolo BOSH não suportada" + msgid "Unable to establish a connection with the server" -msgstr "" -"Não foi possível estabelecer conexão com o servidor:\n" -"%s" - -#, fuzzy, c-format +msgstr "Não foi possível estabelecer conexão com o servidor:" + +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "" -"Não foi possível estabelecer conexão com o servidor:\n" -"%s" - -#, fuzzy +msgstr "Não foi possível estabelecer conexão com o servidor: %s" + msgid "Unable to establish SSL connection" -msgstr "Não foi possível inicializar conexão" +msgstr "Não foi possível estabelecer uma conexão SSL" msgid "Full Name" msgstr "Nome completo" @@ -3908,9 +3883,8 @@ msgid "Operating System" msgstr "Sistema operacional" -#, fuzzy msgid "Local Time" -msgstr "Arquivo local:" +msgstr "Hora local" msgid "Priority" msgstr "Prioridade" @@ -3920,11 +3894,10 @@ #, c-format msgid "%s ago" -msgstr "" - -#, fuzzy +msgstr "%s atrás" + msgid "Logged Off" -msgstr "Conectado" +msgstr "Desconectado" msgid "Middle Name" msgstr "Nome do meio" @@ -3952,7 +3925,7 @@ msgstr "Cancelar notificação de presença" msgid "(Re-)Request authorization" -msgstr "(Re-)requisitar autorização" +msgstr "(Re-)Pedir autorização" #. if(NOT ME) #. shouldn't this just happen automatically when the buddy is @@ -4094,19 +4067,15 @@ msgid "Find Rooms" msgstr "Encontrar salas" -#, fuzzy msgid "Affiliations:" -msgstr "Apelido:" - -#, fuzzy +msgstr "Afiliações:" + msgid "No users found" -msgstr "Nenhum usuário compatível encontrado" - -#, fuzzy +msgstr "Nenhum usuário encontrado" + msgid "Roles:" -msgstr "Função" - -#, fuzzy +msgstr "Funções:" + msgid "Ping timed out" msgstr "Tempo limite de ping excedido" @@ -4114,6 +4083,8 @@ "Unable to find alternative XMPP connection methods after failing to connect " "directly." msgstr "" +"Não foi possível encontrar métodos de conexão do XMPP depois de não " +"conseguir conectar diretamente." msgid "Invalid XMPP ID" msgstr "ID do XMPP inválido" @@ -4121,9 +4092,8 @@ msgid "Invalid XMPP ID. Domain must be set." msgstr "ID do XMPP inválido. O domínio precisa ser especificado." -#, fuzzy msgid "Malformed BOSH URL" -msgstr "Não foi possível conectar ao servidor." +msgstr "URL BOSH inválida." #, c-format msgid "Registration of %s@%s successful" @@ -4193,10 +4163,6 @@ msgid "Change Registration" msgstr "Mudar registro" -#, fuzzy -msgid "Malformed BOSH Connect Server" -msgstr "Não foi possível conectar ao servidor." - msgid "Error unregistering account" msgstr "Erro ao desregistrar conta" @@ -4338,13 +4304,13 @@ msgstr "Não permitido" msgid "Payment Required" -msgstr "Pagamento requerido" +msgstr "Pagamento necessário" msgid "Recipient Unavailable" msgstr "Destinatário indisponível" msgid "Registration Required" -msgstr "Registro requerido" +msgstr "Registro necessário" msgid "Remote Server Not Found" msgstr "Servidor remoto não encontrado" @@ -4359,7 +4325,7 @@ msgstr "Serviço indisponível" msgid "Subscription Required" -msgstr "Inscrição requerida" +msgstr "Inscrição necessária" msgid "Unexpected Request" msgstr "Requisição inesperada" @@ -4476,29 +4442,29 @@ #, c-format msgid "Unable to kick user %s" -msgstr "Não foi possível convidar usuário (%s)." +msgstr "Não foi possível expulsar usuário (%s)." #, c-format msgid "Unable to ping user %s" msgstr "Não foi possível verificar presença de usuário %s" -#, fuzzy, c-format +#, c-format msgid "Unable to buzz, because there is nothing known about %s." -msgstr "" -"Não foi possível chamar a atenção de %s, pois nada é conhecido sobre ele(a)." - -#, fuzzy, c-format +msgstr "Não foi possível chamar a atenção, pois nada é conhecido sobre %s." + +#, c-format msgid "Unable to buzz, because %s might be offline." msgstr "" "Não foi possível chamar a atenção de %s, pois este(a) pode estar " "desconectado." -#, fuzzy, c-format +#, c-format msgid "" "Unable to buzz, because %s does not support it or does not wish to receive " "buzzes now." msgstr "" -"Não foi possível chamar a atenção de %s, pois este não suporta tal recurso." +"Não foi possível chamar a atenção de %s, pois este não suporta tal recurso " +"ou não deseja receber chamados de atenção agora." #, c-format msgid "Buzzing %s..." @@ -4513,39 +4479,36 @@ msgid "%s has buzzed you!" msgstr "%s chamou sua atenção!" -#, fuzzy, c-format +#, c-format msgid "Unable to initiate media with %s: invalid JID" -msgstr "Não foi possível enviar o arquivo para %s, ID do Jabber inválido" - -#, fuzzy, c-format +msgstr "Não foi possível iniciar mídia com %s: ID do Jabber inválido" + +#, c-format msgid "Unable to initiate media with %s: user is not online" -msgstr "" -"Não foi possível enviar arquivo para %s, pois o usuário não está conectado" - -#, fuzzy, c-format +msgstr "Não foi possível iniciar mídia com %s: o usuário não está conectado" + +#, c-format msgid "Unable to initiate media with %s: not subscribed to user presence" msgstr "" -"Não foi possível enviar arquivo para %s, pois você não está recebendo " -"informações de presença deste usuário" - -#, fuzzy +"Não foi possível iniciar mídia com %s: você não está recebendo informações " +"de presença deste usuário" + msgid "Media Initiation Failed" -msgstr "Registro falhou" - -#, fuzzy, c-format +msgstr "Não foi possível fazer a Inicialização de mídia" + +#, c-format msgid "" "Please select the resource of %s with which you would like to start a media " "session." msgstr "" -"Favor selecionar o recurso de %s para o qual você gostaria de mandar um " -"arquivo" +"Favor selecionar o recurso de %s para o qual você gostaria iniciar uma " +"sessão de mídia." msgid "Select a Resource" msgstr "Selecione um recurso" -#, fuzzy msgid "Initiate Media" -msgstr "Iniciar _bate-papo" +msgstr "Iniciar Mídia" msgid "config: Configure a chat room." msgstr "config: Configura uma sala de bate-papo." @@ -4565,21 +4528,19 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <usuário> [sala]: Bane o usuário da sala." -#, 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 <usuário> <owner|admin|member|outcast|none>: define a " -"filiação do usuário com a sala." - -#, fuzzy +"affiliate <owner|admin|member|outcast|none>: [apelido1] " +"[apelido2] ...: recebe ou define a filiação do usuário com a sala." + msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <usuário> <moderator|participant|visitor|none>: Define o " -"cargo do usuário na sala." +"role <moderator|participant|visitor|none>: recebe ou define o cargo do " +"usuário na sala." msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <usuário> [mensagem]: Convida o usuário para a sala." @@ -4643,7 +4604,7 @@ msgstr "Proxy de transferência de arquivo" msgid "BOSH URL" -msgstr "" +msgstr "URL BOSH" #. this should probably be part of global smiley theme settings later on, #. shared with MSN @@ -4707,32 +4668,28 @@ msgid "_Accept Defaults" msgstr "_Aceitar padrões" -#, fuzzy msgid "No reason" -msgstr "Nenhum motivo foi dado." - -#, fuzzy, c-format +msgstr "Sem razão" + +#, c-format msgid "You have been kicked: (%s)" -msgstr "Você foi expulso por %s: (%s)" - -#, fuzzy, c-format +msgstr "Você foi expulso: (%s)" + +#, c-format msgid "Kicked (%s)" -msgstr "Chutado por %s (%s)" - -#, fuzzy +msgstr "Expulso (%s)" + msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Ocorreu um erro na abertura do arquivo." - -#, fuzzy +msgstr "Um erro aconteceu na transferência do stream in-band\n" + msgid "Transfer was closed." -msgstr "Transferência de arquivo falhou" - -#, fuzzy +msgstr "A Transferência de arquivo foi fechada." + msgid "Failed to open the file" -msgstr "Falha ao abrir arquivo '%s': %s" +msgstr "Falha ao abrir arquivo" msgid "Failed to open in-band bytestream" -msgstr "" +msgstr "Falha ao abrir o fluxo de bytes in-band" #, c-format msgid "Unable to send file to %s, user does not support file transfers" @@ -5060,10 +5017,29 @@ msgid "Non-IM Contacts" msgstr "Contatos que não são do mensageiro" -#, fuzzy, c-format +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" +"%s enviou um wink. Clique aqui para reproduzí-lo" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "%s envou um wink, mas o wink não pôde ser salvo" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" +"%s envou um clipe de voz. Clique aqui para reproduzí-" +"lo" + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "%s te enviou um clipe de voz, mas este não pôde ser salvo" + +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "" -"%s te enviou um convite para ver webcam, que é um recurso não suportado." +"%s te enviou um convite para bate-pao de voz, que é um recurso sem suporte." msgid "Nudge" msgstr "Chamar a atenção" @@ -5219,6 +5195,29 @@ "O suporte ao SSL é necessário para o MSN. Por favor instale uma biblioteca " "SSL suportada." +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Não foi possível adicionar o amigo %s porque o nome de usuário é inválido. " +"Nomes de usuário devem ser um endereço de e-mail válido." + +msgid "Unable to Add" +msgstr "Não foi possível adicionar" + +msgid "Authorization Request Message:" +msgstr "Mensagem para pedido de autorização:" + +msgid "Please authorize me!" +msgstr "Por favor me autorize!" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "_OK" + msgid "Error retrieving profile" msgstr "Erro ao obter perfil" @@ -5411,13 +5410,14 @@ msgid "%s just sent you a Nudge!" msgstr "%s chamou sua atenção!" -#, fuzzy, c-format +#, c-format msgid "Unknown error (%d): %s" -msgstr "Erro desconhecido (%d)" +msgstr "Erro desconhecido (%d): %s" msgid "Unable to add user" msgstr "Não foi possível adicionar usuário" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "Erro desconhecido (%d)" @@ -5489,15 +5489,12 @@ "Erro de conexão do servidor %s:\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" -msgstr "Nosso protocolo não é suportado pelo servidor." - -#, fuzzy +msgstr "Nosso protocolo não possui suporte do servidor." + msgid "Error parsing HTTP" msgstr "Erro ao processar HTTP." -#, fuzzy msgid "You have signed on from another location" msgstr "Você conectou de outro local." @@ -5506,7 +5503,6 @@ "Os servidores do MSN estão temporariamente indisponíveis. Favor esperar e " "tentar novamente." -#, fuzzy msgid "The MSN servers are going down temporarily" msgstr "Os servidores MSN vão sair do ar temporariamente." @@ -5538,10 +5534,11 @@ msgid "Retrieving buddy list" msgstr "Recuperando lista de amigos" -#, fuzzy, c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." msgstr "" -"%s te enviou um convite para ver webcam, que é um recurso não suportado." +"%s te enviou um convite para ver sua webcam, mas este recurso ainda não tem " +"suporte." #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." @@ -5739,15 +5736,15 @@ msgid "Protocol error, code %d: %s" msgstr "Erro de protocolo, código %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 Sua senha é %d caracteres, maior que o tamanho máximo esperado de %d para " -"o MySpaceIM. Por favor, encurte sua senha no http://profileedit.myspace.com/" -"index.cfm?fuseaction=accountSettings.changePassword e tente novamente." +"%s Sua senha é %zu caracteres, o que é maior que o tamanho máximo esperado " +"de %d. Por favor, encurte sua senha no http://profileedit.myspace.com/index." +"cfm?fuseaction=accountSettings.changePassword e tente novamente." msgid "Incorrect username or password" msgstr "Nome de usuário ou senha incorreto(a)" @@ -5843,14 +5840,14 @@ msgid "Client Version" msgstr "Versão do cliente" -#, fuzzy msgid "" "An error occurred while trying to set the username. Please try again, or " "visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " "to set your username." msgstr "" -"Favor visitar http://eTestadores Escrupulosos:
\n" msgid "and more, please let me know... thank you!))" -msgstr "" +msgstr "e mais, por favor me avise... obrigado!))" msgid "

And, all the boys in the backroom...
\n" msgstr "

E, todos os garotos nos bastidores...
\n" @@ -7810,7 +7777,6 @@ msgid "Update interval (seconds)" msgstr "Intervalo de update (segundos)" -#, fuzzy msgid "Unable to decrypt server reply" msgstr "Não foi possível decodificar a resposta do servidor" @@ -7878,9 +7844,8 @@ msgid "Requesting token" msgstr "Token de requisição" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "Não foi possível conectar ao servidor." +msgstr "Não foi possível solucionar o nome do computador" msgid "Invalid server or port" msgstr "Porta ou servidor inválido" @@ -7933,7 +7898,6 @@ msgid "QQ Qun Command" msgstr "Comando QQ Qun" -#, fuzzy msgid "Unable to decrypt login reply" msgstr "Não foi possível decodificar a resposta do login" @@ -8918,7 +8882,6 @@ msgid "Disconnected by server" msgstr "Desconectado pelo servidor" -#, fuzzy msgid "Error connecting to SILC Server" msgstr "Erro ao conectar no servidor SILC" @@ -8934,7 +8897,6 @@ msgid "Performing key exchange" msgstr "Fazendo troca de chaves" -#, fuzzy msgid "Unable to load SILC key pair" msgstr "Não foi possível carregar par de chaves SILC" @@ -8942,14 +8904,9 @@ msgid "Connecting to SILC Server" msgstr "Conectando ao servidor SILC" -#, fuzzy -msgid "Unable to not load SILC key pair" -msgstr "Não foi possível carregar par de chaves SILC" - msgid "Out of memory" msgstr "Sem memória" -#, fuzzy msgid "Unable to initialize SILC protocol" msgstr "Não foi possível iniciar protocolo SILC" @@ -9251,9 +9208,8 @@ msgid "Creating SILC key pair..." msgstr "Criando par de chaves do SILC..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "Não foi possível criar par de chaves do SILC\n" +msgstr "Não foi possível criar par de chaves do SILC" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9391,27 +9347,24 @@ msgid "Failure: Authentication failed" msgstr "Falha: Autenticação mal sucedida" -#, fuzzy msgid "Unable to initialize SILC Client connection" msgstr "Não foi possível iniciar conexão do cliente SILC" msgid "John Noname" msgstr "João sem nome" -#, fuzzy, c-format +#, c-format msgid "Unable to load SILC key pair: %s" msgstr "Não foi possível carregar par de chaves SILC: %s" msgid "Unable to create connection" msgstr "Não foi possível criar conexão." -#, fuzzy msgid "Unknown server response" -msgstr "Resposta do servidor desconhecida." - -#, fuzzy +msgstr "Resposta do servidor desconhecida" + msgid "Unable to create listen socket" -msgstr "Não foi possível criar socket" +msgstr "Não foi possível escutar socket" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "Nomes de usuário do SIP não podem conter espaços ou arrobas" @@ -9474,9 +9427,8 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" -msgstr "Plug-in do protocolo Yahoo" +msgstr "Plug-in do protocolo Yahoo!" msgid "Pager server" msgstr "Servidor do pager" @@ -9505,9 +9457,8 @@ msgid "Yahoo Chat port" msgstr "Porta de bate-papo do Yahoo" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "ID do Yahoo..." +msgstr "ID do Yahoo JAPAN..." #. *< type #. *< ui_requirement @@ -9519,12 +9470,11 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Plug-in do protocolo Yahoo" +msgstr "Plug-in do protocolo Yahoo! JAPAN" msgid "Your SMS was not delivered" -msgstr "" +msgstr "Seu SMS não foi entregue" msgid "Your Yahoo! message did not get sent." msgstr "Sua mensagem do Yahoo! não foi enviada." @@ -9551,32 +9501,28 @@ msgstr "Pedido para adicionar amigo negado" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "Dados inválidos foram recebidos na conexão com o servidor." +msgstr "Dados inválidos recebidos" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." msgstr "" -"Número de erro %d desconhecido. Entrar na sua conta no site do Yahoo! pode " -"corrigir isso." +"Conta travada: muitas tentativas de login fracassadas. Entrar na sua conta " +"no site do Yahoo! pode corrigir isso." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." msgstr "" -"Número de erro %d desconhecido. Entrar na sua conta no site do Yahoo! pode " -"corrigir isso." +"Conta travada: razão desconhecida. Entrar na sua conta no site do Yahoo! " +"pode corrigir isso." #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "Nome de usuário ou senha incorreto(a)" +msgstr "Nome de usuário ou senha faltando" #, c-format msgid "" @@ -9611,13 +9557,12 @@ "Número de erro %d desconhecido. Entrar na sua conta no site do Yahoo! pode " "corrigir isso." -#, fuzzy, c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." msgstr "" "Não foi possível adicionar o amigo %s ao grupo %s à lista do servidor na " "conta %s." -#, fuzzy msgid "Unable to add buddy to server list" msgstr "Não foi possível adicionar amigo à lista do servidor" @@ -9625,21 +9570,16 @@ msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ Audível %s/%s/%s.swf ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" -msgstr "O servidor retornou uma resposta HTTP inválida." - -#, fuzzy, c-format +msgstr "O servidor retornou uma resposta HTTP inesperada." + +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"A conexão com %s foi perdida:\n" -"%s" - -#, fuzzy, c-format +msgstr "A conexão com %s foi perdida: %s" + +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "" -"Não foi possível estabelecer conexão com o servidor:\n" -"%s" +msgstr "Não foi possível estabelecer conexão com o servidor %s: %s" msgid "Not at Home" msgstr "Fora de casa" @@ -9687,7 +9627,7 @@ msgstr "Começar a desenhar" msgid "Select the ID you want to activate" -msgstr "" +msgstr "Selecione o ID que você quer ativar" msgid "Join whom in chat?" msgstr "Juntar-se a quem no bate-papo?" @@ -9788,13 +9728,9 @@ msgid "The user's profile is empty." msgstr "O perfil do usuário está vazio." -#, c-format -msgid "%s declined your conference invitation to room \"%s\" because \"%s\"." -msgstr "" -"%s rejeitou seu convite para uma conferência na sala \"%s\" porque \"%s\"." - -msgid "Invitation Rejected" -msgstr "Convite rejeitado" +#, fuzzy, c-format +msgid "%s has declined to join." +msgstr "%s conectou." msgid "Failed to join chat" msgstr "Falha ao entrar no bate-papo" @@ -9846,9 +9782,8 @@ msgid "User Rooms" msgstr "Salas de usuário" -#, fuzzy msgid "Connection problem with the YCHT server" -msgstr "Problema na conexão ao servidor YCHT." +msgstr "Problema na conexão com o servidor YCHT." msgid "" "(There was an error converting this message.\t Check the 'Encoding' option " @@ -9979,18 +9914,18 @@ msgid "Exposure" msgstr "Exposição" -#, fuzzy, c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "Não foi possível interpretar resposta do proxy HTTP: %s\n" +msgstr "Não foi possível interpretar resposta do proxy HTTP: %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "Erro de conexão do proxy HTTP %d" -#, fuzzy, c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" msgstr "" -"Acesso negado: o servidor proxy HTTP não permite o tunelamento da porta %d." +"Acesso negado: o servidor proxy HTTP não permite o tunelamento da porta %d" #, c-format msgid "Error resolving %s" @@ -10234,13 +10169,13 @@ msgid "Error Reading %s" msgstr "Erro ao ler %s" -#, fuzzy, c-format +#, c-format msgid "" "An error was encountered reading your %s. The file has not been loaded, and " "the old file has been renamed to %s~." msgstr "" -"Um erro foi encontrado ao processar sua %s. Eles(as) não foram carregados" -"(as), e o antigo arquivo foi movido para %s~." +"Um erro foi encontrado ao ler sua %s. Eles(as) não foram carregados(as), e o " +"antigo arquivo foi renomeado para %s~." msgid "Internet Messenger" msgstr "Mensageiro da Internet" @@ -10284,7 +10219,7 @@ msgid "Use this buddy _icon for this account:" msgstr "Usar este _ícone de exibição para esta conta:" -msgid "_Advanced" +msgid "Ad_vanced" msgstr "_Avançado" msgid "Use GNOME Proxy Settings" @@ -10347,9 +10282,8 @@ msgid "Create _this new account on the server" msgstr "Criar es_ta nova conta no servidor" -#, fuzzy -msgid "_Proxy" -msgstr "Proxy" +msgid "P_roxy" +msgstr "P_roxy" msgid "Enabled" msgstr "Ativado" @@ -10378,7 +10312,7 @@ "novamente para configurar quantas contas quiser.\n" "\n" "Você pode voltar a esta janela para adicionar, alterar ou remover contas a " -"partir do menu Contas->Gerenciar Gontas na janela da Lista de Amigos" +"partir do menu Contas->Gerenciar Contas na janela da Lista de Amigos" #, c-format msgid "You have %d contact named %s. Would you like to merge them?" @@ -10399,7 +10333,6 @@ msgid "Please update the necessary fields." msgstr "Favor atualizar os campos necessários." -#, fuzzy msgid "A_ccount" msgstr "_Conta:" @@ -10428,16 +10361,14 @@ msgid "I_M" msgstr "_MI" -#, fuzzy msgid "_Audio Call" -msgstr "_Adicionar bate-papo" +msgstr "Ch_amada de Áudio" msgid "Audio/_Video Call" -msgstr "" - -#, fuzzy +msgstr "Chamada de Áudio/_Vídeo" + msgid "_Video Call" -msgstr "Bate-papo com vídeo" +msgstr "Chamada de _vídeo" msgid "_Send File..." msgstr "_Enviar arquivo..." @@ -10448,11 +10379,9 @@ msgid "View _Log" msgstr "Ver _histórico" -#, fuzzy msgid "Hide When Offline" msgstr "Esconder quando desconectado" -#, fuzzy msgid "Show When Offline" msgstr "Mostrar quando desconectado" @@ -10475,7 +10404,7 @@ msgstr "Adicionar _bate-papo..." msgid "_Delete Group" -msgstr "_Remover grupo" +msgstr "Exclui_r grupo" msgid "_Rename" msgstr "_Renomear" @@ -10579,9 +10508,8 @@ msgid "/Tools/_Certificates" msgstr "/Ferramentas/_Certificados" -#, fuzzy msgid "/Tools/Custom Smile_ys" -msgstr "/Ferramentas/Smile_y" +msgstr "/Ferramentas/Smile_ys personalizados" msgid "/Tools/Plu_gins" msgstr "/Ferramentas/Plu_gins" @@ -10710,7 +10638,7 @@ msgstr "Por status" msgid "By recent log activity" -msgstr "" +msgstr "Pela atividade de registro recente" #, c-format msgid "%s disconnected" @@ -10727,7 +10655,7 @@ msgstr "Re-ativar" msgid "SSL FAQs" -msgstr "" +msgstr "FAQs do SSL" msgid "Welcome back!" msgstr "Bem vindo de volta!" @@ -10860,111 +10788,98 @@ msgid "Background Color" msgstr "Cor do fundo" -#, fuzzy msgid "The background color for the buddy list" -msgstr "Este grupo foi adicionado à sua lista de amigos." - -#, fuzzy +msgstr "A cor de fundo para sua lista de amigos." + msgid "Layout" -msgstr "Laociano" +msgstr "Layout" msgid "The layout of icons, name, and status of the blist" -msgstr "" +msgstr "O layout de ícones, nome e status da lista" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "Cor do fundo" +msgstr "Cor do fundo expandido" msgid "The background color of an expanded group" -msgstr "" - -#, fuzzy +msgstr "A cor de fundo de um grupo expandido" + msgid "Expanded Text" -msgstr "_Expandir" +msgstr "Texto Expandido" msgid "The text information for when a group is expanded" -msgstr "" - -#, fuzzy +msgstr "A informação de texto para quando um grupo estiver expandido" + msgid "Collapsed Background Color" -msgstr "Selecionar cor de fundo" +msgstr "Cor de fundo colapsado" msgid "The background color of a collapsed group" -msgstr "" - -#, fuzzy +msgstr "A cor de fundo de um grupo colapsado" + msgid "Collapsed Text" -msgstr "Re_colher" +msgstr "Texto colapsado" msgid "The text information for when a group is collapsed" -msgstr "" +msgstr "A informação de texto para quando um grupo for colapsado" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "Selecionar cor de fundo" +msgstr "Cor de fundo do Contato/Bate-papo" msgid "The background color of a contact or chat" -msgstr "" - -#, fuzzy +msgstr "A cor de fundo de um contato ou bate-papo" + msgid "Contact Text" -msgstr "Atalho" +msgstr "Texto de contato" msgid "The text information for when a contact is expanded" -msgstr "" - -#, fuzzy +msgstr "A informação de texto para quando um contato está expandido" + msgid "On-line Text" -msgstr "Conectado" +msgstr "Texto de online" msgid "The text information for when a buddy is online" -msgstr "" - -#, fuzzy +msgstr "A informação de texto para quando um contato está conectado" + msgid "Away Text" -msgstr "Ausente" +msgstr "Texto de ausante" msgid "The text information for when a buddy is away" -msgstr "" - -#, fuzzy +msgstr "A informação de texto para quando um contato está ausente" + msgid "Off-line Text" -msgstr "Desconectado" +msgstr "Texto de off-line" msgid "The text information for when a buddy is off-line" -msgstr "" - -#, fuzzy +msgstr "A informação de texto para quando um contato está desconectado" + msgid "Idle Text" -msgstr "Humor (texto)" +msgstr "Texto de inativo" msgid "The text information for when a buddy is idle" -msgstr "" - -#, fuzzy +msgstr "A informação de texto para quando um contato está inativo" + msgid "Message Text" -msgstr "Mensagem enviada" +msgstr "Texto de mensagem" msgid "The text information for when a buddy has an unread message" -msgstr "" +msgstr "A informação de texto para quando um contato tem uma mensagem não lida" msgid "Message (Nick Said) Text" -msgstr "" +msgstr "Mensagem texto (Apelido diz)" msgid "" "The text information for when a chat has an unread message that mentions " "your nick" msgstr "" - -#, fuzzy +"A informação de texto para quando um bate-papo tem uma mensagem não lida que " +"mensiona seu apelido" + msgid "The text information for a buddy's status" -msgstr "Modificar informações do usuário para %s" - -#, fuzzy +msgstr "Informação de texto para o status de um amigo" + msgid "Type the host name for this certificate." -msgstr "Digite o nome de host para o qual este certificado será gerado." +msgstr "Digite o nome de host para este certificado." #. Widget creation function msgid "SSL Servers" @@ -11011,7 +10926,6 @@ msgid "Get Away Message" msgstr "Obter mensagem de ausência" -#, fuzzy msgid "Last Said" msgstr "Última mensagem" @@ -11058,21 +10972,17 @@ msgid "/Conversation/Clea_r Scrollback" msgstr "/Conversa/Limpa_r" -#, fuzzy msgid "/Conversation/M_edia" -msgstr "/Conversa/M_ais" - -#, fuzzy +msgstr "/Conv_ersa/M_ídia" + msgid "/Conversation/Media/_Audio Call" -msgstr "/Conversa/M_ais" - -#, fuzzy +msgstr "/Conversa/Ch_amada de áudio" + msgid "/Conversation/Media/_Video Call" -msgstr "/Conversa/M_ais" - -#, fuzzy +msgstr "/Conversa/Chamada de _vídeo" + msgid "/Conversation/Media/Audio\\/Video _Call" -msgstr "/Conversa/Ver _histórico" +msgstr "/Conversa/_Chamada de áudio/vídeio" msgid "/Conversation/Se_nd File..." msgstr "/Conversa/E_nviar arquivo..." @@ -11146,17 +11056,14 @@ msgid "/Conversation/View Log" msgstr "/Conversa/Ver histórico" -#, fuzzy msgid "/Conversation/Media/Audio Call" -msgstr "/Conversa/Mais" - -#, fuzzy +msgstr "/Conversa/Chamada de áudio" + msgid "/Conversation/Media/Video Call" -msgstr "/Conversa/Ver histórico" - -#, fuzzy +msgstr "/Conversa/Chamada de vídeo" + msgid "/Conversation/Media/Audio\\/Video Call" -msgstr "/Conversa/Mais" +msgstr "/Conversa/Chamada de aúdio/vídeo" msgid "/Conversation/Send File..." msgstr "/Conversa/Enviar arquivo..." @@ -11342,7 +11249,7 @@ msgstr "Ka-Hing Cheung" msgid "voice and video" -msgstr "" +msgstr "voz e vídeo" msgid "support" msgstr "suporte" @@ -11468,9 +11375,8 @@ msgid "Hungarian" msgstr "Húngaro" -#, fuzzy msgid "Armenian" -msgstr "Romeno" +msgstr "Armênio" msgid "Indonesian" msgstr "Bahasa Indonésia" @@ -11487,9 +11393,8 @@ msgid "Ubuntu Georgian Translators" msgstr "Tradutores do Ubuntu do idioma Geórgio" -#, fuzzy msgid "Khmer" -msgstr "Outro" +msgstr "Khmer" msgid "Kannada" msgstr "Canarês" @@ -11570,7 +11475,7 @@ msgstr "Sueco" msgid "Swahili" -msgstr "" +msgstr "Swahili" msgid "Tamil" msgstr "Tamil" @@ -11908,11 +11813,9 @@ msgid "Hyperlink visited color" msgstr "Cor do hyperlink visitado" -#, fuzzy msgid "Color to draw hyperlink after it has been visited (or activated)." msgstr "" -"Cor a ser usada para desenhar os hyperlinks quando já tiverem sido visitados " -"(ou estiverem ativos)." +"Cor para desenhar hiperlinks depois que eles foram visitados (ou ativados)." msgid "Hyperlink prelight color" msgstr "Cor do hyperlink sob o cursor" @@ -11949,23 +11852,20 @@ msgid "Action Message Name Color for Whispered Message" msgstr "Cor do Nome da Mensagem de Ação para Mensagem de Sussurro" -#, fuzzy msgid "Color to draw the name of a whispered action message." msgstr "Cor para desenhar o nome de uma mensagem de ação." msgid "Whisper Message Name Color" msgstr "Cor do Nome das Mensagens de Sussurro" -#, fuzzy msgid "Color to draw the name of a whispered message." -msgstr "Cor para desenhar o nome de uma mensagem de ação." +msgstr "Cor para desenhar o nome de uma mensagem sussurada." msgid "Typing notification color" msgstr "Cor da notificação de digitação" -#, fuzzy msgid "The color to use for the typing notification" -msgstr "Cor para utilizar na fonte da notificação de digitação" +msgstr "Cor para utilizar na notificação de digitação" msgid "Typing notification font" msgstr "Fonte da notificação da digitação" @@ -12218,7 +12118,7 @@ msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%s %s. Tente `%s -h' para mais informações.\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12240,6 +12140,7 @@ "\n" " -c, --config=DIR use o diretório DIR para os arquivos de configuração\n" " -d, --debug imprima mensagens de depuração para a saída padrão\n" +" -f, --force-online força estar online, independente do status da rede\n" " -h, --help exiba esta ajuda e saia\n" " -m, --multiple permitir uso simultâneo de mais de uma instância\n" " -n, --nologin não conecte automaticamente\n" @@ -12249,7 +12150,7 @@ " --display=DISPLAY seleciona o display X a usar\n" " -v, --version exiba a versão atual e saia\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12270,6 +12171,7 @@ "\n" " -c, --config=DIR use o diretório DIR para os arquivos de configuração\n" " -d, --debug imprima mensagens de depuração para a saída padrão\n" +" -f, --force-online força estar online, independente do status da rede\n" " -h, --help exiba esta ajuda e saia\n" " -m, --multiple permitir uso simultâneo de mais de uma instância\n" " -n, --nologin não conecte automaticamente\n" @@ -12317,22 +12219,21 @@ msgstr "Saindo porque outro cliente libpurple já está sendo executado.\n" msgid "/_Media" -msgstr "" +msgstr "/_Mídia" msgid "/Media/_Hangup" -msgstr "" - -#, fuzzy +msgstr "/Mídia/Colocar no gancho" + msgid "Calling..." -msgstr "Calculando..." +msgstr "Chamando..." #, c-format msgid "%s wishes to start an audio/video session with you." -msgstr "" +msgstr "%s quer começar uma sessão de aúdio/vídeo com você." #, c-format msgid "%s wishes to start a video session with you." -msgstr "" +msgstr "%s quer iniciar uma sessão de vídeo com você." #, c-format msgid "%s has %d new message." @@ -12363,9 +12264,8 @@ "A opção de comando do navegador 'Manual' foi escolhida, mas nenhum comando " "foi definido." -#, fuzzy msgid "No message" -msgstr "Mensagem desconhecida" +msgstr "Sem mensagem" msgid "Open All Messages" msgstr "Abrir todas as mensagens" @@ -12373,16 +12273,14 @@ msgid "You have mail!" msgstr "Você tem email!" -#, fuzzy msgid "New Pounces" msgstr "Nova ação de usuário" msgid "Dismiss" -msgstr "" - -#, fuzzy +msgstr "Dispensar" + msgid "You have pounced!" -msgstr "Você tem email!" +msgstr "Você recebeu uma ação!" msgid "The following plugins will be unloaded." msgstr "Os plug-ins a seguir serão descarregados." @@ -12432,9 +12330,8 @@ msgid "Select a file" msgstr "Selecione um arquivo" -#, fuzzy msgid "Modify Buddy Pounce" -msgstr "Editar ação de usuário" +msgstr "Modificar ação de usuário" #. Create the "Pounce on Whom" frame. msgid "Pounce on Whom" @@ -12509,61 +12406,58 @@ msgid "Pounce Target" msgstr "Alvo da ação" -#, fuzzy, c-format +#, c-format msgid "Started typing" -msgstr "Começar a digitar" - -#, fuzzy, c-format +msgstr "Começou a digitar" + +#, c-format msgid "Paused while typing" -msgstr "Pausar ao digitar" - -#, fuzzy, c-format +msgstr "Pausado enquanto digitava" + +#, c-format msgid "Signed on" -msgstr "Conectar" - -#, fuzzy, c-format +msgstr "Conectou" + +#, c-format msgid "Returned from being idle" -msgstr "%s voltou do estado 'Inativo' (%s)" - -#, fuzzy, c-format +msgstr "Saiu da inatividade" + +#, c-format msgid "Returned from being away" -msgstr "Voltar da ausência" - -#, fuzzy, c-format +msgstr "Voltou da ausência" + +#, c-format msgid "Stopped typing" msgstr "Parou de digitar" -#, fuzzy, c-format +#, c-format msgid "Signed off" -msgstr "Desconectar" - -#, fuzzy, c-format +msgstr "Desconectou" + +#, c-format msgid "Became idle" msgstr "Tornar-se inativo" -#, fuzzy, c-format +#, c-format msgid "Went away" -msgstr "Quando ausente" - -#, fuzzy, c-format +msgstr "Ausentou-se" + +#, c-format msgid "Sent a message" -msgstr "Enviar uma mensagem" - -#, fuzzy, c-format +msgstr "Enviou uma mensagem" + +#, c-format msgid "Unknown.... Please report this!" -msgstr "Evento de ação desconhecido. Por favor reporte isso!" - -#, fuzzy +msgstr "Desconhecido.... Por favor nos avise disso!" + msgid "Theme failed to unpack." -msgstr "O tema de emoticons não pôde ser descompactado." - -#, fuzzy +msgstr "O tema não pôde ser descompactado." + msgid "Theme failed to load." -msgstr "O tema de emoticons não pôde ser descompactado." - -#, fuzzy +msgstr "O tema de emoticons não pôde ser carregado." + msgid "Theme failed to copy." -msgstr "O tema de emoticons não pôde ser descompactado." +msgstr "O tema de emoticons não pôde ser copiado." msgid "Install Theme" msgstr "Instalar tema" @@ -12585,9 +12479,8 @@ msgstr "Fechar C_onversas com a Tecla Esc" #. Buddy List Themes -#, fuzzy msgid "Buddy List Theme" -msgstr "Lista de amigos" +msgstr "Tema da Lista de amigos" #. System Tray msgid "System Tray Icon" @@ -12599,9 +12492,8 @@ msgid "On unread messages" msgstr "Para as mensagens não lidas" -#, fuzzy msgid "Conversation Window" -msgstr "Janelas de conversa por mensagem instantânea" +msgstr "Janela de conversa" msgid "_Hide new IM conversations:" msgstr "_Esconder novas conversas de MI:" @@ -12704,9 +12596,9 @@ msgid "Example: stunserver.org" msgstr "Exemplo: stunserver.org" -#, fuzzy, c-format +#, c-format msgid "Use _automatically detected IP address: %s" -msgstr "Detectar endereço IP _automaticamente" +msgstr "Usar endereço de IP _automaticamente detectado: %s" msgid "Public _IP:" msgstr "_IP público:" @@ -12728,7 +12620,7 @@ #. TURN server msgid "Relay Server (TURN)" -msgstr "" +msgstr "Servidor de Relay (TURN)" msgid "Proxy Server & Browser" msgstr "Servidor proxy & navegador" @@ -13077,12 +12969,12 @@ msgid "Status for %s" msgstr "Status de %s" -#, fuzzy, c-format +#, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "" -"Um emoticon personalizado para o atalho selecionado já existe. Por favor, " -"forneça um atalho diferente." +"Um emoticon personalizado para o '%s' já existe. Por favor, use um atalho " +"diferente." msgid "Custom Smiley" msgstr "Emoticon personalizado" @@ -13096,28 +12988,24 @@ msgid "Add Smiley" msgstr "Adicionar Emoticon" -#, fuzzy msgid "_Image:" -msgstr "Ima_gem" +msgstr "Ima_gem:" #. Shortcut text -#, fuzzy msgid "S_hortcut text:" -msgstr "Atalho" +msgstr "Texto de Atal_ho:" msgid "Smiley" msgstr "Emoticon" -#, fuzzy msgid "Shortcut Text" -msgstr "Atalho" +msgstr "Texto de Atalho" msgid "Custom Smiley Manager" msgstr "Gerenciador de emoticons personalizados" -#, fuzzy msgid "Select Buddy Icon" -msgstr "Selecionar amigo" +msgstr "Selecionar Ícone do amigo" msgid "Click to change your buddyicon for this account." msgstr "Clique para alterar seu ícone de exibição para esta conta." @@ -13203,7 +13091,6 @@ msgid "Cannot send launcher" msgstr "Não é possível enviar atalhos" -#, fuzzy msgid "" "You dragged a desktop launcher. Most likely you wanted to send the target of " "this launcher instead of this launcher itself." @@ -13242,9 +13129,8 @@ "Falha ao carregar imagem '%s': motivo desconhecido, provavelmente o arquivo " "de imagem está corrompido" -#, fuzzy msgid "_Open Link" -msgstr "_Abrir link no:" +msgstr "_Abrir link" msgid "_Copy Link Location" msgstr "_Copiar endereço do link" @@ -13252,9 +13138,21 @@ msgid "_Copy Email Address" msgstr "_Copiar endereço de email" +msgid "_Open File" +msgstr "Abrir arquivo" + +msgid "Open _Containing Directory" +msgstr "Abrir diretório contendo" + msgid "Save File" msgstr "Salvar arquivo" +msgid "_Play Sound" +msgstr "Tocar Som" + +msgid "_Save File" +msgstr "_Salvar arquivo" + msgid "Select color" msgstr "Selecionar cor" @@ -13343,77 +13241,65 @@ msgstr "" "Mostrar informações estatísticas sobre a disponibilidade de seus amigos" -#, fuzzy msgid "Server name request" msgstr "Endereço do servidor" -#, fuzzy msgid "Enter an XMPP Server" -msgstr "Entrar num servidor de conferência" - -#, fuzzy +msgstr "Entrar num servidor de XMPP" + msgid "Select an XMPP server to query" -msgstr "Selecione um servidor de conferência a ser consultado" - -#, fuzzy +msgstr "Selecione um servidor de SMTP para consultar" + msgid "Find Services" -msgstr "Serviços online" - -#, fuzzy +msgstr "Encontrar serviços" + msgid "Add to Buddy List" -msgstr "Enviar lista de amigos" - -#, fuzzy +msgstr "Adicionar à lista de amigos" + msgid "Gateway" -msgstr "Ficar ausente" - -#, fuzzy +msgstr "Gateway" + msgid "Directory" -msgstr "Diretório dos históricos" - -#, fuzzy +msgstr "Diretório" + msgid "PubSub Collection" -msgstr "Seleção de som" - -#, fuzzy +msgstr "Coleção PubSub" + msgid "PubSub Leaf" -msgstr "Serviço PubSub" - -#, fuzzy +msgstr "Folha PubSub" + msgid "" "\n" "Description: " -msgstr "Descrição" +msgstr "" +"\n" +"Descrição" #. Create the window. -#, fuzzy msgid "Service Discovery" -msgstr "Informações da localização de serviços" - -#, fuzzy +msgstr "Descoberta de Serviços" + msgid "_Browse" -msgstr "_Navegador:" - -#, fuzzy +msgstr "Navegar:" + msgid "Server does not exist" -msgstr "Usuário inexistente" - -#, fuzzy +msgstr "Servidor não existe" + msgid "Server does not support service discovery" -msgstr "O servidor não tem suporte a bloqueio" - -#, fuzzy +msgstr "O servidor não tem suporte à descoberta de serviços" + msgid "XMPP Service Discovery" -msgstr "Informações da localização de serviços" +msgstr "Descoberta de serviços XMPP" msgid "Allows browsing and registering services." -msgstr "" - -#, fuzzy +msgstr "Permite navegação e serviços de registro." + msgid "" "This plugin is useful for registering with legacy transports or other XMPP " "services." -msgstr "Este plug-in é útil para depurar servidores ou clientes XMPP." +msgstr "" +"Este plug-in é útil para registrar com transportes legados ou outros " +"serviços XMPP." msgid "Buddy is idle" msgstr "O amigo estiver inativo" @@ -13813,14 +13699,13 @@ msgstr "Plug-in de conversa musical para composição colaborativa." #. * 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." msgstr "" -"O plug-in de conversa musical permite que vários usuários trabalhem " -"simultaneamente numa composição musical editando uma partitura comum em " -"tempo real." +"O Plug-in Music Messaging permite a um número de usuários trabalharem " +"simultaneamente num trecho de música editando uma partitura comum em tempo " +"real." #. ---------- "Notify For" ---------- msgid "Notify For" @@ -13939,7 +13824,6 @@ msgid "Highlighted Message Name Color" msgstr "Cor do Nome de Mensagens Realçadas" -#, fuzzy msgid "Typing Notification Color" msgstr "Cor da notificação de digitação" @@ -13972,23 +13856,20 @@ msgid "GTK+ Text Shortcut Theme" msgstr "Tema de atalhos do GTK+" -#, fuzzy msgid "Disable Typing Notification Text" -msgstr "Habilitar notificação de digitação" - -#, fuzzy +msgstr "Desabilitar notificação de digitação" + msgid "GTK+ Theme Control Settings" -msgstr "Controle do tema do GTK+ do Pidgin" - -#, fuzzy +msgstr "Preferências do controle do tema do GTK+" + msgid "Colors" -msgstr "Fechar" +msgstr "Cores" msgid "Fonts" msgstr "Fontes" msgid "Miscellaneous" -msgstr "" +msgstr "Miscelânias" msgid "Gtkrc File Tools" msgstr "Ferramentas do gtkrc" @@ -14073,13 +13954,12 @@ msgstr "Botão de Enviar da Janela de Conversa." #. *< summary -#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for use when no physical keyboard is present." msgstr "" -"Adiciona um botão Enviar na área de entrada da janela de conversação. " -"Idealpara quando nenhum teclado físico está presente." +"Adiciona um botão Enviar na área de entrada da janela de conversação. Ideal " +"para quando nenhum teclado físico está presente." msgid "Duplicate Correction" msgstr "Correção duplicada" @@ -14134,94 +14014,78 @@ "Substitui texto nas mensagens enviadas de acordo com regras definidas pelo " "usuário." -#, fuzzy msgid "Just logged in" -msgstr "Desconectado" - -#, fuzzy +msgstr "Acabou de conectar-se" + msgid "Just logged out" -msgstr "Desconectado" +msgstr "Acabou de desconectar-se" msgid "" "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"Ícone para Contato/\n" +"Ícone para pessoa desconhecida" + msgid "Icon for Chat" -msgstr "Entrar em um bate-papo" - -#, fuzzy +msgstr "Ícone para bate-papo" + msgid "Ignored" -msgstr "Ignorar" - -#, fuzzy +msgstr "Ignorado" + msgid "Founder" -msgstr "Mais alto" - -#, fuzzy +msgstr "Fundador" + msgid "Operator" -msgstr "Opera" +msgstr "Operador" msgid "Half Operator" -msgstr "" - -#, fuzzy +msgstr "Operador parcial" + msgid "Authorization dialog" -msgstr "Autorização concedida" - -#, fuzzy +msgstr "Diálogo de autorização" + msgid "Error dialog" -msgstr "Erro " - -#, fuzzy +msgstr "Diálogo de erro" + msgid "Information dialog" -msgstr "Informações" +msgstr "Diálogo de informações" msgid "Mail dialog" -msgstr "" - -#, fuzzy +msgstr "Diálogo de correio" + msgid "Question dialog" -msgstr "Diálogo de requisição" - -#, fuzzy +msgstr "Diálogo de questão" + msgid "Warning dialog" -msgstr "Nível de alerta" +msgstr "Diálogo de alerta" msgid "What kind of dialog is this?" -msgstr "" - -#, fuzzy +msgstr "Que tipo de diálogo é esse?" + msgid "Status Icons" -msgstr "Status de %s" - -#, fuzzy +msgstr "Ícones de Status" + msgid "Chatroom Emblems" -msgstr "Locale da sala de bate-papo" - -#, fuzzy +msgstr "Emblema de sala de bate-papo" + msgid "Dialog Icons" -msgstr "Alterar Ícone" - -#, fuzzy +msgstr "Ícone de diálogo" + msgid "Pidgin Icon Theme Editor" -msgstr "Controle do tema do GTK+ do Pidgin" - -#, fuzzy +msgstr "Editor de tema de Ícone do Pidgin" + msgid "Contact" -msgstr "Informações do contato" - -#, fuzzy +msgstr "Contato" + msgid "Pidgin Buddylist Theme Editor" -msgstr "Lista de amigos" - -#, fuzzy +msgstr "Editor de tema da Lista de amigos do Pidgin" + msgid "Edit Buddylist Theme" -msgstr "Lista de amigos" +msgstr "Editar tema da Lista de amigos" msgid "Edit Icon Theme" -msgstr "" +msgstr "Editar tema de ícones" #. *< type #. *< ui_requirement @@ -14230,16 +14094,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "Controle do tema do GTK+ do Pidgin" +msgstr "Editor de tema do Pidgin" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "Controle do tema do GTK+ do Pidgin" +msgstr "Editor de tema do Pidgin." #. *< type #. *< ui_requirement @@ -14409,12 +14271,11 @@ msgid "Options specific to Pidgin for Windows." msgstr "Opções específicas do Pidgin para Windows." -#, fuzzy msgid "" "Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr "" -"Fornece opções específicas do Pidgin para Windows, como ancoramento da lista " -"de amigos." +"Fornece opções específicas do Pidgin para Windows, como encaixamento da " +"lista de amigos." msgid "Logged out." msgstr "\"Desconectado." @@ -14453,6 +14314,23 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Este plug-in é útil para depurar servidores ou clientes XMPP." +#~ msgid "Malformed BOSH Connect Server" +#~ msgstr "Servidor de conexão BOSH inválido" + +#~ msgid "Unable to not load SILC key pair" +#~ msgstr "Não foi possível não carregar par de chaves SILC" + +#~ msgid "" +#~ "%s declined your conference invitation to room \"%s\" because \"%s\"." +#~ msgstr "" +#~ "%s rejeitou seu convite para uma conferência na sala \"%s\" porque \"%s\"." + +#~ msgid "Invitation Rejected" +#~ msgstr "Convite rejeitado" + +#~ msgid "_Proxy" +#~ msgstr "_Proxy" + #~ msgid "Cannot open socket" #~ msgstr "Não foi possível abrir socket" @@ -14709,7 +14587,6 @@ #~ msgid "Could not resolve hostname" #~ msgstr "Não foi possível resolver host" -#, fuzzy #~ msgid "Incorrect Password" #~ msgstr "Senha incorreta" @@ -14739,13 +14616,12 @@ #~ msgid "Could not resolve host name" #~ msgstr "Não foi possível resolver host" -#, fuzzy #~ msgid "" #~ "Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support " #~ "was found." #~ msgstr "" -#~ "O servidor requer TLS/SSL para conexão. Nenhum suporte a TLS/SSL foi " -#~ "encontrado." +#~ "Não foi possível conectar-se a %s: o servidor requer TLS/SSL, mas nenhum " +#~ "suporte a TLS/SSL foi encontrado." #~ msgid "Conversation Window Hiding" #~ msgstr "Quando esconder as janelas de conversa" diff -r b4daae0798e3 -r e1cd44c7c7af po/ru.po --- a/po/ru.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/ru.po Sat Jul 25 04:54:36 2009 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: ru\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" +"POT-Creation-Date: 2009-07-12 21:00-0700\n" "PO-Revision-Date: 2008-05-14 15:00+0400\n" "Last-Translator: Антон Самохвалов \n" "Language-Team: \n" @@ -880,10 +880,10 @@ #, fuzzy msgid "Calling ... " -msgstr "Подсчёт..." +msgstr "Вызов..." msgid "Hangup" -msgstr "" +msgstr "Приостановить разговор" #. Number of actions msgid "Accept" @@ -893,25 +893,25 @@ msgstr "Отвергнуть" msgid "Call in progress." -msgstr "" +msgstr "Идёт разговор." msgid "The call has been terminated." -msgstr "" +msgstr "Звонок был прерван." #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s хочет начать звуковой сеанс с вами." #, c-format msgid "%s is trying to start an unsupported media session type with you." -msgstr "" +msgstr "%s пытается начать с вами медиа сеанс неподдерживаемого типа." #, fuzzy msgid "You have rejected the call." msgstr "Вы покинули канал%s%s" msgid "call: Make an audio call." -msgstr "" +msgstr "звонок: Совершите звуковой звонок." msgid "Emails" msgstr "Адреса e-mail" @@ -1106,7 +1106,8 @@ #, fuzzy msgid "You must create an account first before you can create a pounce." -msgstr "Вы должны сперва создать учётную запись, а уж потом создавать правило." +msgstr "" +"Перед тем, как создавать правило, вы должны сперва создать учётную запись." #, c-format msgid "Are you sure you want to delete the pounce on %s for %s?" @@ -1569,22 +1570,25 @@ "\n" "Fetching TinyURL..." msgstr "" +"\n" +"Получение TinyURL..." msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "Только создайте TinyURL для адресов такой длины или большей" msgid "TinyURL (or other) address prefix" -msgstr "" +msgstr "Приставка адреса TinyURL (или другого)" #, fuzzy msgid "TinyURL" -msgstr "Настроить интернет-адрес" +msgstr "TinyURL" msgid "TinyURL plugin" -msgstr "" +msgstr "Модуль TinyURL" msgid "When receiving a message with URL(s), TinyURL for easier copying" msgstr "" +"При получении сообщения с адресами URL, TinyURL для облегчённого копирования" msgid "accounts" msgstr "учётные записи" @@ -1978,6 +1982,10 @@ msgid "Starting transfer of %s from %s" msgstr "Запуск передачи %s от %s" +#, fuzzy, c-format +msgid "Transfer of file %s complete" +msgstr "Передача файла %s завершена" + #, c-format msgid "Transfer of file %s complete" msgstr "Передача файла %s завершена" @@ -2611,11 +2619,12 @@ "WARNING: This plugin is still alpha code and may crash frequently. Use it " "at your own risk!" msgstr "" -"При просмотре журналов этот модуль вставит журналы других IM клиентов. На " -"текущий момент это включает Адиум, MSN Messenger и Триллиан.\n" +"При просмотре журналов этот модуль вставит журналы из других клиентов " +"мгновенных сообщений. На текущий момент это включает Адиум, MSN Messenger, " +"aMSN и Триллиан.\n" "\n" "ПРЕДУПРЕЖДЕНИЕ: Этот модуль пока на стадии разработки и может часто " -"вылетать. Используйте его на свой собственных страх и риск!" +"вылетать. Используйте его на свой собственный страх и риск!" msgid "Mono Plugin Loader" msgstr "Загрузчик модулей Mono" @@ -2707,13 +2716,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "Одноразовая поддержка паспорта" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "Заставить использовать пароли только один раз." #. * description msgid "" @@ -2721,6 +2730,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Позволяет вам поставить за основу для учётных записей, чьи пароли не были " +"сохранены, использоваться только в одном успешном подключении.\n" +"Примечание: Пароль учётной записи не должен быть сохранён для этого." #. *< type #. *< ui_requirement @@ -5053,6 +5065,22 @@ msgid "Non-IM Contacts" msgstr "Не IM-контакты" +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" + +#, fuzzy, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "%s послал вам приглашение к веб-камере, которое ещё не поддерживается." + #, fuzzy, c-format msgid "%s sent you a voice chat invite, which is not yet supported." msgstr "%s послал вам приглашение к веб-камере, которое ещё не поддерживается." @@ -5213,6 +5241,19 @@ msgstr "" "Поддержка SSL необходима для MSN. Установите поддерживаемую библиотеку SSL." +#, fuzzy, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Не могу добавить приятеля %s, потому что имя пользователя неверное. Имена " +"пользователей должны быть правильными адресами эл.почты или начинаться с " +"буквы и содержать только буквы, цифры и пробелы, или содержать только цифры." + +#, fuzzy +msgid "Unable to Add" +msgstr "Не могу Добавить" + msgid "Error retrieving profile" msgstr "Ошибка загрузки профиля" @@ -6629,6 +6670,7 @@ msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "Служба AOL Instant Messenger временно недоступна." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "Версия клиента, которой вы пользуетесь, слишком стара. Обновите до %s" @@ -7037,10 +7079,6 @@ "буквы и содержать только буквы, цифры и пробелы, или содержать только цифры." #, fuzzy -msgid "Unable to Add" -msgstr "Не могу Добавить" - -#, fuzzy msgid "Unable to Retrieve Buddy List" msgstr "Не могу Загрузить список приятелей" @@ -10404,7 +10442,8 @@ msgid "Use this buddy _icon for this account:" msgstr "Использовать этот _значок собеседника для этой учётной записи:" -msgid "_Advanced" +#, fuzzy +msgid "Ad_vanced" msgstr "_Дополнительно" msgid "Use GNOME Proxy Settings" @@ -10469,7 +10508,7 @@ msgstr "Создать _эту новую учётную запись на сервере" #, fuzzy -msgid "_Proxy" +msgid "P_roxy" msgstr "Прокси" msgid "Enabled" @@ -12450,7 +12489,7 @@ #. Translators may want to transliterate the name. #. It is not to be translated. msgid "Pidgin" -msgstr "Пиджин" +msgstr "Pidgin" #, c-format msgid "Exiting because another libpurple client is already running.\n" @@ -13405,9 +13444,25 @@ msgid "_Copy Email Address" msgstr "_Скопировать адрес email" +#, fuzzy +msgid "_Open File" +msgstr "Открыть файл..." + +#, fuzzy +msgid "Open _Containing Directory" +msgstr "Каталог журнала" + msgid "Save File" msgstr "Сохранить файл" +#, fuzzy +msgid "_Play Sound" +msgstr "Воспроизвести звук" + +#, fuzzy +msgid "_Save File" +msgstr "Сохранить файл" + msgid "Select color" msgstr "Выбрать цвет" @@ -14610,6 +14665,10 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Этот модуль полезен для отладки XMPP серверов или клиентов." +#, fuzzy +#~ msgid "_Proxy" +#~ msgstr "Прокси" + #~ msgid "Cannot open socket" #~ msgstr "Не удаётся открыть сокет" diff -r b4daae0798e3 -r e1cd44c7c7af po/sv.po --- a/po/sv.po Fri Jul 24 01:42:13 2009 +0000 +++ b/po/sv.po Sat Jul 25 04:54:36 2009 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-06 15:04-0700\n" -"PO-Revision-Date: 2009-02-25 23:14+0100\n" +"POT-Creation-Date: 2009-07-15 18:36+0200\n" +"PO-Revision-Date: 2009-07-15 18:36+0100\n" "Last-Translator: Peter Hjalmarsson \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -863,12 +863,11 @@ msgid "System Log" msgstr "Systemlogg" -#, fuzzy msgid "Calling ... " -msgstr "Beräknar..." +msgstr "Ringer..." msgid "Hangup" -msgstr "" +msgstr "La på" #. Number of actions msgid "Accept" @@ -878,25 +877,24 @@ msgstr "Avslå" msgid "Call in progress." -msgstr "" +msgstr "Samtal pågår." msgid "The call has been terminated." -msgstr "" +msgstr "Samtalet avslutat." #, c-format msgid "%s wishes to start an audio session with you." -msgstr "" +msgstr "%s önskar påbörja en ljudsession med dig." #, c-format msgid "%s is trying to start an unsupported media session type with you." -msgstr "" - -#, fuzzy +msgstr "%s försöker påbörja en ej stödd mediasession med dig." + msgid "You have rejected the call." -msgstr "Du har lämnat kanalen%s%s" +msgstr "Du har nekat samtalet." msgid "call: Make an audio call." -msgstr "" +msgstr "call: Påbörja ett ljudsamtal" msgid "Emails" msgstr "Mejl" @@ -1552,22 +1550,23 @@ "\n" "Fetching TinyURL..." msgstr "" +"\n" +"Hämtar TinyURL..." msgid "Only create TinyURL for urls of this length or greater" -msgstr "" +msgstr "Skapa enbart TinyURL om url:en är av denna längd eller större" msgid "TinyURL (or other) address prefix" -msgstr "" - -#, fuzzy +msgstr "TinyURL (eller annan) adressprefix" + msgid "TinyURL" -msgstr "LåtURL" +msgstr "TinyURL" msgid "TinyURL plugin" -msgstr "" +msgstr "TinyURL modul" msgid "When receiving a message with URL(s), TinyURL for easier copying" -msgstr "" +msgstr "När du får en/flera URL/URLer, TinyURL för att lättare hantering" msgid "accounts" msgstr "konton" @@ -1772,7 +1771,6 @@ msgstr "+++ %s har kopplat ifrån" #. Unknown error -#. Unknown error! msgid "Unknown error" msgstr "Okänt fel" @@ -1819,9 +1817,8 @@ msgid "%s left the room (%s)." msgstr "%s lämnade rummet (%s)." -#, fuzzy msgid "Invite to chat" -msgstr "Bjud in till konferens" +msgstr "Bjud in till chatt" #. Put our happy label in it. msgid "" @@ -1964,6 +1961,10 @@ msgstr "Inleder filöverföring av %s från %s" #, c-format +msgid "Transfer of file %s complete" +msgstr "Överföringen av filen %s är färdig" + +#, c-format msgid "Transfer of file %s complete" msgstr "Överföringen av filen %s är färdig" @@ -2160,9 +2161,8 @@ msgid "(%s) %s : %s\n" msgstr "(%s) %s : %s\n" -#, fuzzy msgid "Error creating conference." -msgstr "Fel vid skapandet av anslutning" +msgstr "Fel vid skapandet av konferens." #, c-format msgid "You are using %s, but this plugin requires %s." @@ -2564,7 +2564,6 @@ msgstr "Inkludera andra IM-klienters loggfiler i loggfilsvisaren." #. * 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" @@ -2572,8 +2571,8 @@ "WARNING: This plugin is still alpha code and may crash frequently. Use it " "at your own risk!" msgstr "" -"Vid visning av loggfiler inkluderar denna modul loggar från andra IM-" -"klienter. För närvarande inkluderar detta Adium, MSN Messenger, och " +"Vid visning av loggfiler kommer denna modul inkludera loggar från andra IM-" +"klienter. För närvarande inkluderar detta Adium, MSN Messenger, aMSN, och " "Trillian.\n" "\n" "VARNING: Denna modul är fortfarande alpha-kod och kan krasha ofta. Använd på " @@ -2623,7 +2622,6 @@ msgstr "" "Spara meddelandet skickat till en frånkopplad användare som en notifiering" -#, fuzzy msgid "" "The rest of the messages will be saved as pounces. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." @@ -2658,9 +2656,8 @@ msgid "Do not ask. Always save in pounce." msgstr "Fråga inte. Spara alltid som notifiering." -#, fuzzy msgid "One Time Password" -msgstr "Ange lösenordet" +msgstr "Engångslösenord" #. *< type #. *< ui_requirement @@ -2669,13 +2666,13 @@ #. *< priority #. *< id msgid "One Time Password Support" -msgstr "" +msgstr "Support för Engångslösenord" #. *< name #. *< version #. * summary msgid "Enforce that passwords are used only once." -msgstr "" +msgstr "Tvinga att lösenordet enbart används en gång." #. * description msgid "" @@ -2683,6 +2680,9 @@ "are only used in a single successful connection.\n" "Note: The account password must not be saved for this to work." msgstr "" +"Tillåter dig att välja per konto om lösenorden som inte sparas bara ska " +"användas till en lyckad anslutning.\n" +"Notering: Kontolösenordet får inte sparas om dettta ska fungera." #. *< type #. *< ui_requirement @@ -2878,17 +2878,15 @@ "Kunde inte finna en installation av ActiveTCL. Om du tänker använda TCL-" "modulen måste du installera ActiveTCL från http://www.activestate.com\n" -#, fuzzy msgid "" "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin." "im/BonjourWindows for more information." msgstr "" -"Apples Bonjour För Windows hittades inte, läs FAQen: http://d.pidgin.im/" +"Kunde inte hitta Apples \"Bonjour För Windows\", läs på http://d.pidgin.im/" "BonjourWindows för mer information" -#, fuzzy msgid "Unable to listen for incoming IM connections" -msgstr "Kan inte lyssna efter inkommande IM anslutningar\n" +msgstr "Kan inte lyssna efter inkommande IM anslutningar" msgid "" "Unable to establish connection with the local mDNS server. Is it running?" @@ -2939,21 +2937,17 @@ msgid "Unable to send the message, the conversation couldn't be started." msgstr "Kan inte skicka meddelandet, konversationen kunde inte startas." -#, fuzzy, c-format +#, c-format msgid "Unable to create socket: %s" -msgstr "" -"Kan inte skapa uttag:\n" -"%s" - -#, fuzzy, c-format +msgstr "Kan inte skapa uttag %s" + +#, c-format msgid "Unable to bind socket to port: %s" -msgstr "Kunde inte binda uttag till port" - -#, fuzzy, c-format +msgstr "Kunde inte binda uttag till port: %s" + +#, c-format msgid "Unable to listen on socket: %s" -msgstr "" -"Kan inte skapa uttag:\n" -"%s" +msgstr "Kan intelyssna på uttag: %s" msgid "Error communicating with local mDNSResponder." msgstr "Fel vid kommunikation med den lokala mDNSRespondern." @@ -3005,17 +2999,14 @@ msgid "Load buddylist from file..." msgstr "Läs in kompislista från fil..." -#, fuzzy msgid "You must fill in all registration fields" -msgstr "Fyll i registreringsfälten." - -#, fuzzy +msgstr "Du måste fylla i alla registreringsfälten" + msgid "Passwords do not match" -msgstr "Lösenorden stämmer inte överens." - -#, fuzzy +msgstr "Lösenorden stämmer inte överens" + msgid "Unable to register new account. An unknown error occurred." -msgstr "Kunde inte registrera nytt konto. Ett fel uppstod.\n" +msgstr "Kunde inte registrera nytt konto. Ett okänt fel uppstod." msgid "New Gadu-Gadu Account Registered" msgstr "Nytt Gadu-gadu-konto registrerat" @@ -3030,11 +3021,10 @@ msgstr "Lösenord (igen)" msgid "Enter captcha text" -msgstr "" - -#, fuzzy +msgstr "Ange captcha-text" + msgid "Captcha" -msgstr "Captcha-bild" +msgstr "Captcha" msgid "Register New Gadu-Gadu Account" msgstr "Registrera nytt Gadu-Gadu-konto" @@ -3173,9 +3163,9 @@ msgid "Chat _name:" msgstr "Chatt_namn:" -#, fuzzy, c-format +#, c-format msgid "Unable to resolve hostname '%s': %s" -msgstr "Kan inte ansluta till servern." +msgstr "Kan inte slå upp värdnamn '%s': %s" #. 1. connect to server #. connect to the server @@ -3188,9 +3178,8 @@ msgid "This chat name is already in use" msgstr "Det chattnamnet används redan" -#, fuzzy msgid "Not connected to the server" -msgstr "Inte ansluten till servern." +msgstr "Inte ansluten till servern" msgid "Find buddies..." msgstr "Hitta kompisar..." @@ -3231,9 +3220,8 @@ msgid "Gadu-Gadu User" msgstr "Gadu-Gadu-användare" -#, fuzzy msgid "GG server" -msgstr "Hämtar server" +msgstr "GG server" #, c-format msgid "Unknown command: %s" @@ -3249,9 +3237,8 @@ msgid "File Transfer Failed" msgstr "Filöverföringen misslyckades" -#, fuzzy msgid "Unable to open a listening port." -msgstr "Kunde inte öppna en lyssnande port." +msgstr "Kunde inte öppna en lyssnningsport." msgid "Error displaying MOTD" msgstr "Fel vid visning av MOTD" @@ -3273,11 +3260,9 @@ #. #. TODO: what to do here - do we really have to disconnect? #. TODO: do we really want to disconnect on a failure to write? -#, fuzzy, c-format +#, c-format msgid "Lost connection with server: %s" -msgstr "" -"Tappade anslutningen med servern:\n" -"%s" +msgstr "Tappade anslutningen med servern: %s" msgid "View MOTD" msgstr "Visa MOTD" @@ -3288,9 +3273,8 @@ msgid "_Password:" msgstr "_Lösenord:" -#, fuzzy msgid "IRC nick and server may not contain whitespace" -msgstr "IRC-nickar får inte innehålla blanksteg" +msgstr "IRC-nsmeknamn och server får inte innehålla blanksteg" msgid "SSL support unavailable" msgstr "SSL-stöd ej tillgängligt" @@ -3299,13 +3283,13 @@ msgstr "Kan inte ansluta" #. this is a regular connect, error out -#, fuzzy, c-format +#, c-format msgid "Unable to connect: %s" -msgstr "Kan inte ansluta till %s" - -#, fuzzy, c-format +msgstr "Kan inte ansluta: %s" + +#, c-format msgid "Server closed the connection" -msgstr "Servern stängde konversationen." +msgstr "Servern stängde anslutningen" msgid "Users" msgstr "Användare" @@ -3489,13 +3473,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 "Det chattnamnet används redan" - -#, fuzzy +msgstr "Smeknamnet \"%s\" används redan." + msgid "Nickname in use" -msgstr "Smeknamn" +msgstr "Smeknamnet används" msgid "Cannot change nick" msgstr "Kan inte ändra nick" @@ -3740,11 +3723,9 @@ msgid "execute" msgstr "utför" -#, fuzzy msgid "Server requires TLS/SSL, but no TLS/SSL support was found." -msgstr "Servern kräver TLS/SSL vid inloggning. Hittade inget stöd för TLS/SSL." - -#, fuzzy +msgstr "Servern kräver TLS/SSL, men inget stöd för TLS/SSL kunde hittades." + msgid "You require encryption, but no TLS/SSL support was found." msgstr "Du kräver kryptering, men inget stöd för TLS/SSL hittades." @@ -3762,13 +3743,11 @@ msgid "Plaintext Authentication" msgstr "Klartextautentisering" -#, fuzzy msgid "SASL authentication failed" -msgstr "Autentisering misslyckades" - -#, fuzzy +msgstr "SASL Autentisering misslyckades" + msgid "Invalid response from server" -msgstr "Ogiltigt svar från servern." +msgstr "Ogiltigt svar från server" msgid "Server does not use any supported authentication method" msgstr "Servern använder inga autentiseringsmetoder som stöds" @@ -3779,36 +3758,28 @@ msgid "Invalid challenge from server" msgstr "Ogiltigt utmaning från servern" -#, fuzzy, c-format +#, c-format msgid "SASL error: %s" -msgstr "SASL fel" +msgstr "SASL fel: %s" msgid "The BOSH connection manager terminated your session." -msgstr "" - -#, fuzzy +msgstr "BOSH anslutningshanterare avslutade din session." + msgid "No session ID given" -msgstr "Ingen motivering angavs." - -#, fuzzy +msgstr "Inget sessions ID angavs" + msgid "Unsupported version of BOSH protocol" -msgstr "Ej stöd version" - -#, fuzzy +msgstr "Ej stödd version av BOSH-protokollet" + msgid "Unable to establish a connection with the server" -msgstr "" -"Kunde inte skapa en anslutning med servern:\n" -"%s" - -#, fuzzy, c-format +msgstr "Kunde inte skapa en anslutning med servern" + +#, c-format msgid "Unable to establish a connection with the server: %s" -msgstr "" -"Kunde inte skapa en anslutning med servern:\n" -"%s" - -#, fuzzy +msgstr "Kunde inte skapa en anslutning med servern: %s" + msgid "Unable to establish SSL connection" -msgstr "Kan inte skapa anslutning" +msgstr "Kan inte skapa SSL-anslutning" msgid "Full Name" msgstr "Fullständigt namn" @@ -3879,9 +3850,8 @@ msgid "Operating System" msgstr "Operativsystem" -#, fuzzy msgid "Local Time" -msgstr "Lokal fil:" +msgstr "Lokal tid" msgid "Priority" msgstr "Prioritet" @@ -3896,11 +3866,10 @@ #, c-format msgid "%s ago" -msgstr "" - -#, fuzzy +msgstr "%s sedan" + msgid "Logged Off" -msgstr "Ansluten" +msgstr "Frånkopplad" msgid "Middle Name" msgstr "Andranamn" @@ -4069,26 +4038,24 @@ msgid "Find Rooms" msgstr "Sök rum" -#, fuzzy msgid "Affiliations:" -msgstr "Alias:" - -#, fuzzy +msgstr "Anknytningar:" + msgid "No users found" -msgstr "Inga matchande användare funna" - -#, fuzzy +msgstr "Inga användare funna" + msgid "Roles:" -msgstr "Roll" - -#, fuzzy +msgstr "Roller:" + msgid "Ping timed out" -msgstr "Ping överskred en tidsgräns" +msgstr "Ping överskred sin tidsgräns" msgid "" "Unable to find alternative XMPP connection methods after failing to connect " "directly." msgstr "" +"Kunde inte hitta en alternativ XMPP-anslutningsmetod efter direktanslutning " +"misslyckades." msgid "Invalid XMPP ID" msgstr "Ogiltigt XMPP ID" @@ -4096,9 +4063,8 @@ msgid "Invalid XMPP ID. Domain must be set." msgstr "Ogiltigt XMPP IP. Domän måste anges." -#, fuzzy msgid "Malformed BOSH URL" -msgstr "Kunde inte ansluta till servern." +msgstr "Felutformad BOSH-URAL" #, c-format msgid "Registration of %s@%s successful" @@ -4166,9 +4132,8 @@ msgid "Change Registration" msgstr "Ändra registrering" -#, fuzzy msgid "Malformed BOSH Connect Server" -msgstr "Kunde inte ansluta till servern." +msgstr "Felutformad BOSH anslutningsserver" msgid "Error unregistering account" msgstr "Fel vid avregistrering av konto" @@ -4455,19 +4420,21 @@ msgid "Unable to ping user %s" msgstr "Kan inte pinga användaren %s" -#, fuzzy, c-format +#, c-format msgid "Unable to buzz, because there is nothing known about %s." -msgstr "Kunde inte surra eftersom det inte finns något känt om användaren %s." - -#, fuzzy, c-format +msgstr "Kunde inte surra eftersom det inte finns något känt om %s." + +#, c-format msgid "Unable to buzz, because %s might be offline." -msgstr "Kunde inte surra eftersom användaren %s kanske är frånkopplad." - -#, fuzzy, c-format +msgstr "Kunde inte surra eftersom %s kanske är frånkopplad." + +#, c-format msgid "" "Unable to buzz, because %s does not support it or does not wish to receive " "buzzes now." -msgstr "Kan inte surra, användaren %s stödjer inte det." +msgstr "" +"Kan inte surra eftersom %s stödjer inte det eller önskar ta emot surr just " +"nu." #, c-format msgid "Buzzing %s..." @@ -4482,35 +4449,35 @@ msgid "%s has buzzed you!" msgstr "%s har surrat dig!" -#, fuzzy, c-format +#, c-format msgid "Unable to initiate media with %s: invalid JID" -msgstr "Kan inte skicka filen till %s, ogiltig JID" - -#, fuzzy, c-format +msgstr "Kan inte påbörja media med %s: ogiltig JID" + +#, c-format msgid "Unable to initiate media with %s: user is not online" -msgstr "Kan inte skicka filen till %s, användaren är inte ansluten" - -#, fuzzy, c-format +msgstr "Kan inte påbörja media med %s: användaren är inte ansluten" + +#, c-format msgid "Unable to initiate media with %s: not subscribed to user presence" msgstr "" -"Kan inte skicka filen till %s, prenumererar inte på användartillgänglighet" - -#, fuzzy +"Kan inte påbörja media med %s: prenumererar inte på användartillgänglighet" + msgid "Media Initiation Failed" -msgstr "Registreringen misslyckades" - -#, fuzzy, c-format +msgstr "Initiering av media misslyckades" + +#, c-format msgid "" "Please select the resource of %s with which you would like to start a media " "session." -msgstr "Var god välj vilken tillflykt för %s du vill sända filen till" +msgstr "" +"Var god välj vilken tillflykt för %s med vilken du vill påbörja en " +"mediasession." msgid "Select a Resource" msgstr "Välj en tillflykt" -#, fuzzy msgid "Initiate Media" -msgstr "Starta _chatt" +msgstr "Påbörja Media" msgid "config: Configure a chat room." msgstr "config: Konfigurera ett chattrum." @@ -4530,21 +4497,19 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <användare> [anledning]: Bannlys en användare från rummet." -#, 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 <användare> <ägare|admin|medlem|utstött|ingen>: Ange " -"en användares koppling till rummet." - -#, fuzzy +"affiliate <ägare|admin|medlem|utstött|ingen>: [nick1] [nick2] ...: " +"Hämta eller ange användarnas anknytning till rummet." + msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with an role or set users' role with the room." msgstr "" -"role <användare> <moderator|deltagare|besökare|inget>: Ange en " -"användares roll i rummet." +"role <moderator|deltagare|besökare|inget>: [nick1] [nick2] ...: Hämta " +"eller ange användarnas roll i rummet." msgid "invite <user> [message]: Invite a user to the room." msgstr "" @@ -4609,7 +4574,7 @@ msgstr "Filetransports proxies" msgid "BOSH URL" -msgstr "" +msgstr "BOSH URL" #. this should probably be part of global smiley theme settings later on, #. shared with MSN @@ -4673,29 +4638,25 @@ msgid "_Accept Defaults" msgstr "_Acceptera förval" -#, fuzzy msgid "No reason" -msgstr "Ingen motivering angavs." - -#, fuzzy, c-format +msgstr "Ingen anledning" + +#, c-format msgid "You have been kicked: (%s)" -msgstr "Du har sparkats ut av %s: (%s)" - -#, fuzzy, c-format +msgstr "Du har sparkats ut: (%s)" + +#, c-format msgid "Kicked (%s)" -msgstr "Utsparkad av %s (%s)" - -#, fuzzy +msgstr "Utsparkad (%s)" + msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Ett fel uppstod när filen öppnades." - -#, fuzzy +msgstr "" + msgid "Transfer was closed." -msgstr "Filöverföringen misslyckades" - -#, fuzzy +msgstr "Överföringen stängdes inte." + msgid "Failed to open the file" -msgstr "Kunde inte öppna filen '%s': %s" +msgstr "Kunde inte öppna filen" msgid "Failed to open in-band bytestream" msgstr "" @@ -4766,7 +4727,7 @@ msgstr "Kunde inte lägga till \"%s\"." msgid "Buddy Add error" -msgstr "" +msgstr "Fel vid tillläggning av kompis" msgid "The username specified does not exist." msgstr "Den angivna användarnamnet finns inte." @@ -5023,9 +4984,29 @@ msgid "Non-IM Contacts" msgstr "Icke-IM kontakter" -#, fuzzy, c-format +#, c-format +msgid "%s sent a wink. Click here to play it" +msgstr "" +"%s skickade en vink. Klicka här för att spela upp " +"den" + +#, c-format +msgid "%s sent a wink, but it could not be saved" +msgstr "%s skickade en vink, men den kunde inte sparas" + +#, c-format +msgid "%s sent a voice clip. Click here to play it" +msgstr "" +"%s skickade ett röstmeddelande. Klicka här för att " +"spela upp det" + +#, c-format +msgid "%s sent a voice clip, but it could not be saved" +msgstr "%s skickade ett röstmeddelande, men det kunde inte sparas" + +#, c-format msgid "%s sent you a voice chat invite, which is not yet supported." -msgstr "%s har skickat dig en webbkamerainbjudan, vilket ännu inte stöds." +msgstr "%s har skickat dig en inbjudan till en röstchatt vilken inte stöds än." msgid "Nudge" msgstr "Vibba" @@ -5179,6 +5160,29 @@ msgstr "" "SSL-stöd krävs för att använda MSN. Installera ett SSL-bibliotek som stöds." +#, c-format +msgid "" +"Unable to add the buddy %s because the username is invalid. Usernames must " +"be a valid email address." +msgstr "" +"Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt. " +"Användarnamnet måste vara en giltig epost-adress." + +msgid "Unable to Add" +msgstr "Kunde inte lägga till" + +msgid "Authorization Request Message:" +msgstr "Meddelande om auktoriseringsbegäran:" + +msgid "Please authorize me!" +msgstr "Snälla auktorisera mig!" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "_OK" + msgid "Error retrieving profile" msgstr "Fel vid hämtning av profil" @@ -5371,13 +5375,14 @@ msgid "%s just sent you a Nudge!" msgstr "%s skickade just en vibb!" -#, fuzzy, c-format +#, c-format msgid "Unknown error (%d): %s" -msgstr "Okänt fel (%d)" +msgstr "Okänt fel (%d): %s" msgid "Unable to add user" msgstr "Kan inte lägga till användaren" +#. Unknown error! #, c-format msgid "Unknown error (%d)" msgstr "Okänt fel (%d)" @@ -5449,24 +5454,20 @@ "Anslutningsfel från %s servern:\n" "%s" -#, fuzzy msgid "Our protocol is not supported by the server" -msgstr "Vårt protokoll stöds inte av servern." - -#, fuzzy +msgstr "Vårt protokoll stöds inte av servern" + msgid "Error parsing HTTP" -msgstr "Fel vid avkodning av HTTP." - -#, fuzzy +msgstr "Fel vid avkodning av HTTP" + msgid "You have signed on from another location" -msgstr "Du har loggat in från en annan plats." +msgstr "Du har loggat in från en annan plats" msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "MSN-sernvern är temporärt otillgänglig. Var god försök igen senare." -#, fuzzy msgid "The MSN servers are going down temporarily" -msgstr "MSN-servern går ner temporärt." +msgstr "MSN-servern går ner temporärt" #, c-format msgid "Unable to authenticate: %s" @@ -5495,9 +5496,11 @@ msgid "Retrieving buddy list" msgstr "Tar emot kompislista" -#, fuzzy, c-format +#, c-format msgid "%s requests to view your webcam, but this request is not yet supported." -msgstr "%s har skickat dig en webbkamerainbjudan, vilket ännu inte stöds." +msgstr "" +"%s har frågar efter att få se fin webbkamera, men denna förfrågan stöds inte " +"än." #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." @@ -5692,14 +5695,14 @@ msgid "Protocol error, code %d: %s" msgstr "Protokollfel, gav felkod %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 Ditt lösenord är %d tecken, längre än den förväntade max-gränsen på %d " -"för MySpaceIM. Var vänlig förkorta ditt lösenord på följande adress http://" +"%s Ditt lösenord är %zu tecken vilket är längre än den förväntade max-" +"gränsen på %d. Var vänlig förkorta ditt lösenord på följande adress http://" "profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword " "och försök sedan igen." @@ -5804,6 +5807,9 @@ "visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " "to set your username." msgstr "" +"Ett fel uppstod vid försök att ange ditt användarnamn. Försök igen, eller gå " +"till http://editprofile.myspace.com/index.cfm?fuseaction=profile.username " +"för att ange ditt användarnamn." msgid "MySpaceIM - Username Available" msgstr "MySpaceIM - Användarnamnet är tillgänglig" @@ -5958,15 +5964,15 @@ #. * connotation. It is generally used in a playful tone #. * with friends. msgid "Raspberry" -msgstr "" - -#, fuzzy, c-format +msgstr "Pruttljud" + +#, c-format msgid "%s has raspberried you!" -msgstr "%s har surrat dig!" +msgstr "%s har gjort pruttljud mot dig!" #, c-format msgid "Raspberrying %s..." -msgstr "" +msgstr "Gör pruttljud mot %s..." msgid "Required parameters not passed in" msgstr "Nödvändiga parametrar skickades inte" @@ -6064,9 +6070,9 @@ msgid "Unknown error: 0x%X" msgstr "Okänt fel: 0x%X" -#, fuzzy, c-format +#, c-format msgid "Unable to login: %s" -msgstr "Kunde inte logga in." +msgstr "Kunde inte logga in: %s" #, c-format msgid "Unable to send message. Could not get details for user (%s)." @@ -6198,12 +6204,11 @@ "%s appears to be offline and did not receive the message that you just sent." msgstr "%s verkar vara frånkopplad och fick inte meddelandet du just skickade." -#, fuzzy msgid "" "Unable to connect to server. Please enter the address of the server to which " "you wish to connect." msgstr "" -"Kunde inte ansluta till servern. Var god ange serveradressen som du vill " +"Kunde inte ansluta till servern. Var god ange adressen till servern du vill " "ansluta till." msgid "This conference has been closed. No more messages can be sent." @@ -6228,9 +6233,8 @@ msgid "Server port" msgstr "Serverport" -#, fuzzy msgid "Received unexpected response from " -msgstr "Mottog oväntat HTTP-svar från servern." +msgstr "Mottog oväntat svar från" #. username connecting too frequently msgid "" @@ -6240,12 +6244,12 @@ "Du har anslutit och kopplat ifrån för många gånger. Vänta tio minuter och " "prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre." -#, fuzzy, c-format +#, c-format msgid "Error requesting " -msgstr "Problem att efterfråga inloggningsmarkör" +msgstr "Fel vid efterfrågan av" msgid "AOL does not allow your screen name to authenticate here" -msgstr "" +msgstr "AOL tillåter inte ditt skärmnamn att autentisera här" msgid "Could not join chat room" msgstr "Kunde inte ansluta till chatrummet" @@ -6253,9 +6257,8 @@ msgid "Invalid chat room name" msgstr "Ogiltigt namn på chatrum" -#, fuzzy msgid "Received invalid data on connection with server" -msgstr "Tog emot felaktig data vid anslutning till server." +msgstr "Tog emot felaktig data vid anslutning till server" #. *< type #. *< ui_requirement @@ -6303,7 +6306,6 @@ msgid "Received invalid data on connection with remote user." msgstr "Tog emot felaktig data över anslutningen till motparten." -#, fuzzy msgid "Unable to establish a connection with the remote user." msgstr "Kunde inte skapa en anslutning till motparten." @@ -6505,15 +6507,13 @@ msgstr "Kompiskommentar" # Osäker!!! -#, fuzzy, c-format +#, c-format msgid "Unable to connect to authentication server: %s" -msgstr "" -"Kunde inte ansluta till autentiseringsserver:\n" -"%s" - -#, fuzzy, c-format +msgstr "Kunde inte ansluta till autentiseringsserver: %s" + +#, c-format msgid "Unable to connect to BOS server: %s" -msgstr "Kan inte ansluta till servern." +msgstr "Kan inte ansluta till BOS server: %s" msgid "Username sent" msgstr "Användarnamnet är skickat" @@ -6525,16 +6525,16 @@ msgid "Finalizing connection" msgstr "Avsluta anslutning" -#, fuzzy, c-format +#, c-format msgid "" "Unable to sign on as %s because the username is invalid. Usernames must be " "a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"Kan inte logga in: Kunde inte ansluta som %s eftersom användarnamnet är " -"ogiltigt. Användarnamnet måste vara en giltig mejladress eller starta med " -"en bokstav och får endast innehålla bokstäver, nummer och mellanslag, eller " -"enbart innehålla nummer." +"Kan inte logga in som %s eftersom användarnamnet är ogiltigt. " +"Användarnamnet måste vara en giltig epost-adress eller starta med en bokstav " +"och får endast innehålla bokstäver, nummer och mellanslag, eller enbart " +"innehålla nummer." #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." @@ -6554,35 +6554,32 @@ #. Unregistered username #. uid is not exist #. the username does not exist -#, fuzzy msgid "Username does not exist" -msgstr "Användaren finns inte" +msgstr "Användarnamn finns inte" #. Suspended account -#, fuzzy msgid "Your account is currently suspended" -msgstr "Ditt konto är avstängt för tillfället." +msgstr "Ditt konto är avstängt för tillfället" #. service temporarily unavailable msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "Tjänsten är tillfälligt onåbar." +#. client too old #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "Versionen av klienten du använder är för gammal. Uppgradera på %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 "" -"Du har anslutit och kopplat ifrån för många gånger. Vänta tio minuter och " -"prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre." - -#, fuzzy +"Du har anslutit och kopplat ifrån för ofta. Vänta tio minuter och prova " +"igen. Om du fortsätter att försöka kommer du att få vänta ännu längre." + msgid "The SecurID key entered is invalid" -msgstr "SecurID-nyckeln som är angiven är ogiltig." +msgstr "SecurID-nyckeln som angavs är ogiltig" msgid "Enter SecurID" msgstr "Ange SecurID" @@ -6590,12 +6587,6 @@ msgid "Enter the 6 digit number from the digital display." msgstr "Slå in de 6 siffrorna från den digitala skärmen." -#. * -#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. -#. -msgid "_OK" -msgstr "_OK" - msgid "Password sent" msgstr "Lösenord skickat" @@ -6605,12 +6596,6 @@ msgid "Please authorize me so I can add you to my buddy list." msgstr "Snälla godkänn mig så jag kan lägga till dig till min kompislista." -msgid "Authorization Request Message:" -msgstr "Meddelande om auktoriseringsbegäran:" - -msgid "Please authorize me!" -msgstr "Snälla auktorisera mig!" - msgid "No reason given." msgstr "Ingen motivering angiven." @@ -6941,20 +6926,17 @@ msgid "Away message too long." msgstr "Frånvaromeddelandet är för långt." -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " "be a valid email address, or start with a letter and contain only letters, " "numbers and spaces, or contain only numbers." msgstr "" -"Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt. " -"Användarnamnet måste antingen vara en giltig mejladress, börja med en " +"Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt. " +"Användarnamnet måste antingen vara en giltig epost-adress, börja med en " "bokstav och endast innehålla bokstäver, siffror och mellanslag eller bara " "innehålla siffror." -msgid "Unable to Add" -msgstr "Kunde inte lägga till" - msgid "Unable to Retrieve Buddy List" msgstr "Kunde inte hämta kompislista" @@ -6969,7 +6951,7 @@ msgid "Orphans" msgstr "Föräldralösa" -#, fuzzy, c-format +#, c-format msgid "" "Unable to add the buddy %s because you have too many buddies in your buddy " "list. Please remove one and try again." @@ -6980,7 +6962,7 @@ msgid "(no name)" msgstr "(inget namn)" -#, fuzzy, c-format +#, c-format msgid "Unable to add the buddy %s for an unknown reason." msgstr "Kunde inte lägga till kompisen %s av okänd anledning." @@ -7145,9 +7127,8 @@ msgid "Search for Buddy by Information" msgstr "Sök efter kompis via information" -#, fuzzy msgid "Use clientLogin" -msgstr "Användaren är inte inloggad" +msgstr "Använd klientLogin" msgid "" "Always use AIM/ICQ proxy server for\n" @@ -7345,30 +7326,26 @@ msgstr "Notering" #. callback -#, fuzzy msgid "Buddy Memo" -msgstr "Ändra Kompismemo" +msgstr "Kompismemo" msgid "Change his/her memo as you like" -msgstr "" - -#, fuzzy +msgstr "Ändra hans/hennes memo som du vill" + msgid "_Modify" -msgstr "Ändra" - -#, fuzzy +msgstr "_Ändra" + msgid "Memo Modify" -msgstr "Ändra" - -#, fuzzy +msgstr "Ändra Memo" + msgid "Server says:" -msgstr "Servern upptagen" +msgstr "Servern säger:" msgid "Your request was accepted." -msgstr "" +msgstr "Din förfrågan accepterades." msgid "Your request was rejected." -msgstr "" +msgstr "Din förfrågan avvisades." #, c-format msgid "%u requires verification" @@ -7683,7 +7660,7 @@ msgstr "

Nogräknade testare:
\n" msgid "and more, please let me know... thank you!))" -msgstr "" +msgstr "och fler, snälla berätta för mig... Tack!))" msgid "

And, all the boys in the backroom...
\n" msgstr "

Och alla pojkarna i bakrummet...
\n" @@ -7759,7 +7736,6 @@ msgid "Update interval (seconds)" msgstr "Uppdateringsintervall (seconds)" -#, fuzzy msgid "Unable to decrypt server reply" msgstr "Kan inte dekryptera serversvaret" @@ -7827,9 +7803,8 @@ msgid "Requesting token" msgstr "Efterfrågar polett" -#, fuzzy msgid "Unable to resolve hostname" -msgstr "Kan inte ansluta till servern." +msgstr "Kunde ej slå upp värdnamnet" msgid "Invalid server or port" msgstr "Ogiltig server eller port" @@ -7882,9 +7857,8 @@ msgid "QQ Qun Command" msgstr "QQ Qun Kommand" -#, fuzzy msgid "Unable to decrypt login reply" -msgstr "Kan inte avkryptera inloggningssvaret" +msgstr "Kunde inte avkryptera inloggningssvaret" msgid "Unknown LOGIN CMD" msgstr "Okänd LOGIN CMD" @@ -8865,7 +8839,6 @@ msgid "Disconnected by server" msgstr "Frånkopplad av server" -#, fuzzy msgid "Error connecting to SILC Server" msgstr "Fel vid anslutning till SILC-server" @@ -8881,7 +8854,6 @@ msgid "Performing key exchange" msgstr "Utför nyckelutbyte" -#, fuzzy msgid "Unable to load SILC key pair" msgstr "Kunde inte ladda SILC nyckelpar" @@ -8889,16 +8861,14 @@ msgid "Connecting to SILC Server" msgstr "Ansluter till SILC-server" -#, fuzzy msgid "Unable to not load SILC key pair" msgstr "Kunde inte ladda SILC nyckelpar" msgid "Out of memory" msgstr "Slut på minne" -#, fuzzy msgid "Unable to initialize SILC protocol" -msgstr "Kan inte inleda SILC-klientanslutning" +msgstr "Kan inte initiera SILC-protokollet" msgid "Error loading SILC key pair" msgstr "Fel vid inläsning av SILC-nyckelpar" @@ -9194,9 +9164,8 @@ msgid "Creating SILC key pair..." msgstr "Skapa SILC-nyckelpar..." -#, fuzzy msgid "Unable to create SILC key pair" -msgstr "Kunde inte skapa SILC-nyckelpar\n" +msgstr "Kunde inte skapa SILC-nyckelpar" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9335,27 +9304,24 @@ msgid "Failure: Authentication failed" msgstr "Misslyckande: Autentisering misslyckades" -#, fuzzy msgid "Unable to initialize SILC Client connection" -msgstr "Kan inte inleda SILC-klientanslutning" +msgstr "Kan inte initiera SILC-klientanslutning" msgid "John Noname" msgstr "John Namnlös" -#, fuzzy, c-format +#, c-format msgid "Unable to load SILC key pair: %s" msgstr "Kunde inte ladda SILC nyckelpar: %s" msgid "Unable to create connection" msgstr "Kan inte skapa anslutning" -#, fuzzy msgid "Unknown server response" -msgstr "Okänt serversvar." - -#, fuzzy +msgstr "Okänt serversvar" + msgid "Unable to create listen socket" -msgstr "Kan inte skapa socket" +msgstr "Kunde inte skapa lyssningsuttag" msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP-användarnamnet får inte innehålla mellanslag eller symbolen @" @@ -9418,7 +9384,6 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! Protocol Plugin" msgstr "Insticksmodul för Yahoo-protokoll" @@ -9449,9 +9414,8 @@ msgid "Yahoo Chat port" msgstr "Yahoo Chatt port" -#, fuzzy msgid "Yahoo JAPAN ID..." -msgstr "Yahoo-ID..." +msgstr "Yahoo JAPAN ID..." #. *< type #. *< ui_requirement @@ -9463,12 +9427,11 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "Yahoo! JAPAN Protocol Plugin" -msgstr "Insticksmodul för Yahoo-protokoll" +msgstr "Insticksmodul för Yahoo JAPAN protokoll" msgid "Your SMS was not delivered" -msgstr "" +msgstr "Ditt SMS levererades inte" msgid "Your Yahoo! message did not get sent." msgstr "Ditt Yahoo!-meddelande skickades inte." @@ -9495,28 +9458,27 @@ msgstr "Lägg till kompisavvisning" #. Some error in the received stream -#, fuzzy msgid "Received invalid data" -msgstr "Tog emot felaktig data vid anslutning till server." +msgstr "Tog emot felaktig data" #. security lock from too many failed login attempts -#, fuzzy msgid "" "Account locked: Too many failed login attempts. Logging into the Yahoo! " "website may fix this." -msgstr "Okänt felnummer %d. Logga in på Yahoo!s hemsida kan fixa detta." +msgstr "" +"Kontot låst: För många inloggningsförsök. Logga in på Yahoo!s hemsida kan " +"fixa detta." #. indicates a lock of some description -#, fuzzy msgid "" "Account locked: Unknown reason. Logging into the Yahoo! website may fix " "this." -msgstr "Okänt felnummer %d. Logga in på Yahoo!s hemsida kan fixa detta." +msgstr "" +"Kontot låst: Okänd anledning. Logga in på Yahoo!s hemsida kan fixa detta." #. username or password missing -#, fuzzy msgid "Username or password missing" -msgstr "Felaktigt användarnamn eller lösenord" +msgstr "Användarnamn eller lösenord saknas" #, c-format msgid "" @@ -9549,33 +9511,27 @@ msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." msgstr "Okänt felnummer %d. Logga in på Yahoo!s hemsida kan fixa detta." -#, fuzzy, c-format +#, c-format msgid "Unable to add buddy %s to group %s to the server list on account %s." -msgstr "Kan inte lägga till kompis %s i grupp %s på serverlistan för konto %s." - -#, fuzzy +msgstr "Kan inte lägga till kompis %s i grupp %s på serverlistan för konto %s " + msgid "Unable to add buddy to server list" -msgstr "Kunde inte lägga till kompis i listan på servern" +msgstr "Kunde inte lägga till kompis i serverlistan" #, c-format msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ Hörbar %s/%s/%s.swf ] %s" -#, fuzzy msgid "Received unexpected HTTP response from server" -msgstr "Mottog oväntat HTTP-svar från servern." - -#, fuzzy, c-format +msgstr "Mottog oväntat HTTP-svar från servern" + +#, c-format msgid "Lost connection with %s: %s" -msgstr "" -"Tappade anslutningen med %s:\n" -"%s" - -#, fuzzy, c-format +msgstr "Tappade anslutningen med %s: %s" + +#, c-format msgid "Unable to establish a connection with %s: %s" -msgstr "" -"Kunde inte skapa en anslutning med servern:\n" -"%s" +msgstr "Kunde inte skapa en anslutning med %s: %s" msgid "Not at Home" msgstr "Inte hemma" @@ -9623,7 +9579,7 @@ msgstr "Starta kladda" msgid "Select the ID you want to activate" -msgstr "" +msgstr "Välj det ID du vill aktivera" msgid "Join whom in chat?" msgstr "Gå med vem in i chatten?" @@ -9776,9 +9732,8 @@ msgid "User Rooms" msgstr "Användarrum" -#, fuzzy msgid "Connection problem with the YCHT server" -msgstr "Problem med anslutning till YCHT-server." +msgstr "Anslutningsproblem till YCHT-server" msgid "" "(There was an error converting this message.\t Check the 'Encoding' option " @@ -9908,17 +9863,17 @@ msgid "Exposure" msgstr "Exponering" -#, fuzzy, c-format +#, c-format msgid "Unable to parse response from HTTP proxy: %s" -msgstr "Kan inte tolka svaret från HTTP-proxyn: %s\n" +msgstr "Kan inte tolka svaret från HTTP-proxyn: %s" #, c-format msgid "HTTP proxy connection error %d" msgstr "HTTP-proxyanslutningsfel %d" -#, fuzzy, c-format +#, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling" -msgstr "Åtkomst nekad: HTTP-proxyservern tillåter inte tunnel på port %d." +msgstr "Åtkomst nekad: HTTP-proxyservern tillåter inte tunnel på port %d" #, c-format msgid "Error resolving %s" @@ -10163,12 +10118,12 @@ msgid "Error Reading %s" msgstr "Fel vid läsning av %s" -#, fuzzy, c-format +#, c-format msgid "" "An error was encountered reading your %s. The file has not been loaded, and " "the old file has been renamed to %s~." msgstr "" -"Ett fel upptäcktes vid inläsandet av din %s. De har inte laddats och den " +"Ett fel upptäcktes vid inläsandet av din %s. Filen har inte laddats och den " "gamla har blivit flyttad till %s~." msgid "Internet Messenger" @@ -10213,8 +10168,8 @@ msgid "Use this buddy _icon for this account:" msgstr "Använd denna kompis_ikon för detta konto:" -msgid "_Advanced" -msgstr "_Avancerat" +msgid "Ad_vanced" +msgstr "A_vancerat" msgid "Use GNOME Proxy Settings" msgstr "Använd GNOME proxyinställningar" @@ -10276,9 +10231,8 @@ msgid "Create _this new account on the server" msgstr "Skapa detta _nya kontot på servern" -#, fuzzy -msgid "_Proxy" -msgstr "Proxy" +msgid "P_roxy" +msgstr "P_roxy" msgid "Enabled" msgstr "Aktiverad" @@ -10328,9 +10282,8 @@ msgid "Please update the necessary fields." msgstr "Var vänlig uppdatera de nödvändiga fälten." -#, fuzzy msgid "A_ccount" -msgstr "Konto" +msgstr "_Konto" msgid "" "Please enter the appropriate information about the chat you would like to " @@ -10355,16 +10308,14 @@ msgid "I_M" msgstr "_Meddelande" -#, fuzzy msgid "_Audio Call" -msgstr "_Lägg till chatt" +msgstr "_Ljudsamtal" msgid "Audio/_Video Call" -msgstr "" - -#, fuzzy +msgstr "Ljud/_Videosamtal" + msgid "_Video Call" -msgstr "Videochatt" +msgstr "_Videosamtal" msgid "_Send File..." msgstr "_Skicka fil..." @@ -10375,13 +10326,11 @@ msgid "View _Log" msgstr "Visa _logg" -#, fuzzy msgid "Hide When Offline" -msgstr "Dölj om frånkopplade" - -#, fuzzy +msgstr "Dölj när frånkopplad" + msgid "Show When Offline" -msgstr "Visa om frånkopplade" +msgstr "Visa när frånkopplade" msgid "_Alias..." msgstr "_Alias..." @@ -10507,9 +10456,8 @@ msgid "/Tools/_Certificates" msgstr "/Verktyg/_Certifikat" -#, fuzzy msgid "/Tools/Custom Smile_ys" -msgstr "/Verktyg/Smile_y" +msgstr "/Verktyg/Egna Smile_ys" msgid "/Tools/Plu_gins" msgstr "/Verktyg/Insticksmodu_ler" @@ -10638,7 +10586,7 @@ msgstr "Efter status" msgid "By recent log activity" -msgstr "" +msgstr "Efter nylig aktivitet i loggen" #, c-format msgid "%s disconnected" @@ -10655,7 +10603,7 @@ msgstr "Återaktivera konto" msgid "SSL FAQs" -msgstr "" +msgstr "SSL FAQs" msgid "Welcome back!" msgstr "Välkommen tillbaka" @@ -10786,111 +10734,98 @@ msgid "Background Color" msgstr "Bakgrundsfärg" -#, fuzzy msgid "The background color for the buddy list" -msgstr "Denna gruppen har lagst till i din kompislista." - -#, fuzzy +msgstr "Bakgrundsfärgen för kompislistan" + msgid "Layout" -msgstr "Lao" +msgstr "Utseende" msgid "The layout of icons, name, and status of the blist" -msgstr "" +msgstr "Utseendet på ikoner, namn och status i kompislistan" #. Group -#, fuzzy msgid "Expanded Background Color" -msgstr "Bakgrundsfärg" +msgstr "Expanderad bakgrundsfärg" msgid "The background color of an expanded group" -msgstr "" - -#, fuzzy +msgstr "Bakgrundsfärgen på en expanderad grupp" + msgid "Expanded Text" -msgstr "_Expandera" +msgstr "Expanderad text" msgid "The text information for when a group is expanded" -msgstr "" - -#, fuzzy +msgstr "Textinformationen för när en grupp är expanderad" + msgid "Collapsed Background Color" -msgstr "Välj bakgrundsfärg" +msgstr "Ihopfälld bakgrundsfärg" msgid "The background color of a collapsed group" -msgstr "" - -#, fuzzy +msgstr "Bakgrundfärgen för en ihopfälld grupp" + msgid "Collapsed Text" -msgstr "_Fäll ihop" +msgstr "Ihopfälld text" msgid "The text information for when a group is collapsed" -msgstr "" +msgstr "Textinformationen för när en grupp är ihopfälld" #. Buddy -#, fuzzy msgid "Contact/Chat Background Color" -msgstr "Välj bakgrundsfärg" +msgstr "Kontakt/Chatt-bakgrundsfärg" msgid "The background color of a contact or chat" -msgstr "" - -#, fuzzy +msgstr "Bakgrundsfärgen för en kontakt eller chatt" + msgid "Contact Text" -msgstr "Genväg" +msgstr "Kontakttext" msgid "The text information for when a contact is expanded" -msgstr "" - -#, fuzzy +msgstr "Textinformationen för när en kontakt är expanderad" + msgid "On-line Text" -msgstr "Ansluten" +msgstr "Ansluten-text" msgid "The text information for when a buddy is online" -msgstr "" - -#, fuzzy +msgstr "Textinformationen för när en kompis är ansluten" + msgid "Away Text" -msgstr "Frånvarande" +msgstr "Frånvarotext" msgid "The text information for when a buddy is away" -msgstr "" - -#, fuzzy +msgstr "Textinformationen för när en kompis är borta" + msgid "Off-line Text" -msgstr "Frånkopplad" +msgstr "Frånkopplad-text" msgid "The text information for when a buddy is off-line" -msgstr "" - -#, fuzzy +msgstr "Textinformationen för när en kompis är frånkopplad" + msgid "Idle Text" -msgstr "Humörstext" +msgstr "Vilotext" msgid "The text information for when a buddy is idle" -msgstr "" - -#, fuzzy +msgstr "Textinformationen för när en kompis är vilande" + msgid "Message Text" -msgstr "Meddelande skickas" +msgstr "Meddelandetext" msgid "The text information for when a buddy has an unread message" -msgstr "" +msgstr "Textinformationen för när en kompis har ett oläst meddelande" msgid "Message (Nick Said) Text" -msgstr "" +msgstr "Meddelande (Smeknamn nämnt) Text" msgid "" "The text information for when a chat has an unread message that mentions " "your nick" msgstr "" - -#, fuzzy +"Textinformationen för när en chatt har ett oläst meddelande som nämner ditt " +"namn" + msgid "The text information for a buddy's status" -msgstr "Ändra användarinformationen för %s" - -#, fuzzy +msgstr "Textinformationen för en kompis status" + msgid "Type the host name for this certificate." -msgstr "Ange värden detta certifikatet är för." +msgstr "Ange värdnamnet för detta certifikatet." #. Widget creation function msgid "SSL Servers" @@ -10939,7 +10874,6 @@ msgid "Get Away Message" msgstr "Hämta frånvaromeddelande" -#, fuzzy msgid "Last Said" msgstr "Senast sagt" @@ -10986,21 +10920,17 @@ msgid "/Conversation/Clea_r Scrollback" msgstr "/Konversation/_Rensa tillbakablick" -#, fuzzy msgid "/Conversation/M_edia" -msgstr "/Konversation/_Mer" - -#, fuzzy +msgstr "/Konversation/M_er" + msgid "/Conversation/Media/_Audio Call" -msgstr "/Konversation/_Mer" - -#, fuzzy +msgstr "/Konversation/Media/_Ljudsamtal" + msgid "/Conversation/Media/_Video Call" -msgstr "/Konversation/_Mer" - -#, fuzzy +msgstr "/Konversation/Media/_Videosamtal" + msgid "/Conversation/Media/Audio\\/Video _Call" -msgstr "/Konversation/Visa _Logg" +msgstr "/Konversation/Media/Ljud\\/Video _Samtal" msgid "/Conversation/Se_nd File..." msgstr "/Konversation/S_kicka fil..." @@ -11076,17 +11006,14 @@ msgid "/Conversation/View Log" msgstr "/Konversation/Visa logg" -#, fuzzy msgid "/Conversation/Media/Audio Call" -msgstr "/Konversation/Mer" - -#, fuzzy +msgstr "/Konversation/Media/Ljudsamtal" + msgid "/Conversation/Media/Video Call" -msgstr "/Konversation/Visa logg" - -#, fuzzy +msgstr "/Konversation/Media/Videosamtal" + msgid "/Conversation/Media/Audio\\/Video Call" -msgstr "/Konversation/Mer" +msgstr "/Konversation/Media/Ljud\\/Videosamtal" msgid "/Conversation/Send File..." msgstr "/Konversation/Skicka fil..." @@ -11268,10 +11195,10 @@ #. feel free to not translate this msgid "Ka-Hing Cheung" -msgstr "" +msgstr "Ka-Hing Cheung" msgid "voice and video" -msgstr "" +msgstr "röst och video" msgid "support" msgstr "support" @@ -11403,9 +11330,8 @@ msgid "Hungarian" msgstr "Ungerska" -#, fuzzy msgid "Armenian" -msgstr "Rumänska" +msgstr "Armeniska" msgid "Indonesian" msgstr "Indonesiska" @@ -11422,9 +11348,8 @@ msgid "Ubuntu Georgian Translators" msgstr "Ubuntu Georgiska översättare" -#, fuzzy msgid "Khmer" -msgstr "Annan" +msgstr "Khmer" msgid "Kannada" msgstr "Kannada" @@ -11505,7 +11430,7 @@ msgstr "Svenska" msgid "Swahili" -msgstr "" +msgstr "Swahili" msgid "Tamil" msgstr "Tamilska" @@ -11838,9 +11763,8 @@ msgid "Hyperlink visited color" msgstr "Färg på besökta hyperlänkar" -#, fuzzy msgid "Color to draw hyperlink after it has been visited (or activated)." -msgstr "Färgen länkar ska skrivas i när de har besökts (eller aktiverats)." +msgstr "Färgen för länkar när de har besökts (eller aktiverats)." # "utpekade" var det bästa ord jag kunde komma på. msgid "Hyperlink prelight color" @@ -11878,23 +11802,20 @@ msgid "Action Message Name Color for Whispered Message" msgstr "Actionmeddelandens namnfärg" -#, fuzzy msgid "Color to draw the name of a whispered action message." -msgstr "Färgen att skriva namnet i ett actionmeddelande." +msgstr "Färgen för namnet i ett viskat aktionsmeddelande." msgid "Whisper Message Name Color" msgstr "Viskade meddelandens namnfärg" -#, fuzzy msgid "Color to draw the name of a whispered message." -msgstr "Färgen att skriva namnet i ett actionmeddelande." +msgstr "Färgen för namnet i ett viskat meddelande." msgid "Typing notification color" msgstr "Färg på notifiering" -#, fuzzy msgid "The color to use for the typing notification" -msgstr "Färgen används för skriftnotifiering" +msgstr "Färgen för skriftnotifiering" msgid "Typing notification font" msgstr "Typsnitt för skriftnotifiering" @@ -12009,7 +11930,7 @@ msgstr "Detta tema har inga tillgängliga smileys." msgid "_Font" -msgstr "_Typsnitt" +msgstr "_Formateríng" msgid "Group Items" msgstr "Gruppera föremål" @@ -12076,7 +11997,7 @@ #. * need to update them when formatting changes. The above items don't need #. * no updating nor nothin' msgid "_Font face" -msgstr "_Typsnittsansikte" +msgstr "_Typsnitt" msgid "Foreground _color" msgstr "_Förgrundsfärg" @@ -12148,7 +12069,7 @@ msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%s %s. Försök med '%s -h' för mer information.\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12170,6 +12091,7 @@ "\n" " -c, --config=KATALOG använd KATALOG för konfigurationsfiler\n" " -d, --debug skriv felsökningsinformation till standardut\n" +" -f, --force-online tvinga att ansluta, oavsätt nätverksstatus\n" " -h, --help visa denna hjälp och avsluta\n" " -m, --multiple begränsar inte till en enda process\n" " -n, --nologin logga inte in automatiskt\n" @@ -12179,7 +12101,7 @@ " --display=DISPLAY X display att använda\n" " -v, --version visa den nuvarande versionen och avsluta\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12200,6 +12122,7 @@ "\n" " -c, --config=KATALOG använd KATALOG för konfigurationsfiler\n" " -d, --debug skriv felsökningsinformation till standardut\n" +" -f, --force-online tvinga att ansluta, oavsätt nätverksstatus\n" " -h, --help visa denna hjälp och avsluta\n" " -m, --multiple begränsar inte till en enda process\n" " -n, --nologin logga inte in automatiskt\n" @@ -12246,22 +12169,21 @@ msgstr "Avslutar på grund av att en annan libpurple-klient redan körs.\n" msgid "/_Media" -msgstr "" +msgstr "/_Media" msgid "/Media/_Hangup" -msgstr "" - -#, fuzzy +msgstr "/Media/_Lägg på" + msgid "Calling..." -msgstr "Beräknar..." +msgstr "Ringer..." #, c-format msgid "%s wishes to start an audio/video session with you." -msgstr "" +msgstr "%s önskar påbörja en ljud/videosession med dig." #, c-format msgid "%s wishes to start a video session with you." -msgstr "" +msgstr "%s önskar påbörja en videosession med dig." #, c-format msgid "%s has %d new message." @@ -12290,9 +12212,8 @@ "The 'Manual' browser command has been chosen, but no command has been set." msgstr "Manuellt webbläsarkommando har valts, men inget kommando angivits." -#, fuzzy msgid "No message" -msgstr "Okänt meddelande" +msgstr "Inget meddelande" msgid "Open All Messages" msgstr "Öppna alla meddelanden" @@ -12300,16 +12221,14 @@ msgid "You have mail!" msgstr "Du har fått e-post!!" -#, fuzzy msgid "New Pounces" -msgstr "Ny kompisnotifiering" +msgstr "Ny kompisnotifieringar" msgid "Dismiss" -msgstr "" - -#, fuzzy +msgstr "Avfärda" + msgid "You have pounced!" -msgstr "Du har fått e-post!!" +msgstr "Du har notifierat!" msgid "The following plugins will be unloaded." msgstr "De följande modulerna kommer avladdas." @@ -12359,7 +12278,6 @@ msgid "Select a file" msgstr "Välj en fil" -#, fuzzy msgid "Modify Buddy Pounce" msgstr "Ändra kompisnotifiering" @@ -12436,61 +12354,58 @@ msgid "Pounce Target" msgstr "Notifiera mål" -#, fuzzy, c-format +#, c-format msgid "Started typing" -msgstr "Börjar skriva" - -#, fuzzy, c-format +msgstr "Började skriva" + +#, c-format msgid "Paused while typing" -msgstr "Pausar skrivandet" - -#, fuzzy, c-format +msgstr "Pausade i skrivandet" + +#, c-format msgid "Signed on" -msgstr "Ansluter" - -#, fuzzy, c-format +msgstr "Anslöt" + +#, c-format msgid "Returned from being idle" -msgstr "%s har blivit aktiv igen (%s)" - -#, fuzzy, c-format +msgstr "Återvände från vilande" + +#, c-format msgid "Returned from being away" -msgstr "Återvänder från frånvaro" - -#, fuzzy, c-format +msgstr "Återvände från frånvaro" + +#, c-format msgid "Stopped typing" msgstr "Slutade skriva" -#, fuzzy, c-format +#, c-format msgid "Signed off" -msgstr "Kopplar ifrån" - -#, fuzzy, c-format +msgstr "Kopplade ifrån" + +#, c-format msgid "Became idle" -msgstr "Blir inaktiv" - -#, fuzzy, c-format +msgstr "Blev inaktiv" + +#, c-format msgid "Went away" -msgstr "Vid frånvaro" - -#, fuzzy, c-format +msgstr "Försvann" + +#, c-format msgid "Sent a message" msgstr "Skicka ett meddelande" -#, fuzzy, c-format +#, c-format msgid "Unknown.... Please report this!" -msgstr "Okänd attackhändelse. Var snäll och rapportera detta!" - -#, fuzzy +msgstr "Okänd... Var snäll och rapportera detta!" + msgid "Theme failed to unpack." -msgstr "Smiley temat kunde inte packas upp." - -#, fuzzy +msgstr "Temat kunde inte packas upp." + msgid "Theme failed to load." -msgstr "Smiley temat kunde inte packas upp." - -#, fuzzy +msgstr "Temat kunde inte läsas in." + msgid "Theme failed to copy." -msgstr "Smiley temat kunde inte packas upp." +msgstr "Temat kunde inte kopieras." msgid "Install Theme" msgstr "Installera tema" @@ -12512,9 +12427,8 @@ msgstr "_Stäng konversationsfönster med Escape-knappen" #. Buddy List Themes -#, fuzzy msgid "Buddy List Theme" -msgstr "Kompislista" +msgstr "Tema för Kompislista" #. System Tray msgid "System Tray Icon" @@ -12526,9 +12440,8 @@ msgid "On unread messages" msgstr "Vid olästa meddelanden" -#, fuzzy msgid "Conversation Window" -msgstr "Snabbmeddelandefönster" +msgstr "Konversationsfönster" msgid "_Hide new IM conversations:" msgstr "_Dölj nya IM-konversationer:" @@ -12631,9 +12544,9 @@ msgid "Example: stunserver.org" msgstr "Exempel: stunserver.org" -#, fuzzy, c-format +#, c-format msgid "Use _automatically detected IP address: %s" -msgstr "Känn av IP-adress _automatiskt" +msgstr "Använda _automatiskt avkänd IP-adress: %s" msgid "Public _IP:" msgstr "Publik _IP-adress:" @@ -12655,7 +12568,7 @@ #. TURN server msgid "Relay Server (TURN)" -msgstr "" +msgstr "Återsändningsserver (TURN)" msgid "Proxy Server & Browser" msgstr "Proxyserver & Webbläsare" @@ -13001,12 +12914,12 @@ msgid "Status for %s" msgstr "Status för %s" -#, fuzzy, c-format +#, c-format msgid "" "A custom smiley for '%s' already exists. Please use a different shortcut." msgstr "" -"En egen smiley för den valda genvägen existerar redan. Var vänlig ange en " -"annorlunda genväg." +"En egen smiley för '%s' existerar redan. Var vänlig ange en annorlunda " +"genväg." msgid "Custom Smiley" msgstr "Egen Smiley" @@ -13020,28 +12933,24 @@ msgid "Add Smiley" msgstr "Lägg till Smiley" -#, fuzzy msgid "_Image:" -msgstr "B_ild" +msgstr "B_ild:" #. Shortcut text -#, fuzzy msgid "S_hortcut text:" -msgstr "Genväg" +msgstr "_Genvägstext:" msgid "Smiley" msgstr "Smiley" -#, fuzzy msgid "Shortcut Text" -msgstr "Genväg" +msgstr "Genvägstext" msgid "Custom Smiley Manager" msgstr "Hanterare för egna Smileys" -#, fuzzy msgid "Select Buddy Icon" -msgstr "Välj kompis" +msgstr "Välj kompisikon" msgid "Click to change your buddyicon for this account." msgstr "Klicka här för att ändra kompisikon för detta konto." @@ -13126,7 +13035,6 @@ msgid "Cannot send launcher" msgstr "Kan inte skicka startare" -#, fuzzy msgid "" "You dragged a desktop launcher. Most likely you wanted to send the target of " "this launcher instead of this launcher itself." @@ -13164,9 +13072,8 @@ msgstr "" "Kunde inte öppna bilden '%s' av okänd anledning. Troligtvis är filen trasig." -#, fuzzy msgid "_Open Link" -msgstr "_Öppna länk i:" +msgstr "_Öppna länk" msgid "_Copy Link Location" msgstr "_Kopiera länk" @@ -13174,9 +13081,21 @@ msgid "_Copy Email Address" msgstr "_Kopiera e-postadress" +msgid "_Open File" +msgstr "_Öppna fil" + +msgid "Open _Containing Directory" +msgstr "Öppna _inehållande katalog" + msgid "Save File" msgstr "Spara fil" +msgid "_Play Sound" +msgstr "S_pela upp ljud" + +msgid "_Save File" +msgstr "_Spara fil" + msgid "Select color" msgstr "Välj färg" @@ -13264,78 +13183,66 @@ msgid "Displays statistical information about your buddies' availability" msgstr "Visar statistik om dina kompisars tillgänglighet" -#, fuzzy msgid "Server name request" -msgstr "Serveradress" - -#, fuzzy +msgstr "Servernamnsförfrågan" + msgid "Enter an XMPP Server" -msgstr "Ange en konferensserver" - -#, fuzzy +msgstr "Ange en XMPP-server" + msgid "Select an XMPP server to query" -msgstr "Välj en konferensserver att fråga" - -#, fuzzy +msgstr "Välj en XMPP-server att fråga" + msgid "Find Services" -msgstr "Anslutningstjänster" - -#, fuzzy +msgstr "Hitta tjänst" + msgid "Add to Buddy List" -msgstr "Skicka kompislista" - -#, fuzzy +msgstr "Lägg till på kompislistan" + msgid "Gateway" -msgstr "Blir frånvarande" - -#, fuzzy +msgstr "Inkörsport" + msgid "Directory" -msgstr "Logg katalog" - -#, fuzzy +msgstr "Katalog" + msgid "PubSub Collection" -msgstr "Ljudval" +msgstr "PubSub-samling" # Vad är PubSub? Hittar bara antydningar till en sökmotor med speciella möjligheter för uppföljning. Är det den som avses? -#, fuzzy msgid "PubSub Leaf" -msgstr "PubSub Service" - -#, fuzzy +msgstr "PubSub-löv" + msgid "" "\n" "Description: " -msgstr "Beskrivning" +msgstr "" +"\n" +"Beskrivning: " #. Create the window. -#, fuzzy msgid "Service Discovery" -msgstr "Tjänsteupptäckningsinfo" - -#, fuzzy +msgstr "Tjänsteupptäckning" + msgid "_Browse" -msgstr "Webb_läsare:" - -#, fuzzy +msgstr "_Bläddra" + msgid "Server does not exist" -msgstr "Användaren finns inte" - -#, fuzzy +msgstr "Servern finns inte" + msgid "Server does not support service discovery" -msgstr "Servern stödjer inte blockering" - -#, fuzzy +msgstr "Servern stödjer inte tjänsteupptäckning" + msgid "XMPP Service Discovery" -msgstr "Tjänsteupptäckningsinfo" +msgstr "XMPP Tjänsteupptäckning" msgid "Allows browsing and registering services." -msgstr "" - -#, fuzzy +msgstr "Tillåter att bläddra och registrera service." + msgid "" "This plugin is useful for registering with legacy transports or other XMPP " "services." -msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter." +msgstr "" +"Denna modul är användbar för registrering till äldre transportörer eller " +"andra XMPP-tjänster." msgid "Buddy is idle" msgstr "Kompisen är inaktiv" @@ -13727,7 +13634,6 @@ msgstr "Music Messaging-modul för gemensam komponering." #. * 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." @@ -13853,9 +13759,8 @@ msgid "Highlighted Message Name Color" msgstr "Färg på namn i markerade färger" -#, fuzzy msgid "Typing Notification Color" -msgstr "Färg på notifiering" +msgstr "Färg på skrivnotifiering" msgid "GtkTreeView Horizontal Separation" msgstr "GtkTreeView horisontal separation" @@ -13886,23 +13791,20 @@ msgid "GTK+ Text Shortcut Theme" msgstr "GTK+ Textgenvägstema" -#, fuzzy msgid "Disable Typing Notification Text" -msgstr "Aktivera skriftnotifiering" - -#, fuzzy +msgstr "Avaktivera skriftnotifieringstext" + msgid "GTK+ Theme Control Settings" -msgstr "Pidgin GTK+ temakontroll" - -#, fuzzy +msgstr "GTK+ temakontroll" + msgid "Colors" -msgstr "Stäng" +msgstr "Färger" msgid "Fonts" msgstr "Typsnitt" msgid "Miscellaneous" -msgstr "" +msgstr "Diverse" msgid "Gtkrc File Tools" msgstr "Gtkrc filverktyg" @@ -13988,11 +13890,12 @@ msgstr "Skicka-knapp i konversationsfönster" #. *< summary -#, fuzzy msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for use when no physical keyboard is present." -msgstr "Lägger till en \"Skicka\" knapp till konversationsfönstret. " +msgstr "" +"Lägger till en Skicka knapp till konversationsfönstret. För att användas när " +"inget fysiskt tangentbord finns." msgid "Duplicate Correction" msgstr "Dublettkorrigering" @@ -14044,94 +13947,78 @@ msgid "Replaces text in outgoing messages according to user-defined rules." msgstr "Ersätter text i utgående meddelanden enligt dina egna regler." -#, fuzzy msgid "Just logged in" -msgstr "Inte inloggad" - -#, fuzzy +msgstr "Precis inloggad" + msgid "Just logged out" -msgstr "Inte inloggad" +msgstr "Precis utloggad" msgid "" "Icon for Contact/\n" "Icon for Unknown person" msgstr "" - -#, fuzzy +"Ikon för kontakt\n" +"Ikon för okänd person" + msgid "Icon for Chat" -msgstr "Anslut till chatt" - -#, fuzzy +msgstr "Ikon för chatt" + msgid "Ignored" -msgstr "Ignorera" - -#, fuzzy +msgstr "Ignorerad" + msgid "Founder" -msgstr "Högre" - -#, fuzzy +msgstr "Grundare" + msgid "Operator" -msgstr "Opera" +msgstr "Operatör" msgid "Half Operator" -msgstr "" - -#, fuzzy +msgstr "Halvoperatör" + msgid "Authorization dialog" -msgstr "Auktorisering given" - -#, fuzzy +msgstr "Auktoriseringsdialog" + msgid "Error dialog" -msgstr "Fel" - -#, fuzzy +msgstr "Feldialog" + msgid "Information dialog" -msgstr "Information" +msgstr "Informationsdialog" msgid "Mail dialog" -msgstr "" - -#, fuzzy +msgstr "Postdialog" + msgid "Question dialog" msgstr "Förfrågningsdialog" -#, fuzzy msgid "Warning dialog" -msgstr "Varningsnivåer" +msgstr "Varningsdialog" msgid "What kind of dialog is this?" -msgstr "" - -#, fuzzy +msgstr "Vilken sorts dialog är detta?" + msgid "Status Icons" -msgstr "Status för %s" - -#, fuzzy +msgstr "Statusikoner" + msgid "Chatroom Emblems" -msgstr "Chatrummets språk" - -#, fuzzy +msgstr "Chatrumsemblem" + msgid "Dialog Icons" -msgstr "Ändra ikon" - -#, fuzzy +msgstr "Dialogikon" + msgid "Pidgin Icon Theme Editor" -msgstr "Pidgin GTK+ temakontroll" - -#, fuzzy +msgstr "Pidgin ikontema-redigerare" + msgid "Contact" -msgstr "Kontaktinformation" - -#, fuzzy +msgstr "Kontakt" + msgid "Pidgin Buddylist Theme Editor" -msgstr "Kompislista" - -#, fuzzy +msgstr "Pidgin Redigerare för Kompislistans tema" + msgid "Edit Buddylist Theme" -msgstr "Kompislista" +msgstr "Redigera Kompislistans tema" msgid "Edit Icon Theme" -msgstr "" +msgstr "Redigera ikontema" #. *< type #. *< ui_requirement @@ -14140,16 +14027,14 @@ #. *< priority #. *< id #. * description -#, fuzzy msgid "Pidgin Theme Editor" -msgstr "Pidgin GTK+ temakontroll" +msgstr "Pidgin Temaredigerare" #. *< name #. *< version #. * summary -#, fuzzy msgid "Pidgin Theme Editor." -msgstr "Pidgin GTK+ temakontroll" +msgstr "Pidgin Temaredigerare." #. *< type #. *< ui_requirement @@ -14318,11 +14203,10 @@ msgid "Options specific to Pidgin for Windows." msgstr "Inställningar specifika för Pidgin i Windows." -#, fuzzy msgid "" "Provides options specific to Pidgin for Windows, such as buddy list docking." msgstr "" -"Tillhandahåller insällningar specifika för Pidgion i Windows såsom dockning " +"Tillhandahåller inställningar specifika för Pidgin i Windows såsom dockning " "av kompislistan." msgid "Logged out." @@ -14399,9 +14283,6 @@ #~ msgid "Last Activity" #~ msgstr "Senaste aktivitet" -#~ msgid "Service Discovery Info" -#~ msgstr "Tjänsteupptäckningsinfo" - #~ msgid "Service Discovery Items" #~ msgstr "Tjänstupptäckningsföremål" @@ -14417,10 +14298,6 @@ #~ msgid "Ad-Hoc Commands" #~ msgstr "'Ad-Hoc' Kommandon" -# Vad är PubSub? Hittar bara antydningar till en sökmotor med speciella möjligheter för uppföljning. Är det den som avses? -#~ msgid "PubSub Service" -#~ msgstr "PubSub Service" - #~ msgid "SOCKS5 Bytestreams" #~ msgstr "SOCKS5 Byteströmmar" @@ -14568,9 +14445,6 @@ #~ msgid "Error. SSL support is not installed." #~ msgstr "Fel. SSL-stöd är inte installerat." -#~ msgid "Incorrect password." -#~ msgstr "Felaktigt lösenord." - #~ msgid "" #~ "Could not connect to BOS server:\n" #~ "%s" @@ -14578,14 +14452,17 @@ #~ "Kunde inte ansluta till BOS-server:\n" #~ "%s" -#~ msgid "You may be disconnected shortly. Check %s for updates." -#~ msgstr "Du kanske snart blir frånkopplad. Kolla på %s efter uppdateringar." +#~ msgid "Invalid username." +#~ msgstr "Ogiltigt användarnamn" + +#~ msgid "Incorrect password." +#~ msgstr "Felaktigt lösenord." #~ msgid "Could Not Connect" #~ msgstr "Kunde inte ansluta" -#~ msgid "Invalid username." -#~ msgstr "Ogiltigt användarnamn" +#~ msgid "You may be disconnected shortly. Check %s for updates." +#~ msgstr "Du kanske snart blir frånkopplad. Kolla på %s efter uppdateringar." #~ msgid "Could not decrypt server reply" #~ msgstr "Kan inte avkryptera inloggningssvaret" @@ -14617,13 +14494,6 @@ #~ msgid "Could not create listen socket" #~ msgstr "Kunde inte skapa lyssnarsocket" -#~ msgid "Could not resolve hostname" -#~ msgstr "Kunde ej slå upp värden" - -#, fuzzy -#~ msgid "Incorrect Password" -#~ msgstr "Felaktigt lösenord" - #~ msgid "" #~ "Could not establish a connection with %s:\n" #~ "%s" @@ -14631,6 +14501,9 @@ #~ "Kunde inte skapa en anslutning med %s:\n" #~ "%s" +#~ msgid "Activate which ID?" +#~ msgstr "Vilket ID ska aktiveras?" + #~ msgid "Yahoo Japan" #~ msgstr "Yahoo Japan" @@ -14657,6 +14530,9 @@ #~ msgstr "" #~ "Servern kräver TLS/SSL vid inloggning. Hittade inget stöd för TLS/SSL." +#~ msgid "_Proxy" +#~ msgstr "_Proxy" + #~ msgid "Conversation Window Hiding" #~ msgstr "Dölj konversationsfönster" @@ -14669,9 +14545,6 @@ #~ msgid "Please select an image for the smiley." #~ msgstr "Ange en bild för smileyn." -#~ msgid "Activate which ID?" -#~ msgstr "Vilket ID ska aktiveras?" - #~ msgid "Cursor Color" #~ msgstr "Färg på markören" @@ -14846,15 +14719,15 @@ #~ msgid "Proxy Options" #~ msgstr "Proxyalternativ" +#~ msgid "ST_UN server:" +#~ msgstr "ST_UN-server:" + #~ msgid "By log size" #~ msgstr "Efter loggstorlek" #~ msgid "_Open Link in Browser" #~ msgstr "_Öppna länk i webbläsare" -#~ msgid "ST_UN server:" -#~ msgstr "ST_UN-server:" - #~ msgid "Smiley _Image" #~ msgstr "Smiley-_bild" diff -r b4daae0798e3 -r e1cd44c7c7af share/ca-certs/Equifax_Secure_Global_eBusiness_CA-1.pem --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/Equifax_Secure_Global_eBusiness_CA-1.pem Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- diff -r b4daae0798e3 -r e1cd44c7c7af share/ca-certs/Makefile.am --- a/share/ca-certs/Makefile.am Fri Jul 24 01:42:13 2009 +0000 +++ b/share/ca-certs/Makefile.am Sat Jul 25 04:54:36 2009 +0000 @@ -3,17 +3,20 @@ CAcert_Root.pem \ CAcert_Class3.pem \ Equifax_Secure_CA.pem \ + Equifax_Secure_Global_eBusiness_CA-1.pem \ GTE_CyberTrust_Global_Root.pem \ StartCom_Certification_Authority.pem \ StartCom_Free_SSL_CA.pem \ Verisign_RSA_Secure_Server_CA.pem \ Verisign_Class3_Primary_CA.pem \ - VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem + VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem \ + VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5_2.pem EXTRA_CERTS = \ AOL_Member_CA.pem \ Microsoft_Internet_Authority.pem \ Microsoft_Secure_Server_Authority.pem \ + VeriSign_Class3_Extended_Validation_CA.pem \ VeriSign_International_Server_Class_3_CA.pem diff -r b4daae0798e3 -r e1cd44c7c7af share/ca-certs/VeriSign_Class3_Extended_Validation_CA.pem --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/VeriSign_Class3_Extended_Validation_CA.pem Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg +aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy +aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2 +nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5 +OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ +wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4 +P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB +Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC +AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E +CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw +czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6 +Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB +/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ +MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7 +GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R +BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB +BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u +Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB +BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ +p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t +5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4 +z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR +fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH +qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z +-----END CERTIFICATE----- diff -r b4daae0798e3 -r e1cd44c7c7af share/ca-certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5_2.pem --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5_2.pem Sat Jul 25 04:54:36 2009 +0000 @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIE3TCCBEagAwIBAgIQWPOeXAErGUchqY7k7uD4vzANBgkqhkiG9w0BAQUFADBf +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT +LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw +HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv +ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8 +RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb +ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR +TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH +iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB +AAGjggGoMIIBpDAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0 +dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt +BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa +BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j +b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc +aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw +MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD +VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp +bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAN +BgkqhkiG9w0BAQUFAAOBgQCfFUleaybO7pjnTaWSP3Vq8DML+gncKJKrjWoxQdlH +MUdGCaE5BT5mZRmLMr9hLBzVagNvRNw7r+8bk1jWvc7Q7baJd1EVWTIoxXqJjNo+ +bVx1rIbUx579OD6Wc0CHNGqETjGo0qK5PE4G3cuyfK7h1Z8edOUk8M/km+wl6s3s +9g== +-----END CERTIFICATE-----