# HG changeset patch # User Marcus Lundblad # Date 1236031679 0 # Node ID b98519a42e53c83f7efd19e11ff97d96c56af7a2 # Parent a0668fbf248341b0c946367f2357cce1281a3045# Parent 52fbda23e39849da3035bf40910ff690f4e4d8fa propagate from branch 'im.pidgin.pidgin' (head 431618de0f30a6938f7e14d2d61ee5d7738acd59) to branch 'im.pidgin.cpw.attention_ui' (head 152f22112dfd920caedfff2893c8ffd449c1083c) diff -r a0668fbf2483 -r b98519a42e53 .mtn-ignore --- a/.mtn-ignore Mon Mar 02 21:53:53 2009 +0000 +++ b/.mtn-ignore Mon Mar 02 22:07:59 2009 +0000 @@ -10,6 +10,7 @@ .*\.def$ .*\.dll$ .*\.exe$ +.*\.loT$ intltool-.* Doxyfile(\.mingw)?$ aclocal.m4 diff -r a0668fbf2483 -r b98519a42e53 .todo --- a/.todo Mon Mar 02 21:53:53 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - - Gaim TODO List - - - - diff -r a0668fbf2483 -r b98519a42e53 AUTHORS --- a/AUTHORS Mon Mar 02 21:53:53 2009 +0000 +++ b/AUTHORS Mon Mar 02 22:07:59 2009 +0000 @@ -35,7 +35,7 @@ Crazy Patch Writers: ------------------- -Paul Aurich +Paul 'darkrain42' Aurich Marcus 'malu' Lundblad Dennis 'EvilDennisR' Ristuccia Peter 'Fmoo' Ruibal diff -r a0668fbf2483 -r b98519a42e53 COPYRIGHT --- a/COPYRIGHT Mon Mar 02 21:53:53 2009 +0000 +++ b/COPYRIGHT Mon Mar 02 22:07:59 2009 +0000 @@ -87,6 +87,7 @@ Lorenzo Colitti Collabora Ltd. Jeff Connelly +Chris Connett Nathan Conrad Felipe Contreras Alex Converse @@ -219,6 +220,7 @@ Gordian Klein Akuke Kok Kir Kolyshkin +F.W. Kong Konstantin Korikov Cole Kowalski Matt Kramer diff -r a0668fbf2483 -r b98519a42e53 ChangeLog --- a/ChangeLog Mon Mar 02 21:53:53 2009 +0000 +++ b/ChangeLog Mon Mar 02 22:07:59 2009 +0000 @@ -1,6 +1,25 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -version 2.5.5 (??/??/????): +version 2.6.0 (??/??/2009): + General: + * Theme support in libpurple thanks to Justin Rodriguez's summer of code + project. With some minor additions and clean ups from Paul Aurich. + + XMPP: + * Add support for in-band bytestreams (XEP-0047). + * Add support for attention (XEP-0224). + + Pidgin: + * Added -f command line option to tell Pidgin to ignore NetworkManager + and assume it has a valid network connection. + * Allow plugins to specify custom link types to the GtkIMHtml widget. + * The status message input box at the bottom of the buddy list expands + correctly when starting a new line of text. + * Pressing the Enter key in the message entry box of the New Status + dialog and various other dialogs now causes the cursor to move to + the next line. + +version 2.5.5 (03/01/2009): libpurple: * Fix a crash when removing an account with an unknown protocol id. * Beta support for SSL connections for AIM and ICQ accounts. To @@ -669,13 +688,13 @@ version 2.2.0 (09/13/2007): http://developer.pidgin.im/query?status=closed&milestone=2.2.0 - Libpurple: + libpurple: * New protocol plugin: MySpaceIM (Jeff Connelly, Google Summer of Code) * XMPP enhancements. See - http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas + http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas Monitzer, Google Summer of Code for Adium) - * Certificate management. Libpurple will validate certificates on + * Certificate management. libpurple will validate certificates on SSL-encrypted protocols (William Ehlhardt, Google Summer of Code) * Some adjustments were made to fix sending messages when using the MSN HTTP method. (Laszlo Pandy) diff -r a0668fbf2483 -r b98519a42e53 ChangeLog.API --- a/ChangeLog.API Mon Mar 02 21:53:53 2009 +0000 +++ b/ChangeLog.API Mon Mar 02 22:07:59 2009 +0000 @@ -1,6 +1,74 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -version 2.5.5 (??/??/2009): +version 2.6.0 (??/??/2009): + libpurple: + Added: + * PURPLE_BLIST_NODE + * PURPLE_GROUP + * PURPLE_CONTACT + * PURPLE_BUDDY + * PURPLE_CHAT + * purple_buddy_get_protocol_data + * purple_buddy_set_protocol_data + * purple_buddy_get_local_buddy_alias + * purple_blist_get_buddies + * purple_blist_get_ui_data + * purple_blist_set_ui_data + * purple_blist_node_get_ui_data + * purple_blist_node_set_ui_data + * purple_connection_get_protocol_data + * purple_connection_set_protocol_data + * purple_global_proxy_set_info + * purple_log_get_activity_score + * purple_network_force_online + * purple_request_field_get_group + * purple_request_field_get_ui_data + * purple_request_field_set_ui_data + * purple_strequal + * xmlnode_from_file + + Deprecated: + * purple_buddy_get_local_alias + * purple_notify_user_info_remove_entry + * purple_status_type_set_primary_attr + * purple_status_type_add_attr + * purple_status_type_add_attrs + * purple_status_type_add_attrs_vargs + * purple_status_type_get_primary_attr + * purple_status_set_attr_boolean + * purple_status_set_attr_int + * purple_status_set_attr_string + * purple_presence_add_status + * purple_presence_add_list + + pidgin: + Added: + * gtk_imhtml_class_register_protocol + * gtk_imhtml_link_get_url, gtk_imhtml_link_get_text_tag, + gtk_imhtml_link_activate functions to process GtkIMHtmlLink + objects from GtkIMHtml protocol callbacks. + * gtk_imhtml_set_return_inserts_newline + * pidgin_blist_set_theme + * pidgin_blist_get_theme + * pidgin_sound_is_customized + * pidgin_utils_init, pidgin_utils_uninit + + perl: + Changed: + * Made a bunch of functions act more perl-like. Call the new() + functions as Class->new(...) instead of Class::new(...): + * Purple::Request::Fields::new + * Purple::Request::Field::new + * Purple::Request::Field::account_new + * Purple::Request::Field::bool_new + * Purple::Request::Field::choice_new + * Purple::Request::Field::int_new + * Purple::Request::Field::label_new + * Purple::Request::Field::list_new + * Purple::Request::Field::string_new + * Purple::Request::Field::group_new + +version 2.5.5 (03/01/2009): libpurple: Changed: * purple_status_type_new now defaults "saveable" to TRUE. diff -r a0668fbf2483 -r b98519a42e53 ChangeLog.win32 --- a/ChangeLog.win32 Mon Mar 02 21:53:53 2009 +0000 +++ b/ChangeLog.win32 Mon Mar 02 22:07:59 2009 +0000 @@ -1,7 +1,10 @@ -version 2.5.5 (??/??/2009): +version 2.6.0 (??/??/2009): + +version 2.5.5 (03/01/2009): * Remove the "Flash window when chat messages are received" pref from the Windows Pidgin Options plugin - the Message Notification plugin does this (and much more). + * Updated GTK+ to 2.14.7 version 2.5.4 (01/12/2009): * Fix the "Hang on Exit" issue that a number of users encountered. diff -r a0668fbf2483 -r b98519a42e53 Makefile.am --- a/Makefile.am Mon Mar 02 21:53:53 2009 +0000 +++ b/Makefile.am Mon Mar 02 22:07:59 2009 +0000 @@ -10,6 +10,7 @@ README.mingw \ config.h.mingw \ doxy2devhelp.xsl \ + fix-casts.sh \ gaim.pc.in \ gaim-uninstalled.pc.in \ intltool-extract.in \ diff -r a0668fbf2483 -r b98519a42e53 Makefile.mingw --- a/Makefile.mingw Mon Mar 02 21:53:53 2009 +0000 +++ b/Makefile.mingw Mon Mar 02 22:07:59 2009 +0000 @@ -2,7 +2,7 @@ # # Author: hermanator12002@yahoo.com # Date 9/11/02 -# Description: Top Makefile for win32 (mingw) port of Pidgin and LibPurple +# Description: Top Makefile for win32 (mingw) port of Pidgin and libpurple # PIDGIN_TREE_TOP := . diff -r a0668fbf2483 -r b98519a42e53 NEWS --- a/NEWS Mon Mar 02 21:53:53 2009 +0000 +++ b/NEWS Mon Mar 02 22:07:59 2009 +0000 @@ -2,6 +2,17 @@ Our development blog is available at: http://planet.pidgin.im +2.5.5 (03/01/2009): + John: Well, yet another release with bug fixing and patches. Hopefully + one of the fixed bugs is one that irritated you. Also, thank Dimmuxx + for spending far too much time working on ICQ this release. + + Elliott: Lots and lots of MSN bugfixes again (I hope they're fixed, at + least). I think we finally have OCS/Yahoo!/federated buddies working + now. And there should be some workarounds for some server things that + may or may not have been our fault (like buddies on Allow+Block) which + should make general usage a bit smoother. + 2.5.4 (01/12/2009): John: Well, we fixed a few bugs for you this time around, I applied a few patches, and we've dealt with what feels like a TON of tickets diff -r a0668fbf2483 -r b98519a42e53 configure.ac --- a/configure.ac Mon Mar 02 21:53:53 2009 +0000 +++ b/configure.ac Mon Mar 02 22:07:59 2009 +0000 @@ -43,19 +43,19 @@ # # Make sure to update finch/libgnt/configure.ac with libgnt version changes. # -m4_define([purple_lt_current], [5]) +m4_define([purple_lt_current], [6]) m4_define([purple_major_version], [2]) -m4_define([purple_minor_version], [5]) -m4_define([purple_micro_version], [5]) +m4_define([purple_minor_version], [6]) +m4_define([purple_micro_version], [0]) m4_define([purple_version_suffix], [devel]) m4_define([purple_version], [purple_major_version.purple_minor_version.purple_micro_version]) m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix])) -m4_define([gnt_lt_current], [5]) +m4_define([gnt_lt_current], [6]) m4_define([gnt_major_version], [2]) -m4_define([gnt_minor_version], [5]) -m4_define([gnt_micro_version], [5]) +m4_define([gnt_minor_version], [6]) +m4_define([gnt_micro_version], [0]) m4_define([gnt_version_suffix], [devel]) m4_define([gnt_version], [gnt_major_version.gnt_minor_version.gnt_micro_version]) @@ -144,7 +144,7 @@ ;; esac -ALL_LINGUAS="af am ar az be@latin bg bn bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hu id it ja ka kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv ta te th tr uk ur vi xh zh_CN zh_HK zh_TW" +ALL_LINGUAS="af am ar az be@latin bg bn bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hu id it ja ka km kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv ta te th tr uk ur vi xh zh_CN zh_HK zh_TW" AM_GLIB_GNU_GETTEXT dnl If we don't have msgfmt, then po/ is going to fail -- ensure that @@ -1103,6 +1103,7 @@ msnp9) dynamic_msn=yes ;; myspace) dynamic_myspace=yes ;; novell) dynamic_novell=yes ;; + null) dynamic_null=yes ;; oscar) dynamic_oscar=yes ;; aim) dynamic_oscar=yes ;; icq) dynamic_oscar=yes ;; @@ -1117,21 +1118,6 @@ *) echo "Invalid dynamic protocol $i!!" ; exit ;; esac done -AM_CONDITIONAL(DYNAMIC_BONJOUR, test "x$dynamic_bonjour" = "xyes" -a [ "x$avahiincludes" = "xyes" -a "x$avahilibs " = "xyes" ] ) -AM_CONDITIONAL(DYNAMIC_GG, test "x$dynamic_gg" = "xyes") -AM_CONDITIONAL(DYNAMIC_IRC, test "x$dynamic_irc" = "xyes") -AM_CONDITIONAL(DYNAMIC_JABBER, test "x$dynamic_jabber" = "xyes") -AM_CONDITIONAL(DYNAMIC_MSN, test "x$dynamic_msn" = "xyes") -AM_CONDITIONAL(DYNAMIC_MYSPACE, test "x$dynamic_myspace" = "xyes") -AM_CONDITIONAL(DYNAMIC_NOVELL, test "x$dynamic_novell" = "xyes") -AM_CONDITIONAL(DYNAMIC_OSCAR, test "x$dynamic_oscar" = "xyes") -AM_CONDITIONAL(DYNAMIC_QQ, test "x$dynamic_qq" = "xyes") -AM_CONDITIONAL(DYNAMIC_SAMETIME, test "x$dynamic_sametime" = "xyes" -a "x$have_meanwhile" = "xyes") -AM_CONDITIONAL(DYNAMIC_SILC, test "x$dynamic_silc" = "xyes" -a "x$have_silc" = "xyes") -AM_CONDITIONAL(DYNAMIC_SIMPLE, test "x$dynamic_simple" = "xyes") -AM_CONDITIONAL(DYNAMIC_TOC, test "x$dynamic_toc" = "xyes") -AM_CONDITIONAL(DYNAMIC_YAHOO, test "x$dynamic_yahoo" = "xyes") -AM_CONDITIONAL(DYNAMIC_ZEPHYR, test "x$dynamic_zephyr" = "xyes") AC_ARG_ENABLE(plugins, [AC_HELP_STRING([--disable-plugins], [compile without plugin support])], , enable_plugins=yes) AC_ARG_WITH(krb4, [AC_HELP_STRING([--with-krb4=PREFIX], [compile Zephyr plugin with Kerberos 4 support])], kerberos="$withval", kerberos="no") @@ -1702,6 +1688,22 @@ AC_SUBST(GNUTLS_CFLAGS) AC_SUBST(GNUTLS_LIBS) +if test "x$enable_gnutls" = "xyes"; then + AC_MSG_CHECKING(for gnutls_priority_set_direct) + LIBS_save="$LIBS" + 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_DEFINE([HAVE_GNUTLS_PRIORITY_FUNCS], 1, + [Define if your gnutls has gnutls_priority_set_direct and friends]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + CPPFLAGS="$CPPFLAGS_save" + LIBS="$LIBS_save" +fi + AM_CONDITIONAL(USE_GNUTLS, test "x$enable_gnutls" = "xyes") diff -r a0668fbf2483 -r b98519a42e53 doc/TCL-HOWTO.dox --- a/doc/TCL-HOWTO.dox Mon Mar 02 21:53:53 2009 +0000 +++ b/doc/TCL-HOWTO.dox Mon Mar 02 22:07:59 2009 +0000 @@ -332,7 +332,7 @@ callbacks will live in the namespace @c event underneath that namespace. To briefly illustrate, the signal @c receiving-im-msg is provided with three arguments; the account on which the IM was -received, the screen name of the user sending the IM, and the text of +received, the name of the buddy sending the IM, and the text of the IM. These arguments live in the variables @c event::account, @c event::sender, and @c event::buffer, respectively. Therefore a callback which notifies the user of an incoming IM containing the word 'shizzle' diff -r a0668fbf2483 -r b98519a42e53 doc/notify-signals.dox --- a/doc/notify-signals.dox Mon Mar 02 21:53:53 2009 +0000 +++ b/doc/notify-signals.dox Mon Mar 02 22:07:59 2009 +0000 @@ -18,7 +18,7 @@ @note If adding a PurpleNotifyUserInfoEntry, be sure not to free it -- PurpleNotifyUserInfo assumes responsibility for its objects. @param account The account on which the info was obtained. - @param who The screen name of the user whose info is to be displayed. + @param who The name of the buddy whose info is to be displayed. @param user_info The information to be displayed, as PurpleNotifyUserInfoEntry objects @endsignaldef diff -r a0668fbf2483 -r b98519a42e53 doc/pidgin.1.in --- a/doc/pidgin.1.in Mon Mar 02 21:53:53 2009 +0000 +++ b/doc/pidgin.1.in Mon Mar 02 22:07:59 2009 +0000 @@ -128,11 +128,11 @@ .TP .B Alias Create an alias for this buddy. This will show an editable text field where -the buddy's screen name was displayed. In this field one can give this +the buddy's name was displayed. In this field one can give this buddy an alternate, more friendly name to appear on the buddy list and in conversations. -For example, if a buddy's name screen name was jsmith1281xx and his real +For example, if a buddy's name was jsmith1281xx and his real name was 'John Q. Smith,' one could create an alias as to identify the buddy by his common name. .LP @@ -150,7 +150,7 @@ Clicking \fIDelete\fR will delete the currently selected account. Clicking \fIAdd\fR or \fIModify\fR will invoke a \fBModify Account\fR window. Here, the user can add or alter account information. When creating -a new account, the user will submit a screen name and password. The user will +a new account, the user will submit a username and password. The user will also choose the protocol for the account. If \fIRemember Password\fR is chosen, the password will be saved in @@ -545,7 +545,7 @@ .br \fI~/.purple/status.xml\fR: stores the user's away messages. .br - \fI~/.purple/logs/PROTOCOL/ACCOUNT/SCREENNAME/DATE.{html,txt}\fR: conversation logs. + \fI~/.purple/logs/PROTOCOL/ACCOUNT/BUDDYNAME/DATE.{html,txt}\fR: conversation logs. .SH DIRECTORIES \fI@prefix@/lib/pidgin/\fR: Pidgin's plugins directory. diff -r a0668fbf2483 -r b98519a42e53 finch/gntaccount.c --- a/finch/gntaccount.c Mon Mar 02 21:53:53 2009 +0000 +++ b/finch/gntaccount.c Mon Mar 02 22:07:59 2009 +0000 @@ -65,7 +65,7 @@ GntWidget *window; GntWidget *protocol; - GntWidget *screenname; + GntWidget *username; GntWidget *password; GntWidget *alias; @@ -118,8 +118,8 @@ plugin = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(dialog->protocol)); prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); - /* Screenname && user-splits */ - value = gnt_entry_get_text(GNT_ENTRY(dialog->screenname)); + /* Username && user-splits */ + value = gnt_entry_get_text(GNT_ENTRY(dialog->username)); if (value == NULL || *value == '\0') { @@ -326,7 +326,7 @@ } if (username != NULL) - gnt_entry_set_text(GNT_ENTRY(dialog->screenname), username); + gnt_entry_set_text(GNT_ENTRY(dialog->username), username); g_free(username); } @@ -546,7 +546,7 @@ gnt_box_set_pad(GNT_BOX(hbox), 0); gnt_box_add_widget(GNT_BOX(window), hbox); - dialog->screenname = entry = gnt_entry_new(NULL); + dialog->username = entry = gnt_entry_new(NULL); gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Username:"))); gnt_box_add_widget(GNT_BOX(hbox), entry); diff -r a0668fbf2483 -r b98519a42e53 finch/gntblist.c --- a/finch/gntblist.c Mon Mar 02 21:53:53 2009 +0000 +++ b/finch/gntblist.c Mon Mar 02 22:07:59 2009 +0000 @@ -357,7 +357,7 @@ int color = 0; if (PURPLE_BLIST_NODE_IS_CONTACT(node)) - node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); + node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) return 0; @@ -388,7 +388,7 @@ if (fnode && fnode->signed_timer) flag |= GNT_TEXT_FLAG_BLINK; else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { - node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact *)node); + node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); fnode = FINCH_GET_DATA(node); if (fnode && fnode->signed_timer) flag |= GNT_TEXT_FLAG_BLINK; @@ -886,7 +886,7 @@ const char *name = NULL; if (PURPLE_BLIST_NODE_IS_CONTACT(node)) - node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); /* XXX: this can return NULL?! */ + node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); /* XXX: this can return NULL?! */ if (node == NULL) return NULL; @@ -1027,7 +1027,7 @@ return; if (PURPLE_BLIST_NODE_IS_CONTACT(node)) - node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); + node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { @@ -1438,16 +1438,16 @@ if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { PurpleBuddy *b = (PurpleBuddy*) node; type = PURPLE_LOG_IM; - name = g_strdup(b->name); - account = b->account; + name = g_strdup(purple_buddy_get_name(b)); + account = purple_buddy_get_account(b); } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { PurpleChat *c = (PurpleChat*) node; PurplePluginProtocolInfo *prpl_info = NULL; type = PURPLE_LOG_CHAT; - account = c->account; + account = purple_chat_get_account(c); prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account))); if (prpl_info && prpl_info->get_chat_name) { - name = prpl_info->get_chat_name(c->components); + name = prpl_info->get_chat_name(purple_chat_get_components(c)); } } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { finch_log_show_contact((PurpleContact *)node); @@ -1571,8 +1571,8 @@ ggblist->tagged = g_list_prepend(ggblist->tagged, node); } if (PURPLE_BLIST_NODE_IS_CONTACT(node)) - node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); - if (PURPLE_BLIST_NODE_IS_BUDDY(node)) + update_buddy_display(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)), ggblist); + else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) update_buddy_display((PurpleBuddy*)node, ggblist); else update_node_display(node, ggblist); @@ -1612,7 +1612,7 @@ purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg); } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist); - if ((PurpleBlistNode*)tg == target) { + if (PURPLE_BLIST_NODE(tg) == target) { /* The target is a group, just add the contact to the group. */ purple_blist_add_contact((PurpleContact*)node, tg, NULL); } else if (tc) { @@ -1624,7 +1624,7 @@ } } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { update_buddy_display((PurpleBuddy*)node, ggblist); - if ((PurpleBlistNode*)tg == target) { + if (PURPLE_BLIST_NODE(tg) == target) { /* The target is a group. Add this buddy in a new contact under this group. */ purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL); } else if (PURPLE_BLIST_NODE_IS_CONTACT(target)) { @@ -1639,7 +1639,7 @@ } } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { update_node_display(node, ggblist); - if ((PurpleBlistNode*)tg == target) + if (PURPLE_BLIST_NODE(tg) == target) purple_blist_add_chat((PurpleChat*)node, tg, NULL); else purple_blist_add_chat((PurpleChat*)node, NULL, target); @@ -1685,7 +1685,7 @@ create_group_menu(GNT_MENU(context), NULL); title = g_strdup(_("Buddy List")); } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { - ggblist->cnode = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); + ggblist->cnode = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode); title = g_strdup(purple_contact_get_alias((PurpleContact*)node)); } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { @@ -2415,8 +2415,8 @@ switch (purple_blist_node_get_type(n1)) { case PURPLE_BLIST_CONTACT_NODE: - n1 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n1); - n2 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n2); + n1 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n1))); + n2 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n2))); /* now compare the presence of the priority buddies */ case PURPLE_BLIST_BUDDY_NODE: ret = purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1), diff -r a0668fbf2483 -r b98519a42e53 finch/gntconv.c --- a/finch/gntconv.c Mon Mar 02 21:53:53 2009 +0000 +++ b/finch/gntconv.c Mon Mar 02 22:07:59 2009 +0000 @@ -496,8 +496,9 @@ buddies = purple_find_buddies(account, name); for (cur = buddies; cur != NULL; cur = cur->next) { PurpleBlistNode *node = cur->data; - if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL))) { - finch_log_show_contact((PurpleContact *)node->parent); + if ((node != NULL) && + (purple_blist_node_get_sibling_prev(node) || purple_blist_node_get_sibling_next(node))) { + finch_log_show_contact((PurpleContact *)purple_blist_node_get_parent(node)); g_slist_free(buddies); return; } @@ -529,7 +530,7 @@ gnt_menuitem_set_submenu(item, GNT_MENU(sub)); for (; buds; buds = g_slist_delete_link(buds, buds)) { - PurpleBlistNode *node = (PurpleBlistNode *)purple_buddy_get_contact((PurpleBuddy *)buds->data); + PurpleBlistNode *node = PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(buds->data))); for (node = purple_blist_node_get_first_child(node); node != NULL; node = purple_blist_node_get_sibling_next(node)) { PurpleBuddy *buddy = (PurpleBuddy *)node; diff -r a0668fbf2483 -r b98519a42e53 finch/gntlog.c --- a/finch/gntlog.c Mon Mar 02 21:53:53 2009 +0000 +++ b/finch/gntlog.c Mon Mar 02 22:07:59 2009 +0000 @@ -49,7 +49,7 @@ struct log_viewer_hash_t { PurpleLogType type; - char *screenname; + char *username; PurpleAccount *account; PurpleContact *contact; }; @@ -62,7 +62,7 @@ return g_direct_hash(viewer->contact); if (viewer->account) { - return g_str_hash(viewer->screenname) + + return g_str_hash(viewer->username) + g_str_hash(purple_account_get_username(viewer->account)); } @@ -88,10 +88,10 @@ return FALSE; } - if (a->screenname && b->screenname) { - normal = g_strdup(purple_normalize(a->account, a->screenname)); + if (a->username && b->username) { + normal = g_strdup(purple_normalize(a->account, a->username)); ret = (a->account == b->account) && - !strcmp(normal, purple_normalize(b->account, b->screenname)); + !strcmp(normal, purple_normalize(b->account, b->username)); g_free(normal); } else { ret = (a == b); @@ -155,7 +155,7 @@ lv = g_hash_table_lookup(log_viewers, ht); g_hash_table_remove(log_viewers, ht); - g_free(ht->screenname); + g_free(ht->username); g_free(ht); } else syslog_viewer = NULL; @@ -284,7 +284,7 @@ if (!purple_prefs_get_bool("/purple/logging/log_chats")) log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled."); } - g_free(ht->screenname); + g_free(ht->username); g_free(ht); } @@ -365,31 +365,31 @@ *list = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, set->name, set->account), *list); } -void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) +void finch_log_show(PurpleLogType type, const char *username, PurpleAccount *account) { struct log_viewer_hash_t *ht; FinchLogViewer *lv = NULL; - const char *name = screenname; + const char *name = username; char *title; GList *logs = NULL; int size = 0; if (type != PURPLE_LOG_IM) { g_return_if_fail(account != NULL); - g_return_if_fail(screenname != NULL); + g_return_if_fail(username != NULL); } ht = g_new0(struct log_viewer_hash_t, 1); ht->type = type; - ht->screenname = g_strdup(screenname); + ht->username = g_strdup(username); ht->account = account; if (log_viewers == NULL) { log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal); } else if ((lv = g_hash_table_lookup(log_viewers, ht))) { gnt_window_present(lv->window); - g_free(ht->screenname); + g_free(ht->username); g_free(ht); return; } @@ -397,7 +397,7 @@ if (type == PURPLE_LOG_CHAT) { PurpleChat *chat; - chat = purple_blist_find_chat(account, screenname); + chat = purple_blist_find_chat(account, username); if (chat != NULL) name = purple_chat_get_name(chat); @@ -405,8 +405,8 @@ } else { PurpleBuddy *buddy; - if (screenname) { - buddy = purple_find_buddy(account, screenname); + if (username) { + buddy = purple_find_buddy(account, username); if (buddy != NULL) name = purple_buddy_get_contact_alias(buddy); title = g_strdup_printf(_("Conversations with %s"), name); @@ -415,9 +415,9 @@ } } - if (screenname) { - logs = purple_log_get_logs(type, screenname, account); - size = purple_log_get_total_size(type, screenname, account); + if (username) { + logs = purple_log_get_logs(type, username, account); + size = purple_log_get_total_size(type, username, account); } else { /* This will happen only for IMs */ GHashTable *table = purple_log_get_log_sets(); @@ -458,12 +458,16 @@ for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact); child; child = purple_blist_node_get_sibling_next(child)) { + const char *name; + PurpleAccount *account; if (!PURPLE_BLIST_NODE_IS_BUDDY(child)) continue; - logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, - ((PurpleBuddy *)child)->account), logs); - total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account); + name = purple_buddy_get_name((PurpleBuddy *)child); + account = purple_buddy_get_account((PurpleBuddy *)child); + logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, name, + account), logs); + total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, name, account); } logs = g_list_sort(logs, purple_log_compare); diff -r a0668fbf2483 -r b98519a42e53 finch/gntlog.h --- a/finch/gntlog.h Mon Mar 02 21:53:53 2009 +0000 +++ b/finch/gntlog.h Mon Mar 02 22:07:59 2009 +0000 @@ -50,7 +50,7 @@ -void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account); +void finch_log_show(PurpleLogType type, const char *username, PurpleAccount *account); void finch_log_show_contact(PurpleContact *contact); void finch_syslog_show(void); diff -r a0668fbf2483 -r b98519a42e53 finch/gntrequest.c --- a/finch/gntrequest.c Mon Mar 02 21:53:53 2009 +0000 +++ b/finch/gntrequest.c Mon Mar 02 22:07:59 2009 +0000 @@ -39,6 +39,12 @@ #include "debug.h" #include "util.h" +/* XXX: Until gobjectification ... */ +#undef FINCH_GET_DATA +#undef FINCH_SET_DATA +#define FINCH_GET_DATA(obj) purple_request_field_get_ui_data(obj) +#define FINCH_SET_DATA(obj, data) purple_request_field_set_ui_data(obj, data) + typedef struct { void *user_data; @@ -393,11 +399,11 @@ } static void -update_selected_account(GntEntry *screenname, const char *start, const char *end, +update_selected_account(GntEntry *username, const char *start, const char *end, GntComboBox *accountlist) { GList *accounts = gnt_tree_get_rows(GNT_TREE(accountlist->dropdown)); - const char *name = gnt_entry_get_text(screenname); + const char *name = gnt_entry_get_text(username); while (accounts) { if (purple_find_buddy(accounts->data, name)) { gnt_combo_box_set_selected(accountlist, accounts->data); @@ -419,7 +425,7 @@ } static GntWidget* -create_string_field(PurpleRequestField *field, GntWidget **screenname) +create_string_field(PurpleRequestField *field, GntWidget **username) { const char *hint = purple_request_field_get_type_hint(field); GntWidget *entry = gnt_entry_new( @@ -435,8 +441,8 @@ gnt_entry_add_suggest(GNT_ENTRY(entry), purple_buddy_get_name((PurpleBuddy*)node)); } gnt_entry_set_always_suggest(GNT_ENTRY(entry), TRUE); - if (screenname) - *screenname = entry; + if (username) + *username = entry; } else if (hint && !strcmp(hint, "group")) { PurpleBlistNode *node; for (node = purple_blist_get_root(); node; @@ -569,7 +575,7 @@ { GntWidget *window, *box; GList *grlist; - GntWidget *screenname = NULL, *accountlist = NULL; + GntWidget *username = NULL, *accountlist = NULL; window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_FIELDS); @@ -617,7 +623,7 @@ } else if (type == PURPLE_REQUEST_FIELD_STRING) { - FINCH_SET_DATA(field, create_string_field(field, &screenname)); + FINCH_SET_DATA(field, create_string_field(field, &username)); } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { @@ -633,7 +639,8 @@ } else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) { - accountlist = FINCH_SET_DATA(field, create_account_field(field)); + accountlist = create_account_field(field); + FINCH_SET_DATA(field, accountlist); } else { @@ -655,8 +662,8 @@ setup_default_callback(window, cancel_cb, userdata); gnt_widget_show(window); - if (screenname && accountlist) { - g_signal_connect(screenname, "completion", G_CALLBACK(update_selected_account), accountlist); + if (username && accountlist) { + g_signal_connect(username, "completion", G_CALLBACK(update_selected_account), accountlist); } g_object_set_data(G_OBJECT(window), "fields", allfields); diff -r a0668fbf2483 -r b98519a42e53 finch/plugins/grouping.c --- a/finch/plugins/grouping.c Mon Mar 02 21:53:53 2009 +0000 +++ b/finch/plugins/grouping.c Mon Mar 02 22:07:59 2009 +0000 @@ -87,7 +87,7 @@ switch (purple_blist_node_get_type(node)) { case PURPLE_BLIST_CONTACT_NODE: - node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); + node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); ret = PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) ? &online : &offline; break; case PURPLE_BLIST_BUDDY_NODE: diff -r a0668fbf2483 -r b98519a42e53 fix-casts.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fix-casts.sh Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ $# -eq 0 ]; then + echo "Usage: `basename "$0"` PurpleFoo..." + echo + echo "This script searches the *current working directory* and replaces casts" + echo "with GObject-style type checking and casting macros." + echo 'For example, "(PurpleBuddy *)b" becomes "PURPLE_BUDDY(b)".' + exit 0 +fi + +for struct in $* ; do + cast=`echo $struct | sed "s|[A-Z]|_\0|g" | tr "a-z" "A-Z" | sed "s|^_||"` + for file in `grep -rl "([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)" . --include=*.c --exclude=purple-client-bindings.c` ; do + sed -i "s|([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)[[:space:]]*(|$cast(|g" $file + sed -i "s|([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)[[:space:]]*\([^(][^,);]*\)|$cast(\1)|g" $file + done +done diff -r a0668fbf2483 -r b98519a42e53 libpurple/Makefile.am --- a/libpurple/Makefile.am Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/Makefile.am Mon Mar 02 22:07:59 2009 +0000 @@ -75,7 +75,12 @@ stringref.c \ stun.c \ sound.c \ + sound-theme.c \ + sound-theme-loader.c \ sslconn.c \ + theme.c \ + theme-loader.c \ + theme-manager.c \ upnp.c \ util.c \ value.c \ @@ -128,7 +133,12 @@ stringref.h \ stun.h \ sound.h \ + sound-theme.h \ + sound-theme-loader.h \ sslconn.h \ + theme.h \ + theme-loader.h \ + theme-manager.h \ upnp.h \ util.h \ value.h \ diff -r a0668fbf2483 -r b98519a42e53 libpurple/Makefile.mingw --- a/libpurple/Makefile.mingw Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/Makefile.mingw Mon Mar 02 22:07:59 2009 +0000 @@ -1,7 +1,7 @@ # # Makefile.mingw # -# Description: Makefile for win32 (mingw) version of LibPurple +# Description: Makefile for win32 (mingw) version of libpurple # PIDGIN_TREE_TOP := .. @@ -67,10 +67,15 @@ signals.c \ smiley.c \ sound.c \ + sound-theme.c \ + sound-theme-loader.c \ sslconn.c \ status.c \ stringref.c \ stun.c \ + theme.c \ + theme-loader.c \ + theme-manager.c \ upnp.c \ util.c \ value.c \ diff -r a0668fbf2483 -r b98519a42e53 libpurple/account.c --- a/libpurple/account.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/account.c Mon Mar 02 22:07:59 2009 +0000 @@ -178,9 +178,7 @@ { const char *string_value = purple_value_get_string(attr_value); const char *default_string_value = purple_value_get_string(default_value); - if (((string_value == NULL) && (default_string_value == NULL)) || - ((string_value != NULL) && (default_string_value != NULL) && - !strcmp(string_value, default_string_value))) + if (purple_strequal(string_value, default_string_value)) return NULL; value = g_strdup(purple_value_get_string(attr_value)); } @@ -511,11 +509,11 @@ /* Ignore this setting */ continue; - if (!strcmp(str_type, "string")) + if (purple_strequal(str_type, "string")) type = PURPLE_PREF_STRING; - else if (!strcmp(str_type, "int")) + else if (purple_strequal(str_type, "int")) type = PURPLE_PREF_INT; - else if (!strcmp(str_type, "bool")) + else if (purple_strequal(str_type, "bool")) type = PURPLE_PREF_BOOLEAN; else /* Ignore this setting */ @@ -660,17 +658,17 @@ child = xmlnode_get_child(node, "type"); if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL)) { - if (!strcmp(data, "global")) + if (purple_strequal(data, "global")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_GLOBAL); - else if (!strcmp(data, "none")) + else if (purple_strequal(data, "none")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_NONE); - else if (!strcmp(data, "http")) + else if (purple_strequal(data, "http")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_HTTP); - else if (!strcmp(data, "socks4")) + else if (purple_strequal(data, "socks4")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS4); - else if (!strcmp(data, "socks5")) + else if (purple_strequal(data, "socks5")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS5); - else if (!strcmp(data, "envvar")) + else if (purple_strequal(data, "envvar")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_ENVVAR); else { @@ -2027,7 +2025,7 @@ { PurpleStatusType *status_type = (PurpleStatusType *)l->data; - if (!strcmp(purple_status_type_get_id(status_type), id)) + if (purple_strequal(purple_status_type_get_id(status_type), id)) return status_type; } @@ -2238,9 +2236,9 @@ PurplePluginProtocolInfo *prpl_info = NULL; PurpleConnection *gc = purple_account_get_connection(account); PurplePlugin *prpl = NULL; - + if (gc != NULL) - prpl = purple_connection_get_prpl(gc); + prpl = purple_connection_get_prpl(gc); if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); @@ -2255,20 +2253,20 @@ PurplePluginProtocolInfo *prpl_info = NULL; PurpleConnection *gc = purple_account_get_connection(account); PurplePlugin *prpl = NULL; - + if (gc != NULL) - prpl = purple_connection_get_prpl(gc); + prpl = purple_connection_get_prpl(gc); if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - + if (prpl_info) { GList *cur, *groups = NULL; /* Make a list of what group each buddy is in */ for (cur = buddies; cur != NULL; cur = cur->next) { - PurpleBlistNode *node = cur->data; - groups = g_list_append(groups, node->parent->parent); + PurpleBuddy *buddy = cur->data; + groups = g_list_append(groups, purple_buddy_get_group(buddy)); } if (prpl_info->add_buddies != NULL) @@ -2294,13 +2292,13 @@ PurplePluginProtocolInfo *prpl_info = NULL; PurpleConnection *gc = purple_account_get_connection(account); PurplePlugin *prpl = NULL; - + if (gc != NULL) - prpl = purple_connection_get_prpl(gc); + prpl = purple_connection_get_prpl(gc); if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - + if (prpl_info && prpl_info->remove_buddy) prpl_info->remove_buddy(gc, buddy, group); } @@ -2311,13 +2309,13 @@ PurplePluginProtocolInfo *prpl_info = NULL; PurpleConnection *gc = purple_account_get_connection(account); PurplePlugin *prpl = NULL; - + if (gc != NULL) - prpl = purple_connection_get_prpl(gc); + prpl = purple_connection_get_prpl(gc); if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - + if (prpl_info) { if (prpl_info->remove_buddies) prpl_info->remove_buddies(gc, buddies, groups); @@ -2339,9 +2337,9 @@ PurplePluginProtocolInfo *prpl_info = NULL; PurpleConnection *gc = purple_account_get_connection(account); PurplePlugin *prpl = NULL; - + if (gc != NULL) - prpl = purple_connection_get_prpl(gc); + prpl = purple_connection_get_prpl(gc); if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); @@ -2357,11 +2355,11 @@ PurplePluginProtocolInfo *prpl_info = NULL; PurpleConnection *gc = purple_account_get_connection(account); PurplePlugin *prpl = NULL; - + purple_account_set_password(account, new_pw); - + if (gc != NULL) - prpl = purple_connection_get_prpl(gc); + prpl = purple_connection_get_prpl(gc); if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); @@ -2375,15 +2373,15 @@ PurpleConnection *gc; PurplePluginProtocolInfo *prpl_info = NULL; PurplePlugin *prpl = NULL; - + g_return_val_if_fail(account, FALSE); g_return_val_if_fail(buddy, FALSE); gc = purple_account_get_connection(account); if (gc == NULL) return FALSE; - - prpl = purple_connection_get_prpl(gc); + + prpl = purple_connection_get_prpl(gc); if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); @@ -2518,23 +2516,26 @@ purple_accounts_remove(account); /* Remove this account's buddies */ - for (gnode = purple_blist_get_root(); gnode != NULL; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); + gnode != NULL; + gnode = purple_blist_node_get_sibling_next(gnode)) + { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - cnode = gnode->child; + cnode = purple_blist_node_get_first_child(gnode); while (cnode) { - PurpleBlistNode *cnode_next = cnode->next; + PurpleBlistNode *cnode_next = purple_blist_node_get_sibling_next(cnode); if(PURPLE_BLIST_NODE_IS_CONTACT(cnode)) { - bnode = cnode->child; + bnode = purple_blist_node_get_first_child(cnode); while (bnode) { - PurpleBlistNode *bnode_next = bnode->next; + PurpleBlistNode *bnode_next = purple_blist_node_get_sibling_next(bnode); if (PURPLE_BLIST_NODE_IS_BUDDY(bnode)) { PurpleBuddy *b = (PurpleBuddy *)bnode; - if (b->account == account) + if (purple_buddy_get_account(b) == account) purple_blist_remove_buddy(b); } bnode = bnode_next; @@ -2542,7 +2543,7 @@ } else if (PURPLE_BLIST_NODE_IS_CHAT(cnode)) { PurpleChat *c = (PurpleChat *)cnode; - if (c->account == account) + if (purple_chat_get_account(c) == account) purple_blist_remove_chat(c); } cnode = cnode_next; @@ -2633,11 +2634,11 @@ for (l = purple_accounts_get_all(); l != NULL; l = l->next) { account = (PurpleAccount *)l->data; - if (protocol_id && strcmp(account->protocol_id, protocol_id)) + if (protocol_id && !purple_strequal(account->protocol_id, protocol_id)) continue; who = g_strdup(purple_normalize(account, name)); - if (!strcmp(purple_normalize(account, purple_account_get_username(account)), who)) { + if (purple_strequal(purple_normalize(account, purple_account_get_username(account)), who)) { g_free(who); return account; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/account.h --- a/libpurple/account.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/account.h Mon Mar 02 22:07:59 2009 +0000 @@ -260,7 +260,7 @@ * Notifies the user that a remote user has wants to add the local user * to his or her buddy list and requires authorization to do so. * - * This will present a dialog informing the user of this and ask if the + * This will present a dialog informing the user of this and ask if the * user authorizes or denies the remote user from adding him. * * @param account The account that was added diff -r a0668fbf2483 -r b98519a42e53 libpurple/blist.c --- a/libpurple/blist.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/blist.c Mon Mar 02 22:07:59 2009 +0000 @@ -82,7 +82,7 @@ static guint _purple_blist_hbuddy_equal(struct _purple_hbuddy *hb1, struct _purple_hbuddy *hb2) { - return ((!strcmp(hb1->name, hb2->name)) && hb1->account == hb2->account && hb1->group == hb2->group); + return (purple_strequal(hb1->name, hb2->name) && hb1->account == hb2->account && hb1->group == hb2->group); } static void _purple_blist_hbuddy_free_key(struct _purple_hbuddy *hb) @@ -382,11 +382,11 @@ if (!value) return; - if (!type || !strcmp(type, "string")) + if (!type || purple_strequal(type, "string")) purple_blist_node_set_string(node, name, value); - else if (!strcmp(type, "bool")) + else if (purple_strequal(type, "bool")) purple_blist_node_set_bool(node, name, atoi(value)); - else if (!strcmp(type, "int")) + else if (purple_strequal(type, "int")) purple_blist_node_set_int(node, name, atoi(value)); g_free(value); @@ -453,9 +453,9 @@ for (x = cnode->child; x; x = x->next) { if (x->type != XMLNODE_TYPE_TAG) continue; - if (!strcmp(x->name, "buddy")) + if (purple_strequal(x->name, "buddy")) parse_buddy(group, contact, x); - else if (!strcmp(x->name, "setting")) + else if (purple_strequal(x->name, "setting")) parse_setting((PurpleBlistNode*)contact, x); } @@ -528,12 +528,12 @@ for (cnode = groupnode->child; cnode; cnode = cnode->next) { if (cnode->type != XMLNODE_TYPE_TAG) continue; - if (!strcmp(cnode->name, "setting")) + if (purple_strequal(cnode->name, "setting")) parse_setting((PurpleBlistNode*)group, cnode); - else if (!strcmp(cnode->name, "contact") || - !strcmp(cnode->name, "person")) + else if (purple_strequal(cnode->name, "contact") || + purple_strequal(cnode->name, "person")) parse_contact(group, cnode); - else if (!strcmp(cnode->name, "chat")) + else if (purple_strequal(cnode->name, "chat")) parse_chat(group, cnode); } } @@ -590,11 +590,11 @@ if (x->type != XMLNODE_TYPE_TAG) continue; - if (!strcmp(x->name, "permit")) { + if (purple_strequal(x->name, "permit")) { name = xmlnode_get_data(x); purple_privacy_permit_add(account, name, TRUE); g_free(name); - } else if (!strcmp(x->name, "block")) { + } else if (purple_strequal(x->name, "block")) { name = xmlnode_get_data(x); purple_privacy_deny_add(account, name, TRUE); g_free(name); @@ -699,6 +699,24 @@ return purplebuddylist ? purplebuddylist->root : NULL; } +GHashTable * +purple_blist_get_buddies() +{ + return purplebuddylist ? purplebuddylist->buddies : NULL; +} + +void * +purple_blist_get_ui_data() +{ + return purplebuddylist->ui_data; +} + +void +purple_blist_set_ui_data(void *ui_data) +{ + purplebuddylist->ui_data = ui_data; +} + void purple_blist_show() { PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); @@ -774,12 +792,28 @@ return node? node->prev : NULL; } +void * +purple_blist_node_get_ui_data(const PurpleBlistNode *node) +{ + g_return_val_if_fail(node, NULL); + + return node->ui_data; +} + +void +purple_blist_node_set_ui_data(PurpleBlistNode *node, void *ui_data) { + g_return_if_fail(node); + + node->ui_data = ui_data; +} + void purple_blist_update_buddy_status(PurpleBuddy *buddy, PurpleStatus *old_status) { PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); PurplePresence *presence; PurpleStatus *status; + PurpleBlistNode *cnode; g_return_if_fail(buddy != NULL); @@ -794,16 +828,18 @@ purple_signal_emit(purple_blist_get_handle(), "buddy-signed-on", buddy); - ((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online++; - if (((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online == 1) - ((PurpleGroup *)((PurpleBlistNode *)buddy)->parent->parent)->online++; + cnode = buddy->node.parent; + if (++(PURPLE_CONTACT(cnode)->online) == 1) + PURPLE_GROUP(cnode->parent)->online++; } else if (!purple_status_is_online(status) && purple_status_is_online(old_status)) { + purple_blist_node_set_int(&buddy->node, "last_seen", time(NULL)); purple_signal_emit(purple_blist_get_handle(), "buddy-signed-off", buddy); - ((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online--; - if (((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online == 0) - ((PurpleGroup *)((PurpleBlistNode *)buddy)->parent->parent)->online--; + + cnode = buddy->node.parent; + if (--(PURPLE_CONTACT(cnode)->online) == 0) + PURPLE_GROUP(cnode->parent)->online--; } else { purple_signal_emit(purple_blist_get_handle(), "buddy-status-changed", buddy, old_status, @@ -1025,7 +1061,7 @@ g_return_if_fail(source != NULL); g_return_if_fail(new_name != NULL); - if (*new_name == '\0' || !strcmp(new_name, source->name)) + if (*new_name == '\0' || purple_strequal(new_name, source->name)) return; dest = purple_find_group(new_name); @@ -1092,7 +1128,7 @@ /* Notify all PRPLs */ /* TODO: Is this condition needed? Seems like it would always be TRUE */ - if(old_name && source && strcmp(source->name, old_name)) { + if(old_name && purple_strequal(source->name, old_name)) { for (accts = purple_group_get_accounts(source); accts; accts = g_slist_remove(accts, accts->data)) { PurpleAccount *account = accts->data; PurpleConnection *gc = NULL; @@ -1101,7 +1137,7 @@ GList *l = NULL, *buddies = NULL; gc = purple_account_get_connection(account); - + if(gc) prpl = purple_connection_get_prpl(gc); @@ -1166,17 +1202,17 @@ return chat; } -PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias) +PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias) { PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); PurpleBuddy *buddy; g_return_val_if_fail(account != NULL, FALSE); - g_return_val_if_fail(screenname != NULL, FALSE); + g_return_val_if_fail(name != NULL, FALSE); buddy = g_new0(PurpleBuddy, 1); buddy->account = account; - buddy->name = g_strdup(screenname); + buddy->name = g_strdup(name); buddy->alias = g_strdup(alias); buddy->presence = purple_presence_new_for_buddy(buddy); ((PurpleBlistNode *)buddy)->type = PURPLE_BLIST_BUDDY_NODE; @@ -1232,6 +1268,23 @@ return buddy->icon; } +gpointer +purple_buddy_get_protocol_data(const PurpleBuddy *buddy) +{ + g_return_val_if_fail(buddy != NULL, NULL); + + return buddy->proto_data; +} + +void +purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data) +{ + g_return_if_fail(buddy != NULL); + + buddy->proto_data = data; +} + + void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, PurpleBlistNode *node) { PurpleBlistNode *cnode = (PurpleBlistNode*)chat; @@ -1339,7 +1392,7 @@ g = (PurpleGroup*)node->parent->parent; } else if (contact) { c = contact; - g = (PurpleGroup *)((PurpleBlistNode *)c)->parent; + g = PURPLE_GROUP(PURPLE_BLIST_NODE(c)->parent); } else { g = group; if (g == NULL) @@ -1421,16 +1474,14 @@ } if (PURPLE_BUDDY_IS_ONLINE(buddy)) { - ((PurpleContact*)bnode->parent)->online++; - if (((PurpleContact*)bnode->parent)->online == 1) - ((PurpleGroup*)bnode->parent->parent)->online++; + if (++(PURPLE_CONTACT(bnode->parent)->online) == 1) + PURPLE_GROUP(bnode->parent->parent)->online++; } if (purple_account_is_connected(buddy->account)) { - ((PurpleContact*)bnode->parent)->currentsize++; - if (((PurpleContact*)bnode->parent)->currentsize == 1) - ((PurpleGroup*)bnode->parent->parent)->currentsize++; + if (++(PURPLE_CONTACT(bnode->parent)->currentsize) == 1) + PURPLE_GROUP(bnode->parent->parent)->currentsize++; } - ((PurpleContact*)bnode->parent)->totalsize++; + PURPLE_CONTACT(bnode->parent)->totalsize++; hb = g_new(struct _purple_hbuddy, 1); hb->name = g_strdup(purple_normalize(buddy->account, buddy->name)); @@ -1546,7 +1597,7 @@ g_return_if_fail(contact != NULL); g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT((PurpleBlistNode*)contact)); - if ((PurpleBlistNode*)contact == node) + if (PURPLE_BLIST_NODE(contact) == node) return; if (node && (PURPLE_BLIST_NODE_IS_CONTACT(node) || @@ -2056,6 +2107,12 @@ return buddy->name; } +const char *purple_buddy_get_local_buddy_alias(PurpleBuddy *buddy) +{ + g_return_val_if_fail(buddy, NULL); + return buddy->alias; +} + const char *purple_buddy_get_server_alias(PurpleBuddy *buddy) { g_return_val_if_fail(buddy != NULL, NULL); @@ -2300,7 +2357,7 @@ { g_return_val_if_fail(buddy != NULL, NULL); - return (PurpleContact*)((PurpleBlistNode*)buddy)->parent; + return PURPLE_CONTACT(PURPLE_BLIST_NODE(buddy)->parent); } PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy) diff -r a0668fbf2483 -r b98519a42e53 libpurple/blist.h --- a/libpurple/blist.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/blist.h Mon Mar 02 22:07:59 2009 +0000 @@ -75,12 +75,37 @@ } PurpleBlistNodeFlags; +/** + * @since 2.6.0 + */ +#define PURPLE_BLIST_NODE(obj) ((PurpleBlistNode *)(obj)) + #define PURPLE_BLIST_NODE_HAS_FLAG(b, f) (purple_blist_node_get_flags((PurpleBlistNode*)(b)) & (f)) #define PURPLE_BLIST_NODE_SHOULD_SAVE(b) (! PURPLE_BLIST_NODE_HAS_FLAG(b, PURPLE_BLIST_NODE_FLAG_NO_SAVE)) #define PURPLE_BLIST_NODE_NAME(n) (purple_blist_node_get_type(n) == PURPLE_BLIST_CHAT_NODE ? purple_chat_get_name((PurpleChat*)n) : \ purple_blist_node_get_type(n) == PURPLE_BLIST_BUDDY_NODE ? purple_buddy_get_name((PurpleBuddy*)n) : NULL) +/** + * @since 2.6.0 + */ +#define PURPLE_GROUP(obj) ((PurpleGroup *)(obj)) + +/** + * @since 2.6.0 + */ +#define PURPLE_CONTACT(obj) ((PurpleContact *)(obj)) + +/** + * @since 2.6.0 + */ +#define PURPLE_BUDDY(obj) ((PurpleBuddy *)(obj)) + +/** + * @since 2.6.0 + */ +#define PURPLE_CHAT(obj) ((PurpleChat *)(obj)) + #include "account.h" #include "buddyicon.h" #include "status.h" @@ -111,7 +136,7 @@ */ struct _PurpleBuddy { PurpleBlistNode node; /**< The node that this buddy inherits from */ - char *name; /**< The screenname of the buddy. */ + char *name; /**< The name of the buddy. */ char *alias; /**< The user-set alias of the buddy */ char *server_alias; /**< The server-specified alias of the buddy. (i.e. MSN "Friendly Names") */ void *proto_data; /**< This allows the prpl to associate whatever data it wants with a buddy */ @@ -156,9 +181,6 @@ PurpleAccount *account; /**< The account this chat is attached to */ }; -#endif /* PURPLE_HIDE_STRUCTS && PURPLE_BLIST_STRUCTS */ - - /** * The Buddy List */ @@ -168,6 +190,8 @@ void *ui_data; /**< UI-specific data. */ }; +#endif /* PURPLE_HIDE_STRUCTS && PURPLE_BLIST_STRUCTS */ + /** * Buddy list UI operations. * @@ -236,6 +260,33 @@ PurpleBlistNode *purple_blist_get_root(void); /** + * Returns the hash table of every buddy in the list. + * + * @return The hash table of every buddy in the list. + * + * @since 2.6.0 + */ +GHashTable *purple_blist_get_buddies(void); + +/** + * Returns the UI data for the list. + * + * @return The UI data for the list. + * + * @since 2.6.0 + */ +void *purple_blist_get_ui_data(void); + +/** + * Sets the UI data for the list. + * + * @param ui_data The UI data for the list. + * + * @since 2.6.0 + */ +void purple_blist_set_ui_data(void *ui_data); + +/** * Returns the next node of a given node. This function is to be used to iterate * over the tree returned by purple_get_blist. * @@ -302,6 +353,25 @@ PurpleBlistNode *purple_blist_node_get_sibling_prev(PurpleBlistNode *node); /** + * Returns the UI data of a given node. + * + * @param node The node. + * @return The UI data. + * @since 2.6.0 + */ +void *purple_blist_node_get_ui_data(const PurpleBlistNode *node); + +/** + * Sets the UI data of a given node. + * + * @param node The node. + * @param ui_data The UI data. + * + * @since 2.6.0 + */ +void purple_blist_node_set_ui_data(PurpleBlistNode *node, void *ui_data); + +/** * Shows the buddy list, creating a new one if necessary. */ void purple_blist_show(void); @@ -331,6 +401,7 @@ * Updates a node's custom icon. * * @param node The PurpleBlistNode whose custom icon has changed. + * * @since 2.5.0 */ void purple_blist_update_node_icon(PurpleBlistNode *node); @@ -423,11 +494,11 @@ * Creates a new buddy * * @param account The account this buddy will get added to - * @param screenname The screenname of the new buddy + * @param name The name of the new buddy * @param alias The alias of the new buddy (or NULL if unaliased) * @return A newly allocated buddy */ -PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias); +PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias); /** * Sets a buddy's icon. @@ -470,6 +541,32 @@ PurpleBuddyIcon *purple_buddy_get_icon(const PurpleBuddy *buddy); /** + * Returns a buddy's protocol-specific data. + * + * This should only be called from the associated prpl. + * + * @param buddy The buddy. + * @return The protocol data. + * + * @see purple_buddy_set_protocol_data() + * @since 2.6.0 + */ +gpointer purple_buddy_get_protocol_data(const PurpleBuddy *buddy); + +/** + * Sets a buddy's protocol-specific data. + * + * This should only be called from the associated prpl. + * + * @param buddy The buddy. + * @param data The data. + * + * @see purple_buddy_get_protocol_data() + * @since 2.6.0 + */ +void purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data); + +/** * Returns a buddy's contact. * * @param buddy The buddy. @@ -659,15 +756,18 @@ */ const char *purple_buddy_get_contact_alias(PurpleBuddy *buddy); +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_BLIST_C_) /** * Returns the correct alias for this user, ignoring server aliases. Used * when a user-recognizable name is required. In order: buddy's alias; buddy's * contact alias; buddy's user name. - * + * * @param buddy The buddy whose alias will be returned. * @return The appropriate name or alias. + * @deprecated Try purple_buddy_get_alias(), if server aliases are okay. */ const char *purple_buddy_get_local_alias(PurpleBuddy *buddy); +#endif /** * Returns the correct name to display for a buddy. In order of precedence: @@ -680,6 +780,16 @@ const char *purple_buddy_get_alias(PurpleBuddy *buddy); /** + * Returns the local alias for the buddy, or @c NULL if none exists. + * + * @param buddy The buddy + * @return The local alias for the buddy + * + * @since 2.6.0 + */ +const char *purple_buddy_get_local_buddy_alias(PurpleBuddy *buddy); + +/** * Returns the correct name to display for a blist chat. * * @param chat The chat whose name will be returned. @@ -688,19 +798,19 @@ const char *purple_chat_get_name(PurpleChat *chat); /** - * Finds the buddy struct given a screenname and an account + * Finds the buddy struct given a name and an account * * @param account The account this buddy belongs to - * @param name The buddy's screenname + * @param name The buddy's name * @return The buddy or NULL if the buddy does not exist */ PurpleBuddy *purple_find_buddy(PurpleAccount *account, const char *name); /** - * Finds the buddy struct given a screenname, an account, and a group + * Finds the buddy struct given a name, an account, and a group * * @param account The account this buddy belongs to - * @param name The buddy's screenname + * @param name The buddy's name * @param group The group to look in * @return The buddy or NULL if the buddy does not exist in the group */ @@ -708,10 +818,10 @@ PurpleGroup *group); /** - * Finds all PurpleBuddy structs given a screenname and an account + * Finds all PurpleBuddy structs given a name and an account * * @param account The account this buddy belongs to - * @param name The buddy's screenname (or NULL to return all buddies in the account) + * @param name The buddy's name (or NULL to return all buddies in the account) * * @return A GSList of buddies (which must be freed), or NULL if the buddy doesn't exist */ @@ -751,6 +861,7 @@ * @param chat The chat. * * @return The account the chat belongs to. + * * @since 2.4.0 */ PurpleAccount *purple_chat_get_account(PurpleChat *chat); @@ -761,6 +872,7 @@ * @param chat The chat. * * @constreturn The hashtable. + * * @since 2.4.0 */ GHashTable *purple_chat_get_components(PurpleChat *chat); @@ -979,6 +1091,7 @@ * @param node The node. * * @return The type of the node. + * * @since 2.1.0 */ PurpleBlistNodeType purple_blist_node_get_type(PurpleBlistNode *node); diff -r a0668fbf2483 -r b98519a42e53 libpurple/buddyicon.c --- a/libpurple/buddyicon.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/buddyicon.c Mon Mar 02 22:07:59 2009 +0000 @@ -153,7 +153,7 @@ { const char *dirname; char *path; - + g_return_if_fail(img != NULL); if (!purple_buddy_icons_is_caching()) @@ -175,7 +175,7 @@ } purple_util_write_data_to_file_absolute(path, purple_imgstore_get_data(img), - purple_imgstore_get_size(img)); + purple_imgstore_get_size(img)); g_free(path); } @@ -453,7 +453,7 @@ if (conv != NULL) purple_conv_im_set_icon(PURPLE_CONV_IM(conv), icon_to_set); - + /* icon's refcount was incremented above */ if (icon) purple_buddy_icon_unref(icon); } @@ -757,7 +757,7 @@ g_hash_table_insert(pointer_icon_cache, account, img); else g_hash_table_remove(pointer_icon_cache, account); - + if (purple_account_is_connected(account)) { PurpleConnection *gc; @@ -889,7 +889,9 @@ if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { PurpleBlistNode *child; - for (child = node->child ; child ; child = child->next) + for (child = purple_blist_node_get_first_child(node); + child; + child = purple_blist_node_get_sibling_next(child)) { PurpleBuddy *buddy; PurpleConversation *conv; @@ -986,7 +988,7 @@ { purple_blist_node_remove_setting(node, setting_name); - if (!strcmp(setting_name, "buddy_icon")) + if (purple_strequal(setting_name, "buddy_icon")) { purple_blist_node_remove_setting(node, "avatar_hash"); purple_blist_node_remove_setting(node, "icon_checksum"); @@ -1083,7 +1085,7 @@ g_free(new_filename); - if (!strcmp(setting_name, "buddy_icon")) + if (purple_strequal(setting_name, "buddy_icon")) { const char *hash; @@ -1098,7 +1100,7 @@ PurpleAccount *account = purple_buddy_get_account((PurpleBuddy *)node); const char *prpl_id = purple_account_get_protocol_id(account); - if (!strcmp(prpl_id, "prpl-yahoo")) + if (purple_strequal(prpl_id, "prpl-yahoo")) { int checksum = purple_blist_node_get_int(node, "icon_checksum"); if (checksum != 0) diff -r a0668fbf2483 -r b98519a42e53 libpurple/certificate.c --- a/libpurple/certificate.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/certificate.c Mon Mar 02 22:07:59 2009 +0000 @@ -51,7 +51,7 @@ { PurpleCertificateVerificationRequest *vrq; PurpleCertificateScheme *scheme; - + g_return_if_fail(subject_name != NULL); /* If you don't have a cert to check, why are you requesting that it be verified? */ @@ -97,10 +97,10 @@ "Failed to verify certificate for %s\n", vrq->subject_name); } - - - - + + + + /* Pass the results on to the request's callback */ (vrq->cb)(st, vrq->cb_data); @@ -154,7 +154,7 @@ purple_certificate_destroy (PurpleCertificate *crt) { PurpleCertificateScheme *scheme; - + if (NULL == crt) return; scheme = crt->scheme; @@ -206,7 +206,7 @@ "Checking signature chain for uid=%s\n", uid); g_free(uid); - + /* If this is a single-certificate chain, say that it is valid */ if (chain->next == NULL) { purple_debug_info("certificate", @@ -218,9 +218,9 @@ crt = (PurpleCertificate *)(chain->data); /* And start with the second certificate in the chain */ for ( cur = chain->next; cur; cur = cur->next ) { - + issuer = (PurpleCertificate *)(cur->data); - + /* Check the signature for this link */ if (! purple_certificate_signed_by(crt, issuer) ) { uid = purple_certificate_get_unique_id(issuer); @@ -228,7 +228,7 @@ "...Bad or missing signature by %s\nChain is INVALID\n", uid); g_free(uid); - + return FALSE; } @@ -237,7 +237,7 @@ "...Good signature by %s\n", uid); g_free(uid); - + /* The issuer is now the next crt whose signature is to be checked */ crt = issuer; @@ -283,7 +283,7 @@ g_return_val_if_fail(crt->scheme, NULL); scheme = crt->scheme; - + g_return_val_if_fail(scheme->get_fingerprint_sha1, NULL); fpr = (scheme->get_fingerprint_sha1)(crt); @@ -354,7 +354,7 @@ g_return_val_if_fail(crt, FALSE); scheme = crt->scheme; - + g_return_val_if_fail(scheme, FALSE); /* If both provided references are NULL, what are you doing calling @@ -371,7 +371,7 @@ { gchar *path; gchar *esc_scheme_name, *esc_name, *esc_id; - + g_return_val_if_fail(pool, NULL); g_return_val_if_fail(pool->scheme_name, NULL); g_return_val_if_fail(pool->name, NULL); @@ -380,7 +380,7 @@ esc_scheme_name = pool ? g_strdup(purple_escape_filename(pool->scheme_name)) : NULL; esc_name = pool ? g_strdup(purple_escape_filename(pool->name)) : NULL; esc_id = id ? g_strdup(purple_escape_filename(id)) : NULL; - + path = g_build_filename(purple_user_dir(), "certificates", /* TODO: constantize this? */ esc_scheme_name, @@ -404,7 +404,7 @@ if (purple_certificate_find_scheme(pool->scheme_name) == NULL) { return FALSE; } - + return TRUE; } @@ -441,7 +441,7 @@ purple_certificate_pool_store(PurpleCertificatePool *pool, const gchar *id, PurpleCertificate *crt) { gboolean ret = FALSE; - + g_return_val_if_fail(pool, FALSE); g_return_val_if_fail(id, FALSE); g_return_val_if_fail(pool->put_cert, FALSE); @@ -461,13 +461,13 @@ } return ret; -} +} gboolean purple_certificate_pool_delete(PurpleCertificatePool *pool, const gchar *id) { gboolean ret = FALSE; - + g_return_val_if_fail(pool, FALSE); g_return_val_if_fail(id, FALSE); g_return_val_if_fail(pool->delete_cert, FALSE); @@ -496,7 +496,7 @@ purple_certificate_pool_destroy_idlist(GList *idlist) { GList *l; - + /* Iterate through and free them strings */ for ( l = idlist; l; l = l->next ) { g_free(l->data); @@ -520,7 +520,7 @@ vrq->subject_name, id); /* Signal what happened back to the caller */ - if (1 == id) { + if (1 == id) { /* Accepted! */ purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_VALID); @@ -557,11 +557,11 @@ } else { cn_match = _("(DOES NOT MATCH)"); } - + /* Make messages */ primary = g_strdup_printf(_("%s has presented the following certificate for just-this-once use:"), vrq->subject_name); secondary = g_strdup_printf(_("Common name: %s %s\nFingerprint (SHA1): %s"), cn, cn_match, sha_asc); - + /* Make a semi-pretty display */ purple_request_accept_cancel( vrq->cb_data, /* TODO: Find what the handle ought to be */ @@ -575,7 +575,7 @@ vrq, x509_singleuse_verify_cb, x509_singleuse_verify_cb ); - + /* Cleanup */ g_free(primary); g_free(secondary); @@ -644,13 +644,13 @@ /* lazy_init calls this function, so calling lazy_init here is a Bad Thing */ - + g_return_val_if_fail(crt, FALSE); g_return_val_if_fail(crt->scheme, FALSE); /* Make sure that this is some kind of X.509 certificate */ /* TODO: Perhaps just check crt->scheme->name instead? */ g_return_val_if_fail(crt->scheme == purple_certificate_find_scheme(x509_ca.scheme_name), FALSE); - + el = g_new0(x509_ca_element, 1); el->dn = purple_certificate_get_unique_id(crt); el->crt = purple_certificate_copy(crt); @@ -675,7 +675,7 @@ const gchar *entry; GPatternSpec *pempat; GList *iter = NULL; - + if (x509_ca_initialized) return TRUE; /* Check that X.509 is registered */ @@ -791,7 +791,7 @@ for (cur = lst; cur; cur = cur->next) { x509_ca_element *el = cur->data; - if (el->dn && !strcmp(dn, el->dn)) { + if (purple_strequal(dn, el->dn)) { return el; } } @@ -832,7 +832,7 @@ } else { crt = NULL; } - + return crt; } @@ -840,7 +840,7 @@ x509_ca_put_cert(const gchar *id, PurpleCertificate *crt) { gboolean ret = FALSE; - + g_return_val_if_fail(x509_ca_lazy_init(), FALSE); /* TODO: This is a quick way of doing this. At some point the change @@ -854,7 +854,7 @@ x509_ca_delete_cert(const gchar *id) { x509_ca_element *el; - + g_return_val_if_fail(x509_ca_lazy_init(), FALSE); g_return_val_if_fail(id, FALSE); @@ -870,7 +870,7 @@ /* Unlink it from the memory cache and destroy it */ x509_ca_certs = g_list_remove(x509_ca_certs, el); x509_ca_element_free(el); - + return TRUE; } @@ -878,7 +878,7 @@ x509_ca_get_idlist(void) { GList *l, *idlist; - + g_return_val_if_fail(x509_ca_lazy_init(), NULL); idlist = NULL; @@ -886,7 +886,7 @@ x509_ca_element *el = l->data; idlist = g_list_prepend(idlist, g_strdup(el->dn)); } - + return idlist; } @@ -921,7 +921,7 @@ { gchar *poolpath; int ret; - + /* Set up key cache here if it isn't already done */ poolpath = purple_certificate_pool_mkpath(&x509_tls_peers, NULL); ret = purple_build_dir(poolpath, 0700); /* Make it this user only */ @@ -937,13 +937,13 @@ { gchar *keypath; gboolean ret = FALSE; - + g_return_val_if_fail(id, FALSE); keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id); ret = g_file_test(keypath, G_FILE_TEST_IS_REGULAR); - + g_free(keypath); return ret; } @@ -954,14 +954,14 @@ PurpleCertificateScheme *x509; PurpleCertificate *crt; gchar *keypath; - + g_return_val_if_fail(id, NULL); /* Is it in the pool? */ if ( !x509_tls_peers_cert_in_pool(id) ) { return NULL; } - + /* Look up the X.509 scheme */ x509 = purple_certificate_find_scheme("x509"); g_return_val_if_fail(x509, NULL); @@ -990,7 +990,7 @@ /* Work out the filename and export */ keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id); ret = purple_certificate_export(keypath, crt); - + g_free(keypath); return ret; } @@ -1012,7 +1012,7 @@ } /* OK, so work out the keypath and delete the thing */ - keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id); + keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id); if ( unlink(keypath) != 0 ) { purple_debug_error("certificate/tls_peers", "Unlink of %s failed!\n", @@ -1047,7 +1047,7 @@ while ( (entry = g_dir_read_name(dir)) != NULL ) { /* Unescape the filename */ const char *unescaped = purple_unescape_filename(entry); - + /* Copy the entry name into our list (GLib owns the original string) */ idlist = g_list_prepend(idlist, g_strdup(unescaped)); @@ -1055,7 +1055,7 @@ /* Release the directory */ g_dir_close(dir); - + return idlist; } @@ -1143,7 +1143,7 @@ g_return_if_fail(c); g_return_if_fail(c->vrq); - + vrq = c->vrq; x509_tls_cached_ua_ctx_free(c); @@ -1155,7 +1155,7 @@ purple_debug_info("certificate/x509/tls_cached", "User ACCEPTED cert\nCaching first in chain for future use as %s...\n", cache_id); - + purple_certificate_pool_store(tls_peers, cache_id, vrq->cert_chain->data); @@ -1195,7 +1195,7 @@ /* Make messages */ primary = g_strdup_printf(_("Accept certificate for %s?"), vrq->subject_name); - + /* Make a semi-pretty display */ purple_request_action( vrq->cb_data, /* TODO: Find what the handle ought to be */ @@ -1211,7 +1211,7 @@ _("Accept"), x509_tls_cached_user_auth_accept_cb, _("Reject"), x509_tls_cached_user_auth_reject_cb, _("_View Certificate..."), x509_tls_cached_show_cert); - + /* Cleanup */ g_free(primary); } @@ -1225,7 +1225,7 @@ "Certificate for %s does not match cached. " "Auto-rejecting!\n", vrq->subject_name); - + purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_INVALID); return; } @@ -1245,7 +1245,7 @@ /* The peer's certificate should be the first in the list */ PurpleCertificate *peer_crt = (PurpleCertificate *) vrq->cert_chain->data; - + PurpleCertificate *cached_crt; GByteArray *peer_fpr, *cached_fpr; @@ -1278,7 +1278,7 @@ /* vrq now becomes the problem of the user */ x509_tls_cached_unknown_peer(vrq); } - + purple_certificate_destroy(cached_crt); g_byte_array_free(peer_fpr, TRUE); g_byte_array_free(cached_fpr, TRUE); @@ -1305,7 +1305,7 @@ "not self-signed" */ if ( purple_certificate_signed_by(peer_crt, peer_crt) ) { gchar *msg; - + purple_debug_info("certificate/x509/tls_cached", "Certificate for %s is self-signed.\n", vrq->subject_name); @@ -1316,13 +1316,13 @@ "is self-signed. It cannot be " "automatically checked."), vrq->subject_name); - + x509_tls_cached_user_auth(vrq,msg); g_free(msg); return; } /* if (self signed) */ - + /* Next, check that the certificate chain is valid */ if ( ! purple_certificate_check_signature_chain(chain) ) { /* TODO: Tell the user where the chain broke? */ @@ -1390,7 +1390,7 @@ } g_free(ca_id); - + /* Check the signature */ if ( !purple_certificate_signed_by(end_crt, ca_crt) ) { /* TODO: If signed_by ever returns a reason, maybe mention @@ -1406,7 +1406,7 @@ "Authority from which it claims to " "have a signature."), vrq->subject_name); - + purple_notify_error(NULL, /* TODO: Probably wrong */ _("SSL Certificate Error"), _("Invalid certificate authority" @@ -1425,7 +1425,7 @@ vrq->subject_name) ) { gchar *sn = purple_certificate_get_subject_name(peer_crt); gchar *msg; - + purple_debug_info("certificate/x509/tls_cached", "Name mismatch: Certificate given for %s " "has a name of %s\n", @@ -1441,7 +1441,7 @@ "connecting to the service you " "believe you are."), vrq->subject_name, sn); - + x509_tls_cached_user_auth(vrq,msg); g_free(sn); @@ -1465,7 +1465,7 @@ "Unable to locate tls_peers certificate " "cache.\n"); } - + /* Whew! Done! */ purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_VALID); } @@ -1481,7 +1481,7 @@ purple_debug_info("certificate/x509/tls_cached", "Starting verify for %s\n", vrq->subject_name); - + tls_peers = purple_certificate_find_pool(x509_tls_cached.scheme_name,tls_peers_name); if (!tls_peers) { @@ -1494,7 +1494,7 @@ x509_tls_cached_unknown_peer(vrq); return; } - + /* Check if the peer has a certificate cached already */ purple_debug_info("certificate/x509/tls_cached", "Checking for cached cert...\n"); @@ -1583,7 +1583,7 @@ name); /* TODO: Signalling and such? */ - + return NULL; } @@ -1611,7 +1611,7 @@ purple_debug_info("certificate", "CertificateScheme %s registered\n", scheme->name); - + return TRUE; } @@ -1664,7 +1664,7 @@ scheme_name, ver_name); /* TODO: Signalling and such? */ - + return NULL; } @@ -1742,7 +1742,7 @@ scheme_name, pool_name); /* TODO: Signalling and such? */ - + return NULL; } @@ -1830,11 +1830,11 @@ } cert_pools = g_list_remove(cert_pools, pool); - + /* TODO: Signalling? */ purple_signal_unregister(pool, "certificate-stored"); purple_signal_unregister(pool, "certificate-deleted"); - + purple_debug_info("certificate", "CertificatePool %s unregistered\n", pool->name); diff -r a0668fbf2483 -r b98519a42e53 libpurple/certificate.h --- a/libpurple/certificate.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/certificate.h Mon Mar 02 22:07:59 2009 +0000 @@ -60,7 +60,7 @@ typedef void (*PurpleCertificateVerifiedCallback) (PurpleCertificateVerificationStatus st, gpointer userdata); - + /** A certificate instance * * An opaque data structure representing a single certificate under some @@ -96,7 +96,7 @@ /** Internal pool data */ gpointer data; - + /** * Set up the Pool's internal state * @@ -249,7 +249,7 @@ /** Retrieve the certificate activation/expiration times */ gboolean (* get_times)(PurpleCertificate *crt, time_t *activation, time_t *expiration); - + void (*_purple_reserved1)(void); void (*_purple_reserved2)(void); void (*_purple_reserved3)(void); @@ -276,7 +276,7 @@ /** Name of the Verifier - case insensitive */ gchar *name; - + /** * Start the verification process * @@ -326,14 +326,14 @@ * For X.509 certificates, this is the Common Name */ gchar *subject_name; - + /** List of certificates in the chain to be verified (such as that returned by purple_ssl_get_peer_certificates ) * * This is most relevant for X.509 certificates used in SSL sessions. * The list order should be: certificate, issuer, issuer's issuer, etc. */ GList *cert_chain; - + /** Internal data used by the Verifier code */ gpointer data; @@ -437,7 +437,7 @@ * * @return TRUE if 'crt' has a valid signature made by 'issuer', * otherwise FALSE - * @todo Find a way to give the reason (bad signature, not the issuer, etc.) + * @todo Find a way to give the reason (bad signature, not the issuer, etc.) */ gboolean purple_certificate_signed_by(PurpleCertificate *crt, PurpleCertificate *issuer); @@ -523,7 +523,7 @@ /** * Check the subject name against that on the certificate * @param crt Certificate instance - * @param name Name to check. + * @param name Name to check. * @return TRUE if it is a match, else FALSE */ gboolean diff -r a0668fbf2483 -r b98519a42e53 libpurple/cipher.c --- a/libpurple/cipher.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/cipher.c Mon Mar 02 22:07:59 2009 +0000 @@ -512,7 +512,7 @@ } static void -md4_append(PurpleCipherContext *context, const guchar *data, size_t len) +md4_append(PurpleCipherContext *context, const guchar *data, size_t len) { struct MD4_Context *mctx = purple_cipher_context_get_data(context); const guint32 avail = sizeof(mctx->block) - (mctx->byte_count & 0x3f); @@ -551,7 +551,7 @@ char *p = (char *)mctx->block + offset; int padding = 56 - (offset + 1); - + if(in_len<16) return FALSE; if(out_len) *out_len = 16; *p++ = 0x80; @@ -659,7 +659,7 @@ hctx = purple_cipher_context_get_data(context); - if (!strcmp(name, "hash")) { + if (purple_strequal(name, "hash")) { g_free(hctx->name); if (hctx->hash) purple_cipher_context_destroy(hctx->hash); @@ -676,7 +676,7 @@ hctx = purple_cipher_context_get_data(context); - if (!strcmp(name, "hash")) { + if (purple_strequal(name, "hash")) { return hctx->name; } @@ -684,7 +684,7 @@ } static void -hmac_append(PurpleCipherContext *context, const guchar *data, size_t len) +hmac_append(PurpleCipherContext *context, const guchar *data, size_t len) { struct HMAC_Context *hctx = purple_cipher_context_get_data(context); @@ -778,7 +778,7 @@ hmac_set_key_with_len(context, key, strlen((char *)key)); } -static size_t +static size_t hmac_get_block_size(PurpleCipherContext *context) { struct HMAC_Context *hctx = purple_cipher_context_get_data(context); @@ -1022,11 +1022,11 @@ * 16 encryption rounds. * To calculate subkeys for decryption the caller * have to reorder the generated subkeys. - * + * * rawkey: 8 Bytes of key data * subkey: Array of at least 32 guint32s. Will be filled * with calculated subkeys. - * + * **/ static void des_key_schedule (const guint8 * rawkey, guint32 * subkey) @@ -1186,7 +1186,7 @@ buf, output+offset, 0); - } + } return 0; } @@ -1216,7 +1216,7 @@ buf, output+offset, 1); - } + } return 0; } @@ -1692,11 +1692,11 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "sizeHi")) { + if(purple_strequal(name, "sizeHi")) { ctx->sizeHi = GPOINTER_TO_INT(value); - } else if(!strcmp(name, "sizeLo")) { + } else if(purple_strequal(name, "sizeLo")) { ctx->sizeLo = GPOINTER_TO_INT(value); - } else if(!strcmp(name, "lenW")) { + } else if(purple_strequal(name, "lenW")) { ctx->lenW = GPOINTER_TO_INT(value); } } @@ -1707,11 +1707,11 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "sizeHi")) { + if(purple_strequal(name, "sizeHi")) { return GINT_TO_POINTER(ctx->sizeHi); - } else if(!strcmp(name, "sizeLo")) { + } else if(purple_strequal(name, "sizeLo")) { return GINT_TO_POINTER(ctx->sizeLo); - } else if(!strcmp(name, "lenW")) { + } else if(purple_strequal(name, "lenW")) { return GINT_TO_POINTER(ctx->lenW); } @@ -1942,12 +1942,12 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "key_len")) { + if(purple_strequal(name, "key_len")) { ctx->key_len = GPOINTER_TO_INT(value); } } -static size_t +static size_t rc4_get_key_size (PurpleCipherContext *context) { struct RC4Context *ctx; @@ -1967,7 +1967,7 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "key_len")) { + if(purple_strequal(name, "key_len")) { return GINT_TO_POINTER(ctx->key_len); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/cipher.h --- a/libpurple/cipher.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/cipher.h Mon Mar 02 22:07:59 2009 +0000 @@ -422,7 +422,7 @@ size_t purple_cipher_context_get_block_size(PurpleCipherContext *context); /** - * Sets the key with a given length on a context + * Sets the key with a given length on a context * * @param context The context whose key to set * @param key The key diff -r a0668fbf2483 -r b98519a42e53 libpurple/circbuffer.c --- a/libpurple/circbuffer.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/circbuffer.c Mon Mar 02 22:07:59 2009 +0000 @@ -44,7 +44,7 @@ static void grow_circ_buffer(PurpleCircBuffer *buf, gsize len) { int in_offset = 0, out_offset = 0; int start_buflen; - + g_return_if_fail(buf != NULL); start_buflen = buf->buflen; @@ -94,7 +94,7 @@ int len_stored; g_return_if_fail(buf != NULL); - + /* Grow the buffer, if necessary */ if ((buf->buflen - buf->bufused) < len) grow_circ_buffer(buf, len); diff -r a0668fbf2483 -r b98519a42e53 libpurple/cmds.c --- a/libpurple/cmds.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/cmds.c Mon Mar 02 22:07:59 2009 +0000 @@ -236,7 +236,7 @@ for (l = cmds; l; l = l->next) { c = l->data; - if (strcmp(c->cmd, cmd) != 0) + if (!purple_strequal(c->cmd, cmd)) continue; found = TRUE; @@ -250,8 +250,8 @@ right_type = TRUE; - if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id && - (strcmp(c->prpl_id, prpl_id) != 0)) + if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && + !purple_strequal(c->prpl_id, prpl_id)) continue; right_prpl = TRUE; @@ -320,8 +320,8 @@ if (!(c->flags & PURPLE_CMD_FLAG_CHAT)) continue; - if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id && - (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0)) + if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && + !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv)))) continue; ret = g_list_append(ret, c->cmd); @@ -342,7 +342,7 @@ for (l = cmds; l; l = l->next) { c = l->data; - if (cmd && (strcmp(cmd, c->cmd) != 0)) + if (cmd && !purple_strequal(cmd, c->cmd)) continue; if (conv && (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)) @@ -352,8 +352,8 @@ if (!(c->flags & PURPLE_CMD_FLAG_CHAT)) continue; - if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id && - (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0)) + if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && + !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv)))) continue; ret = g_list_append(ret, c->help); diff -r a0668fbf2483 -r b98519a42e53 libpurple/connection.c --- a/libpurple/connection.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/connection.c Mon Mar 02 22:07:59 2009 +0000 @@ -191,16 +191,16 @@ PurpleConnection *gc; PurplePlugin *prpl; PurplePluginProtocolInfo *prpl_info; - + g_return_if_fail(account != NULL); - + prpl = purple_find_prpl(purple_account_get_protocol_id(account)); - + if (prpl != NULL) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); else { gchar *message; - + message = g_strdup_printf(_("Missing protocol plugin for %s"), purple_account_get_username(account)); purple_notify_error(NULL, _("Unregistration Error"), message, NULL); @@ -212,7 +212,7 @@ prpl_info->unregister_user(account, cb, user_data); return; } - + if (((password == NULL) || (*password == '\0')) && !(prpl_info->options & OPT_PROTO_NO_PASSWORD) && !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL)) @@ -221,10 +221,10 @@ "a password.\n", purple_account_get_username(account)); return; } - + gc = g_new0(PurpleConnection, 1); PURPLE_DBUS_REGISTER_POINTER(gc, PurpleConnection); - + gc->prpl = prpl; if ((password != NULL) && (*password != '\0')) gc->password = g_strdup(password); @@ -232,11 +232,11 @@ purple_connection_set_state(gc, PURPLE_CONNECTING); connections = g_list_append(connections, gc); purple_account_set_connection(account, gc); - + purple_signal_emit(purple_connections_get_handle(), "signing-on", gc); - + purple_debug_info("connection", "Unregistering. gc = %p\n", gc); - + prpl_info->unregister_user(account, cb, user_data); } @@ -285,7 +285,7 @@ buddies = purple_find_buddies(account, NULL); while (buddies != NULL) { PurpleBuddy *buddy = buddies->data; - buddy->proto_data = NULL; + purple_buddy_set_protocol_data(buddy, NULL); buddies = g_slist_delete_link(buddies, buddies); } @@ -427,6 +427,13 @@ gc->display_name = g_strdup(name); } +void +purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data) { + g_return_if_fail(connection != NULL); + + connection->proto_data = proto_data; +} + PurpleConnectionState purple_connection_get_state(const PurpleConnection *gc) { @@ -467,6 +474,13 @@ return gc->display_name; } +void * +purple_connection_get_protocol_data(const PurpleConnection *connection) { + g_return_val_if_fail(connection != NULL, NULL); + + return connection->proto_data; +} + void purple_connection_update_progress(PurpleConnection *gc, const char *text, size_t step, size_t count) diff -r a0668fbf2483 -r b98519a42e53 libpurple/connection.h --- a/libpurple/connection.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/connection.h Mon Mar 02 22:07:59 2009 +0000 @@ -42,7 +42,7 @@ PURPLE_CONNECTION_FORMATTING_WBFO = 0x0008, /**< The text buffer must be formatted as a whole */ PURPLE_CONNECTION_NO_NEWLINES = 0x0010, /**< No new lines are allowed in outgoing messages */ PURPLE_CONNECTION_NO_FONTSIZE = 0x0020, /**< Connection does not send/receive font sizes */ - PURPLE_CONNECTION_NO_URLDESC = 0x0040, /**< Connection does not support descriptions with links */ + PURPLE_CONNECTION_NO_URLDESC = 0x0040, /**< Connection does not support descriptions with links */ PURPLE_CONNECTION_NO_IMAGES = 0x0080, /**< Connection does not support sending of images */ PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 0x0100 /**< Connection supports sending and receiving custom smileys */ @@ -56,7 +56,9 @@ } PurpleConnectionState; -/** Possible errors that can cause a connection to be closed. +/** + * Possible errors that can cause a connection to be closed. + * * @since 2.3.0 */ typedef enum @@ -92,7 +94,7 @@ PURPLE_CONNECTION_ERROR_NAME_IN_USE = 6, /** The username/server/other preference for the account isn't valid. - * For instance, on IRC the screen name cannot contain white space. + * For instance, on IRC the username cannot contain white space. * This reason should not be used for incorrect passwords etc: use * #PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED for that. * @@ -148,71 +150,84 @@ #include "status.h" #include "sslconn.h" -/** Connection UI operations. Used to notify the user of changes to - * connections, such as being disconnected, and to respond to the - * underlying network connection appearing and disappearing. UIs should - * call #purple_connections_set_ui_ops() with an instance of this struct. +/** + * Connection UI operations. Used to notify the user of changes to + * connections, such as being disconnected, and to respond to the + * underlying network connection appearing and disappearing. UIs should + * call #purple_connections_set_ui_ops() with an instance of this struct. * - * @see @ref ui-ops + * @see @ref ui-ops */ typedef struct { - /** When an account is connecting, this operation is called to notify - * the UI of what is happening, as well as which @a step out of @a - * step_count has been reached (which might be displayed as a progress - * bar). - * @see #purple_connection_update_progress + /** + * When an account is connecting, this operation is called to notify + * the UI of what is happening, as well as which @a step out of @a + * step_count has been reached (which might be displayed as a progress + * bar). + * @see #purple_connection_update_progress */ void (*connect_progress)(PurpleConnection *gc, const char *text, size_t step, size_t step_count); - /** Called when a connection is established (just before the - * @ref signed-on signal). + /** + * Called when a connection is established (just before the + * @ref signed-on signal). */ void (*connected)(PurpleConnection *gc); - /** Called when a connection is ended (between the @ref signing-off - * and @ref signed-off signals). + + /** + * Called when a connection is ended (between the @ref signing-off + * and @ref signed-off signals). */ void (*disconnected)(PurpleConnection *gc); - /** Used to display connection-specific notices. (Pidgin's Gtk user - * interface implements this as a no-op; #purple_connection_notice(), - * which uses this operation, is not used by any of the protocols - * shipped with libpurple.) + /** + * Used to display connection-specific notices. (Pidgin's Gtk user + * interface implements this as a no-op; #purple_connection_notice(), + * which uses this operation, is not used by any of the protocols + * shipped with libpurple.) */ void (*notice)(PurpleConnection *gc, const char *text); - /** Called when an error causes a connection to be disconnected. - * Called before #disconnected. - * @param text a localized error message. - * @see #purple_connection_error - * @deprecated in favour of - * #PurpleConnectionUiOps.report_disconnect_reason. + /** + * Called when an error causes a connection to be disconnected. + * Called before #disconnected. + * @param text a localized error message. + * @see #purple_connection_error + * @deprecated in favour of + * #PurpleConnectionUiOps.report_disconnect_reason. */ void (*report_disconnect)(PurpleConnection *gc, const char *text); - /** Called when libpurple discovers that the computer's network - * connection is active. On Linux, this uses Network Manager if - * available; on Windows, it uses Win32's network change notification - * infrastructure. + /** + * Called when libpurple discovers that the computer's network + * connection is active. On Linux, this uses Network Manager if + * available; on Windows, it uses Win32's network change notification + * infrastructure. */ void (*network_connected)(void); - /** Called when libpurple discovers that the computer's network - * connection has gone away. + + /** + * Called when libpurple discovers that the computer's network + * connection has gone away. */ void (*network_disconnected)(void); - /** Called when an error causes a connection to be disconnected. + /** + * Called when an error causes a connection to be disconnected. * Called before #disconnected. This op is intended to replace * #report_disconnect. If both are implemented, this will be called * first; however, there's no real reason to implement both. + * * @param reason why the connection ended, if known, or * #PURPLE_CONNECTION_ERROR_OTHER_ERROR, if not. * @param text a localized message describing the disconnection * in more detail to the user. * @see #purple_connection_error_reason + * * @since 2.3.0 */ void (*report_disconnect_reason)(PurpleConnection *gc, @@ -354,6 +369,16 @@ void purple_connection_set_display_name(PurpleConnection *gc, const char *name); /** + * Sets the protocol data for a connection. + * + * @param connection The PurpleConnection. + * @param proto_data The protocol data to set for the connection. + * + * @since 2.6.0 + */ +void purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data); + +/** * Returns the connection state. * * @param gc The connection. @@ -385,6 +410,7 @@ * @param gc The connection. * * @return The protocol plugin. + * * @since 2.4.0 */ PurplePlugin * purple_connection_get_prpl(const PurpleConnection *gc); @@ -408,6 +434,17 @@ const char *purple_connection_get_display_name(const PurpleConnection *gc); /** + * Gets the protocol data from a connection. + * + * @param connection The PurpleConnection. + * + * @return The protocol data for the connection. + * + * @since 2.6.0 + */ +void *purple_connection_get_protocol_data(const PurpleConnection *connection); + +/** * Updates the connection progress. * * @param gc The connection. @@ -450,6 +487,7 @@ * @param gc the connection which is closing. * @param reason why the connection is closing. * @param description a non-@c NULL localized description of the error. + * * @since 2.3.0 */ void @@ -461,6 +499,7 @@ * Closes a connection due to an SSL error; this is basically a shortcut to * turning the #PurpleSslErrorType into a #PurpleConnectionError and a * human-readable string and then calling purple_connection_error_reason(). + * * @since 2.3.0 */ void @@ -484,6 +523,7 @@ * * @return @c TRUE if the account should not be automatically reconnected, and * @c FALSE otherwise. + * * @since 2.3.0 */ gboolean diff -r a0668fbf2483 -r b98519a42e53 libpurple/conversation.c --- a/libpurple/conversation.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/conversation.c Mon Mar 02 22:07:59 2009 +0000 @@ -665,7 +665,7 @@ text = purple_buddy_get_contact_alias(b); } else if(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) { if(account && ((chat = purple_blist_find_chat(account, name)) != NULL)) - text = chat->alias; + text = purple_chat_get_name(chat); } @@ -912,7 +912,7 @@ if (purple_account_get_alias(account) != NULL) alias = account->alias; - else if (b != NULL && strcmp(b->name, purple_buddy_get_contact_alias(b))) + else if (b != NULL && !purple_strequal(purple_buddy_get_name(b), purple_buddy_get_contact_alias(b))) alias = purple_buddy_get_contact_alias(b); else if (purple_connection_get_display_name(gc) != NULL) alias = purple_connection_get_display_name(gc); @@ -1490,7 +1490,7 @@ str = g_strdup(purple_normalize(account, who)); - if (!strcmp(str, purple_normalize(account, chat->nick))) { + if (purple_strequal(str, purple_normalize(account, chat->nick))) { flags |= PURPLE_MESSAGE_SEND; } else { flags |= PURPLE_MESSAGE_RECV; @@ -1611,7 +1611,7 @@ const char *extra_msg = (extra_msgs ? extra_msgs->data : NULL); if(!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { - if (!strcmp(chat->nick, purple_normalize(conv->account, user))) { + if (purple_strequal(chat->nick, purple_normalize(conv->account, user))) { const char *alias2 = purple_account_get_alias(conv->account); if (alias2 != NULL) alias = alias2; @@ -1702,7 +1702,7 @@ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); g_return_if_fail(prpl_info != NULL); - if (!strcmp(chat->nick, purple_normalize(conv->account, old_user))) { + if (purple_strequal(chat->nick, purple_normalize(conv->account, old_user))) { const char *alias; /* Note this for later. */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/conversation.h --- a/libpurple/conversation.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/conversation.h Mon Mar 02 22:07:59 2009 +0000 @@ -1364,7 +1364,7 @@ * Retrieves the extended menu items for the conversation. * * @param conv The conversation. - * + * * @return A list of PurpleMenuAction items, harvested by the * chat-extended-menu signal. The list and the menuaction * items should be freed by the caller. diff -r a0668fbf2483 -r b98519a42e53 libpurple/core.c --- a/libpurple/core.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/core.c Mon Mar 02 22:07:59 2009 +0000 @@ -46,9 +46,11 @@ #include "signals.h" #include "smiley.h" #include "sound.h" +#include "sound-theme-loader.h" #include "sslconn.h" #include "status.h" #include "stun.h" +#include "theme-manager.h" #include "util.h" #ifdef HAVE_DBUS @@ -143,6 +145,8 @@ purple_plugins_probe(G_MODULE_SUFFIX); + purple_theme_manager_init(); + /* The buddy icon code uses the imgstore, so init it early. */ purple_imgstore_init(); @@ -171,7 +175,7 @@ purple_xfers_init(); purple_idle_init(); purple_smileys_init(); - + purple_theme_manager_init(); /* * Call this early on to try to auto-detect our IP address and * hopefully save some time later. @@ -181,6 +185,9 @@ if (ops != NULL && ops->ui_init != NULL) ops->ui_init(); + /* The UI may have registered some theme types, so refresh them */ + purple_theme_manager_refresh(); + return TRUE; } @@ -233,6 +240,7 @@ purple_savedstatuses_uninit(); purple_status_uninit(); purple_sound_uninit(); + purple_theme_manager_uninit(); purple_xfers_uninit(); purple_proxy_uninit(); purple_dnsquery_uninit(); @@ -350,15 +358,7 @@ const char *user_dir = purple_user_dir(); char *dbus_owner_user_dir = purple_dbus_owner_user_dir(); - if (NULL == user_dir && NULL != dbus_owner_user_dir) - is_single_instance = TRUE; - else if (NULL != user_dir && NULL == dbus_owner_user_dir) - is_single_instance = TRUE; - else if (NULL == user_dir && NULL == dbus_owner_user_dir) - is_single_instance = FALSE; - else - is_single_instance = strcmp(dbus_owner_user_dir, user_dir); - + is_single_instance = !purple_strequal(dbus_owner_user_dir, user_dir); g_free(dbus_owner_user_dir); } } @@ -489,7 +489,7 @@ if (g_file_test(name, G_FILE_TEST_IS_SYMLINK)) { /* We're only going to duplicate a logs symlink. */ - if (!strcmp(entry, "logs")) + if (purple_strequal(entry, "logs")) { char *link; #if GLIB_CHECK_VERSION(2,4,0) @@ -532,7 +532,8 @@ logs_dir = g_build_filename(user_dir, "logs", NULL); - if (!strcmp(link, "../.purple/logs") || !strcmp(link, logs_dir)) + if (purple_strequal(link, "../.purple/logs") || + purple_strequal(link, logs_dir)) { /* If the symlink points to the new directory, we're * likely just trying again after a failed migration, @@ -577,7 +578,7 @@ /* Deal with directories... */ if (g_file_test(name, G_FILE_TEST_IS_DIR)) { - if (!strcmp(entry, "icons")) + if (purple_strequal(entry, "icons")) { /* This is a special case for the Album plugin, which * stores data in the icons folder. We're not copying @@ -646,7 +647,7 @@ g_dir_close(icons_dir); } - else if (!strcmp(entry, "plugins")) + else if (purple_strequal(entry, "plugins")) { /* Do nothing, because we broke plugin compatibility. * This means that the plugins directory gets left behind. */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/core.h --- a/libpurple/core.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/core.h Mon Mar 02 22:07:59 2009 +0000 @@ -90,17 +90,17 @@ /** *

- * Calls purple_core_quit(). This can be used as the function - * passed to purple_timeout_add() when you want to shutdown Purple - * in a specified amount of time. When shutting down Purple + * Calls purple_core_quit(). This can be used as the function + * passed to purple_timeout_add() when you want to shutdown Purple + * in a specified amount of time. When shutting down Purple * from a plugin, you must use this instead of purple_core_quit(); - * for an immediate exit, use a timeout value of 0: + * for an immediate exit, use a timeout value of 0: *

* * purple_timeout_add(0, purple_core_quitcb, NULL); * *

- * This is ensures that code from your plugin is not being + * This is ensures that code from your plugin is not being * executed when purple_core_quit() is called. If the plugin * called purple_core_quit() directly, you would get a core dump * after purple_core_quit() executes and control returns to your diff -r a0668fbf2483 -r b98519a42e53 libpurple/dbus-bindings.h --- a/libpurple/dbus-bindings.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/dbus-bindings.h Mon Mar 02 22:07:59 2009 +0000 @@ -84,7 +84,7 @@ int first_arg_type, va_list var_args); -dbus_int32_t* purple_dbusify_GList(GList *list, gboolean free_memory, +dbus_int32_t* purple_dbusify_GList(GList *list, gboolean free_memory, dbus_int32_t *len); dbus_int32_t* purple_dbusify_GSList(GSList *list, gboolean free_memory, dbus_int32_t *len); diff -r a0668fbf2483 -r b98519a42e53 libpurple/dbus-server.h --- a/libpurple/dbus-server.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/dbus-server.h Mon Mar 02 22:07:59 2009 +0000 @@ -173,7 +173,7 @@ /** * Determines whether this instance owns the DBus service name - * + * * @since 2.1.0 */ gboolean purple_dbus_is_owner(void); diff -r a0668fbf2483 -r b98519a42e53 libpurple/desktopitem.c --- a/libpurple/desktopitem.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/desktopitem.c Mon Mar 02 22:07:59 2009 +0000 @@ -41,12 +41,12 @@ * modify it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. - * + * * The Gnome Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. - * + * * You should have received a copy of the GNU Library General Public * License along with the Gnome Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, @@ -67,7 +67,7 @@ GList *languages; PurpleDesktopItemType type; - + /* `modified' means that the ditem has been * modified since the last save. */ gboolean modified; @@ -108,30 +108,30 @@ switch (type [0]) { case 'A': - if (!strcmp (type, "Application")) + if (purple_strequal (type, "Application")) return PURPLE_DESKTOP_ITEM_TYPE_APPLICATION; break; case 'L': - if (!strcmp (type, "Link")) + if (purple_strequal (type, "Link")) return PURPLE_DESKTOP_ITEM_TYPE_LINK; break; case 'F': - if (!strcmp (type, "FSDevice")) + if (purple_strequal (type, "FSDevice")) return PURPLE_DESKTOP_ITEM_TYPE_FSDEVICE; break; case 'M': - if (!strcmp (type, "MimeType")) + if (purple_strequal (type, "MimeType")) return PURPLE_DESKTOP_ITEM_TYPE_MIME_TYPE; break; case 'D': - if (!strcmp (type, "Directory")) + if (purple_strequal (type, "Directory")) return PURPLE_DESKTOP_ITEM_TYPE_DIRECTORY; break; case 'S': - if (!strcmp (type, "Service")) + if (purple_strequal (type, "Service")) return PURPLE_DESKTOP_ITEM_TYPE_SERVICE; - else if (!strcmp (type, "ServiceType")) + else if (purple_strequal (type, "ServiceType")) return PURPLE_DESKTOP_ITEM_TYPE_SERVICE_TYPE; break; default: @@ -149,12 +149,12 @@ if (section == NULL) return NULL; - if (strcmp (section, "Desktop Entry") == 0) + if (purple_strequal (section, "Desktop Entry")) return NULL; for (li = item->sections; li != NULL; li = li->next) { sec = li->data; - if (strcmp (sec->name, section) == 0) + if (purple_strequal (sec->name, section)) return sec; } @@ -235,7 +235,7 @@ item->keys = g_list_append (item->keys, g_strdup (key)); - g_hash_table_replace (item->main_hash, + g_hash_table_replace (item->main_hash, g_strdup (key), g_strdup (value)); } else { @@ -264,7 +264,7 @@ set (item, attr, value); - if (strcmp (attr, PURPLE_DESKTOP_ITEM_TYPE) == 0) + if (purple_strequal (attr, PURPLE_DESKTOP_ITEM_TYPE)) item->type = type_from_string (value); } @@ -280,7 +280,7 @@ retval->main_hash = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_free); - + /* These are guaranteed to be set */ _purple_desktop_item_set_string (retval, PURPLE_DESKTOP_ITEM_NAME, @@ -354,16 +354,16 @@ p++; if (*p == ' ') p++; - if (strcmp (p, "UTF-8") == 0) { + if (purple_strequal (p, "UTF-8")) { return ENCODING_UTF8; - } else if (strcmp (p, "Legacy-Mixed") == 0) { + } else if (purple_strequal (p, "Legacy-Mixed")) { return ENCODING_LEGACY_MIXED; } else { /* According to the spec we're not supposed * to read a file like this */ return ENCODING_UNKNOWN; } - } else if (strcmp ("[KDE Desktop Entry]", buf) == 0) { + } else if (purple_strequal ("[KDE Desktop Entry]", buf)) { old_kde = TRUE; /* don't break yet, we still want to support * Encoding even here */ @@ -557,7 +557,7 @@ char *utf8_string; if (char_encoding == NULL) return NULL; - if (strcmp (char_encoding, "ASCII") == 0) { + if (purple_strequal (char_encoding, "ASCII")) { return decode_string_and_dup (value); } utf8_string = g_convert (value, -1, "UTF-8", char_encoding, @@ -673,7 +673,7 @@ char *val; /* we always store everything in UTF-8 */ if (cur_section == NULL && - strcmp (key, PURPLE_DESKTOP_ITEM_ENCODING) == 0) { + purple_strequal (key, PURPLE_DESKTOP_ITEM_ENCODING)) { k = g_strdup (key); val = g_strdup ("UTF-8"); } else { @@ -690,14 +690,14 @@ g_free (locale); return; } - + g_strchomp (val); /* For old KDE entries, we can also split by a comma * on sort order, so convert to semicolons */ if (old_kde && cur_section == NULL && - strcmp (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) == 0 && + purple_strequal (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) && strchr (val, ';') == NULL) { int i; for (i = 0; val[i] != '\0'; i++) { @@ -720,7 +720,7 @@ /* Take care of the language part */ if (locale != NULL && - strcmp (locale, "C") == 0) { + purple_strequal (locale, "C")) { char *p; /* Whack C locale */ p = strchr (k, '['); @@ -791,11 +791,10 @@ PURPLE_DESKTOP_ITEM_TYPE); if (type == NULL && uri != NULL) { char *base = g_path_get_basename (uri); - if (base != NULL && - strcmp (base, ".directory") == 0) { + if (purple_strequal(base, ".directory")) { /* This gotta be a directory */ g_hash_table_replace (item->main_hash, - g_strdup (PURPLE_DESKTOP_ITEM_TYPE), + g_strdup (PURPLE_DESKTOP_ITEM_TYPE), g_strdup ("Directory")); item->keys = g_list_prepend (item->keys, g_strdup (PURPLE_DESKTOP_ITEM_TYPE)); @@ -813,7 +812,7 @@ lookup_locale (const PurpleDesktopItem *item, const char *key, const char *locale) { if (locale == NULL || - strcmp (locale, "C") == 0) { + purple_strequal (locale, "C")) { return lookup (item, key); } else { const char *ret; @@ -857,7 +856,7 @@ type = lookup (item, PURPLE_DESKTOP_ITEM_TYPE); /* understand old gnome style url exec thingies */ - if (type != NULL && strcmp (type, "URL") == 0) { + if (purple_strequal(type, "URL")) { const char *exec = lookup (item, PURPLE_DESKTOP_ITEM_EXEC); set (item, PURPLE_DESKTOP_ITEM_TYPE, "Link"); if (exec != NULL) { @@ -877,7 +876,7 @@ if (name == NULL) name = g_strdup (_("No name")); g_hash_table_replace (item->main_hash, - g_strdup (PURPLE_DESKTOP_ITEM_NAME), + g_strdup (PURPLE_DESKTOP_ITEM_NAME), name); item->keys = g_list_prepend (item->keys, g_strdup (PURPLE_DESKTOP_ITEM_NAME)); @@ -885,7 +884,7 @@ if (lookup (item, PURPLE_DESKTOP_ITEM_ENCODING) == NULL) { /* We store everything in UTF-8 so write that down */ g_hash_table_replace (item->main_hash, - g_strdup (PURPLE_DESKTOP_ITEM_ENCODING), + g_strdup (PURPLE_DESKTOP_ITEM_ENCODING), g_strdup ("UTF-8")); item->keys = g_list_prepend (item->keys, g_strdup (PURPLE_DESKTOP_ITEM_ENCODING)); @@ -893,7 +892,7 @@ if (lookup (item, PURPLE_DESKTOP_ITEM_VERSION) == NULL) { /* this is the version that we follow, so write it down */ g_hash_table_replace (item->main_hash, - g_strdup (PURPLE_DESKTOP_ITEM_VERSION), + g_strdup (PURPLE_DESKTOP_ITEM_VERSION), g_strdup ("1.0")); item->keys = g_list_prepend (item->keys, g_strdup (PURPLE_DESKTOP_ITEM_VERSION)); @@ -954,7 +953,7 @@ while ((c = getc (df)) != EOF) { if (c == '\r') /* Ignore Carriage Return */ continue; - + switch (state) { case OnSecHeader: @@ -968,13 +967,11 @@ cur_section->keys = g_list_reverse (cur_section->keys); } - if (strcmp (CharBuffer, - "KDE Desktop Entry") == 0) { + if (purple_strequal (CharBuffer, "KDE Desktop Entry")) { /* Main section */ cur_section = NULL; old_kde = TRUE; - } else if (strcmp (CharBuffer, - "Desktop Entry") == 0) { + } else if (purple_strequal(CharBuffer, "Desktop Entry")) { /* Main section */ cur_section = NULL; } else { @@ -1025,16 +1022,16 @@ /* On first pass, don't allow dangling keys */ if (state == FirstBrace) break; - + if ((c == ' ' && state != KeyDefOnKey) || c == '\t') break; - + if (c == '\n' || PURPLE_DESKTOP_ITEM_OVERFLOW) { /* Abort Definition */ next = CharBuffer; state = KeyDef; break; } - + if (c == '=' || PURPLE_DESKTOP_ITEM_OVERFLOW){ *next = '\0'; @@ -1067,7 +1064,7 @@ break; } /* switch */ - + } /* while ((c = getc_unlocked (f)) != EOF) */ if (c == EOF && state == KeyValue) { *next = '\0'; @@ -1158,7 +1155,7 @@ printf ("Can't open %s: %s", filename, g_strerror(errno)); return NULL; } - + retval = ditem_load(dfile, FALSE, filename); return retval; @@ -1203,7 +1200,7 @@ /* Languages */ retval->languages = g_list_copy (item->languages); for (li = retval->languages; li != NULL; li = li->next) - li->data = g_strdup (li->data); + li->data = g_strdup (li->data); /* Keys */ retval->keys = g_list_copy (item->keys); diff -r a0668fbf2483 -r b98519a42e53 libpurple/desktopitem.h --- a/libpurple/desktopitem.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/desktopitem.h Mon Mar 02 22:07:59 2009 +0000 @@ -41,12 +41,12 @@ * modify it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. - * + * * The Gnome Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. - * + * * You should have received a copy of the GNU Library General Public * License along with the Gnome Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, @@ -155,7 +155,7 @@ * * @param item The item to be copied * - * @return The new copy + * @return The new copy */ PurpleDesktopItem *purple_desktop_item_copy (const PurpleDesktopItem *item); diff -r a0668fbf2483 -r b98519a42e53 libpurple/eventloop.h --- a/libpurple/eventloop.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/eventloop.h Mon Mar 02 22:07:59 2009 +0000 @@ -119,8 +119,8 @@ * @see purple_input_remove */ gboolean (*input_remove)(guint handle); - - + + /** * If implemented, should get the current error status for an input. * @@ -161,7 +161,7 @@ /*@{*/ /** * Creates a callback timer. - * + * * The timer will repeat until the function returns @c FALSE. The * first call will be at the end of the first interval. * @@ -185,12 +185,12 @@ * * This function allows UIs to group timers for better power efficiency. For * this reason, @a interval may be rounded by up to a second. - * + * * @param interval The time between calls of the function, in * seconds. * @param function The function to call. * @param data data to pass to @a function. - * @return A handle to the timer which can be passed to + * @return A handle to the timer which can be passed to * purple_timeout_remove() to remove the timer. * * @since 2.1.0 diff -r a0668fbf2483 -r b98519a42e53 libpurple/idle.c --- a/libpurple/idle.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/idle.c Mon Mar 02 22:07:59 2009 +0000 @@ -126,14 +126,14 @@ idle_reporting = purple_prefs_get_string("/purple/away/idle_reporting"); auto_away = purple_prefs_get_bool("/purple/away/away_when_idle"); - if (!strcmp(idle_reporting, "system") && + if (purple_strequal(idle_reporting, "system") && (idle_ui_ops != NULL) && (idle_ui_ops->get_time_idle != NULL)) { /* Use system idle time (mouse or keyboard movement, etc.) */ time_idle = idle_ui_ops->get_time_idle(); idle_recheck_interval = 1; } - else if (!strcmp(idle_reporting, "purple")) + else if (purple_strequal(idle_reporting, "purple")) { /* Use 'Purple idle' */ time_idle = time(NULL) - last_active_time; @@ -214,7 +214,7 @@ /* - * Check idle and set the timer to fire at the next idle-worth event + * Check idle and set the timer to fire at the next idle-worth event */ static gboolean check_idleness_timer(void) diff -r a0668fbf2483 -r b98519a42e53 libpurple/internal.h --- a/libpurple/internal.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/internal.h Mon Mar 02 22:07:59 2009 +0000 @@ -102,7 +102,7 @@ #include #ifdef PURPLE_PLUGINS -# ifdef HAVE_DLFCN_H +# ifdef HAVE_DLFCN_H # include # endif #endif diff -r a0668fbf2483 -r b98519a42e53 libpurple/log.c --- a/libpurple/log.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/log.c Mon Mar 02 22:07:59 2009 +0000 @@ -34,6 +34,7 @@ #include "util.h" #include "stringref.h" #include "imgstore.h" +#include "time.h" static GSList *loggers = NULL; @@ -46,6 +47,7 @@ PurpleAccount *account; }; static GHashTable *logsize_users = NULL; +static GHashTable *logsize_users_decayed = NULL; static void log_get_log_sets_common(GHashTable *sets); @@ -161,14 +163,27 @@ lu->account = log->account; if(g_hash_table_lookup_extended(logsize_users, lu, NULL, &ptrsize)) { + char *tmp = lu->name; + total = GPOINTER_TO_INT(ptrsize); total += written; g_hash_table_replace(logsize_users, lu, GINT_TO_POINTER(total)); + + /* The hash table takes ownership of lu, so create a new one + * for the logsize_users_decayed check below. */ + lu = g_new(struct _purple_logsize_user, 1); + lu->name = g_strdup(tmp); + lu->account = log->account; + } + + if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrsize)) { + total = GPOINTER_TO_INT(ptrsize); + total += written; + g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(total)); } else { g_free(lu->name); g_free(lu); } - } char *purple_log_read(PurpleLog *log, PurpleLogReadFlags *flags) @@ -200,7 +215,7 @@ static guint _purple_logsize_user_equal(struct _purple_logsize_user *lu1, struct _purple_logsize_user *lu2) { - return (lu1->account == lu2->account && (!strcmp(lu1->name, lu2->name))); + return (lu1->account == lu2->account && purple_strequal(lu1->name, lu2->name)); } static void _purple_logsize_user_free_key(struct _purple_logsize_user *lu) @@ -250,6 +265,49 @@ return size; } +gint purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleAccount *account) +{ + gpointer ptrscore; + int score; + GSList *n; + struct _purple_logsize_user *lu; + time_t now; + time(&now); + + lu = g_new(struct _purple_logsize_user, 1); + lu->name = g_strdup(purple_normalize(account, name)); + lu->account = account; + + if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrscore)) { + score = GPOINTER_TO_INT(ptrscore); + g_free(lu->name); + g_free(lu); + } else { + double score_double = 0.0; + for (n = loggers; n; n = n->next) { + PurpleLogLogger *logger = n->data; + + if(logger->list) { + GList *logs = (logger->list)(type, name, account); + + while (logs) { + PurpleLog *log = (PurpleLog*)(logs->data); + /* Activity score counts bytes in the log, exponentially + decayed with a half-life of 14 days. */ + score_double += purple_log_get_size(log) * + pow(0.5, difftime(now, log->time)/1209600.0); + purple_log_free(log); + logs = g_list_delete_link(logs, logs); + } + } + } + + score = (gint)score_double; + g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(score)); + } + return score; +} + gboolean purple_log_is_deletable(PurpleLog *log) { g_return_val_if_fail(log != NULL, FALSE); @@ -324,7 +382,7 @@ GSList *l = loggers; while (l) { logger = l->data; - if (!strcmp(logger->id, value)) { + if (purple_strequal(logger->id, value)) { purple_log_logger_set(logger); return; } @@ -406,7 +464,7 @@ if (g_slist_find(loggers, logger)) return; loggers = g_slist_append(loggers, logger); - if (strcmp(purple_prefs_get_string("/purple/logging/format"), logger->id) == 0) { + if (purple_strequal(purple_prefs_get_string("/purple/logging/format"), logger->id)) { purple_prefs_trigger_callback("/purple/logging/format"); } } @@ -588,11 +646,11 @@ void *handle = purple_log_get_handle(); purple_prefs_add_none("/purple/logging"); - purple_prefs_add_bool("/purple/logging/log_ims", FALSE); - purple_prefs_add_bool("/purple/logging/log_chats", FALSE); + purple_prefs_add_bool("/purple/logging/log_ims", TRUE); + purple_prefs_add_bool("/purple/logging/log_chats", TRUE); purple_prefs_add_bool("/purple/logging/log_system", FALSE); - purple_prefs_add_string("/purple/logging/format", "txt"); + purple_prefs_add_string("/purple/logging/format", "html"); html_logger = purple_log_logger_new("html", _("HTML"), 11, NULL, @@ -661,6 +719,9 @@ logsize_users = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash, (GEqualFunc)_purple_logsize_user_equal, (GDestroyNotify)_purple_logsize_user_free_key, NULL); + logsize_users_decayed = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash, + (GEqualFunc)_purple_logsize_user_equal, + (GDestroyNotify)_purple_logsize_user_free_key, NULL); } void @@ -679,6 +740,9 @@ purple_log_logger_remove(old_logger); purple_log_logger_free(old_logger); old_logger = NULL; + + g_hash_table_destroy(logsize_users); + g_hash_table_destroy(logsize_users_decayed); } /**************************************************************************** @@ -1019,7 +1083,7 @@ continue; prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if (!strcmp(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL))) + if (purple_strequal(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL))) accounts = g_list_prepend(accounts, account_iter->data); } g_free(protocol_unescaped); @@ -1039,7 +1103,7 @@ /* Find the account for username in the list of accounts for protocol. */ username_unescaped = purple_unescape_filename(username); for (account_iter = g_list_first(accounts) ; account_iter != NULL ; account_iter = account_iter->next) { - if (!strcmp(((PurpleAccount *)account_iter->data)->username, username_unescaped)) { + if (purple_strequal(((PurpleAccount *)account_iter->data)->username, username_unescaped)) { account = account_iter->data; break; } @@ -1068,14 +1132,14 @@ /* Chat for .chat or .system at the end of the name to determine the type. */ if (len >= 7) { gchar *tmp = &name[len - 7]; - if (!strcmp(tmp, ".system")) { + if (purple_strequal(tmp, ".system")) { set->type = PURPLE_LOG_SYSTEM; *tmp = '\0'; } } if (len > 5) { gchar *tmp = &name[len - 5]; - if (!strcmp(tmp, ".chat")) { + if (purple_strequal(tmp, ".chat")) { set->type = PURPLE_LOG_CHAT; *tmp = '\0'; } @@ -1773,29 +1837,29 @@ sscanf(convostart, "%*s %s %d %d:%d:%d %d", month, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &tm.tm_year); /* Ugly hack, in case current locale is not English */ - if (strcmp(month, "Jan") == 0) { + if (purple_strequal(month, "Jan")) { tm.tm_mon= 0; - } else if (strcmp(month, "Feb") == 0) { + } else if (purple_strequal(month, "Feb")) { tm.tm_mon = 1; - } else if (strcmp(month, "Mar") == 0) { + } else if (purple_strequal(month, "Mar")) { tm.tm_mon = 2; - } else if (strcmp(month, "Apr") == 0) { + } else if (purple_strequal(month, "Apr")) { tm.tm_mon = 3; - } else if (strcmp(month, "May") == 0) { + } else if (purple_strequal(month, "May")) { tm.tm_mon = 4; - } else if (strcmp(month, "Jun") == 0) { + } else if (purple_strequal(month, "Jun")) { tm.tm_mon = 5; - } else if (strcmp(month, "Jul") == 0) { + } else if (purple_strequal(month, "Jul")) { tm.tm_mon = 6; - } else if (strcmp(month, "Aug") == 0) { + } else if (purple_strequal(month, "Aug")) { tm.tm_mon = 7; - } else if (strcmp(month, "Sep") == 0) { + } else if (purple_strequal(month, "Sep")) { tm.tm_mon = 8; - } else if (strcmp(month, "Oct") == 0) { + } else if (purple_strequal(month, "Oct")) { tm.tm_mon = 9; - } else if (strcmp(month, "Nov") == 0) { + } else if (purple_strequal(month, "Nov")) { tm.tm_mon = 10; - } else if (strcmp(month, "Dec") == 0) { + } else if (purple_strequal(month, "Dec")) { tm.tm_mon = 11; } tm.tm_year -= 1900; @@ -1930,7 +1994,7 @@ /* Make sure we're dealing with a log file. */ ext = &name[len - 4]; - if (strcmp(ext, ".log")) { + if (!purple_strequal(ext, ".log")) { g_free(name); continue; } @@ -1943,7 +2007,7 @@ set->type = PURPLE_LOG_IM; if (len > 9) { char *tmp = &name[len - 9]; - if (!strcmp(tmp, ".chat")) { + if (purple_strequal(tmp, ".chat")) { set->type = PURPLE_LOG_CHAT; *tmp = '\0'; } @@ -1952,22 +2016,28 @@ set->name = set->normalized_name = name; /* Search the buddy list to find the account and to determine if this is a buddy. */ - for (gnode = purple_get_blist()->root; !found && gnode != NULL; gnode = gnode->next) + for (gnode = purple_blist_get_root(); + !found && gnode != NULL; + gnode = purple_blist_node_get_sibling_next(gnode)) { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; !found && cnode != NULL; cnode = cnode->next) + for (cnode = purple_blist_node_get_first_child(gnode); + !found && cnode != NULL; + cnode = purple_blist_node_get_sibling_next(cnode)) { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; !found && bnode != NULL; bnode = bnode->next) + for (bnode = purple_blist_node_get_first_child(cnode); + !found && bnode != NULL; + bnode = purple_blist_node_get_sibling_next(bnode)) { PurpleBuddy *buddy = (PurpleBuddy *)bnode; - if (!strcmp(buddy->name, name)) { - set->account = buddy->account; + if (purple_strequal(purple_buddy_get_name(buddy), name)) { + set->account = purple_buddy_get_account(buddy); set->buddy = TRUE; found = TRUE; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/log.h --- a/libpurple/log.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/log.h Mon Mar 02 22:07:59 2009 +0000 @@ -194,7 +194,7 @@ * Creates a new log * * @param type The type of log this is. - * @param name The name of this conversation (screenname, chat name, + * @param name The name of this conversation (buddy name, chat name, * etc.) * @param account The account the conversation is occurring on * @param conv The conversation being logged @@ -294,6 +294,19 @@ int purple_log_get_total_size(PurpleLogType type, const char *name, PurpleAccount *account); /** + * Returns the activity score of a log, based on total size in bytes, + * which is then decayed based on age + * + * @param type The type of the log + * @param name The name of the log + * @param account The account + * @return The activity score + * + * @since 2.6.0 + */ +int purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleAccount *account); + +/** * Tests whether a log is deletable * * A return value of @c FALSE indicates that purple_log_delete() will fail on this diff -r a0668fbf2483 -r b98519a42e53 libpurple/nat-pmp.c --- a/libpurple/nat-pmp.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/nat-pmp.c Mon Mar 02 22:07:59 2009 +0000 @@ -126,7 +126,7 @@ for (i = 0; i < RTAX_MAX; i++) { - if (bitmask & (1 << i)) + if (bitmask & (1 << i)) { addrs[i] = sa; #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN @@ -139,7 +139,7 @@ sa = (struct sockaddr*)(sizeof(struct sockaddr_in6) + (char *)sa); #endif #endif - } + } else { addrs[i] = NULL; @@ -192,7 +192,7 @@ mib[5] = 0; /* Determine the buffer side needed to get the full routing table */ - if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) + if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { purple_debug_warning("nat-pmp", "sysctl: net.route.0.0.dump estimate\n"); return NULL; @@ -205,7 +205,7 @@ } /* Read the routing table into buf */ - if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) + if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { purple_debug_warning("nat-pmp", "sysctl: net.route.0.0.dump\n"); return NULL; @@ -213,12 +213,12 @@ lim = buf + needed; - for (next = buf; next < lim; next += rtm->rtm_msglen) + for (next = buf; next < lim; next += rtm->rtm_msglen) { rtm = (struct rt_msghdr *)next; sa = (struct sockaddr *)(rtm + 1); - - if (sa->sa_family == AF_INET) + + if (sa->sa_family == AF_INET) { sin = (struct sockaddr_in*) sa; @@ -240,7 +240,7 @@ memcpy(&mask, rti_info[RTAX_NETMASK], sizeof(mask)); if (rtm->rtm_addrs & RTA_GATEWAY && - is_default_route(&addr, &mask)) + is_default_route(&addr, &mask)) { if (rti_info[RTAX_GATEWAY]) { struct sockaddr_in *rti_sin = (struct sockaddr_in *)rti_info[RTAX_GATEWAY]; @@ -263,7 +263,7 @@ } /*! - * purple_pmp_get_public_ip() will return the publicly facing IP address of the + * purple_pmp_get_public_ip() will return the publicly facing IP address of the * default NAT gateway. The function will return NULL if: * - The gateway doesn't support NAT-PMP * - The gateway errors in some other spectacular fashion @@ -278,10 +278,10 @@ PurplePmpIpRequest req; PurplePmpIpResponse resp; int sendfd; - + if (pmp_info.status == PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER) return NULL; - + if ((pmp_info.status == PURPLE_PMP_STATUS_DISCOVERED) && (pmp_info.publicip != NULL)) { #ifdef PMP_DEBUG @@ -318,7 +318,7 @@ /* The NAT-PMP spec says we should attempt to contact the gateway 9 times, doubling the time we wait each time. * Even starting with a timeout of 0.1 seconds, that means that we have a total waiting of 204.6 seconds. * With the recommended timeout of 0.25 seconds, we're talking 511.5 seconds (8.5 minutes). - * + * * This seems really silly... if this were nonblocking, a couple retries might be in order, but it's not at present. */ #ifdef PMP_DEBUG @@ -327,7 +327,7 @@ #endif /* TODO: Non-blocking! */ - + if (sendto(sendfd, &req, sizeof(req), 0, (struct sockaddr *)(gateway), sizeof(struct sockaddr)) < 0) { purple_debug_info("nat-pmp", "There was an error sending the NAT-PMP public IP request! (%s)\n", g_strerror(errno)); @@ -370,7 +370,7 @@ if (!publicsockaddr) { g_free(gateway); - + pmp_info.status = PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER; return NULL; } @@ -437,7 +437,7 @@ /* The NAT-PMP spec says we should attempt to contact the gateway 9 times, doubling the time we wait each time. * Even starting with a timeout of 0.1 seconds, that means that we have a total waiting of 204.6 seconds. * With the recommended timeout of 0.25 seconds, we're talking 511.5 seconds (8.5 minutes). - * + * * This seems really silly... if this were nonblocking, a couple retries might be in order, but it's not at present. * XXX Make this nonblocking. * XXX This code looks like the pmp_get_public_ip() code. Can it be consolidated? diff -r a0668fbf2483 -r b98519a42e53 libpurple/network.c --- a/libpurple/network.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/network.c Mon Mar 02 22:07:59 2009 +0000 @@ -96,6 +96,10 @@ static NMState nm_get_network_state(void); #endif +#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32) +static gboolean force_online; +#endif + const unsigned char * purple_network_ip_atoi(const char *ip) { @@ -671,6 +675,9 @@ purple_network_is_available(void) { #ifdef HAVE_NETWORKMANAGER + if (force_online) + return TRUE; + if (!have_nm_state) { have_nm_state = TRUE; @@ -685,12 +692,20 @@ return FALSE; #elif defined _WIN32 - return (current_network_count > 0); + return (current_network_count > 0 || force_online); #else return TRUE; #endif } +void +purple_network_force_online() +{ +#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32) + force_online = TRUE; +#endif +} + #ifdef HAVE_NETWORKMANAGER static void nm_update_state(NMState state) diff -r a0668fbf2483 -r b98519a42e53 libpurple/network.h --- a/libpurple/network.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/network.h Mon Mar 02 22:07:59 2009 +0000 @@ -208,6 +208,17 @@ gboolean purple_network_is_available(void); /** + * Makes purple_network_is_available() always return @c TRUE. + * + * This is what backs the --force-online command line argument in Pidgin, + * for example. This is useful for offline testing, especially when + * combined with nullprpl. + * + * @since 2.6.0 + */ +void purple_network_force_online(void); + +/** * Get the handle for the network system * * @return the handle to the network system diff -r a0668fbf2483 -r b98519a42e53 libpurple/notify.c --- a/libpurple/notify.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/notify.c Mon Mar 02 22:07:59 2009 +0000 @@ -444,7 +444,7 @@ purple_notify_user_info_entry_new(const char *label, const char *value) { PurpleNotifyUserInfoEntry *user_info_entry; - + user_info_entry = g_new0(PurpleNotifyUserInfoEntry, 1); PURPLE_DBUS_REGISTER_POINTER(user_info_entry, PurpleNotifyUserInfoEntry); user_info_entry->label = g_strdup(label); @@ -458,7 +458,7 @@ purple_notify_user_info_entry_destroy(PurpleNotifyUserInfoEntry *user_info_entry) { g_return_if_fail(user_info_entry != NULL); - + g_free(user_info_entry->label); g_free(user_info_entry->value); PURPLE_DBUS_UNREGISTER_POINTER(user_info_entry); @@ -469,11 +469,11 @@ purple_notify_user_info_new() { PurpleNotifyUserInfo *user_info; - + user_info = g_new0(PurpleNotifyUserInfo, 1); PURPLE_DBUS_REGISTER_POINTER(user_info, PurpleNotifyUserInfo); user_info->user_info_entries = NULL; - + return user_info; } @@ -484,10 +484,10 @@ for (l = user_info->user_info_entries; l != NULL; l = l->next) { PurpleNotifyUserInfoEntry *user_info_entry = l->data; - + purple_notify_user_info_entry_destroy(user_info_entry); } - + g_list_free(user_info->user_info_entries); PURPLE_DBUS_UNREGISTER_POINTER(user_info); g_free(user_info); @@ -506,7 +506,7 @@ { GList *l; GString *text; - + text = g_string_new(""); for (l = user_info->user_info_entries; l != NULL; l = l->next) { @@ -532,7 +532,7 @@ if ((user_info_entry->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK) && (l->next && ((((PurpleNotifyUserInfoEntry *)(l->next->data))->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK)))) g_string_append(text, newline); - + /* Add an extra newline after a section header */ if (user_info_entry->type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER) g_string_append(text, newline); @@ -563,7 +563,7 @@ purple_notify_user_info_entry_get_value(PurpleNotifyUserInfoEntry *user_info_entry) { g_return_val_if_fail(user_info_entry != NULL, NULL); - + return user_info_entry->value; } @@ -596,7 +596,7 @@ purple_notify_user_info_add_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value) { PurpleNotifyUserInfoEntry *entry; - + entry = purple_notify_user_info_entry_new(label, value); user_info->user_info_entries = g_list_append(user_info->user_info_entries, entry); } @@ -623,7 +623,7 @@ purple_notify_user_info_add_section_header(PurpleNotifyUserInfo *user_info, const char *label) { PurpleNotifyUserInfoEntry *entry; - + entry = purple_notify_user_info_entry_new(label, NULL); entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER; @@ -634,10 +634,10 @@ purple_notify_user_info_prepend_section_header(PurpleNotifyUserInfo *user_info, const char *label) { PurpleNotifyUserInfoEntry *entry; - + entry = purple_notify_user_info_entry_new(label, NULL); entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER; - + user_info->user_info_entries = g_list_prepend(user_info->user_info_entries, entry); } @@ -645,7 +645,7 @@ purple_notify_user_info_add_section_break(PurpleNotifyUserInfo *user_info) { PurpleNotifyUserInfoEntry *entry; - + entry = purple_notify_user_info_entry_new(NULL, NULL); entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK; @@ -656,10 +656,10 @@ purple_notify_user_info_prepend_section_break(PurpleNotifyUserInfo *user_info) { PurpleNotifyUserInfoEntry *entry; - + entry = purple_notify_user_info_entry_new(NULL, NULL); entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK; - + user_info->user_info_entries = g_list_prepend(user_info->user_info_entries, entry); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/notify.h --- a/libpurple/notify.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/notify.h Mon Mar 02 22:07:59 2009 +0000 @@ -291,6 +291,7 @@ */ void purple_notify_searchresults_row_add(PurpleNotifySearchResults *results, GList *row); + #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_NOTIFY_C_) /** * Returns a number of the rows in the search results object. @@ -558,14 +559,21 @@ */ void purple_notify_user_info_prepend_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value); +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_NOTIFY_C_) /** * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object * without freeing the entry. * * @param user_info The PurpleNotifyUserInfo * @param user_info_entry The PurpleNotifyUserInfoEntry + * + * @deprecated Nothing is using this function and it should be removed + * in 3.0.0. Or, if we decide we want to keep it in 3.0.0 + * then we should make purple_notify_user_info_entry_destroy + * public so that entries can be free'd after they're removed. */ void purple_notify_user_info_remove_entry(PurpleNotifyUserInfo *user_info, PurpleNotifyUserInfoEntry *user_info_entry); +#endif /** * Create a new PurpleNotifyUserInfoEntry diff -r a0668fbf2483 -r b98519a42e53 libpurple/ntlm.h --- a/libpurple/ntlm.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/ntlm.h Mon Mar 02 22:07:59 2009 +0000 @@ -46,7 +46,7 @@ * * @param type2 String containing the base64 encoded type2 message * @param flags If not @c NULL, this will store the flags for the message - * + * * @return The nonce for use in message type3. This is a statically * allocated 8 byte binary string. */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugin.c --- a/libpurple/plugin.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugin.c Mon Mar 02 22:07:59 2009 +0000 @@ -218,7 +218,7 @@ g_free(basename); if (plugin != NULL) { - if (!strcmp(filename, plugin->path)) + if (purple_strequal(filename, plugin->path)) return plugin; else if (!purple_plugin_is_unloadable(plugin)) { @@ -357,7 +357,7 @@ return NULL; } else if (plugin->info->ui_requirement && - strcmp(plugin->info->ui_requirement, purple_core_get_ui())) + !purple_strequal(plugin->info->ui_requirement, purple_core_get_ui())) { plugin->error = g_strdup_printf(_("You are using %s, but this plugin requires %s."), purple_core_get_ui(), plugin->info->ui_requirement); @@ -1538,7 +1538,7 @@ for (l = plugins; l != NULL; l = l->next) { plugin = l->data; - if (!strcmp(plugin->info->name, name)) + if (purple_strequal(plugin->info->name, name)) return plugin; } @@ -1554,7 +1554,7 @@ for (l = plugins; l != NULL; l = l->next) { plugin = l->data; - if (plugin->path != NULL && !strcmp(plugin->path, filename)) + if (purple_strequal(plugin->path, filename)) return plugin; } @@ -1577,7 +1577,7 @@ if (plugin->path != NULL) { tmp = purple_plugin_get_basename(plugin->path); - if (!strcmp(tmp, basename)) + if (purple_strequal(tmp, basename)) { g_free(tmp); return plugin; @@ -1603,7 +1603,7 @@ { plugin = l->data; - if (plugin->info->id != NULL && !strcmp(plugin->info->id, id)) + if (purple_strequal(plugin->info->id, id)) return plugin; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugin.h --- a/libpurple/plugin.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugin.h Mon Mar 02 22:07:59 2009 +0000 @@ -188,7 +188,7 @@ /** NULL for plugin actions menu, set to the PurpleConnection for account actions menu */ gpointer context; - + gpointer user_data; }; @@ -363,7 +363,7 @@ * Returns a plugin's name. * * @param plugin The plugin. - * + * * @return THe name of the plugin, or @c NULL. */ const gchar *purple_plugin_get_name(const PurplePlugin *plugin); diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugins/Makefile.mingw --- a/libpurple/plugins/Makefile.mingw Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugins/Makefile.mingw Mon Mar 02 22:07:59 2009 +0000 @@ -1,7 +1,7 @@ # # Makefile.mingw # -# Description: Makefile for win32 (mingw) version of LibPurple Plugins +# Description: Makefile for win32 (mingw) version of libpurple Plugins # PIDGIN_TREE_TOP := ../.. diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugins/autoaccept.c --- a/libpurple/plugins/autoaccept.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugins/autoaccept.c Mon Mar 02 22:07:59 2009 +0000 @@ -95,7 +95,7 @@ char *dirname; account = xfer->account; - node = (PurpleBlistNode *)purple_find_buddy(account, xfer->who); + node = PURPLE_BLIST_NODE(purple_find_buddy(account, xfer->who)); if (!node) { diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugins/perl/common/BuddyList.xs --- a/libpurple/plugins/perl/common/BuddyList.xs Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugins/perl/common/BuddyList.xs Mon Mar 02 22:07:59 2009 +0000 @@ -363,9 +363,9 @@ PROTOTYPES: ENABLE Purple::BuddyList::Buddy -purple_buddy_new(account, screenname, alias) +purple_buddy_new(account, name, alias) Purple::Account account - const char *screenname + const char *name const char *alias const char * diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugins/perl/common/Request.xs --- a/libpurple/plugins/perl/common/Request.xs Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugins/perl/common/Request.xs Mon Mar 02 22:07:59 2009 +0000 @@ -211,10 +211,11 @@ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_account_new(id, text, account = NULL) +purple_request_field_account_new(class, id, text, account = NULL) const char *id const char *text Purple::Account account + C_ARGS: id, text, account Purple::Account purple_request_field_account_get_default_value(field) @@ -255,10 +256,11 @@ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_bool_new(id, text, default_value = TRUE) +purple_request_field_bool_new(class, id, text, default_value = TRUE) const char *id const char *text gboolean default_value + C_ARGS: id, text, default_value gboolean purple_request_field_bool_get_default_value(field) @@ -282,10 +284,11 @@ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_choice_new(id, text, default_value = 0) +purple_request_field_choice_new(class, id, text, default_value = 0) const char *id const char *text int default_value + C_ARGS: id, text, default_value void purple_request_field_choice_add(field, label) @@ -324,10 +327,11 @@ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_int_new(id, text, default_value = 0) +purple_request_field_int_new(clas, id, text, default_value = 0) const char *id const char *text int default_value + C_ARGS: id, text, default_value int purple_request_field_int_get_default_value(field) @@ -355,17 +359,19 @@ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_label_new(id, text) +purple_request_field_label_new(class, id, text) const char *id const char *text + C_ARGS: id, text MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_request_field_ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_list_new(id, text) +purple_request_field_list_new(class, id, text) const char *id const char *text + C_ARGS: id, text void purple_request_field_list_add(field, item, data) @@ -425,10 +431,11 @@ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_new(id, text, type) +purple_request_field_new(class, id, text, type) const char *id const char *text Purple::RequestFieldType type + C_ARGS: id, text, type void purple_request_field_set_label(field, label) @@ -454,11 +461,12 @@ PROTOTYPES: ENABLE Purple::Request::Field -purple_request_field_string_new(id, text, default_value, multiline) +purple_request_field_string_new(class, id, text, default_value, multiline) const char *id const char *text const char *default_value gboolean multiline + C_ARGS: id, text, default_value, multiline const char * purple_request_field_string_get_default_value(field) @@ -527,8 +535,9 @@ Purple::Request::Field::Group group Purple::Request::Field::Group -purple_request_field_group_new(title) +purple_request_field_group_new(class, title) const char *title + C_ARGS: title MODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_request_field_ PROTOTYPES: ENABLE @@ -561,7 +570,8 @@ PROTOTYPES: ENABLE Purple::Request::Fields -purple_request_fields_new() +purple_request_fields_new(class) + C_ARGS: /* void */ void purple_request_fields_add_group(fields, group) diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugins/ssl/ssl-gnutls.c --- a/libpurple/plugins/ssl/ssl-gnutls.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugins/ssl/ssl-gnutls.c Mon Mar 02 22:07:59 2009 +0000 @@ -256,9 +256,13 @@ gsc->private_data = gnutls_data; gnutls_init(&gnutls_data->session, GNUTLS_CLIENT); +#ifdef HAVE_GNUTLS_PRIORITY_FUNCS if (gnutls_priority_set_direct(gnutls_data->session, "NORMAL:%SSL3_RECORD_VERSION", NULL)) gnutls_priority_set_direct(gnutls_data->session, "NORMAL", NULL); +#else + gnutls_set_default_priority(gnutls_data->session); +#endif gnutls_certificate_type_set_priority(gnutls_data->session, cert_type_priority); diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugins/statenotify.c --- a/libpurple/plugins/statenotify.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugins/statenotify.c Mon Mar 02 22:07:59 2009 +0000 @@ -33,7 +33,7 @@ g_return_if_fail(conv->type == PURPLE_CONV_TYPE_IM); /* Prevent duplicate notifications for buddies in multiple groups */ - if (buddy != purple_find_buddy(buddy->account, buddy->name)) + if (buddy != purple_find_buddy(account, buddy_name)) return; who = purple_buddy_get_alias(buddy); diff -r a0668fbf2483 -r b98519a42e53 libpurple/plugins/tcl/tcl_cmds.c --- a/libpurple/plugins/tcl/tcl_cmds.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/plugins/tcl/tcl_cmds.c Mon Mar 02 22:07:59 2009 +0000 @@ -401,9 +401,9 @@ return NULL; if (!strcmp(type, "buddy")) { - node = (PurpleBlistNode *)purple_find_buddy(account, name); + node = PURPLE_BLIST_NODE(purple_find_buddy(account, name)); } else if (!strcmp(type, "group")) { - node = (PurpleBlistNode *)purple_blist_find_chat(account, name); + node = PURPLE_BLIST_NODE(purple_blist_find_chat(account, name)); } return node; @@ -1495,9 +1495,12 @@ enum { CMD_STATUS_ATTR, CMD_STATUS_TYPE } cmd; PurpleStatus *status; PurpleStatusType *status_type; + int error; +#if !(defined PURPLE_DISABLE_DEPRECATED) PurpleValue *value; const char *attr; - int error, v; + int v; +#endif if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?"); @@ -1509,6 +1512,7 @@ switch (cmd) { case CMD_STATUS_ATTR: +#if !(defined PURPLE_DISABLE_DEPRECATED) if (objc != 4 && objc != 5) { Tcl_WrongNumArgs(interp, 2, objv, "status attr_id ?value?"); return TCL_ERROR; @@ -1554,6 +1558,7 @@ Tcl_NewStringObj("attribute has unknown type", -1)); return TCL_ERROR; } +#endif break; case CMD_STATUS_TYPE: if (objc != 3) { @@ -1727,6 +1732,7 @@ (purple_status_type_get_primitive(status_type)), -1)); break; case CMD_STATUS_TYPE_PRIMARY_ATTR: +#if !(defined PURPLE_DISABLE_DEPRECATED) if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "statustype"); return TCL_ERROR; @@ -1735,6 +1741,7 @@ return TCL_ERROR; Tcl_SetObjResult(interp, Tcl_NewStringObj(purple_status_type_get_primary_attr(status_type), -1)); +#endif break; case CMD_STATUS_TYPE_SAVEABLE: if (objc != 3) { diff -r a0668fbf2483 -r b98519a42e53 libpurple/pounce.c --- a/libpurple/pounce.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/pounce.c Mon Mar 02 22:07:59 2009 +0000 @@ -326,7 +326,7 @@ data->buffer = NULL; } - if (!strcmp(element_name, "pounce")) { + if (purple_strequal(element_name, "pounce")) { const char *ui = g_hash_table_lookup(atts, "ui"); if (ui == NULL) { @@ -338,7 +338,7 @@ data->events = 0; } - else if (!strcmp(element_name, "account")) { + else if (purple_strequal(element_name, "account")) { const char *protocol_id = g_hash_table_lookup(atts, "protocol"); if (protocol_id == NULL) { @@ -348,7 +348,7 @@ else data->protocol_id = g_strdup(protocol_id); } - else if (!strcmp(element_name, "option")) { + else if (purple_strequal(element_name, "option")) { const char *type = g_hash_table_lookup(atts, "type"); if (type == NULL) { @@ -358,7 +358,7 @@ else data->option_type = g_strdup(type); } - else if (!strcmp(element_name, "event")) { + else if (purple_strequal(element_name, "event")) { const char *type = g_hash_table_lookup(atts, "type"); if (type == NULL) { @@ -368,7 +368,7 @@ else data->event_type = g_strdup(type); } - else if (!strcmp(element_name, "action")) { + else if (purple_strequal(element_name, "action")) { const char *type = g_hash_table_lookup(atts, "type"); if (type == NULL) { @@ -378,7 +378,7 @@ else data->action_name = g_strdup(type); } - else if (!strcmp(element_name, "param")) { + else if (purple_strequal(element_name, "param")) { const char *param_name = g_hash_table_lookup(atts, "name"); if (param_name == NULL) { @@ -404,7 +404,7 @@ data->buffer = NULL; } - if (!strcmp(element_name, "account")) { + if (purple_strequal(element_name, "account")) { char *tmp; g_free(data->account_name); data->account_name = g_strdup(buffer); @@ -412,43 +412,43 @@ data->protocol_id = g_strdup(_purple_oscar_convert(buffer, tmp)); g_free(tmp); } - else if (!strcmp(element_name, "pouncee")) { + else if (purple_strequal(element_name, "pouncee")) { g_free(data->pouncee); data->pouncee = g_strdup(buffer); } - else if (!strcmp(element_name, "option")) { - if (!strcmp(data->option_type, "on-away")) + else if (purple_strequal(element_name, "option")) { + if (purple_strequal(data->option_type, "on-away")) data->options |= PURPLE_POUNCE_OPTION_AWAY; g_free(data->option_type); data->option_type = NULL; } - else if (!strcmp(element_name, "event")) { - if (!strcmp(data->event_type, "sign-on")) + else if (purple_strequal(element_name, "event")) { + if (purple_strequal(data->event_type, "sign-on")) data->events |= PURPLE_POUNCE_SIGNON; - else if (!strcmp(data->event_type, "sign-off")) + else if (purple_strequal(data->event_type, "sign-off")) data->events |= PURPLE_POUNCE_SIGNOFF; - else if (!strcmp(data->event_type, "away")) + else if (purple_strequal(data->event_type, "away")) data->events |= PURPLE_POUNCE_AWAY; - else if (!strcmp(data->event_type, "return-from-away")) + else if (purple_strequal(data->event_type, "return-from-away")) data->events |= PURPLE_POUNCE_AWAY_RETURN; - else if (!strcmp(data->event_type, "idle")) + else if (purple_strequal(data->event_type, "idle")) data->events |= PURPLE_POUNCE_IDLE; - else if (!strcmp(data->event_type, "return-from-idle")) + else if (purple_strequal(data->event_type, "return-from-idle")) data->events |= PURPLE_POUNCE_IDLE_RETURN; - else if (!strcmp(data->event_type, "start-typing")) + else if (purple_strequal(data->event_type, "start-typing")) data->events |= PURPLE_POUNCE_TYPING; - else if (!strcmp(data->event_type, "typed")) + else if (purple_strequal(data->event_type, "typed")) data->events |= PURPLE_POUNCE_TYPED; - else if (!strcmp(data->event_type, "stop-typing")) + else if (purple_strequal(data->event_type, "stop-typing")) data->events |= PURPLE_POUNCE_TYPING_STOPPED; - else if (!strcmp(data->event_type, "message-received")) + else if (purple_strequal(data->event_type, "message-received")) data->events |= PURPLE_POUNCE_MESSAGE_RECEIVED; g_free(data->event_type); data->event_type = NULL; } - else if (!strcmp(element_name, "action")) { + else if (purple_strequal(element_name, "action")) { if (data->pounce != NULL) { purple_pounce_action_register(data->pounce, data->action_name); purple_pounce_action_set_enabled(data->pounce, data->action_name, TRUE); @@ -457,7 +457,7 @@ g_free(data->action_name); data->action_name = NULL; } - else if (!strcmp(element_name, "param")) { + else if (purple_strequal(element_name, "param")) { if (data->pounce != NULL) { purple_pounce_action_set_attribute(data->pounce, data->action_name, data->param_name, buffer); @@ -466,7 +466,7 @@ g_free(data->param_name); data->param_name = NULL; } - else if (!strcmp(element_name, "events")) { + else if (purple_strequal(element_name, "events")) { PurpleAccount *account; account = purple_accounts_find(data->account_name, data->protocol_id); @@ -499,11 +499,11 @@ g_free(data->pouncee); data->pouncee = NULL; } - else if (!strcmp(element_name, "save")) { + else if (purple_strequal(element_name, "save")) { if (data->pounce != NULL) purple_pounce_set_save(data->pounce, TRUE); } - else if (!strcmp(element_name, "pounce")) { + else if (purple_strequal(element_name, "pounce")) { data->pounce = NULL; data->events = 0; data->options = 0; @@ -1023,7 +1023,7 @@ for (iter = pounces; iter; iter = iter->next) { PurplePounce *pounce = iter->data; - if (pounce->ui_type && strcmp(pounce->ui_type, ui) == 0) + if (purple_strequal(pounce->ui_type, ui)) list = g_list_prepend(list, pounce); } list = g_list_reverse(list); @@ -1042,35 +1042,39 @@ static void buddy_state_cb(PurpleBuddy *buddy, PurplePounceEvent event) { - purple_pounce_execute(buddy->account, buddy->name, event); + PurpleAccount *account = purple_buddy_get_account(buddy); + const gchar *name = purple_buddy_get_name(buddy); + + purple_pounce_execute(account, name, event); } static void buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status, PurpleStatus *status) { + PurpleAccount *account = purple_buddy_get_account(buddy); + const gchar *name = purple_buddy_get_name(buddy); gboolean old_available, available; available = purple_status_is_available(status); old_available = purple_status_is_available(old_status); if (available && !old_available) - purple_pounce_execute(buddy->account, buddy->name, - PURPLE_POUNCE_AWAY_RETURN); + purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY_RETURN); else if (!available && old_available) - purple_pounce_execute(buddy->account, buddy->name, - PURPLE_POUNCE_AWAY); + purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY); } static void buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle) { + PurpleAccount *account = purple_buddy_get_account(buddy); + const gchar *name = purple_buddy_get_name(buddy); + if (idle && !old_idle) - purple_pounce_execute(buddy->account, buddy->name, - PURPLE_POUNCE_IDLE); + purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE); else if (!idle && old_idle) - purple_pounce_execute(buddy->account, buddy->name, - PURPLE_POUNCE_IDLE_RETURN); + purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE_RETURN); } static void diff -r a0668fbf2483 -r b98519a42e53 libpurple/prefs.c --- a/libpurple/prefs.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/prefs.c Mon Mar 02 22:07:59 2009 +0000 @@ -250,33 +250,34 @@ GString *pref_name_full; GList *tmp; - if(strcmp(element_name, "pref") && strcmp(element_name, "item")) + if(!purple_strequal(element_name, "pref") && + !purple_strequal(element_name, "item")) return; for(i = 0; attribute_names[i]; i++) { - if(!strcmp(attribute_names[i], "name")) { + if(purple_strequal(attribute_names[i], "name")) { pref_name = attribute_values[i]; - } else if(!strcmp(attribute_names[i], "type")) { - if(!strcmp(attribute_values[i], "bool")) + } else if(purple_strequal(attribute_names[i], "type")) { + if(purple_strequal(attribute_values[i], "bool")) pref_type = PURPLE_PREF_BOOLEAN; - else if(!strcmp(attribute_values[i], "int")) + else if(purple_strequal(attribute_values[i], "int")) pref_type = PURPLE_PREF_INT; - else if(!strcmp(attribute_values[i], "string")) + else if(purple_strequal(attribute_values[i], "string")) pref_type = PURPLE_PREF_STRING; - else if(!strcmp(attribute_values[i], "stringlist")) + else if(purple_strequal(attribute_values[i], "stringlist")) pref_type = PURPLE_PREF_STRING_LIST; - else if(!strcmp(attribute_values[i], "path")) + else if(purple_strequal(attribute_values[i], "path")) pref_type = PURPLE_PREF_PATH; - else if(!strcmp(attribute_values[i], "pathlist")) + else if(purple_strequal(attribute_values[i], "pathlist")) pref_type = PURPLE_PREF_PATH_LIST; else return; - } else if(!strcmp(attribute_names[i], "value")) { + } else if(purple_strequal(attribute_names[i], "value")) { pref_value = attribute_values[i]; } } - if(!strcmp(element_name, "item")) { + if(purple_strequal(element_name, "item")) { struct purple_pref *pref; pref_name_full = g_string_new(""); @@ -301,7 +302,7 @@ } else { char *decoded; - if(!pref_name || !strcmp(pref_name, "/")) + if(!pref_name || purple_strequal(pref_name, "/")) return; pref_name_full = g_string_new(pref_name); @@ -352,7 +353,7 @@ const gchar *element_name, gpointer user_data, GError **error) { - if(prefs_stack && !strcmp(element_name, "pref")) { + if(prefs_stack && purple_strequal(element_name, "pref")) { g_free(prefs_stack->data); prefs_stack = g_list_delete_link(prefs_stack, prefs_stack); } @@ -521,7 +522,7 @@ char *parent_name = get_path_dirname(name); struct purple_pref *ret = &prefs; - if(strcmp(parent_name, "/")) { + if(!purple_strequal(parent_name, "/")) { ret = find_pref(parent_name); } @@ -571,7 +572,7 @@ my_name = get_path_basename(name); for(sibling = parent->first_child; sibling; sibling = sibling->sibling) { - if(!strcmp(sibling->name, my_name)) { + if(purple_strequal(sibling->name, my_name)) { g_free(my_name); return NULL; } @@ -849,10 +850,7 @@ return; } - if((value && !pref->value.string) || - (!value && pref->value.string) || - (value && pref->value.string && - strcmp(pref->value.string, value))) { + if (!purple_strequal(pref->value.string, value)) { g_free(pref->value.string); pref->value.string = g_strdup(value); do_callbacks(name, pref); @@ -909,10 +907,7 @@ return; } - if((value && !pref->value.string) || - (!value && pref->value.string) || - (value && pref->value.string && - strcmp(pref->value.string, value))) { + if (!purple_strequal(pref->value.string, value)) { g_free(pref->value.string); pref->value.string = g_strdup(value); do_callbacks(name, pref); @@ -1106,7 +1101,7 @@ next = child->sibling; for(newchild = newpref->first_child; newchild != NULL; newchild = newchild->sibling) { - if(!strcmp(child->name, newchild->name)) + if(purple_strequal(child->name, newchild->name)) { purple_prefs_rename_node(child, newchild); break; diff -r a0668fbf2483 -r b98519a42e53 libpurple/prefs.h --- a/libpurple/prefs.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/prefs.h Mon Mar 02 22:07:59 2009 +0000 @@ -67,8 +67,8 @@ #endif /**************************************************************************/ -/** @name Prefs API - Preferences are named according to a directory-like structure. +/** @name Prefs API + Preferences are named according to a directory-like structure. Example: "/plugins/core/potato/is_from_idaho" (probably a boolean) */ /**************************************************************************/ /*@{*/ diff -r a0668fbf2483 -r b98519a42e53 libpurple/privacy.c --- a/libpurple/privacy.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/privacy.c Mon Mar 02 22:07:59 2009 +0000 @@ -232,8 +232,10 @@ while (list != NULL) { PurpleBuddy *buddy = list->data; - if (!g_slist_find_custom(account->permit, buddy->name, (GCompareFunc)g_utf8_collate)) - purple_privacy_permit_add(account, buddy->name, local); + const gchar *name = purple_buddy_get_name(buddy); + + if (!g_slist_find_custom(account->permit, name, (GCompareFunc)g_utf8_collate)) + purple_privacy_permit_add(account, name, local); list = g_slist_delete_link(list, list); } } @@ -267,7 +269,7 @@ for (list = account->permit; list != NULL;) { char *person = list->data; list = list->next; - if (strcmp(norm, person) != 0) + if (!purple_strequal(norm, person)) purple_privacy_permit_remove(account, person, local); } } @@ -311,7 +313,7 @@ for (list = account->deny; list != NULL; ) { char *person = list->data; list = list->next; - if (strcmp(norm, person) != 0) + if (!purple_strequal(norm, person)) purple_privacy_deny_remove(account, person, local); } } diff -r a0668fbf2483 -r b98519a42e53 libpurple/privacy.h --- a/libpurple/privacy.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/privacy.h Mon Mar 02 22:07:59 2009 +0000 @@ -125,7 +125,7 @@ * changed to PURPLE_PRIVACY_ALLOW_USERS, all the * buddies are added to the allow-list, and the * user is also added to the allow-list. - * + * * @param account The account. * @param who The name of the user. * @param local Whether the change is local-only. diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/Makefile.mingw --- a/libpurple/protocols/Makefile.mingw Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/Makefile.mingw Mon Mar 02 22:07:59 2009 +0000 @@ -2,7 +2,7 @@ # # Author: hermanator12002@yahoo.com # Date 9/11/02 -# Description: Protocols Makefile for win32 (mingw) port of LibPurple +# Description: Protocols Makefile for win32 (mingw) port of libpurple # PIDGIN_TREE_TOP := ../.. diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/bonjour/bonjour.c --- a/libpurple/protocols/bonjour/bonjour.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/bonjour/bonjour.c Mon Mar 02 22:07:59 2009 +0000 @@ -261,9 +261,10 @@ static void bonjour_remove_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group) { - if (buddy->proto_data) { - bonjour_buddy_delete(buddy->proto_data); - buddy->proto_data = NULL; + BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy); + if (bb) { + bonjour_buddy_delete(bb); + purple_buddy_set_protocol_data(buddy, NULL); } } @@ -303,7 +304,7 @@ PurpleBuddy *buddy = purple_find_buddy(connection->account, who); BonjourBuddy *bb; - if (buddy == NULL || buddy->proto_data == NULL) + if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL) { /* * This buddy is not in our buddy list, and therefore does not really @@ -312,7 +313,6 @@ return; } - bb = buddy->proto_data; bonjour_jabber_close_conversation(bb->conversation); bb->conversation = NULL; } @@ -351,7 +351,7 @@ { PurplePresence *presence; PurpleStatus *status; - BonjourBuddy *bb = buddy->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy); const char *status_description; const char *message; @@ -417,8 +417,7 @@ { PurpleBuddy *buddy = purple_find_buddy(connection->account, who); - return (buddy != NULL && buddy->proto_data != NULL); - + return (buddy != NULL && purple_buddy_get_protocol_data(buddy) != NULL); } static gboolean diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/bonjour/bonjour_ft.c --- a/libpurple/protocols/bonjour/bonjour_ft.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/bonjour/bonjour_ft.c Mon Mar 02 22:07:59 2009 +0000 @@ -386,10 +386,9 @@ buddy = purple_find_buddy(xfer->account, xfer->who); /* this buddy is offline. */ - if (buddy == NULL || buddy->proto_data == NULL) + if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL) return; - bb = (BonjourBuddy *)buddy->proto_data; /* Assume it is the first IP. We could do something like keep track of which one is in use or something. */ if (bb->ips) xf->buddy_ip = g_strdup(bb->ips->data); @@ -410,6 +409,7 @@ const char *type, *id; BonjourData *bd; PurpleXfer *xfer; + const gchar *name = NULL; g_return_if_fail(pc != NULL); g_return_if_fail(packet != NULL); @@ -421,6 +421,8 @@ purple_debug_info("bonjour", "xep-si-parse.\n"); + name = purple_buddy_get_name(pb); + type = xmlnode_get_attrib(packet, "type"); id = xmlnode_get_attrib(packet, "id"); if(type) { @@ -448,31 +450,34 @@ /* TODO: Make sure that it is advertising a bytestreams transfer */ - bonjour_xfer_receive(pc, id, sid, pb->name, filesize, filename, XEP_BYTESTREAMS); + bonjour_xfer_receive(pc, id, sid, name, filesize, filename, XEP_BYTESTREAMS); parsed_receive = TRUE; } if (!parsed_receive) { + BonjourData *bd = purple_connection_get_protocol_data(pc); + purple_debug_info("bonjour", "rejecting unrecognized si SET offer.\n"); - xep_ft_si_reject((BonjourData *)pc->proto_data, id, pb->name, "403", "cancel"); + xep_ft_si_reject(bd, id, name, "403", "cancel"); /*TODO: Send Cancel (501) */ } } else if(!strcmp(type, "result")) { purple_debug_info("bonjour", "si offer Message type - RESULT.\n"); - xfer = bonjour_si_xfer_find(bd, id, pb->name); + xfer = bonjour_si_xfer_find(bd, id, name); if(xfer == NULL) { + BonjourData *bd = purple_connection_get_protocol_data(pc); purple_debug_info("bonjour", "xfer find fail.\n"); - xep_ft_si_reject((BonjourData *)pc->proto_data, id, pb->name, "403", "cancel"); + xep_ft_si_reject(bd, id, name, "403", "cancel"); } else bonjour_bytestreams_init(xfer); } else if(!strcmp(type, "error")) { purple_debug_info("bonjour", "si offer Message type - ERROR.\n"); - xfer = bonjour_si_xfer_find(bd, id, pb->name); + xfer = bonjour_si_xfer_find(bd, id, name); if(xfer == NULL) purple_debug_info("bonjour", "xfer find fail.\n"); @@ -501,7 +506,7 @@ purple_debug_info("bonjour", "xep-bytestreams-parse.\n"); type = xmlnode_get_attrib(packet, "type"); - from = pb->name; + from = purple_buddy_get_name(pb); query = xmlnode_get_child(packet,"query"); if(type) { if(!strcmp(type, "set")) { @@ -841,8 +846,10 @@ static void bonjour_bytestreams_connect(PurpleXfer *xfer, PurpleBuddy *pb) { + PurpleAccount *account = NULL; XepXfer *xf; char dstaddr[41]; + const gchar *name = NULL; unsigned char hashval[20]; char *p; int i; @@ -856,7 +863,10 @@ if(!xf) return; - p = g_strdup_printf("%s%s%s", xf->sid, pb->name, purple_account_get_username(pb->account)); + name = purple_buddy_get_name(pb); + account = purple_buddy_get_account(pb); + + p = g_strdup_printf("%s%s%s", xf->sid, name, purple_account_get_username(account)); purple_cipher_digest_region("sha1", (guchar *)p, strlen(p), sizeof(hashval), hashval, NULL); g_free(p); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/bonjour/buddy.c --- a/libpurple/protocols/bonjour/buddy.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/bonjour/buddy.c Mon Mar 02 22:07:59 2009 +0000 @@ -157,8 +157,8 @@ purple_blist_add_buddy(buddy, NULL, group, NULL); } - buddy->proto_data = bonjour_buddy; name = purple_buddy_get_name(buddy); + purple_buddy_set_protocol_data(buddy, bonjour_buddy); /* Create the alias for the buddy using the first and the last name */ if (bonjour_buddy->nick && *bonjour_buddy->nick) @@ -210,8 +210,8 @@ if (PURPLE_BLIST_NODE_SHOULD_SAVE(pb)) { purple_prpl_got_user_status(purple_buddy_get_account(pb), purple_buddy_get_name(pb), "offline", NULL); - bonjour_buddy_delete(pb->proto_data); - pb->proto_data = NULL; + bonjour_buddy_delete(purple_buddy_get_protocol_data(pb)); + purple_buddy_set_protocol_data(pb, NULL); } else { purple_account_remove_buddy(purple_buddy_get_account(pb), pb, NULL); purple_blist_remove_buddy(pb); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/bonjour/jabber.c --- a/libpurple/protocols/bonjour/jabber.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/bonjour/jabber.c Mon Mar 02 22:07:59 2009 +0000 @@ -240,17 +240,21 @@ _match_buddies_by_address(gpointer key, gpointer value, gpointer data) { PurpleBuddy *pb = value; + PurpleAccount *account = NULL; + BonjourBuddy *bb = NULL; struct _match_buddies_by_address_t *mbba = data; + account = purple_buddy_get_account(pb); + bb = purple_buddy_get_protocol_data(pb); + /* * If the current PurpleBuddy's data is not null and the PurpleBuddy's account * is the same as the account requesting the check then continue to determine * whether one of the buddies IPs matches the target IP. */ - if (mbba->jdata->account == pb->account && pb->proto_data != NULL) + if (mbba->jdata->account == account && bb != NULL) { const char *ip; - BonjourBuddy *bb = pb->proto_data; GSList *tmp = bb->ips; while(tmp) { @@ -268,7 +272,7 @@ _send_data_write_cb(gpointer data, gint source, PurpleInputCondition cond) { PurpleBuddy *pb = data; - BonjourBuddy *bb = pb->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data(pb); BonjourJabberConversation *bconv = bb->conversation; int ret, writelen; @@ -285,13 +289,16 @@ if (ret < 0 && errno == EAGAIN) return; else if (ret <= 0) { - PurpleConversation *conv; + PurpleConversation *conv = NULL; + PurpleAccount *account = NULL; const char *error = g_strerror(errno); purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n", purple_buddy_get_name(pb), error ? error : "(null)"); - conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account); + account = purple_buddy_get_account(pb); + + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account); if (conv != NULL) purple_conversation_write(conv, NULL, _("Unable to send message."), @@ -310,7 +317,7 @@ { gint ret; int len = strlen(message); - BonjourBuddy *bb = pb->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data(pb); BonjourJabberConversation *bconv = bb->conversation; /* If we're not ready to actually send, append it to the buffer */ @@ -329,12 +336,15 @@ ret = 0; else if (ret <= 0) { PurpleConversation *conv; + PurpleAccount *account; const char *error = g_strerror(errno); purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n", purple_buddy_get_name(pb), error ? error : "(null)"); - conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account); + account = purple_buddy_get_account(pb); + + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account); if (conv != NULL) purple_conversation_write(conv, NULL, _("Unable to send message."), @@ -373,11 +383,12 @@ /* Inform the user that the conversation has been closed */ BonjourBuddy *bb = NULL; + const gchar *name = bconv->pb ? purple_buddy_get_name(bconv->pb) : "(unknown)"; - purple_debug_info("bonjour", "Recieved conversation close notification from %s.\n", bconv->pb ? bconv->pb->name : "(unknown)"); + purple_debug_info("bonjour", "Recieved conversation close notification from %s.\n", name); if(bconv->pb != NULL) - bb = bconv->pb->proto_data; + bb = purple_buddy_get_protocol_data(bconv->pb); #if 0 if(bconv->pb != NULL) { PurpleConversation *conv; @@ -411,9 +422,11 @@ purple_debug_warning("bonjour", "receive error: %s\n", err ? err : "(null)"); bonjour_jabber_close_conversation(bconv); - if (bconv->pb != NULL && bconv->pb->proto_data != NULL) { - BonjourBuddy *bb = bconv->pb->proto_data; - bb->conversation = NULL; + if (bconv->pb != NULL) { + BonjourBuddy *bb = purple_buddy_get_protocol_data(bconv->pb); + + if(bb != NULL) + bb->conversation = NULL; } /* I guess we really don't need to notify the user. @@ -421,7 +434,8 @@ } return; } else if (len == 0) { /* The other end has closed the socket */ - purple_debug_warning("bonjour", "Connection closed (without stream end) by %s.\n", (bconv->pb && bconv->pb->name) ? bconv->pb->name : "(unknown)"); + const gchar *name = purple_buddy_get_name(bconv->pb); + purple_debug_warning("bonjour", "Connection closed (without stream end) by %s.\n", (name) ? name : "(unknown)"); bonjour_jabber_stream_ended(bconv); return; } else { @@ -465,7 +479,7 @@ BonjourBuddy *bb = NULL; if(bconv->pb) { - bb = bconv->pb->proto_data; + bb = purple_buddy_get_protocol_data(bconv->pb); bname = purple_buddy_get_name(bconv->pb); } @@ -644,7 +658,7 @@ mbba = g_new0(struct _match_buddies_by_address_t, 1); mbba->address = address_text; mbba->jdata = jdata; - g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba); + g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba); if (mbba->matched_buddies == NULL) { purple_debug_info("bonjour", "We don't like invisible buddies, this is not a superheros comic\n"); @@ -729,17 +743,20 @@ _connected_to_buddy(gpointer data, gint source, const gchar *error) { PurpleBuddy *pb = data; - BonjourBuddy *bb = pb->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data(pb); bb->conversation->connect_data = NULL; if (source < 0) { - PurpleConversation *conv; + PurpleConversation *conv = NULL; + PurpleAccount *account = NULL; purple_debug_error("bonjour", "Error connecting to buddy %s at %s:%d error: %s\n", purple_buddy_get_name(pb), bb->conversation->ip, bb->port_p2pj, error ? error : "(null)"); - conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account); + account = purple_buddy_get_account(pb); + + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account); if (conv != NULL) purple_conversation_write(conv, NULL, _("Unable to send the message, the conversation couldn't be started."), @@ -752,12 +769,15 @@ if (!bonjour_jabber_send_stream_init(bb->conversation, source)) { const char *err = g_strerror(errno); - PurpleConversation *conv; + PurpleConversation *conv = NULL; + PurpleAccount *account = NULL; purple_debug_error("bonjour", "Error starting stream with buddy %s at %s:%d error: %s\n", purple_buddy_get_name(pb), bb->conversation->ip, bb->port_p2pj, err ? err : "(null)"); - conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account); + account = purple_buddy_get_account(pb); + + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account); if (conv != NULL) purple_conversation_write(conv, NULL, _("Unable to send the message, the conversation couldn't be started."), @@ -777,14 +797,14 @@ void bonjour_jabber_conv_match_by_name(BonjourJabberConversation *bconv) { - PurpleBuddy *pb; + PurpleBuddy *pb = NULL; + BonjourBuddy *bb = NULL; g_return_if_fail(bconv->ip != NULL); g_return_if_fail(bconv->pb == NULL); pb = purple_find_buddy(bconv->account, bconv->buddy_name); - if (pb && pb->proto_data) { - BonjourBuddy *bb = pb->proto_data; + if (pb && (bb = purple_buddy_get_protocol_data(pb))) { const char *ip; GSList *tmp = bb->ips; @@ -834,7 +854,7 @@ mbba = g_new0(struct _match_buddies_by_address_t, 1); mbba->address = bconv->ip; mbba->jdata = jdata; - g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba); + g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba); /* If there is exactly one match, use it */ if(mbba->matched_buddies != NULL) { @@ -842,7 +862,7 @@ purple_debug_error("bonjour", "More than one buddy matched for ip %s.\n", bconv->ip); else { PurpleBuddy *pb = mbba->matched_buddies->data; - BonjourBuddy *bb = pb->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data(pb); purple_debug_info("bonjour", "Matched buddy %s to incoming conversation using IP (%s)\n", purple_buddy_get_name(pb), bconv->ip); @@ -882,12 +902,10 @@ g_return_val_if_fail(to != NULL, NULL); pb = purple_find_buddy(jdata->account, to); - if (pb == NULL || pb->proto_data == NULL) + if (pb == NULL || (bb = purple_buddy_get_protocol_data(pb)) == NULL) /* You can not send a message to an offline buddy */ return NULL; - bb = (BonjourBuddy *) pb->proto_data; - /* Check if there is a previously open conversation */ if (bb->conversation == NULL) { @@ -934,7 +952,7 @@ int ret; pb = _find_or_start_conversation(jdata, to); - if (pb == NULL || pb->proto_data == NULL) { + if (pb == NULL || (bb = purple_buddy_get_protocol_data(pb)) == NULL) { purple_debug_info("bonjour", "Can't send a message to an offline buddy (%s).\n", to); /* You can not send a message to an offline buddy */ return -10000; @@ -942,8 +960,6 @@ purple_markup_html_to_xhtml(body, &xhtml, &message); - bb = pb->proto_data; - message_node = xmlnode_new("message"); xmlnode_set_attrib(message_node, "to", bb->name); xmlnode_set_attrib(message_node, "from", purple_account_get_username(jdata->account)); @@ -993,7 +1009,7 @@ /* Disconnect this conv. from the buddy here so it can't be disposed of twice.*/ if(bconv->pb != NULL) { - BonjourBuddy *bb = bconv->pb->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data(bconv->pb); if (bb->conversation == bconv) bb->conversation = NULL; } @@ -1022,7 +1038,7 @@ tmp_next = xfers->next; /* We only need to cancel this if it hasn't actually started transferring. */ /* This will change if we ever support IBB transfers. */ - if (strcmp(xfer->who, bconv->pb->name) == 0 + if (strcmp(xfer->who, purple_buddy_get_name(bconv->pb)) == 0 && (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_NOT_STARTED || purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_UNKNOWN)) { purple_xfer_cancel_remote(xfer); @@ -1081,7 +1097,7 @@ buddies = purple_find_buddies(jdata->account, NULL); for (l = buddies; l; l = l->next) { - BonjourBuddy *bb = ((PurpleBuddy*) l->data)->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data((PurpleBuddy*) l->data); if (bb != NULL) { bonjour_jabber_close_conversation(bb->conversation); bb->conversation = NULL; @@ -1144,15 +1160,20 @@ check_if_blocked(PurpleBuddy *pb) { gboolean blocked = FALSE; - GSList *l; + GSList *l = NULL; PurpleAccount *acc = purple_buddy_get_account(pb); if(acc == NULL) return FALSE; + acc = purple_buddy_get_account(pb); + for(l = acc->deny; l != NULL; l = l->next) { - if(!purple_utf8_strcasecmp(pb->name, (char *)l->data)) { - purple_debug_info("bonjour", "%s has been blocked by %s.\n", pb->name, acc->username); + const gchar *name = purple_buddy_get_name(pb); + const gchar *username = purple_account_get_username(acc); + + if(!purple_utf8_strcasecmp(name, (char *)l->data)) { + purple_debug_info("bonjour", "%s has been blocked by %s.\n", name, username); blocked = TRUE; break; } @@ -1164,16 +1185,19 @@ xep_iq_parse(xmlnode *packet, PurpleBuddy *pb) { xmlnode *child; + PurpleAccount *account; + PurpleConnection *gc; if(check_if_blocked(pb)) return; + account = purple_buddy_get_account(pb); + gc = purple_account_get_connection(account); + if ((child = xmlnode_get_child(packet, "si")) || (child = xmlnode_get_child(packet, "error"))) - xep_si_parse(purple_account_get_connection(pb->account), - packet, pb); + xep_si_parse(gc, packet, pb); else - xep_bytestreams_parse(purple_account_get_connection(pb->account), - packet, pb); + xep_bytestreams_parse(gc, packet, pb); } int diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/bonjour/mdns_avahi.c --- a/libpurple/protocols/bonjour/mdns_avahi.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/bonjour/mdns_avahi.c Mon Mar 02 22:07:59 2009 +0000 @@ -124,7 +124,7 @@ g_return_if_fail(r != NULL); pb = purple_find_buddy(account, name); - bb = (pb != NULL) ? pb->proto_data : NULL; + bb = (pb != NULL) ? purple_buddy_get_protocol_data(pb) : NULL; switch (event) { case AVAHI_RESOLVER_FAILURE: @@ -252,7 +252,7 @@ purple_debug_info("bonjour", "_browser_callback - Remove service\n"); pb = purple_find_buddy(account, name); if (pb != NULL) { - BonjourBuddy *bb = pb->proto_data; + BonjourBuddy *bb = purple_buddy_get_protocol_data(pb); AvahiBuddyImplData *b_impl; GSList *l; AvahiSvcResolverData *rd_search; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/gg/buddylist.c --- a/libpurple/protocols/gg/buddylist.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/gg/buddylist.c Mon Mar 02 22:07:59 2009 +0000 @@ -41,37 +41,46 @@ GGPInfo *info = gc->proto_data; PurpleAccount *account = purple_connection_get_account(gc); - PurpleBuddyList *blist; PurpleBlistNode *gnode, *cnode, *bnode; PurpleBuddy *buddy; uin_t *userlist = NULL; gchar *types = NULL; int size = 0, ret = 0; - if ((blist = purple_get_blist()) == NULL) - return; - - for (gnode = blist->root; gnode != NULL; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); + gnode != NULL; + gnode = purple_blist_node_get_sibling_next(gnode)) + { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(gnode); + cnode != NULL; + cnode = purple_blist_node_get_sibling_next(cnode)) + { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode != NULL; + bnode = purple_blist_node_get_sibling_next(bnode)) + { + const gchar *name = NULL; + if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; buddy = (PurpleBuddy *)bnode; - if (buddy->account != account) + if (purple_buddy_get_account(buddy) != account) continue; + name = purple_buddy_get_name(buddy); + size++; userlist = (uin_t *) g_renew(uin_t, userlist, size); types = (gchar *) g_renew(gchar, types, size); - userlist[size - 1] = ggp_str_to_uin(buddy->name); + userlist[size - 1] = ggp_str_to_uin(name); types[size - 1] = GG_USER_NORMAL; purple_debug_info("gg", "ggp_buddylist_send: adding %d\n", userlist[size - 1]); @@ -173,36 +182,45 @@ void ggp_buddylist_offline(PurpleConnection *gc) { PurpleAccount *account = purple_connection_get_account(gc); - PurpleBuddyList *blist; PurpleBlistNode *gnode, *cnode, *bnode; PurpleBuddy *buddy; - if ((blist = purple_get_blist()) == NULL) - return; - - for (gnode = blist->root; gnode != NULL; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); + gnode != NULL; + gnode = purple_blist_node_get_sibling_next(gnode)) + { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(gnode); + cnode != NULL; + cnode = purple_blist_node_get_sibling_next(cnode)) + { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode != NULL; + bnode = purple_blist_node_get_sibling_next(bnode)) + { + const gchar *name = NULL; + if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; buddy = (PurpleBuddy *)bnode; + + name = purple_buddy_get_name(buddy); - if (buddy->account != account) + if (purple_buddy_get_account(buddy) != account) continue; purple_prpl_got_user_status( - account, buddy->name, "offline", NULL); + account, name, "offline", NULL); purple_debug_info("gg", "ggp_buddylist_offline: gone: %s\n", - buddy->name); + name); } } } @@ -212,41 +230,46 @@ /* char *ggp_buddylist_dump(PurpleAccount *account) {{{ */ char *ggp_buddylist_dump(PurpleAccount *account) { - PurpleBuddyList *blist; PurpleBlistNode *gnode, *cnode, *bnode; PurpleGroup *group; PurpleBuddy *buddy; - GString *buddylist; + GString *buddylist = g_string_sized_new(1024); char *ptr; - if ((blist = purple_get_blist()) == NULL) - return NULL; - - buddylist = g_string_sized_new(1024); - - for (gnode = blist->root; gnode != NULL; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); + gnode != NULL; + gnode = purple_blist_node_get_sibling_next(gnode)) + { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; group = (PurpleGroup *)gnode; - for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(gnode); + cnode != NULL; + cnode = purple_blist_node_get_sibling_next(cnode)) + { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) { - gchar *name, *alias, *gname; + for (bnode = purple_blist_node_get_first_child(cnode); + bnode != NULL; + bnode = purple_blist_node_get_sibling_next(bnode)) + { + const gchar *name, *alias, *gname; if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; buddy = (PurpleBuddy *)bnode; - if (buddy->account != account) + if (purple_buddy_get_account(buddy) != account) continue; - name = buddy->name; - alias = buddy->alias ? buddy->alias : buddy->name; - gname = group->name; + name = purple_buddy_get_name(buddy); + alias = purple_buddy_get_alias(buddy); + if(alias == NULL) + alias = name; + gname = purple_group_get_name(group); g_string_append_printf(buddylist, "%s;%s;%s;%s;%s;%s;%s;%s%s\r\n", diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/gg/gg.c --- a/libpurple/protocols/gg/gg.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/gg/gg.c Mon Mar 02 22:07:59 2009 +0000 @@ -2052,11 +2052,12 @@ { PurpleAccount *account; GGPInfo *info = gc->proto_data; + const gchar *name = purple_buddy_get_name(buddy); - gg_add_notify(info->session, ggp_str_to_uin(buddy->name)); + gg_add_notify(info->session, ggp_str_to_uin(name)); account = purple_connection_get_account(gc); - if (strcmp(purple_account_get_username(account), buddy->name) == 0) { + if (strcmp(purple_account_get_username(account), name) == 0) { ggp_status_fake_to_self(account); } } @@ -2066,7 +2067,7 @@ { GGPInfo *info = gc->proto_data; - gg_remove_notify(info->session, ggp_str_to_uin(buddy->name)); + gg_remove_notify(info->session, ggp_str_to_uin(purple_buddy_get_name(buddy))); } static void ggp_join_chat(PurpleConnection *gc, GHashTable *data) diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/irc/irc.c --- a/libpurple/protocols/irc/irc.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/irc/irc.c Mon Mar 02 22:07:59 2009 +0000 @@ -564,7 +564,7 @@ { struct irc_conn *irc = (struct irc_conn *)gc->proto_data; struct irc_buddy *ib = g_new0(struct irc_buddy, 1); - ib->name = g_strdup(buddy->name); + ib->name = g_strdup(purple_buddy_get_name(buddy)); g_hash_table_insert(irc->buddies, ib->name, ib); /* if the timer isn't set, this is during signon, so we don't want to flood @@ -577,7 +577,7 @@ static void irc_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { struct irc_conn *irc = (struct irc_conn *)gc->proto_data; - g_hash_table_remove(irc->buddies, buddy->name); + g_hash_table_remove(irc->buddies, purple_buddy_get_name(buddy)); } static void read_input(struct irc_conn *irc, int len) diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/irc/msgs.c --- a/libpurple/protocols/irc/msgs.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/irc/msgs.c Mon Mar 02 22:07:59 2009 +0000 @@ -79,6 +79,7 @@ PurpleConnection *gc; PurpleStatus *status; PurpleBlistNode *gnode, *cnode, *bnode; + PurpleAccount *account; if ((gc = purple_account_get_connection(irc->account)) == NULL || PURPLE_CONNECTION_IS_CONNECTED(gc)) @@ -86,6 +87,7 @@ purple_connection_set_display_name(gc, nick); purple_connection_set_state(gc, PURPLE_CONNECTED); + account = purple_connection_get_account(gc); /* If we're away then set our away message */ status = purple_account_get_active_status(irc->account); @@ -95,20 +97,29 @@ } /* this used to be in the core, but it's not now */ - for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); + gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) + { if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for(cnode = gnode->child; cnode; cnode = cnode->next) { + for(cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) + { if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for(bnode = cnode->child; bnode; bnode = bnode->next) { + for(bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) + { PurpleBuddy *b; if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; b = (PurpleBuddy *)bnode; - if(b->account == gc->account) { + if(purple_buddy_get_account(b) == account) { struct irc_buddy *ib = g_new0(struct irc_buddy, 1); - ib->name = g_strdup(b->name); + ib->name = g_strdup(purple_buddy_get_name(b)); g_hash_table_insert(irc->buddies, ib->name, ib); } } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/Makefile.am --- a/libpurple/protocols/jabber/Makefile.am Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/Makefile.am Mon Mar 02 22:07:59 2009 +0000 @@ -17,6 +17,8 @@ disco.h \ google.c \ google.h \ + ibb.c \ + ibb.h \ iq.c \ iq.h \ jabber.c \ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/Makefile.mingw --- a/libpurple/protocols/jabber/Makefile.mingw Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/Makefile.mingw Mon Mar 02 22:07:59 2009 +0000 @@ -51,6 +51,7 @@ data.c \ disco.c \ google.c \ + ibb.c \ iq.c \ jabber.c \ jutil.c \ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/adhoccommands.c --- a/libpurple/protocols/jabber/adhoccommands.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/adhoccommands.c Mon Mar 02 22:07:59 2009 +0000 @@ -47,26 +47,26 @@ JabberID *jabberid; JabberBuddy *jb; JabberBuddyResource *jbr = NULL; - + if(strcmp(type, "result")) return; - + query = xmlnode_get_child_with_namespace(packet,"query","http://jabber.org/protocol/disco#items"); if(!query) return; node = xmlnode_get_attrib(query,"node"); if(!node || strcmp(node, "http://jabber.org/protocol/commands")) return; - + if((jabberid = jabber_id_new(from))) { if(jabberid->resource && (jb = jabber_buddy_find(js, from, TRUE))) jbr = jabber_buddy_find_resource(jb, jabberid->resource); jabber_id_free(jabberid); } - + if(!jbr) return; - + if(jbr->commands) { /* since the list we just received is complete, wipe the old one */ while(jbr->commands) { @@ -78,7 +78,7 @@ jbr->commands = g_list_delete_link(jbr->commands, jbr->commands); } } - + for(item = query->child; item; item = item->next) { JabberAdHocCommands *cmd; if(item->type != XMLNODE_TYPE_TAG) @@ -86,11 +86,11 @@ if(strcmp(item->name, "item")) continue; cmd = g_new0(JabberAdHocCommands, 1); - + cmd->jid = g_strdup(xmlnode_get_attrib(item,"jid")); cmd->node = g_strdup(xmlnode_get_attrib(item,"node")); cmd->name = g_strdup(xmlnode_get_attrib(item,"name")); - + jbr->commands = g_list_append(jbr->commands,cmd); } } @@ -103,13 +103,13 @@ JabberAdHocActionInfo *actionInfo = user_data; JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET); jabber_iq_set_callback(iq, jabber_adhoc_parse, NULL); - + xmlnode_set_attrib(iq->node, "to", actionInfo->who); command = xmlnode_new_child(iq->node,"command"); xmlnode_set_namespace(command,"http://jabber.org/protocol/commands"); xmlnode_set_attrib(command,"sessionid",actionInfo->sessionid); xmlnode_set_attrib(command,"node",actionInfo->node); - + /* cancel is handled differently on ad-hoc commands than regular forms */ if(!strcmp(xmlnode_get_namespace(result),"jabber:x:data") && !strcmp(xmlnode_get_attrib(result, "type"),"cancel")) { xmlnode_set_attrib(command,"action","cancel"); @@ -118,7 +118,7 @@ xmlnode_set_attrib(command,"action",actionhandle); xmlnode_insert_child(command,result); } - + for(action = actionInfo->actionslist; action; action = g_list_next(action)) { char *handle = action->data; g_free(handle); @@ -127,7 +127,7 @@ g_free(actionInfo->sessionid); g_free(actionInfo->who); g_free(actionInfo->node); - + jabber_iq_send(iq); } @@ -136,12 +136,12 @@ const char *status = xmlnode_get_attrib(command,"status"); xmlnode *xdata = xmlnode_get_child_with_namespace(command,"x","jabber:x:data"); const char *type = xmlnode_get_attrib(packet,"type"); - + if(type && !strcmp(type,"error")) { char *msg = jabber_parse_error(js, packet, NULL); if(!msg) msg = g_strdup(_("Unknown Error")); - + purple_notify_error(NULL, _("Ad-Hoc Command Failed"), _("Ad-Hoc Command Failed"), msg); g_free(msg); @@ -149,20 +149,20 @@ } if(!type || strcmp(type,"result")) return; - + if(!status) return; - + if(!strcmp(status,"completed")) { /* display result */ xmlnode *note = xmlnode_get_child(command,"note"); - + if(note) { char *data = xmlnode_get_data(note); purple_notify_info(NULL, xmlnode_get_attrib(packet, "from"), data, NULL); g_free(data); } - + if(xdata) jabber_x_data_request(js, xdata, (jabber_x_data_cb)do_adhoc_ignoreme, NULL); return; @@ -175,7 +175,7 @@ JabberAdHocActionInfo *actionInfo; if(!xdata) return; /* shouldn't happen */ - + actions = xmlnode_get_child(command,"actions"); if(!actions) { JabberXDataAction *defaultaction = g_new0(JabberXDataAction, 1); @@ -196,13 +196,13 @@ } } } - + actionInfo = g_new0(JabberAdHocActionInfo, 1); actionInfo->sessionid = g_strdup(xmlnode_get_attrib(command,"sessionid")); actionInfo->who = g_strdup(xmlnode_get_attrib(packet,"from")); actionInfo->node = g_strdup(xmlnode_get_attrib(command,"node")); actionInfo->actionslist = actionslist; - + jabber_x_data_request_with_actions(js,xdata,actionslist,actionindex,do_adhoc_action_cb,actionInfo); } } @@ -211,8 +211,9 @@ if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { JabberAdHocCommands *cmd = data; PurpleBuddy *buddy = (PurpleBuddy *) node; - JabberStream *js = purple_account_get_connection(buddy->account)->proto_data; - + PurpleAccount *account = purple_buddy_get_account(buddy); + JabberStream *js = purple_account_get_connection(account)->proto_data; + jabber_adhoc_execute(js, cmd); } } @@ -220,7 +221,7 @@ static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, gpointer data) { xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items"); xmlnode *item; - + if(!query) return; @@ -233,7 +234,7 @@ g_free(cmd); js->commands = g_list_delete_link(js->commands, js->commands); } - + /* re-fill list */ for(item = query->child; item; item = item->next) { JabberAdHocCommands *cmd; @@ -245,7 +246,7 @@ cmd->jid = g_strdup(xmlnode_get_attrib(item,"jid")); cmd->node = g_strdup(xmlnode_get_attrib(item,"node")); cmd->name = g_strdup(xmlnode_get_attrib(item,"name")); - + js->commands = g_list_append(js->commands,cmd); } } @@ -253,10 +254,10 @@ void jabber_adhoc_server_get_list(JabberStream *js) { JabberIq *iq = jabber_iq_new_query(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"); - + xmlnode_set_attrib(iq->node,"to",js->user->domain); xmlnode_set_attrib(query,"node","http://jabber.org/protocol/commands"); - + jabber_iq_set_callback(iq,jabber_adhoc_server_got_list_cb,NULL); jabber_iq_send(iq); } @@ -268,9 +269,9 @@ xmlnode_set_namespace(command,"http://jabber.org/protocol/commands"); xmlnode_set_attrib(command,"node",cmd->node); xmlnode_set_attrib(command,"action","execute"); - + jabber_iq_set_callback(iq,jabber_adhoc_parse,NULL); - + jabber_iq_send(iq); } @@ -279,7 +280,7 @@ if(cmd) { PurpleConnection *gc = (PurpleConnection *) action->context; JabberStream *js = gc->proto_data; - + jabber_adhoc_execute(js, cmd); } } @@ -287,7 +288,7 @@ void jabber_adhoc_init_server_commands(JabberStream *js, GList **m) { GList *cmdlst; JabberBuddy *jb; - + /* also add commands for other clients connected to the same account on another resource */ char *accountname = g_strdup_printf("%s@%s", js->user->node, js->user->domain); if((jb = jabber_buddy_find(js, accountname, TRUE))) { @@ -306,7 +307,7 @@ } } g_free(accountname); - + /* now add server commands */ for(cmdlst = js->commands; cmdlst; cmdlst = g_list_next(cmdlst)) { JabberAdHocCommands *cmd = cmdlst->data; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/auth.c --- a/libpurple/protocols/jabber/auth.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/auth.c Mon Mar 02 22:07:59 2009 +0000 @@ -384,7 +384,7 @@ } /* Remove space which separated this mech from the next */ if (strlen(js->sasl_mechs->str) > 0 && ((js->sasl_mechs->str)[0] == ' ')) { - g_string_erase(js->sasl_mechs, 0, 1); + g_string_erase(js->sasl_mechs, 0, 1); } again = TRUE; } @@ -397,7 +397,7 @@ auth = xmlnode_new("auth"); xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl"); xmlnode_set_attrib(auth, "mechanism", js->current_mech); - + xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth"); xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true"); @@ -1057,13 +1057,13 @@ } /* Remove space which separated this mech from the next */ if (strlen(js->sasl_mechs->str) > 0 && ((js->sasl_mechs->str)[0] == ' ')) { - g_string_erase(js->sasl_mechs, 0, 1); - } + g_string_erase(js->sasl_mechs, 0, 1); + } } if (strlen(js->sasl_mechs->str)) { /* If we have remaining mechs to try, do so */ sasl_dispose(&js->sasl); - + jabber_auth_start_cyrus(js); return; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/buddy.c --- a/libpurple/protocols/jabber/buddy.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/buddy.c Mon Mar 02 22:07:59 2009 +0000 @@ -170,7 +170,7 @@ g_return_if_fail(jbr != NULL); jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr); - + while(jbr->commands) { JabberAdHocCommands *cmd = jbr->commands->data; g_free(cmd->jid); @@ -179,7 +179,7 @@ g_free(cmd); jbr->commands = g_list_delete_link(jbr->commands, jbr->commands); } - + jabber_caps_free_clientinfo(jbr->caps); g_free(jbr->name); @@ -422,7 +422,7 @@ { PurpleStoredImage *img; JabberIq *iq; - JabberStream *js = gc->proto_data; + JabberStream *js = purple_connection_get_protocol_data(gc); xmlnode *vc_node; const struct tag_attr *tag_attr; @@ -495,8 +495,8 @@ { PurplePresence *gpresence; PurpleStatus *status; - - if(((JabberStream*)gc->proto_data)->pep) { + + if(((JabberStream*)purple_connection_get_protocol_data(gc))->pep) { /* XEP-0084: User Avatars */ if(img) { /* @@ -539,37 +539,37 @@ guint32 height = ntohl(png->ihdr.height); xmlnode *publish, *item, *data, *metadata, *info; char *lengthstring, *widthstring, *heightstring; - + /* compute the sha1 hash */ char *hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(img), purple_imgstore_get_size(img)); char *base64avatar; - + publish = xmlnode_new("publish"); xmlnode_set_attrib(publish,"node",AVATARNAMESPACEDATA); - + item = xmlnode_new_child(publish, "item"); xmlnode_set_attrib(item, "id", hash); - + data = xmlnode_new_child(item, "data"); xmlnode_set_namespace(data,AVATARNAMESPACEDATA); - + base64avatar = purple_base64_encode(purple_imgstore_get_data(img), purple_imgstore_get_size(img)); xmlnode_insert_data(data,base64avatar,-1); g_free(base64avatar); - + /* publish the avatar itself */ - jabber_pep_publish((JabberStream*)gc->proto_data, publish); - + jabber_pep_publish((JabberStream*)purple_connection_get_protocol_data(gc), publish); + /* next step: publish the metadata */ publish = xmlnode_new("publish"); xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA); - + item = xmlnode_new_child(publish, "item"); xmlnode_set_attrib(item, "id", hash); - + metadata = xmlnode_new_child(item, "metadata"); xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA); - + info = xmlnode_new_child(metadata, "info"); xmlnode_set_attrib(info, "id", hash); xmlnode_set_attrib(info, "type", "image/png"); @@ -582,10 +582,10 @@ heightstring = g_strdup_printf("%u", height); xmlnode_set_attrib(info, "height", heightstring); g_free(heightstring); - + /* publish the metadata */ - jabber_pep_publish((JabberStream*)gc->proto_data, publish); - + jabber_pep_publish((JabberStream*)purple_connection_get_protocol_data(gc), publish); + g_free(hash); } else { purple_debug_error("jabber", "jabber_set_buddy_icon received non-png data"); @@ -796,18 +796,18 @@ (jbr->client.version ? jbr->client.version : "")); purple_notify_user_info_add_pair(user_info, _("Client"), tmp); g_free(tmp); - + if(jbr->client.os) { purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); } - } + } if(jbir) { if(jbir->idle_seconds > 0) { char *idle = purple_str_seconds_to_string(jbir->idle_seconds); purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle); g_free(idle); } - } + } if(jbr) { char *purdy = NULL; const char *status_name = jabber_buddy_state_get_name(jbr->state); @@ -825,7 +825,7 @@ } else { purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown")); } -#if 0 +#if 0 /* #if 0 this for now; I think this would be far more useful if we limited this to a particular set of features * of particular interest (-vv jumps out as one). As it is now, I don't picture people getting all excited: "Oh sweet crap! * So-and-so supports 'jabber:x:data' AND 'Collaborative Data Objects'!" @@ -836,7 +836,7 @@ GList *iter; for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { const char *feature = iter->data; - + if(!strcmp(feature, "jabber:iq:last")) feature = _("Last Activity"); else if(!strcmp(feature, "http://jabber.org/protocol/disco#info")) @@ -945,7 +945,7 @@ if(strlen(tmp->str) > 0) purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str); - + g_string_free(tmp, TRUE); } #endif @@ -965,7 +965,7 @@ purple_notify_user_info_prepend_pair(user_info, _("Client"), tmp); g_free(tmp); - + if(jbr->client.os) { purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); } @@ -984,14 +984,14 @@ purdy = purple_strdup_withhtml(jbr->status); if(status_name && purdy && !strcmp(status_name, purdy)) status_name = NULL; - + tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), ((status_name && purdy) ? ": " : ""), (purdy ? purdy : "")); purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp); g_free(tmp); g_free(purdy); - + if(multiple_resources) { tmp = g_strdup_printf("%d", jbr->priority); purple_notify_user_info_prepend_pair(user_info, _("Priority"), tmp); @@ -1006,7 +1006,7 @@ GList *iter; for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { const char *feature = iter->data; - + if(!strcmp(feature, "jabber:iq:last")) feature = _("Last Activity"); else if(!strcmp(feature, "http://jabber.org/protocol/disco#info")) @@ -1109,13 +1109,13 @@ feature = _("Hop Check"); else if(g_str_has_suffix(feature, "+notify")) feature = NULL; - + if(feature) g_string_append_printf(tmp, "%s\n", feature); } if(strlen(tmp->str) > 0) purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str); - + g_string_free(tmp, TRUE); } #endif @@ -1183,7 +1183,7 @@ void jabber_vcard_fetch_mine(JabberStream *js) { JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET); - + xmlnode *vcard = xmlnode_new_child(iq->node, "vCard"); xmlnode_set_namespace(vcard, "vcard-temp"); jabber_iq_set_callback(iq, jabber_vcard_save_mine, NULL); @@ -1257,13 +1257,13 @@ } g_free(text2); } - } else if(text && !strcmp(child->name, "NICKNAME")) { + } else if(text && !strcmp(child->name, "NICKNAME")) { /* Prefer the Nickcname to the Full Name as the serverside alias if it's not just part of the jid. * Ignore it if it's part of the jid. */ if (strstr(bare_jid, text) == NULL) { g_free(serverside_alias); serverside_alias = g_strdup(text); - + purple_notify_user_info_add_pair(user_info, _("Nickname"), text); } } else if(text && !strcmp(child->name, "BDAY")) { @@ -1308,7 +1308,7 @@ } g_free(text2); } - + if (address_line_added) purple_notify_user_info_add_section_break(user_info); @@ -1350,8 +1350,8 @@ escaped = g_markup_escape_text(userid, -1); mailto = g_strdup_printf("%s", escaped, escaped); purple_notify_user_info_add_pair(user_info, _("Email"), mailto); - - g_free(mailto); + + g_free(mailto); g_free(escaped); g_free(userid); } @@ -1418,7 +1418,7 @@ if (b) { purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", serverside_alias); } - + g_free(serverside_alias); } @@ -1440,7 +1440,7 @@ "do_buddy_avatar_update_fromurl got error \"%s\"", error_message); return; } - + purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, (void*)url_text, len, info->id); g_free(info->from); g_free(info->id); @@ -1455,29 +1455,29 @@ size_t size; if(!items) return; - + item = xmlnode_get_child(items, "item"); if(!item) return; - + data = xmlnode_get_child_with_namespace(item,"data",AVATARNAMESPACEDATA); if(!data) return; - + checksum = xmlnode_get_attrib(item,"id"); if(!checksum) return; - + b64data = xmlnode_get_data(data); if(!b64data) return; - + img = purple_base64_decode(b64data, &size); if(!img) { g_free(b64data); return; } - + purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, img, size, checksum); g_free(b64data); } @@ -1488,7 +1488,7 @@ xmlnode *item, *metadata; if(!buddy) return; - + checksum = purple_buddy_icons_get_checksum_for_user(buddy); item = xmlnode_get_child(items,"item"); metadata = xmlnode_get_child_with_namespace(item, "metadata", AVATARNAMESPACEMETA); @@ -1508,7 +1508,7 @@ if(info->type == XMLNODE_TYPE_TAG && !strcmp(info->name,"info")) { const char *type = xmlnode_get_attrib(info,"type"); const char *id = xmlnode_get_attrib(info,"id"); - + if(checksum && id && !strcmp(id, checksum)) { /* we already have that avatar, so we don't have to do anything */ goodinfo = NULL; @@ -1524,7 +1524,7 @@ } else if(goodinfo) { const char *url = xmlnode_get_attrib(goodinfo, "url"); const char *id = xmlnode_get_attrib(goodinfo,"id"); - + /* the avatar might either be stored in a pep node, or on a HTTP/HTTPS URL */ if(!url) jabber_pep_request_item(js, from, AVATARNAMESPACEDATA, id, do_buddy_avatar_update_data); @@ -1780,7 +1780,7 @@ void jabber_buddy_get_info(PurpleConnection *gc, const char *who) { - JabberStream *js = gc->proto_data; + JabberStream *js = purple_connection_get_protocol_data(gc); JabberID *jid = jabber_id_new(who); if (!jid) @@ -1840,10 +1840,10 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - js = gc->proto_data; + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + js = purple_connection_get_protocol_data(gc); - jabber_buddy_set_invisibility(js, buddy->name, TRUE); + jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), TRUE); } static void jabber_buddy_make_visible(PurpleBlistNode *node, gpointer data) @@ -1855,10 +1855,10 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - js = gc->proto_data; + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + js = purple_connection_get_protocol_data(gc); - jabber_buddy_set_invisibility(js, buddy->name, FALSE); + jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), FALSE); } static void jabber_buddy_cancel_presence_notification(PurpleBlistNode *node, @@ -1871,11 +1871,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - js = gc->proto_data; + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + js = purple_connection_get_protocol_data(gc); /* I wonder if we should prompt the user before doing this */ - jabber_presence_subscription_set(js, buddy->name, "unsubscribed"); + jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribed"); } static void jabber_buddy_rerequest_auth(PurpleBlistNode *node, gpointer data) @@ -1887,10 +1887,10 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - js = gc->proto_data; + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + js = purple_connection_get_protocol_data(gc); - jabber_presence_subscription_set(js, buddy->name, "subscribe"); + jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "subscribe"); } @@ -1903,18 +1903,18 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - js = gc->proto_data; + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + js = purple_connection_get_protocol_data(gc); - jabber_presence_subscription_set(js, buddy->name, "unsubscribe"); + jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribe"); } static void jabber_buddy_login(PurpleBlistNode *node, gpointer data) { if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { /* simply create a directed presence of the current status */ PurpleBuddy *buddy = (PurpleBuddy *) node; - PurpleConnection *gc = purple_account_get_connection(buddy->account); - JabberStream *js = gc->proto_data; + PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + JabberStream *js = purple_connection_get_protocol_data(gc); PurpleAccount *account = purple_connection_get_account(gc); PurplePresence *gpresence = purple_account_get_presence(account); PurpleStatus *status = purple_presence_get_active_status(gpresence); @@ -1922,14 +1922,14 @@ JabberBuddyState state; char *msg; int priority; - + purple_status_to_jabber(status, &state, &msg, &priority); presence = jabber_presence_create_js(js, state, msg, priority); - + g_free(msg); - - xmlnode_set_attrib(presence, "to", buddy->name); - + + xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy)); + jabber_send(js, presence); xmlnode_free(presence); } @@ -1939,13 +1939,14 @@ if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { /* simply create a directed unavailable presence */ PurpleBuddy *buddy = (PurpleBuddy *) node; - JabberStream *js = purple_account_get_connection(buddy->account)->proto_data; + PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + JabberStream *js = purple_connection_get_protocol_data(gc); xmlnode *presence; - + presence = jabber_presence_create_js(js, JABBER_BUDDY_STATE_UNAVAILABLE, NULL, 0); - - xmlnode_set_attrib(presence, "to", buddy->name); - + + xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy)); + jabber_send(js, presence); xmlnode_free(presence); } @@ -1953,9 +1954,10 @@ static GList *jabber_buddy_menu(PurpleBuddy *buddy) { - PurpleConnection *gc = purple_account_get_connection(buddy->account); - JabberStream *js = gc->proto_data; - JabberBuddy *jb = jabber_buddy_find(js, buddy->name, TRUE); + PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + JabberStream *js = purple_connection_get_protocol_data(gc); + const char *name = purple_buddy_get_name(buddy); + JabberBuddy *jb = jabber_buddy_find(js, name, TRUE); GList *jbrs; GList *m = NULL; @@ -2001,7 +2003,7 @@ NULL, NULL); m = g_list_append(m, act); } - + /* * This if-condition implements parts of XEP-0100: Gateway Interaction * @@ -2010,7 +2012,7 @@ * that gateways on the roster can be identified by having no '@' in their jid. This is a faily safe assumption, since * people don't tend to have a server or other service there. */ - if (g_utf8_strchr(buddy->name, -1, '@') == NULL) { + if (g_utf8_strchr(name, -1, '@') == NULL) { act = purple_menu_action_new(_("Log In"), PURPLE_CALLBACK(jabber_buddy_login), NULL, NULL); @@ -2020,7 +2022,7 @@ NULL, NULL); m = g_list_append(m, act); } - + /* add all ad hoc commands to the action menu */ for(jbrs = jb->resources; jbrs; jbrs = g_list_next(jbrs)) { JabberBuddyResource *jbr = jbrs->data; @@ -2478,7 +2480,7 @@ void jabber_user_search_begin(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *) action->context; - JabberStream *js = gc->proto_data; + JabberStream *js = purple_connection_get_protocol_data(gc); purple_request_input(gc, _("Enter a User Directory"), _("Enter a User Directory"), _("Select a user directory to search"), diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/caps.c --- a/libpurple/protocols/jabber/caps.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/caps.c Mon Mar 02 22:07:59 2009 +0000 @@ -51,7 +51,7 @@ const JabberCapsKey *name = key; guint nodehash = g_str_hash(name->node); guint verhash = g_str_hash(name->ver); - + return nodehash ^ verhash; } @@ -77,7 +77,7 @@ g_free(id->type); g_free(id->name); g_free(id); - + valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities); } while(valuestruct->features) { @@ -96,7 +96,7 @@ g_free(id->type); g_free(id->name); g_free(id); - + valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities); } while(valuestruct->features) { @@ -124,7 +124,7 @@ xmlnode_free(capsdata); return; } - + for(client = capsdata->child; client; client = client->next) { if(client->type != XMLNODE_TYPE_TAG) continue; @@ -147,20 +147,20 @@ const char *category = xmlnode_get_attrib(child, "category"); const char *type = xmlnode_get_attrib(child, "type"); const char *name = xmlnode_get_attrib(child, "name"); - + JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1); id->category = g_strdup(category); id->type = g_strdup(type); id->name = g_strdup(name); - + value->identities = g_list_append(value->identities,id); } else if(!strcmp(child->name,"ext")) { const char *identifier = xmlnode_get_attrib(child, "identifier"); if(identifier) { xmlnode *extchild; - + JabberCapsValueExt *extvalue = g_new0(JabberCapsValueExt, 1); - + for(extchild = child->child; extchild; extchild = extchild->next) { if(extchild->type != XMLNODE_TYPE_TAG) continue; @@ -173,12 +173,12 @@ const char *category = xmlnode_get_attrib(extchild, "category"); const char *type = xmlnode_get_attrib(extchild, "type"); const char *name = xmlnode_get_attrib(extchild, "name"); - + JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1); id->category = g_strdup(category); id->type = g_strdup(type); id->name = g_strdup(name); - + extvalue->identities = g_list_append(extvalue->identities,id); } } @@ -226,7 +226,7 @@ xmlnode_set_attrib(client,"node",clientinfo->node); xmlnode_set_attrib(client,"ver",clientinfo->ver); - + for(iter = props->identities; iter; iter = g_list_next(iter)) { JabberCapsIdentity *id = iter->data; xmlnode *identity = xmlnode_new_child(client, "identity"); @@ -241,7 +241,7 @@ xmlnode *feature = xmlnode_new_child(client, "feature"); xmlnode_set_attrib(feature, "var", feat); } - + g_hash_table_foreach(props->ext,jabber_caps_store_ext,client); } @@ -281,20 +281,20 @@ newid->category = g_strdup(id->category); newid->type = g_strdup(id->type); newid->name = g_strdup(id->name); - + result->identities = g_list_append(result->identities,newid); } for(iter = caps->features; iter; iter = g_list_next(iter)) { const char *feat = iter->data; char *newfeat = g_strdup(feat); - + result->features = g_list_append(result->features,newfeat); } - + for(iter = ext; iter; iter = g_list_next(iter)) { const char *extname = iter->data; JabberCapsValueExt *extinfo = g_hash_table_lookup(caps->ext,extname); - + if(extinfo) { GList *iter2; for(iter2 = extinfo->identities; iter2; iter2 = g_list_next(iter2)) { @@ -303,13 +303,13 @@ newid->category = g_strdup(id->category); newid->type = g_strdup(id->type); newid->name = g_strdup(id->name); - + result->identities = g_list_append(result->identities,newid); } for(iter2 = extinfo->features; iter2; iter2 = g_list_next(iter2)) { const char *feat = iter2->data; char *newfeat = g_strdup(feat); - + result->features = g_list_append(result->features,newfeat); } } @@ -326,23 +326,23 @@ g_free(id->type); g_free(id->name); g_free(id); - + clientinfo->identities = g_list_delete_link(clientinfo->identities,clientinfo->identities); } while(clientinfo->features) { char *feat = clientinfo->features->data; g_free(feat); - + clientinfo->features = g_list_delete_link(clientinfo->features,clientinfo->features); } - + g_free(clientinfo); } typedef struct _jabber_caps_cbplususerdata { jabber_caps_get_info_cb cb; gpointer user_data; - + char *who; char *node; char *ver; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/chat.c --- a/libpurple/protocols/jabber/chat.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/chat.c Mon Mar 02 22:07:59 2009 +0000 @@ -353,7 +353,7 @@ jcm = g_hash_table_lookup(chat->members, who); if (jcm != NULL && jcm->jid) return g_strdup(jcm->jid); - + return g_strdup_printf("%s@%s/%s", chat->room, chat->server, who); } @@ -685,7 +685,7 @@ xmlnode_insert_data(status, msg, -1); } jabber_send(chat->js, presence); - + xmlnode_free(presence); g_free(room_jid); } @@ -811,7 +811,7 @@ FALSE, FALSE, NULL, _("Find Rooms"), PURPLE_CALLBACK(roomlist_ok_cb), _("Cancel"), PURPLE_CALLBACK(roomlist_cancel_cb), - purple_connection_get_account(gc), NULL, NULL, + purple_connection_get_account(gc), NULL, NULL, js); return js->roomlist; @@ -1033,7 +1033,7 @@ iq = jabber_iq_new_query(chat->js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#info"); - xmlnode_set_attrib(iq->node, "to", room_jid); + xmlnode_set_attrib(iq->node, "to", room_jid); query = xmlnode_get_child(iq->node, "query"); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/data.c --- a/libpurple/protocols/jabber/data.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/data.c Mon Mar 02 22:07:59 2009 +0000 @@ -3,17 +3,17 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ - + #include #include #include @@ -71,7 +71,7 @@ data->cid = g_strdup(xmlnode_get_attrib(tag, "cid")); data->type = g_strdup(xmlnode_get_attrib(tag, "type")); - + raw_data = xmlnode_get_data(tag); data->data = purple_base64_decode(raw_data, &size); data->size = size; @@ -176,7 +176,7 @@ jabber_data_find_remote_by_cid(const gchar *cid) { purple_debug_info("jabber", "lookup remote smiley with cid = %s\n", cid); - + return g_hash_table_lookup(remote_data_by_cid, cid); } @@ -186,7 +186,7 @@ purple_debug_info("jabber", "associating local smiley\n alt = %s, cid = %s\n", alt, jabber_data_get_cid(data)); g_hash_table_insert(local_data_by_alt, g_strdup(alt), data); - g_hash_table_insert(local_data_by_cid, g_strdup(jabber_data_get_cid(data)), + g_hash_table_insert(local_data_by_cid, g_strdup(jabber_data_get_cid(data)), data); } @@ -195,7 +195,7 @@ { purple_debug_info("jabber", "associating remote smiley, cid = %s\n", jabber_data_get_cid(data)); - g_hash_table_insert(remote_data_by_cid, g_strdup(jabber_data_get_cid(data)), + g_hash_table_insert(remote_data_by_cid, g_strdup(jabber_data_get_cid(data)), data); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/data.h --- a/libpurple/protocols/jabber/data.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/data.h Mon Mar 02 22:07:59 2009 +0000 @@ -3,17 +3,17 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA */ - + #ifndef JABBER_DATA_H #define JABBER_DATA_H diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/disco.c --- a/libpurple/protocols/jabber/disco.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/disco.c Mon Mar 02 22:07:59 2009 +0000 @@ -132,9 +132,7 @@ SUPPORT_FEATURE("http://jabber.org/protocol/bytestreams") SUPPORT_FEATURE("http://jabber.org/protocol/disco#info") SUPPORT_FEATURE("http://jabber.org/protocol/disco#items") -#if 0 - SUPPORT_FEATURE("http://jabber.org/protocol/ibb") -#endif + SUPPORT_FEATURE("http://jabber.org/protocol/ibb"); SUPPORT_FEATURE("http://jabber.org/protocol/muc") SUPPORT_FEATURE("http://jabber.org/protocol/muc#user") SUPPORT_FEATURE("http://jabber.org/protocol/si") @@ -142,7 +140,7 @@ SUPPORT_FEATURE("http://jabber.org/protocol/xhtml-im") SUPPORT_FEATURE("urn:xmpp:ping") SUPPORT_FEATURE("http://www.xmpp.org/extensions/xep-0199.html#ns") - + if(!node) { /* non-caps disco#info, add all enabled extensions */ GList *features; for(features = jabber_features; features; features = features->next) { @@ -168,7 +166,7 @@ } else if(node[pos] != CAPS0115_NODE[pos]) break; } - + if(ext != NULL) { /* look for that ext */ GList *features; @@ -183,14 +181,14 @@ ext = NULL; } } - + if(ext == NULL) { xmlnode *error, *inf; - + /* XXX: gross hack, implement jabber_iq_set_type or something */ xmlnode_set_attrib(iq->node, "type", "error"); iq->type = JABBER_IQ_ERROR; - + error = xmlnode_new_child(query, "error"); xmlnode_set_attrib(error, "code", "404"); xmlnode_set_attrib(error, "type", "cancel"); @@ -273,6 +271,10 @@ else if(!strcmp(var, "http://jabber.org/protocol/commands")) { capabilities |= JABBER_CAP_ADHOC; } + else if(!strcmp(var, "http://jabber.org/protocol/ibb")) { + purple_debug_info("jabber", "remote supports IBB\n"); + capabilities |= JABBER_CAP_IBB; + } } } @@ -316,7 +318,7 @@ if(type && !strcmp(type, "get")) { JabberIq *iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, "http://jabber.org/protocol/disco#items"); - + /* preserve node */ xmlnode *iq_query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items"); if(iq_query) { diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/google.c --- a/libpurple/protocols/jabber/google.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Mon Mar 02 22:07:59 2009 +0000 @@ -283,6 +283,7 @@ xmlnode *group; PurpleBuddy *b; JabberBuddy *jb; + const char *balias; js = (JabberStream*)(gc->proto_data); @@ -309,13 +310,14 @@ g = purple_buddy_get_group(b); group = xmlnode_new_child(item, "group"); - xmlnode_insert_data(group, g->name, -1); + xmlnode_insert_data(group, purple_group_get_name(g), -1); buddies = buddies->next; } + balias = purple_buddy_get_local_buddy_alias(b); xmlnode_set_attrib(item, "jid", who); - xmlnode_set_attrib(item, "name", b->alias ? b->alias : ""); + xmlnode_set_attrib(item, "name", balias ? balias : ""); xmlnode_set_attrib(item, "gr:t", "B"); xmlnode_set_attrib(query, "xmlns:gr", "google:roster"); xmlnode_set_attrib(query, "gr:ext", "2"); @@ -348,6 +350,7 @@ xmlnode *item; xmlnode *group; PurpleBuddy *b; + const char *balias; g_return_if_fail(gc != NULL); g_return_if_fail(who != NULL); @@ -357,7 +360,7 @@ if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER) return; - buddies = purple_find_buddies(js->gc->account, who); + buddies = purple_find_buddies(purple_connection_get_account(js->gc), who); if(!buddies) return; @@ -375,13 +378,14 @@ g = purple_buddy_get_group(b); group = xmlnode_new_child(item, "group"); - xmlnode_insert_data(group, g->name, -1); + xmlnode_insert_data(group, purple_group_get_name(g), -1); buddies = buddies->next; } + balias = purple_buddy_get_local_buddy_alias(b); xmlnode_set_attrib(item, "jid", who); - xmlnode_set_attrib(item, "name", b->alias ? b->alias : ""); + xmlnode_set_attrib(item, "name", balias ? balias : ""); xmlnode_set_attrib(query, "xmlns:gr", "google:roster"); xmlnode_set_attrib(query, "gr:ext", "2"); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/ibb.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/jabber/ibb.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,521 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA + */ + +#include "internal.h" +#include "ibb.h" +#include "debug.h" +#include "xmlnode.h" + +#define JABBER_IBB_SESSION_DEFAULT_BLOCK_SIZE 4096 + +static GHashTable *jabber_ibb_sessions = NULL; +static GList *open_handlers = NULL; + +JabberIBBSession * +jabber_ibb_session_create(JabberStream *js, const gchar *sid, const gchar *who, + gpointer user_data) +{ + JabberIBBSession *sess = g_new0(JabberIBBSession, 1); + sess->js = js; + if (sid) { + sess->sid = g_strdup(sid); + } else { + sess->sid = jabber_get_next_id(js); + } + sess->who = g_strdup(who); + sess->block_size = JABBER_IBB_SESSION_DEFAULT_BLOCK_SIZE; + sess->state = JABBER_IBB_SESSION_NOT_OPENED; + sess->user_data = user_data; + + g_hash_table_insert(jabber_ibb_sessions, sess->sid, sess); + + return sess; +} + +JabberIBBSession * +jabber_ibb_session_create_from_xmlnode(JabberStream *js, xmlnode *packet, + gpointer user_data) +{ + JabberIBBSession *sess = NULL; + xmlnode *open = xmlnode_get_child_with_namespace(packet, "open", + XEP_0047_NAMESPACE); + const gchar *sid = xmlnode_get_attrib(open, "sid"); + const gchar *block_size = xmlnode_get_attrib(open, "block-size"); + + if (!open) { + return NULL; + } + + if (!sid || !block_size) { + purple_debug_error("jabber", + "IBB session open tag requires sid and block-size attributes\n"); + g_free(sess); + return NULL; + } + + sess = jabber_ibb_session_create(js, sid, + xmlnode_get_attrib(packet, "from"), user_data); + sess->id = g_strdup(xmlnode_get_attrib(packet, "id")); + sess->block_size = atoi(block_size); + /* if we create a session from an incoming request, it means the + session is immediatly open... */ + sess->state = JABBER_IBB_SESSION_OPENED; + + return sess; +} + +void +jabber_ibb_session_destroy(JabberIBBSession *sess) +{ + purple_debug_info("jabber", "IBB: destroying session %p %s\n", sess, + sess->sid); + + if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) { + jabber_ibb_session_close(sess); + } + + if (sess->last_iq_id) { + purple_debug_info("jabber", "IBB: removing callback for %s\n", + sess->last_iq_id); + jabber_iq_remove_callback_by_id(jabber_ibb_session_get_js(sess), + sess->last_iq_id); + g_free(sess->last_iq_id); + sess->last_iq_id = NULL; + } + + g_hash_table_remove(jabber_ibb_sessions, sess->sid); + g_free(sess->id); + g_free(sess->sid); + g_free(sess->who); + g_free(sess); +} + +const gchar * +jabber_ibb_session_get_sid(const JabberIBBSession *sess) +{ + return sess->sid; +} + +JabberStream * +jabber_ibb_session_get_js(JabberIBBSession *sess) +{ + return sess->js; +} + +const gchar * +jabber_ibb_session_get_who(const JabberIBBSession *sess) +{ + return sess->who; +} + +guint16 +jabber_ibb_session_get_send_seq(const JabberIBBSession *sess) +{ + return sess->send_seq; +} + +guint16 +jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess) +{ + return sess->recv_seq; +} + +JabberIBBSessionState +jabber_ibb_session_get_state(const JabberIBBSession *sess) +{ + return sess->state; +} + +gsize +jabber_ibb_session_get_block_size(const JabberIBBSession *sess) +{ + return sess->block_size; +} + +void +jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size) +{ + if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_NOT_OPENED) { + sess->block_size = size; + } else { + purple_debug_error("jabber", + "Can't set block size on an open IBB session\n"); + } +} + +gpointer +jabber_ibb_session_get_user_data(JabberIBBSession *sess) +{ + return sess->user_data; +} + +void +jabber_ibb_session_set_opened_callback(JabberIBBSession *sess, + JabberIBBOpenedCallback *cb) +{ + sess->opened_cb = cb; +} + +void +jabber_ibb_session_set_data_sent_callback(JabberIBBSession *sess, + JabberIBBSentCallback *cb) +{ + sess->data_sent_cb = cb; +} + +void +jabber_ibb_session_set_closed_callback(JabberIBBSession *sess, + JabberIBBClosedCallback *cb) +{ + sess->closed_cb = cb; +} + +void +jabber_ibb_session_set_data_received_callback(JabberIBBSession *sess, + JabberIBBDataCallback *cb) +{ + sess->data_received_cb = cb; +} + +void +jabber_ibb_session_set_error_callback(JabberIBBSession *sess, + JabberIBBErrorCallback *cb) +{ + sess->error_cb = cb; +} + +static void +jabber_ibb_session_opened_cb(JabberStream *js, xmlnode *packet, gpointer data) +{ + JabberIBBSession *sess = (JabberIBBSession *) data; + + if (strcmp(xmlnode_get_attrib(packet, "type"), "error") == 0) { + sess->state = JABBER_IBB_SESSION_ERROR; + } else { + sess->state = JABBER_IBB_SESSION_OPENED; + } + + if (sess->opened_cb) { + sess->opened_cb(sess); + } +} + +void +jabber_ibb_session_open(JabberIBBSession *sess) +{ + if (jabber_ibb_session_get_state(sess) != JABBER_IBB_SESSION_NOT_OPENED) { + purple_debug_error("jabber", + "jabber_ibb_session called on an already open stream\n"); + } else { + JabberIq *set = jabber_iq_new(sess->js, JABBER_IQ_SET); + xmlnode *open = xmlnode_new("open"); + gchar block_size[10]; + + xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess)); + xmlnode_set_namespace(open, XEP_0047_NAMESPACE); + xmlnode_set_attrib(open, "sid", jabber_ibb_session_get_sid(sess)); + g_snprintf(block_size, sizeof(block_size), "%" G_GSIZE_FORMAT, + jabber_ibb_session_get_block_size(sess)); + xmlnode_set_attrib(open, "block-size", block_size); + xmlnode_insert_child(set->node, open); + + jabber_iq_set_callback(set, jabber_ibb_session_opened_cb, sess); + + jabber_iq_send(set); + } +} + +void +jabber_ibb_session_close(JabberIBBSession *sess) +{ + JabberIBBSessionState state = jabber_ibb_session_get_state(sess); + + if (state != JABBER_IBB_SESSION_OPENED && state != JABBER_IBB_SESSION_ERROR) { + purple_debug_error("jabber", + "jabber_ibb_session_close called on a session that has not been" + "opened\n"); + } else { + JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess), + JABBER_IQ_SET); + xmlnode *close = xmlnode_new("close"); + + xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess)); + xmlnode_set_namespace(close, XEP_0047_NAMESPACE); + xmlnode_set_attrib(close, "sid", jabber_ibb_session_get_sid(sess)); + xmlnode_insert_child(set->node, close); + jabber_iq_send(set); + sess->state = JABBER_IBB_SESSION_CLOSED; + } +} + +void +jabber_ibb_session_accept(JabberIBBSession *sess) +{ + JabberIq *result = jabber_iq_new(jabber_ibb_session_get_js(sess), + JABBER_IQ_RESULT); + + xmlnode_set_attrib(result->node, "to", jabber_ibb_session_get_who(sess)); + jabber_iq_set_id(result, sess->id); + jabber_iq_send(result); + sess->state = JABBER_IBB_SESSION_OPENED; +} + +static void +jabber_ibb_session_send_acknowledge_cb(JabberStream *js, xmlnode *packet, gpointer data) +{ + JabberIBBSession *sess = (JabberIBBSession *) data; + xmlnode *error = xmlnode_get_child(packet, "error"); + + if (sess) { + /* reset callback */ + if (sess->last_iq_id) { + g_free(sess->last_iq_id); + sess->last_iq_id = NULL; + } + + if (error) { + jabber_ibb_session_close(sess); + sess->state = JABBER_IBB_SESSION_ERROR; + + if (sess->error_cb) { + sess->error_cb(sess); + } + } else { + if (sess->data_sent_cb) { + sess->data_sent_cb(sess); + } + } + } else { + /* the session has gone away, it was probably cancelled */ + purple_debug_info("jabber", + "got response from send data, but IBB session is no longer active\n"); + } +} + +void +jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data, + gsize size) +{ + JabberIBBSessionState state = jabber_ibb_session_get_state(sess); + + purple_debug_info("jabber", "sending data block of %" G_GSIZE_FORMAT " bytes on IBB stream\n", + size); + + if (state != JABBER_IBB_SESSION_OPENED) { + purple_debug_error("jabber", + "trying to send data on a non-open IBB session\n"); + } else if (size > jabber_ibb_session_get_block_size(sess)) { + purple_debug_error("jabber", + "trying to send a too large packet in the IBB session\n"); + } else { + JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess), + JABBER_IQ_SET); + xmlnode *data_element = xmlnode_new("data"); + char *base64 = purple_base64_encode(data, size); + char seq[10]; + g_snprintf(seq, sizeof(seq), "%u", jabber_ibb_session_get_send_seq(sess)); + + xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess)); + xmlnode_set_namespace(data_element, XEP_0047_NAMESPACE); + xmlnode_set_attrib(data_element, "sid", jabber_ibb_session_get_sid(sess)); + xmlnode_set_attrib(data_element, "seq", seq); + xmlnode_insert_data(data_element, base64, -1); + + xmlnode_insert_child(set->node, data_element); + + purple_debug_info("jabber", + "IBB: setting send callback for session %p %s\n", sess, + sess->sid); + jabber_iq_set_callback(set, jabber_ibb_session_send_acknowledge_cb, sess); + sess->last_iq_id = g_strdup(xmlnode_get_attrib(set->node, "id")); + purple_debug_info("jabber", "IBB: set sess->last_iq_id: %s\n", + sess->last_iq_id); + jabber_iq_send(set); + + g_free(base64); + (sess->send_seq)++; + } +} + +static void +jabber_ibb_send_error_response(JabberStream *js, xmlnode *packet) +{ + JabberIq *result = jabber_iq_new(js, JABBER_IQ_ERROR); + xmlnode *error = xmlnode_new("error"); + xmlnode *item_not_found = xmlnode_new("item-not-found"); + + xmlnode_set_namespace(item_not_found, + "urn:ietf:params:xml:ns:xmpp-stanzas"); + xmlnode_set_attrib(error, "code", "440"); + xmlnode_set_attrib(error, "type", "cancel"); + jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id")); + xmlnode_set_attrib(result->node, "to", + xmlnode_get_attrib(packet, "from")); + xmlnode_insert_child(error, item_not_found); + xmlnode_insert_child(result->node, error); + + jabber_iq_send(result); +} + +void +jabber_ibb_parse(JabberStream *js, xmlnode *packet) +{ + xmlnode *data = xmlnode_get_child_with_namespace(packet, "data", + XEP_0047_NAMESPACE); + xmlnode *close = xmlnode_get_child_with_namespace(packet, "close", + XEP_0047_NAMESPACE); + xmlnode *open = xmlnode_get_child_with_namespace(packet, "open", + XEP_0047_NAMESPACE); + const gchar *sid = + data ? xmlnode_get_attrib(data, "sid") : + close ? xmlnode_get_attrib(close, "sid") : NULL; + JabberIBBSession *sess = + sid ? g_hash_table_lookup(jabber_ibb_sessions, sid) : NULL; + const gchar *who = xmlnode_get_attrib(packet, "from"); + + if (sess) { + + if (strcmp(who, jabber_ibb_session_get_who(sess)) != 0) { + /* the iq comes from a different JID than the remote JID of the + session, ignore it */ + purple_debug_error("jabber", + "Got IBB iq from wrong JID, ignoring\n"); + } else if (data) { + const gchar *seq_attr = xmlnode_get_attrib(data, "seq"); + guint16 seq = (seq_attr ? atoi(seq_attr) : 0); + + /* reject the data, and set the session in error if we get an + out-of-order packet */ + if (seq_attr && seq == jabber_ibb_session_get_recv_seq(sess)) { + /* sequence # is the expected... */ + JabberIq *result = jabber_iq_new(js, JABBER_IQ_RESULT); + + jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id")); + xmlnode_set_attrib(result->node, "to", + xmlnode_get_attrib(packet, "from")); + + if (sess->data_received_cb) { + gchar *base64 = xmlnode_get_data(data); + gsize size; + gpointer rawdata = purple_base64_decode(base64, &size); + + g_free(base64); + + if (rawdata) { + purple_debug_info("jabber", + "got %" G_GSIZE_FORMAT " bytes of data on IBB stream\n", + size); + if (size > jabber_ibb_session_get_block_size(sess)) { + purple_debug_error("jabber", + "IBB: received a too large packet\n"); + if (sess->error_cb) + sess->error_cb(sess); + g_free(rawdata); + return; + } else { + purple_debug_info("jabber", + "calling IBB callback for received data\n"); + sess->data_received_cb(sess, rawdata, size); + } + g_free(rawdata); + } else { + purple_debug_error("jabber", + "IBB: invalid BASE64 data received\n"); + if (sess->error_cb) + sess->error_cb(sess); + return; + + } + } + + (sess->recv_seq)++; + jabber_iq_send(result); + + } else { + purple_debug_error("jabber", + "Received an out-of-order/invalid IBB packet\n"); + sess->state = JABBER_IBB_SESSION_ERROR; + + if (sess->error_cb) { + sess->error_cb(sess); + } + } + } else if (close) { + sess->state = JABBER_IBB_SESSION_CLOSED; + purple_debug_info("jabber", "IBB: received close\n"); + + if (sess->closed_cb) { + purple_debug_info("jabber", "IBB: calling closed handler\n"); + sess->closed_cb(sess); + } + + } else { + /* this should never happen */ + purple_debug_error("jabber", "Received bogus iq for IBB session\n"); + } + } else if (open) { + JabberIq *result; + const GList *iterator; + + /* run all open handlers registered until one returns true */ + for (iterator = open_handlers ; iterator ; + iterator = g_list_next(iterator)) { + JabberIBBOpenHandler *handler = iterator->data; + + if (handler(js, packet)) { + result = jabber_iq_new(js, JABBER_IQ_RESULT); + xmlnode_set_attrib(result->node, "to", + xmlnode_get_attrib(packet, "from")); + jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id")); + jabber_iq_send(result); + return; + } + } + /* no open callback returned success, reject */ + jabber_ibb_send_error_response(js, packet); + } else { + /* send error reply */ + jabber_ibb_send_error_response(js, packet); + } +} + +void +jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb) +{ + open_handlers = g_list_append(open_handlers, cb); +} + +void +jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb) +{ + open_handlers = g_list_remove(open_handlers, cb); +} + +void +jabber_ibb_init(void) +{ + jabber_ibb_sessions = g_hash_table_new(g_str_hash, g_str_equal); +} + +void +jabber_ibb_uninit(void) +{ + g_hash_table_destroy(jabber_ibb_sessions); + g_list_free(open_handlers); + jabber_ibb_sessions = NULL; + open_handlers = NULL; +} + diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/ibb.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/jabber/ibb.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,119 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA + */ + +#ifndef _PURPLE_JABBER_IBB_H_ +#define _PURPLE_JABBER_IBB_H_ + +#include "jabber.h" +#include "iq.h" + +#define XEP_0047_NAMESPACE "http://jabber.org/protocol/ibb" + +typedef struct _JabberIBBSession JabberIBBSession; + +typedef void +(JabberIBBDataCallback)(JabberIBBSession *, const gpointer data, gsize size); + +typedef void (JabberIBBOpenedCallback)(JabberIBBSession *); +typedef void (JabberIBBClosedCallback)(JabberIBBSession *); +typedef void (JabberIBBErrorCallback)(JabberIBBSession *); +typedef void (JabberIBBSentCallback)(JabberIBBSession *); + +typedef gboolean (JabberIBBOpenHandler)(JabberStream *js, xmlnode *packet); + +typedef enum { + JABBER_IBB_SESSION_NOT_OPENED, + JABBER_IBB_SESSION_OPENED, + JABBER_IBB_SESSION_CLOSED, + JABBER_IBB_SESSION_ERROR +} JabberIBBSessionState; + +struct _JabberIBBSession { + JabberStream *js; + gchar *who; + gchar *sid; + gchar *id; + guint16 send_seq; + guint16 recv_seq; + gsize block_size; + + /* session state */ + JabberIBBSessionState state; + + /* user data (f.ex. a handle to a PurpleXfer) */ + gpointer user_data; + + /* callbacks */ + JabberIBBOpenedCallback *opened_cb; + JabberIBBSentCallback *data_sent_cb; + JabberIBBClosedCallback *closed_cb; + /* callback for receiving data */ + JabberIBBDataCallback *data_received_cb; + JabberIBBErrorCallback *error_cb; + + /* store the last sent IQ (to permit cancel of callback) */ + gchar *last_iq_id; +}; + +JabberIBBSession *jabber_ibb_session_create(JabberStream *js, const gchar *sid, + const gchar *who, gpointer user_data); +JabberIBBSession *jabber_ibb_session_create_from_xmlnode(JabberStream *js, + xmlnode *packet, gpointer user_data); + +void jabber_ibb_session_destroy(JabberIBBSession *sess); + +void jabber_ibb_session_set_opened_callback(JabberIBBSession *sess, + JabberIBBOpenedCallback *cb); +void jabber_ibb_session_set_data_sent_callback(JabberIBBSession *sess, + JabberIBBSentCallback *cb); +void jabber_ibb_session_set_closed_callback(JabberIBBSession *sess, + JabberIBBClosedCallback *cb); +void jabber_ibb_session_set_data_received_callback(JabberIBBSession *sess, + JabberIBBDataCallback *cb); +void jabber_ibb_session_set_error_callback(JabberIBBSession *sess, + JabberIBBErrorCallback *cb); + +void jabber_ibb_session_open(JabberIBBSession *sess); +void jabber_ibb_session_close(JabberIBBSession *sess); +void jabber_ibb_session_accept(JabberIBBSession *sess); +void jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data, + gsize size); + +const gchar *jabber_ibb_session_get_sid(const JabberIBBSession *sess); +JabberStream *jabber_ibb_session_get_js(JabberIBBSession *sess); +const gchar *jabber_ibb_session_get_who(const JabberIBBSession *sess); + +guint16 jabber_ibb_session_get_send_seq(const JabberIBBSession *sess); +guint16 jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess); + +JabberIBBSessionState jabber_ibb_session_get_state(const JabberIBBSession *sess); + +gsize jabber_ibb_session_get_block_size(const JabberIBBSession *sess); +void jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size); + +gpointer jabber_ibb_session_get_user_data(JabberIBBSession *sess); + +/* handle incoming packet */ +void jabber_ibb_parse(JabberStream *js, xmlnode *packet); + +/* add a handler for open session */ +void jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb); +void jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb); + +void jabber_ibb_init(void); +void jabber_ibb_uninit(void); + +#endif /* _PURPLE_JABBER_IBB_H_ */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/iq.c --- a/libpurple/protocols/jabber/iq.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/iq.c Mon Mar 02 22:07:59 2009 +0000 @@ -34,6 +34,7 @@ #include "ping.h" #include "adhoccommands.h" #include "data.h" +#include "ibb.h" #ifdef _WIN32 #include "utsname.h" @@ -393,6 +394,13 @@ return; } + if (xmlnode_get_child_with_namespace(packet, "data", XEP_0047_NAMESPACE) + || xmlnode_get_child_with_namespace(packet, "close", XEP_0047_NAMESPACE) + || xmlnode_get_child_with_namespace(packet, "open", XEP_0047_NAMESPACE)) { + jabber_ibb_parse(js, packet); + return; + } + /* If we get here, send the default error reply mandated by XMPP-CORE */ if(!strcmp(type, "set") || !strcmp(type, "get")) { JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/jabber.h --- a/libpurple/protocols/jabber/jabber.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.h Mon Mar 02 22:07:59 2009 +0000 @@ -203,7 +203,7 @@ gboolean unregistration; PurpleAccountUnregistrationCb unregistration_cb; void *unregistration_user_data; - + gboolean vcard_fetched; /* does the local server support PEP? */ @@ -211,16 +211,16 @@ /* Is Buzz enabled? */ gboolean allowBuzz; - + /* A list of JabberAdHocCommands supported by the server */ GList *commands; - + /* last presence update to check for differences */ JabberBuddyState old_state; char *old_msg; int old_priority; char *old_avatarhash; - + /* same for user tune */ char *old_artist; char *old_title; @@ -228,9 +228,9 @@ char *old_uri; int old_length; char *old_track; - + char *certificate_CN; - + /* A purple timeout tag for the keepalive */ int keepalive_timeout; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/libxmpp.c --- a/libpurple/protocols/jabber/libxmpp.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/libxmpp.c Mon Mar 02 22:07:59 2009 +0000 @@ -44,6 +44,7 @@ #include "usertune.h" #include "caps.h" #include "data.h" +#include "ibb.h" static PurplePluginProtocolInfo prpl_info = { @@ -137,7 +138,7 @@ purple_marshal_VOID__POINTER_POINTER, NULL, 2, purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), purple_value_new_outgoing(PURPLE_TYPE_STRING)); - + return TRUE; } @@ -146,11 +147,13 @@ purple_signal_unregister(plugin, "jabber-receiving-xmlnode"); purple_signal_unregister(plugin, "jabber-sending-xmlnode"); - + purple_signal_unregister(plugin, "jabber-sending-text"); - + jabber_data_uninit(); - + jabber_si_uninit(); + jabber_ibb_uninit(); + return TRUE; } @@ -203,30 +206,30 @@ #endif PurpleAccountUserSplit *split; PurpleAccountOption *option; - + /* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */ split = purple_account_user_split_new(_("Domain"), NULL, '@'); purple_account_user_split_set_reverse(split, FALSE); prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); - + split = purple_account_user_split_new(_("Resource"), NULL, '/'); purple_account_user_split_set_reverse(split, FALSE); prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); - + option = purple_account_option_bool_new(_("Require SSL/TLS"), "require_tls", FALSE); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); - + option = purple_account_option_bool_new(_("Force old (port 5223) SSL"), "old_ssl", FALSE); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); - + option = purple_account_option_bool_new( _("Allow plaintext auth over unencrypted streams"), "auth_plain_in_clear", FALSE); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); - + option = purple_account_option_int_new(_("Connect port"), "port", 5222); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); @@ -272,21 +275,26 @@ #endif #endif jabber_register_commands(); - + jabber_iq_init(); jabber_pep_init(); - + jabber_tune_init(); jabber_caps_init(); - + jabber_data_init(); - + + + jabber_ibb_init(); + jabber_si_init(); + jabber_add_feature("avatarmeta", AVATARNAMESPACEMETA, jabber_pep_namespace_only_when_pep_enabled_cb); jabber_add_feature("avatardata", AVATARNAMESPACEDATA, jabber_pep_namespace_only_when_pep_enabled_cb); jabber_add_feature("buzz", XEP_0224_NAMESPACE, jabber_buzz_isenabled); jabber_add_feature("bob", XEP_0231_NAMESPACE, jabber_custom_smileys_isenabled); + jabber_add_feature("ibb", XEP_0047_NAMESPACE, NULL); jabber_pep_register_handler("avatar", AVATARNAMESPACEMETA, jabber_buddy_avatar_update_metadata); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/message.c --- a/libpurple/protocols/jabber/message.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/message.c Mon Mar 02 22:07:59 2009 +0000 @@ -118,7 +118,7 @@ } } serv_got_typing_stopped(jm->js->gc, from); - + } else { serv_got_typing_stopped(jm->js->gc, from); } @@ -138,7 +138,7 @@ g_free(jbr->thread_id); jbr->thread_id = g_strdup(jbr->thread_id); } - + if (jm->js->googletalk && jm->xhtml == NULL) { char *tmp = jm->body; jm->body = jabber_google_format_to_html(jm->body); @@ -289,8 +289,6 @@ static void handle_buzz(JabberMessage *jm) { PurpleBuddy *buddy; PurpleAccount *account; - PurpleConversation *c; - char *username; /* Delayed buzz MUST NOT be accepted */ if(jm->delayed) @@ -305,15 +303,8 @@ if ((buddy = purple_find_buddy(account, jm->from)) == NULL) return; /* Do not accept buzzes from unknown people */ - c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, jm->from, account); - if (c == NULL) - c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, jm->from); - - username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1); /* xmpp only has 1 attention type, so index is 0 */ - purple_prpl_got_attention(jm->js->gc, username, 0); - - g_free(username); + purple_prpl_got_attention(jm->js->gc, jm->from, 0); } /* used internally by the functions below */ @@ -328,14 +319,14 @@ GHashTable *table) { xmlnode *child; - + for (child = xmlnode_get_child(message, "img") ; child ; child = xmlnode_get_next_twin(child)) { const gchar *src = xmlnode_get_attrib(child, "src"); - + if (g_str_has_prefix(src, "cid:")) { const gchar *cid = src + 4; - + /* if we haven't "fetched" this yet... */ if (!g_hash_table_lookup(table, cid)) { /* take a copy of the cid and let the SmileyRef own it... */ @@ -343,14 +334,14 @@ JabberSmileyRef *ref = g_new0(JabberSmileyRef, 1); const gchar *alt = xmlnode_get_attrib(child, "alt"); ref->cid = temp_cid; - /* if there is no "alt" string, use the cid... + /* if there is no "alt" string, use the cid... include the entire src, eg. "cid:.." to avoid linkification */ if (alt && alt[0] != '\0') { /* workaround for when "alt" is set to the value of the CID (which Jabbim seems to do), to avoid it showing up as an mailto: link */ if (purple_email_is_valid(alt)) { - ref->alt = g_strdup_printf("smiley:%s", alt); + ref->alt = g_strdup_printf("smiley:%s", alt); } else { ref->alt = g_strdup(alt); } @@ -361,7 +352,7 @@ } } } - + for (child = message->child ; child ; child = child->next) { jabber_message_get_refs_from_xmlnode_internal(child, table); } @@ -372,9 +363,9 @@ { GList **refs = (GList **) user_data; JabberSmileyRef *ref = (JabberSmileyRef *) value; - + *refs = g_list_append(*refs, ref); - + return TRUE; } @@ -383,9 +374,9 @@ { GList *refs = NULL; GHashTable *unique_refs = g_hash_table_new(g_str_hash, g_str_equal); - + jabber_message_get_refs_from_xmlnode_internal(message, unique_refs); - (void) g_hash_table_foreach_steal(unique_refs, + (void) g_hash_table_foreach_steal(unique_refs, jabber_message_get_refs_steal, (gpointer) &refs); g_hash_table_destroy(unique_refs); return refs; @@ -518,7 +509,7 @@ static void jabber_message_send_data_request(JabberStream *js, PurpleConversation *conv, - const gchar *cid, const gchar *who, + const gchar *cid, const gchar *who, const gchar *alt) { JabberIq *request = jabber_iq_new(js, JABBER_IQ_GET); @@ -580,7 +571,7 @@ char *text = xmlnode_get_data(child); if (!text) { xmlnode *enclosed_text_node; - + if ((enclosed_text_node = xmlnode_get_child(child, "text"))) text = xmlnode_get_data(enclosed_text_node); } @@ -632,7 +623,7 @@ smiley_refs = jabber_message_get_refs_from_xmlnode(child); purple_debug_info("jabber", "found %d smileys\n", g_list_length(smiley_refs)); - + if (jm->type == JABBER_MESSAGE_GROUPCHAT) { JabberID *jid = jabber_id_new(jm->from); JabberChat *chat = NULL; @@ -676,7 +667,7 @@ const gchar *cid = ref->cid; const gchar *alt = ref->alt; - purple_debug_info("jabber", + purple_debug_info("jabber", "about to add custom smiley %s to the conv\n", alt); if (purple_conv_custom_smiley_add(conv, alt, "cid", cid, TRUE)) { @@ -684,8 +675,8 @@ jabber_data_find_remote_by_cid(cid); /* if data is already known, we add write it immediatly */ if (data) { - purple_debug_info("jabber", - "data is already known\n"); + purple_debug_info("jabber", + "data is already known\n"); purple_conv_custom_smiley_write(conv, alt, jabber_data_get_data(data), jabber_data_get_size(data)); @@ -910,9 +901,9 @@ { JabberStream *js = (JabberStream *) gc->proto_data; JabberBuddy *jb; - + if (!js) { - purple_debug_error("jabber", + purple_debug_error("jabber", "jabber_conv_support_custom_smileys: could not find stream\n"); return FALSE; } @@ -965,7 +956,7 @@ if(type) xmlnode_set_attrib(message, "type", type); - + if (jm->id) xmlnode_set_attrib(message, "id", jm->id); @@ -1022,7 +1013,7 @@ PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to, account); - + if (jabber_conv_support_custom_smileys(jm->js->gc, conv, jm->to)) { GList *found_smileys = jabber_message_xhtml_find_smileys(jm->xhtml); @@ -1037,19 +1028,19 @@ const gchar *shortcut = purple_smiley_get_shortcut(smiley); const JabberData *data = jabber_data_find_local_by_alt(shortcut); - + /* the object has not been sent before */ if (!data) { PurpleStoredImage *image = purple_smiley_get_stored_image(smiley); const gchar *ext = purple_imgstore_get_extension(image); JabberStream *js = jm->js; - + JabberData *new_data = jabber_data_create_from_data(purple_imgstore_get_data(image), purple_imgstore_get_size(image), jabber_message_get_mimetype_from_ext(ext), js); - purple_debug_info("jabber", + purple_debug_info("jabber", "cache local smiley alt = %s, cid = %s\n", shortcut, jabber_data_get_cid(new_data)); jabber_data_associate_local(new_data, shortcut); @@ -1124,7 +1115,7 @@ } buf = g_strdup_printf("%s", msg); - + purple_markup_html_to_xhtml(buf, &xhtml, &jm->body); g_free(buf); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/pep.c --- a/libpurple/protocols/jabber/pep.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/pep.c Mon Mar 02 22:07:59 2009 +0000 @@ -32,7 +32,7 @@ void jabber_pep_init(void) { if(!pep_handlers) { pep_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); - + /* register PEP handlers */ jabber_mood_init(); jabber_nick_init(); @@ -57,31 +57,31 @@ xmlnode *pubsub = xmlnode_get_child_with_namespace(packet,"pubsub","http://jabber.org/protocol/pubsub"); xmlnode *items = NULL; JabberPEPHandler *cb = data; - + if(pubsub) items = xmlnode_get_child(pubsub, "items"); - + cb(js, from, items); } void jabber_pep_request_item(JabberStream *js, const char *to, const char *node, const char *id, JabberPEPHandler cb) { JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET); xmlnode *pubsub, *items, *item; - + xmlnode_set_attrib(iq->node,"to",to); pubsub = xmlnode_new_child(iq->node,"pubsub"); - + xmlnode_set_namespace(pubsub,"http://jabber.org/protocol/pubsub"); - + items = xmlnode_new_child(pubsub, "items"); xmlnode_set_attrib(items,"node",node); - + item = xmlnode_new_child(items, "item"); if(id) xmlnode_set_attrib(item, "id", id); - + jabber_iq_set_callback(iq,do_pep_iq_request_item_callback,(gpointer)cb); - + jabber_iq_send(iq); } @@ -94,15 +94,15 @@ JabberPEPHandler *jph; GList *itemslist; char *jid = jabber_get_bare_jid(jm->from); - + for(itemslist = jm->eventitems; itemslist; itemslist = itemslist->next) { xmlnode *items = (xmlnode*)itemslist->data; const char *nodename = xmlnode_get_attrib(items,"node"); - + if(nodename && (jph = g_hash_table_lookup(pep_handlers, nodename))) jph(jm->js, jid, items); } - + /* discard items we don't have a handler for */ g_free(jid); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/presence.c --- a/libpurple/protocols/jabber/presence.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/presence.c Mon Mar 02 22:07:59 2009 +0000 @@ -136,7 +136,7 @@ } purple_status_to_jabber(status, &state, &stripped, &priority); - + /* check for buzz support */ allowBuzz = purple_status_get_attr_boolean(status,"buzz"); /* changing the buzz state has to trigger a re-broadcasting of the presence for caps */ @@ -145,7 +145,7 @@ tune = purple_presence_get_status(p, "tune"); stripped = jabber_google_presence_outgoing(tune); } - + #define CHANGED(a,b) ((!a && b) || (a && a[0] == '\0' && b && b[0] != '\0') || \ (a && !b) || (a && a[0] != '\0' && b && b[0] == '\0') || (a && b && strcmp(a,b))) /* check if there are any differences to the and send them in that case */ @@ -166,9 +166,9 @@ g_hash_table_foreach(js->chats, chats_send_presence_foreach, presence); xmlnode_free(presence); - + /* update old values */ - + if(js->old_msg) g_free(js->old_msg); if(js->old_avatarhash) @@ -191,7 +191,7 @@ length = (!purple_status_get_attr_value(tune, PURPLE_TUNE_TIME)) ? -1 : purple_status_get_attr_int(tune, PURPLE_TUNE_TIME); } - + if(CHANGED(artist, js->old_artist) || CHANGED(title, js->old_title) || CHANGED(source, js->old_source) || CHANGED(uri, js->old_uri) || CHANGED(track, js->old_track) || (length != js->old_length)) { PurpleJabberTuneInfo tuneinfo = { @@ -203,7 +203,7 @@ (char*)uri }; jabber_tune_set(js->gc, &tuneinfo); - + /* update old values */ g_free(js->old_artist); g_free(js->old_title); @@ -264,27 +264,27 @@ xmlnode_set_namespace(c, "http://jabber.org/protocol/caps"); xmlnode_set_attrib(c, "node", CAPS0115_NODE); xmlnode_set_attrib(c, "ver", VERSION); - + if(js != NULL) { /* add the extensions */ char extlist[1024]; unsigned remaining = 1023; /* one less for the \0 */ GList *feature; - + extlist[0] = '\0'; for(feature = jabber_features; feature && remaining > 0; feature = feature->next) { JabberFeature *feat = (JabberFeature*)feature->data; unsigned featlen; - + if(feat->is_enabled != NULL && feat->is_enabled(js, feat->shortname, feat->namespace) == FALSE) continue; /* skip this feature */ - + featlen = strlen(feat->shortname); - + /* cut off when we don't have any more space left in our buffer (too bad) */ if(featlen > remaining) break; - + strncat(extlist,feat->shortname,remaining); remaining -= featlen; if(feature->next) { /* no space at the end */ @@ -296,7 +296,7 @@ if(remaining < 1023) xmlnode_set_attrib(c, "ext", extlist); } - + return presence; } @@ -745,7 +745,7 @@ const char *node = xmlnode_get_attrib(caps,"node"); const char *ver = xmlnode_get_attrib(caps,"ver"); const char *ext = xmlnode_get_attrib(caps,"ext"); - + if(node && ver) { JabberPresenceCapabilities *userdata = g_new0(JabberPresenceCapabilities, 1); userdata->js = js; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/roster.c --- a/libpurple/protocols/jabber/roster.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/roster.c Mon Mar 02 22:07:59 2009 +0000 @@ -80,15 +80,16 @@ buddies = g_slist_remove(buddies, b); - if((l = g_slist_find_custom(g2, g->name, (GCompareFunc)strcmp))) { - const char *servernick; + if((l = g_slist_find_custom(g2, purple_group_get_name(g), (GCompareFunc)strcmp))) { + const char *servernick, *balias; /* Previously stored serverside / buddy-supplied alias */ if((servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick"))) serv_got_alias(js->gc, jid, servernick); /* Alias from our roster retrieval */ - if(alias && (!b->alias || strcmp(b->alias, alias))) + balias = purple_buddy_get_local_buddy_alias(b); + if(alias && (!balias || strcmp(balias, alias))) purple_serv_got_private_alias(js->gc, jid, alias); g_free(l->data); g2 = g_slist_delete_link(g2, l); @@ -104,7 +105,7 @@ if (pool) { b = pool->data; pool = g_list_delete_link(pool, pool); - } else { + } else { b = purple_buddy_new(js->gc->account, jid, alias); } @@ -119,11 +120,13 @@ /* If we just learned about ourself, then fake our status, * because we won't be receiving a normal presence message * about ourself. */ - if(!strcmp(b->name, my_bare_jid)) { + if(!strcmp(purple_buddy_get_name(b), my_bare_jid)) { PurplePresence *gpresence; PurpleStatus *status; + PurpleAccount *account; - gpresence = purple_account_get_presence(js->gc->account); + 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); } @@ -273,6 +276,7 @@ GSList *groups = NULL, *l; JabberIq *iq; xmlnode *query, *item, *group; + const char *balias; if (js->currently_parsing_roster_push) return; @@ -289,7 +293,7 @@ while(buddies) { b = buddies->data; g = purple_buddy_get_group(b); - groups = g_slist_append(groups, g->name); + groups = g_slist_append(groups, (char *)purple_group_get_name(g)); buddies = g_slist_remove(buddies, b); } } @@ -301,7 +305,8 @@ xmlnode_set_attrib(item, "jid", name); - xmlnode_set_attrib(item, "name", b->alias ? b->alias : ""); + balias = purple_buddy_get_local_buddy_alias(b); + xmlnode_set_attrib(item, "name", balias ? balias : ""); for(l = groups; l; l = l->next) { group = xmlnode_new_child(item, "group"); @@ -310,7 +315,7 @@ if(!grps) g_slist_free(groups); - + if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) { jabber_google_roster_outgoing(js, query, item); xmlnode_set_attrib(query, "xmlns:gr", "google:roster"); @@ -327,14 +332,16 @@ JabberBuddy *jb; JabberBuddyResource *jbr; char *my_bare_jid; + const char *name; if(!js->roster_parsed) return; - if(!(who = jabber_get_bare_jid(buddy->name))) + name = purple_buddy_get_name(buddy); + if(!(who = jabber_get_bare_jid(name))) return; - jb = jabber_buddy_find(js, buddy->name, FALSE); + jb = jabber_buddy_find(js, name, FALSE); jabber_roster_update(js, who, NULL); @@ -375,6 +382,7 @@ GSList *buddies, *groups = NULL; PurpleBuddy *b; PurpleGroup *g; + const char *gname; if(!old_group || !new_group || !strcmp(old_group, new_group)) return; @@ -383,10 +391,11 @@ while(buddies) { b = buddies->data; g = purple_buddy_get_group(b); - if(!strcmp(g->name, old_group)) + gname = purple_group_get_name(g); + if(!strcmp(gname, old_group)) groups = g_slist_append(groups, (char*)new_group); /* ick */ else - groups = g_slist_append(groups, g->name); + groups = g_slist_append(groups, (char*)gname); buddies = g_slist_remove(buddies, b); } jabber_roster_update(gc->proto_data, name, groups); @@ -397,15 +406,17 @@ PurpleGroup *group, GList *moved_buddies) { GList *l; + const char *gname = purple_group_get_name(group); for(l = moved_buddies; l; l = l->next) { PurpleBuddy *buddy = l->data; - jabber_roster_group_change(gc, buddy->name, old_name, group->name); + jabber_roster_group_change(gc, purple_buddy_get_name(buddy), old_name, gname); } } void jabber_roster_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { - GSList *buddies = purple_find_buddies(gc->account, buddy->name); + const char *name = purple_buddy_get_name(buddy); + GSList *buddies = purple_find_buddies(purple_connection_get_account(gc), name); buddies = g_slist_remove(buddies, buddy); if(buddies != NULL) { @@ -416,11 +427,11 @@ while(buddies) { tmpbuddy = buddies->data; tmpgroup = purple_buddy_get_group(tmpbuddy); - groups = g_slist_append(groups, tmpgroup->name); + groups = g_slist_append(groups, (char *)purple_group_get_name(tmpgroup)); buddies = g_slist_remove(buddies, tmpbuddy); } - jabber_roster_update(gc->proto_data, buddy->name, groups); + 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, @@ -428,7 +439,7 @@ xmlnode *query = xmlnode_get_child(iq->node, "query"); xmlnode *item = xmlnode_new_child(query, "item"); - xmlnode_set_attrib(item, "jid", buddy->name); + xmlnode_set_attrib(item, "jid", name); xmlnode_set_attrib(item, "subscription", "remove"); jabber_iq_send(iq); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/si.c --- a/libpurple/protocols/jabber/si.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/si.c Mon Mar 02 22:07:59 2009 +0000 @@ -32,6 +32,7 @@ #include "buddy.h" #include "disco.h" #include "jabber.h" +#include "ibb.h" #include "iq.h" #include "si.h" @@ -63,8 +64,15 @@ size_t rxlen; gsize rxmaxlen; int local_streamhost_fd; + + JabberIBBSession *ibb_session; + guint ibb_timeout_handle; + FILE *fp; } JabberSIXfer; +/* some forward declarations */ +static void jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer); + static PurpleXfer* jabber_si_xfer_find(JabberStream *js, const char *sid, const char *from) { @@ -178,6 +186,32 @@ return FALSE; } +static void +jabber_si_bytestreams_ibb_timeout_remove(JabberSIXfer *jsx) +{ + if (jsx->ibb_timeout_handle) { + purple_timeout_remove(jsx->ibb_timeout_handle); + jsx->ibb_timeout_handle = 0; + } +} + +static gboolean +jabber_si_bytestreams_ibb_timeout_cb(gpointer data) +{ + PurpleXfer *xfer = (PurpleXfer *) data; + JabberSIXfer *jsx = xfer->data; + + if (jsx && !jsx->ibb_session) { + purple_debug_info("jabber", + "jabber_si_bytestreams_ibb_timeout called and IBB session not set " + " up yet, cancel transfer"); + jabber_si_bytestreams_ibb_timeout_remove(jsx); + purple_xfer_cancel_local(xfer); + } + + return FALSE; +} + static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer) { JabberSIXfer *jsx = xfer->data; @@ -200,7 +234,28 @@ jabber_iq_send(iq); - purple_xfer_cancel_local(xfer); + /* if IBB is available, revert to that before giving up... */ + if (jsx->stream_method & STREAM_METHOD_IBB) { + /* if we are the initializer, init IBB */ + purple_debug_info("jabber", + "jabber_si_bytestreams_attempt_connect: " + "no streamhosts found, trying IBB\n"); + /* if we are the sender, open an IBB session, but not if we already + did it, since we could have received the error from the + receiver already... */ + if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND + && !jsx->ibb_session) { + jabber_si_xfer_ibb_send_init(jsx->js, xfer); + } else { + /* setup a timeout to cancel waiting for IBB open */ + jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, + jabber_si_bytestreams_ibb_timeout_cb, xfer); + } + /* if we are the receiver, just wait for IBB open, callback is + already set up... */ + } else { + purple_xfer_cancel_local(xfer); + } return; } @@ -654,8 +709,32 @@ jsx = xfer->data; if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result")) { - if (type && !strcmp(type, "error")) - purple_xfer_cancel_remote(xfer); + purple_debug_info("jabber", + "jabber_si_xfer_connect_proxy_cb: type = %s\n", + type); + if (type && !strcmp(type, "error")) { + /* if IBB is available, open IBB session */ + purple_debug_info("jabber", + "jabber_si_xfer_connect_proxy_cb: got error, method: %d\n", + jsx->stream_method); + if (jsx->stream_method & STREAM_METHOD_IBB) { + purple_debug_info("jabber", "IBB is possible, try it\n"); + /* if we are the sender and haven't already opened an IBB + session, do so now (we might already have failed to open + the bytestream proxy ourselves when receiving this */ + if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND + && !jsx->ibb_session) { + jabber_si_xfer_ibb_send_init(js, xfer); + } else { + jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, + jabber_si_bytestreams_ibb_timeout_cb, xfer); + } + /* if we are receiver, just wait for IBB open stanza, callback + is already set up */ + } else { + purple_xfer_cancel_remote(xfer); + } + } return; } @@ -682,8 +761,22 @@ purple_debug_info("jabber", "Got local SOCKS5 streamhost-used.\n"); purple_xfer_start(xfer, xfer->fd, NULL, -1); } else { - purple_debug_info("jabber", "streamhost-used does not match any proxy that was offered to target\n"); - purple_xfer_cancel_local(xfer); + /* if available, try to revert to IBB... */ + if (jsx->stream_method & STREAM_METHOD_IBB) { + purple_debug_info("jabber", + "jabber_si_connect_proxy_cb: trying to revert to IBB\n"); + if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { + jabber_si_xfer_ibb_send_init(jsx->js, xfer); + } else { + jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, + jabber_si_bytestreams_ibb_timeout_cb, xfer); + } + /* if we are the receiver, we are already set up...*/ + } else { + purple_debug_info("jabber", + "streamhost-used does not match any proxy that was offered to target\n"); + purple_xfer_cancel_local(xfer); + } } g_free(my_jid); return; @@ -810,8 +903,26 @@ /* We have no way of transferring, cancel the transfer */ if (streamhost_count == 0) { jabber_iq_free(iq); - /* We should probably notify the target, but this really shouldn't ever happen */ - purple_xfer_cancel_local(xfer); + + /* if available, revert to IBB */ + if (jsx->stream_method & STREAM_METHOD_IBB) { + purple_debug_info("jabber", + "jabber_si_xfer_bytestreams_listen_cb: trying to revert to IBB\n"); + if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) { + /* if we are the sender, init the IBB session... */ + jabber_si_xfer_ibb_send_init(jsx->js, xfer); + } else { + jsx->ibb_timeout_handle = purple_timeout_add_seconds(30, + jabber_si_bytestreams_ibb_timeout_cb, xfer); + } + /* if we are the receiver, we should just wait... the IBB open + handler has already been set up... */ + } else { + /* We should probably notify the target, + but this really shouldn't ever happen */ + purple_xfer_cancel_local(xfer); + } + return; } @@ -841,11 +952,242 @@ } +static void +jabber_si_xfer_ibb_error_cb(JabberIBBSession *sess) +{ + PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); + JabberStream *js = jabber_ibb_session_get_js(sess); + PurpleConnection *gc = js->gc; + PurpleAccount *account = purple_connection_get_account(gc); + + purple_debug_error("jabber", "an error occured during IBB file transfer\n"); + purple_xfer_error(purple_xfer_get_type(xfer), account, + jabber_ibb_session_get_who(sess), + _("An error occured on the in-band bytestream transfer\n")); + purple_xfer_cancel_remote(xfer); +} + +static void +jabber_si_xfer_ibb_closed_cb(JabberIBBSession *sess) +{ + PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); + JabberStream *js = jabber_ibb_session_get_js(sess); + PurpleConnection *gc = js->gc; + PurpleAccount *account = purple_connection_get_account(gc); + + purple_debug_info("jabber", "the remote user closed the transfer\n"); + if (purple_xfer_get_bytes_remaining(xfer) > 0) { + purple_xfer_error(purple_xfer_get_type(xfer), account, + jabber_ibb_session_get_who(sess), _("Transfer was closed.")); + purple_xfer_cancel_remote(xfer); + } else { + purple_xfer_set_completed(xfer, TRUE); + purple_xfer_end(xfer); + } +} + +static void +jabber_si_xfer_ibb_recv_data_cb(JabberIBBSession *sess, gpointer data, + gsize size) +{ + PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + + if (size <= purple_xfer_get_bytes_remaining(xfer)) { + purple_debug_info("jabber", "about to write %" G_GSIZE_FORMAT " bytes from IBB stream\n", + size); + if(!fwrite(data, size, 1, jsx->fp)) { + purple_debug_error("jabber", "error writing to file\n"); + purple_xfer_cancel_remote(xfer); + return; + } + purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + size); + purple_xfer_update_progress(xfer); + + if (purple_xfer_get_bytes_remaining(xfer) == 0) { + purple_xfer_set_completed(xfer, TRUE); + purple_xfer_end(xfer); + } + } else { + /* trying to write past size of file transfers negotiated size, + reject transfer to protect against malicious behaviour */ + purple_debug_error("jabber", + "IBB file transfer send more data than expected\n"); + purple_xfer_cancel_remote(xfer); + } + +} + +static gboolean +jabber_si_xfer_ibb_open_cb(JabberStream *js, xmlnode *packet) +{ + const gchar *who = xmlnode_get_attrib(packet, "from"); + xmlnode *open = xmlnode_get_child(packet, "open"); + const gchar *sid = xmlnode_get_attrib(open, "sid"); + PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who); + if (xfer) { + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + JabberIBBSession *sess = + jabber_ibb_session_create_from_xmlnode(js, packet, xfer); + const char *filename; + + jabber_si_bytestreams_ibb_timeout_remove(jsx); + + if (sess) { + /* open the file to write to */ + filename = purple_xfer_get_local_filename(xfer); + jsx->fp = g_fopen(filename, "wb"); + if (jsx->fp == NULL) { + purple_debug_error("jabber", "failed to open file %s for writing: %s\n", + filename, g_strerror(errno)); + purple_xfer_cancel_remote(xfer); + return FALSE; + } + + /* setup callbacks here...*/ + jabber_ibb_session_set_data_received_callback(sess, + jabber_si_xfer_ibb_recv_data_cb); + jabber_ibb_session_set_closed_callback(sess, + jabber_si_xfer_ibb_closed_cb); + jabber_ibb_session_set_error_callback(sess, + jabber_si_xfer_ibb_error_cb); + + jsx->ibb_session = sess; + + /* start the transfer */ + purple_xfer_start(xfer, 0, NULL, 0); + return TRUE; + } else { + /* failed to create IBB session */ + purple_debug_error("jabber", "failed to create IBB session\n"); + purple_xfer_cancel_remote(xfer); + return FALSE; + } + } else { + /* we got an IBB for an unknown file transfer, pass along... */ + purple_debug_info("jabber", + "IBB open did not match any SI file transfer\n"); + return FALSE; + } +} + +static void +jabber_si_xfer_ibb_send_data(JabberIBBSession *sess) +{ + PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + gsize remaining = purple_xfer_get_bytes_remaining(xfer); + gsize packet_size = remaining < jabber_ibb_session_get_block_size(sess) ? + remaining : jabber_ibb_session_get_block_size(sess); + gpointer data = g_malloc(packet_size); + int res; + + purple_debug_info("jabber", "IBB: about to read %" G_GSIZE_FORMAT " bytes from file %p\n", + packet_size, jsx->fp); + res = fread(data, packet_size, 1, jsx->fp); + + if (res == 1) { + jabber_ibb_session_send_data(sess, data, packet_size); + purple_xfer_set_bytes_sent(xfer, + purple_xfer_get_bytes_sent(xfer) + packet_size); + purple_xfer_update_progress(xfer); + } else { + purple_debug_error("jabber", + "jabber_si_xfer_ibb_send_data: error reading from file\n"); + purple_xfer_cancel_local(xfer); + } +} + +static void +jabber_si_xfer_ibb_sent_cb(JabberIBBSession *sess) +{ + PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); + gsize remaining = purple_xfer_get_bytes_remaining(xfer); + + if (remaining == 0) { + /* close the session */ + jabber_ibb_session_close(sess); + purple_xfer_set_completed(xfer, TRUE); + purple_xfer_end(xfer); + } else { + /* send more... */ + jabber_si_xfer_ibb_send_data(sess); + } +} + +static void +jabber_si_xfer_ibb_opened_cb(JabberIBBSession *sess) +{ + PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + JabberStream *js = jabber_ibb_session_get_js(sess); + PurpleConnection *gc = js->gc; + PurpleAccount *account = purple_connection_get_account(gc); + + if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) { + const char *filename = purple_xfer_get_local_filename(xfer); + jsx->fp = g_fopen(filename, "rb"); + if (jsx->fp == NULL) { + purple_debug_error("jabber", "Failed to open file %s for reading: %s\n", + filename, g_strerror(errno)); + purple_xfer_error(purple_xfer_get_type(xfer), account, + jabber_ibb_session_get_who(sess), + _("Failed to open the file")); + purple_xfer_cancel_local(xfer); + return; + } + + purple_xfer_start(xfer, 0, NULL, 0); + purple_xfer_set_bytes_sent(xfer, 0); + purple_xfer_update_progress(xfer); + jabber_si_xfer_ibb_send_data(sess); + } else { + /* error */ + purple_xfer_error(purple_xfer_get_type(xfer), account, + jabber_ibb_session_get_who(sess), + _("Failed to open in-band bytestream")); + purple_xfer_end(xfer); + } +} + +static void +jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer) +{ + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + + purple_xfer_ref(xfer); + + jsx->ibb_session = jabber_ibb_session_create(js, jsx->stream_id, + purple_xfer_get_remote_user(xfer), xfer); + + if (jsx->ibb_session) { + /* should set callbacks here... */ + jabber_ibb_session_set_opened_callback(jsx->ibb_session, + jabber_si_xfer_ibb_opened_cb); + jabber_ibb_session_set_data_sent_callback(jsx->ibb_session, + jabber_si_xfer_ibb_sent_cb); + jabber_ibb_session_set_closed_callback(jsx->ibb_session, + jabber_si_xfer_ibb_closed_cb); + jabber_ibb_session_set_error_callback(jsx->ibb_session, + jabber_si_xfer_ibb_error_cb); + + /* open the IBB session */ + jabber_ibb_session_open(jsx->ibb_session); + + } else { + /* failed to create IBB session */ + purple_debug_error("jabber", + "failed to initiate IBB session for file transfer\n"); + purple_xfer_cancel_local(xfer); + } +} + static void jabber_si_xfer_send_method_cb(JabberStream *js, xmlnode *packet, gpointer data) { PurpleXfer *xfer = data; xmlnode *si, *feature, *x, *field, *value; + gboolean found_method = FALSE; if(!(si = xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si"))) { purple_xfer_cancel_remote(xfer); @@ -864,20 +1206,33 @@ for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) { const char *var = xmlnode_get_attrib(field, "var"); + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; if(var && !strcmp(var, "stream-method")) { if((value = xmlnode_get_child(field, "value"))) { char *val = xmlnode_get_data(value); if(val && !strcmp(val, "http://jabber.org/protocol/bytestreams")) { jabber_si_xfer_bytestreams_send_init(xfer); - g_free(val); - return; + jsx->stream_method |= STREAM_METHOD_BYTESTREAMS; + found_method = TRUE; + } else if (val && !strcmp(val, XEP_0047_NAMESPACE)) { + jsx->stream_method |= STREAM_METHOD_IBB; + if (!found_method) { + /* we haven't tried to init a bytestream session, yet + start IBB right away... */ + jabber_si_xfer_ibb_send_init(js, xfer); + found_method = TRUE; + } } g_free(val); } } } - purple_xfer_cancel_remote(xfer); + + if (!found_method) { + purple_xfer_cancel_remote(xfer); + } + } static void jabber_si_xfer_send_request(PurpleXfer *xfer) @@ -914,14 +1269,14 @@ field = xmlnode_new_child(x, "field"); xmlnode_set_attrib(field, "var", "stream-method"); xmlnode_set_attrib(field, "type", "list-single"); + /* maybe we should add an option to always skip bytestreams for people + behind troublesome firewalls */ option = xmlnode_new_child(field, "option"); value = xmlnode_new_child(option, "value"); xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1); - /* option = xmlnode_new_child(field, "option"); value = xmlnode_new_child(option, "value"); xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1); - */ jabber_iq_set_callback(iq, jabber_si_xfer_send_method_cb, xfer); @@ -935,38 +1290,66 @@ static void jabber_si_xfer_free(PurpleXfer *xfer) { JabberSIXfer *jsx = xfer->data; - JabberStream *js = jsx->js; + + if (jsx) { + JabberStream *js = jsx->js; + + js->file_transfers = g_list_remove(js->file_transfers, xfer); - js->file_transfers = g_list_remove(js->file_transfers, xfer); + if (jsx->connect_data != NULL) + purple_proxy_connect_cancel(jsx->connect_data); + if (jsx->listen_data != NULL) + purple_network_listen_cancel(jsx->listen_data); + if (jsx->iq_id != NULL) + jabber_iq_remove_callback_by_id(js, jsx->iq_id); + if (jsx->local_streamhost_fd >= 0) + close(jsx->local_streamhost_fd); + if (jsx->connect_timeout > 0) + purple_timeout_remove(jsx->connect_timeout); + if (jsx->ibb_timeout_handle > 0) + purple_timeout_remove(jsx->ibb_timeout_handle); - if (jsx->connect_data != NULL) - purple_proxy_connect_cancel(jsx->connect_data); - if (jsx->listen_data != NULL) - purple_network_listen_cancel(jsx->listen_data); - if (jsx->iq_id != NULL) - jabber_iq_remove_callback_by_id(js, jsx->iq_id); - if (jsx->local_streamhost_fd >= 0) - close(jsx->local_streamhost_fd); - if (jsx->connect_timeout > 0) - purple_timeout_remove(jsx->connect_timeout); + if (jsx->streamhosts) { + g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL); + g_list_free(jsx->streamhosts); + } + + if (jsx->ibb_session) { + purple_debug_info("jabber", + "jabber_si_xfer_free: destroying IBB session\n"); + jabber_ibb_session_destroy(jsx->ibb_session); + } - if (jsx->streamhosts) { - g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL); - g_list_free(jsx->streamhosts); - } + if (jsx->fp) { + purple_debug_info("jabber", + "jabber_si_xfer_free: closing file for IBB transfer\n"); + fclose(jsx->fp); + } - g_free(jsx->stream_id); - g_free(jsx->iq_id); - /* XXX: free other stuff */ - g_free(jsx->rxqueue); - g_free(jsx); - xfer->data = NULL; + g_free(jsx->stream_id); + g_free(jsx->iq_id); + /* XXX: free other stuff */ + g_free(jsx->rxqueue); + g_free(jsx); + xfer->data = NULL; - purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p", jsx); + purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p\n", jsx); + } } +/* + * These four functions should only be called from the PurpleXfer functions + * (typically purple_xfer_cancel_(remote|local), purple_xfer_end, or + * purple_xfer_request_denied. + */ static void jabber_si_xfer_cancel_send(PurpleXfer *xfer) { + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + + /* if there is an IBB session active, send close on that */ + if (jsx->ibb_session) { + jabber_ibb_session_close(jsx->ibb_session); + } jabber_si_xfer_free(xfer); purple_debug(PURPLE_DEBUG_INFO, "jabber", "in jabber_si_xfer_cancel_send\n"); } @@ -981,6 +1364,11 @@ static void jabber_si_xfer_cancel_recv(PurpleXfer *xfer) { + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; + /* if there is an IBB session active, send close */ + if (jsx->ibb_session) { + jabber_ibb_session_close(jsx->ibb_session); + } jabber_si_xfer_free(xfer); purple_debug(PURPLE_DEBUG_INFO, "jabber", "in jabber_si_xfer_cancel_recv\n"); } @@ -995,9 +1383,16 @@ static void jabber_si_xfer_send_disco_cb(JabberStream *js, const char *who, JabberCapabilities capabilities, gpointer data) { - PurpleXfer *xfer = data; + PurpleXfer *xfer = (PurpleXfer *) data; + JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; - if(capabilities & JABBER_CAP_SI_FILE_XFER) { + if (capabilities & JABBER_CAP_IBB) { + purple_debug_info("jabber", + "jabber_si_xfer_send_disco_cb: remote JID supports IBB\n"); + jsx->stream_method |= STREAM_METHOD_IBB; + } + + if (capabilities & JABBER_CAP_SI_FILE_XFER) { jabber_si_xfer_send_request(xfer); } else { char *msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who); @@ -1124,17 +1519,21 @@ x = xmlnode_new_child(feature, "x"); xmlnode_set_namespace(x, "jabber:x:data"); xmlnode_set_attrib(x, "type", "submit"); - field = xmlnode_new_child(x, "field"); xmlnode_set_attrib(field, "var", "stream-method"); - value = xmlnode_new_child(field, "value"); - if(jsx->stream_method & STREAM_METHOD_BYTESTREAMS) + /* we should maybe "remember" if bytestreams has failed before (in the + same session) with this JID, and only present IBB as an option to + avoid unnessesary timeout */ + /* maybe we should have an account option to always just try IBB + for people who know their firewalls are very restrictive */ + if (jsx->stream_method & STREAM_METHOD_BYTESTREAMS) { + value = xmlnode_new_child(field, "value"); xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1); - /* - else if(jsx->stream_method & STREAM_METHOD_IBB) - xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1); - */ + } else if(jsx->stream_method & STREAM_METHOD_IBB) { + value = xmlnode_new_child(field, "value"); + xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1); + } jabber_iq_send(iq); } @@ -1156,6 +1555,9 @@ jsx->js = js; jsx->local_streamhost_fd = -1; + jsx->ibb_session = NULL; + jsx->fp = NULL; + purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init); purple_xfer_set_cancel_send_fnc(xfer, jabber_si_xfer_cancel_send); purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end); @@ -1227,6 +1629,8 @@ jsx = g_new0(JabberSIXfer, 1); jsx->local_streamhost_fd = -1; + jsx->ibb_session = NULL; + for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) { const char *var = xmlnode_get_attrib(field, "var"); if(var && !strcmp(var, "stream-method")) { @@ -1237,10 +1641,8 @@ if((val = xmlnode_get_data(value))) { if(!strcmp(val, "http://jabber.org/protocol/bytestreams")) { jsx->stream_method |= STREAM_METHOD_BYTESTREAMS; - /* } else if(!strcmp(val, "http://jabber.org/protocol/ibb")) { jsx->stream_method |= STREAM_METHOD_IBB; - */ } g_free(val); } @@ -1278,4 +1680,15 @@ } } +void +jabber_si_init(void) +{ + jabber_ibb_register_open_handler(jabber_si_xfer_ibb_open_cb); +} +void +jabber_si_uninit(void) +{ + jabber_ibb_unregister_open_handler(jabber_si_xfer_ibb_open_cb); +} + diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/si.h --- a/libpurple/protocols/jabber/si.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/si.h Mon Mar 02 22:07:59 2009 +0000 @@ -30,5 +30,7 @@ void jabber_si_parse(JabberStream *js, xmlnode *packet); PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who); void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file); +void jabber_si_init(void); +void jabber_si_uninit(void); #endif /* _PURPLE_JABBER_SI_H_ */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/usermood.c --- a/libpurple/protocols/jabber/usermood.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/usermood.c Mon Mar 02 22:07:59 2009 +0000 @@ -103,7 +103,7 @@ /* ignore the mood of people not on our buddy list */ if (!buddy || !item) return; - + mood = xmlnode_get_child_with_namespace(item, "mood", "http://jabber.org/protocol/mood"); if (!mood) return; @@ -179,10 +179,10 @@ field = purple_request_field_choice_new("mood", _("Mood"), 0); - + for(i = 0; moodstrings[i]; ++i) purple_request_field_choice_add(field, _(moodstrings[i])); - + purple_request_field_set_required(field, TRUE); purple_request_field_group_add_field(group, field); @@ -190,7 +190,7 @@ _("Description"), NULL, FALSE); purple_request_field_group_add_field(group, field); - + purple_request_fields(gc, _("Edit User Mood"), _("Edit User Mood"), _("Please select your mood from the list."), @@ -199,7 +199,7 @@ _("Cancel"), NULL, purple_connection_get_account(gc), NULL, NULL, gc); - + } void jabber_mood_init_action(GList **m) { @@ -222,7 +222,7 @@ xmlnode *textnode = xmlnode_new_child(moodnode, "text"); xmlnode_insert_data(textnode, text, -1); } - + jabber_pep_publish(js, publish); /* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free (yay for well-defined memory management rules) */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/usernick.c --- a/libpurple/protocols/jabber/usernick.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/usernick.c Mon Mar 02 22:07:59 2009 +0000 @@ -34,11 +34,11 @@ JabberBuddy *buddy = jabber_buddy_find(js, from, FALSE); xmlnode *nick; char *nickname = NULL; - + /* ignore the tune of people not on our buddy list */ if (!buddy || !item) return; - + nick = xmlnode_get_child_with_namespace(item, "nick", "http://jabber.org/protocol/nick"); if (!nick) return; @@ -49,15 +49,15 @@ static void do_nick_set(JabberStream *js, const char *nick) { xmlnode *publish, *nicknode; - + publish = xmlnode_new("publish"); xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/nick"); nicknode = xmlnode_new_child(xmlnode_new_child(publish, "item"), "nick"); xmlnode_set_namespace(nicknode, "http://jabber.org/protocol/nick"); - + if(nick && nick[0] != '\0') xmlnode_insert_data(nicknode, nick, -1); - + jabber_pep_publish(js, publish); /* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free (yay for well-defined memory management rules) */ @@ -66,13 +66,13 @@ static void do_nick_got_own_nick_cb(JabberStream *js, const char *from, xmlnode *items) { char *oldnickname = NULL; xmlnode *item = xmlnode_get_child(items,"item"); - + if(item) { xmlnode *nick = xmlnode_get_child_with_namespace(item,"nick","http://jabber.org/protocol/nick"); if(nick) oldnickname = xmlnode_get_data(nick); } - + purple_request_input(js->gc, _("Set User Nickname"), _("Please specify a new nickname for you."), _("This information is visible to all contacts on your contact list, so choose something appropriate."), oldnickname, FALSE, FALSE, NULL, _("Set"), PURPLE_CALLBACK(do_nick_set), _("Cancel"), NULL, @@ -84,7 +84,7 @@ PurpleConnection *gc = (PurpleConnection *) action->context; JabberStream *js = gc->proto_data; char *jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain); - + /* since the nickname might have been changed by another resource of this account, we always have to request the old one from the server to present as the default for the new one */ jabber_pep_request_item(js, jid, "http://jabber.org/protocol/nick", NULL, do_nick_got_own_nick_cb); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/usertune.c --- a/libpurple/protocols/jabber/usertune.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/usertune.c Mon Mar 02 22:07:59 2009 +0000 @@ -116,12 +116,12 @@ void jabber_tune_set(PurpleConnection *gc, const PurpleJabberTuneInfo *tuneinfo) { xmlnode *publish, *tunenode; JabberStream *js = gc->proto_data; - + publish = xmlnode_new("publish"); xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/tune"); tunenode = xmlnode_new_child(xmlnode_new_child(publish, "item"), "tune"); xmlnode_set_namespace(tunenode, "http://jabber.org/protocol/tune"); - + if(tuneinfo) { if(tuneinfo->artist && tuneinfo->artist[0] != '\0') xmlnode_insert_data(xmlnode_new_child(tunenode, "artist"),tuneinfo->artist,-1); @@ -139,7 +139,7 @@ if(tuneinfo->track && tuneinfo->track[0] != '\0') xmlnode_insert_data(xmlnode_new_child(tunenode, "track"),tuneinfo->track,-1); } - + jabber_pep_publish(js, publish); /* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free (yay for well-defined memory management rules) */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/jabber/xdata.c --- a/libpurple/protocols/jabber/xdata.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/jabber/xdata.c Mon Mar 02 22:07:59 2009 +0000 @@ -372,7 +372,7 @@ if(field && xmlnode_get_child(fn, "required")) purple_request_field_set_required(field,TRUE); } - + if(actions != NULL) { PurpleRequestField *actionfield; GList *action; @@ -382,7 +382,7 @@ for(action = actions; action; action = g_list_next(action)) { JabberXDataAction *a = action->data; - + purple_request_field_choice_add(actionfield, a->name); data->actions = g_list_append(data->actions, g_strdup(a->handle)); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/directconn.c --- a/libpurple/protocols/msn/directconn.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/directconn.c Mon Mar 02 22:07:59 2009 +0000 @@ -201,24 +201,6 @@ g_free(buffer); -#if 0 - /* Let's write the length of the data. */ - ret = write(directconn->fd, &len, sizeof(len)); - - /* Let's write the data. */ - ret = write(directconn->fd, data, len); - - char *str; - str = g_strdup_printf("/home/revo/msntest/w%.4d.bin", directconn->c); - - FILE *tf = g_fopen(str, "w"); - fwrite(&len, 1, sizeof(len), tf); - fwrite(data, 1, len, tf); - fclose(tf); - - g_free(str); -#endif - directconn->c++; return ret; @@ -341,7 +323,7 @@ MsnMessage *msg; #ifdef DEBUG_DC - str = g_strdup_printf("/home/revo/msntest/r%.4d.bin", directconn->c); + str = g_strdup_printf("%s/msntest/r%.4d.bin", g_get_home_dir(), directconn->c); FILE *tf = g_fopen(str, "w"); fwrite(body, 1, len, tf); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/notification.c Mon Mar 02 22:07:59 2009 +0000 @@ -544,17 +544,16 @@ } /*find a domain Node*/ - for(d_node = xmlnode_get_child(mlNode,"d"); d_node; d_node = xmlnode_get_next_twin(d_node)) - { + for (d_node = xmlnode_get_child(mlNode, "d"); d_node; + d_node = xmlnode_get_next_twin(d_node)) { const char *attr = xmlnode_get_attrib(d_node,"n"); if (attr == NULL) continue; - if (!strcmp(attr,domain)) + if (!strcmp(attr, domain)) break; } - if(d_node == NULL) - { + if (d_node == NULL) { /*domain not found, create a new domain Node*/ purple_debug_info("msn", "Didn't find existing domain node, adding one.\n"); d_node = xmlnode_new("d"); @@ -566,20 +565,18 @@ c_node = xmlnode_new("c"); xmlnode_set_attrib(c_node, "n", email); - purple_debug_info("msn", "list_op: %d\n", list_op); - g_snprintf(fmt_str, sizeof(fmt_str), "%d", list_op); - xmlnode_set_attrib(c_node, "l", fmt_str); + if (list_op != 0) { + purple_debug_info("msn", "list_op: %d\n", list_op); + g_snprintf(fmt_str, sizeof(fmt_str), "%d", list_op); + xmlnode_set_attrib(c_node, "l", fmt_str); + } - if (networkId != MSN_NETWORK_UNKNOWN) + if (networkId != MSN_NETWORK_UNKNOWN) { g_snprintf(fmt_str, sizeof(fmt_str), "%d", networkId); - else if (msn_user_is_yahoo(session->account, passport)) - g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_NETWORK_YAHOO); - else - g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_NETWORK_PASSPORT); - - /*mobile*/ - /*type_str = g_strdup_printf("4");*/ - xmlnode_set_attrib(c_node, "t", fmt_str); + /*mobile*/ + /*type_str = g_strdup_printf("4");*/ + xmlnode_set_attrib(c_node, "t", fmt_str); + } xmlnode_insert_child(d_node, c_node); @@ -596,6 +593,48 @@ msn_cmdproc_send_trans(cmdproc, trans); } +void +msn_notification_send_fqy(MsnSession *session, + const char *payload, int payload_len, + MsnFqyCb cb) +{ + MsnTransaction *trans; + MsnCmdProc *cmdproc; + + cmdproc = session->notification->cmdproc; + + trans = msn_transaction_new(cmdproc, "FQY", "%d", payload_len); + msn_transaction_set_payload(trans, payload, payload_len); + msn_transaction_set_data(trans, cb); + msn_cmdproc_send_trans(cmdproc, trans); +} + +static void +update_contact_network(MsnSession *session, const char *passport, MsnNetwork network) +{ + MsnUser *user = msn_userlist_find_user(session->userlist, passport); + /* TODO: Also figure out how to update membership lists */ + if (user) { + xmlnode *adl_node; + char *payload; + int payload_len; + + msn_user_set_network(user, network); + + adl_node = xmlnode_new("ml"); + xmlnode_set_attrib(adl_node, "l", "1"); + msn_add_contact_xml(session, adl_node, passport, + user->list_op & MSN_LIST_OP_MASK, network); + payload = xmlnode_to_str(adl_node, &payload_len); + msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); + + } else { + purple_debug_error("msn", + "Got FQY update for unkwown user %s on network %d.\n", + passport, network); + } +} + /*dump contact info to NS*/ void msn_notification_dump_contact(MsnSession *session) @@ -603,14 +642,17 @@ MsnUser *user; GList *l; xmlnode *adl_node; + xmlnode *fqy_node; char *payload; int payload_len; int adl_count = 0; + int fqy_count = 0; const char *display_name; adl_node = xmlnode_new("ml"); adl_node->child = NULL; xmlnode_set_attrib(adl_node, "l", "1"); + fqy_node = xmlnode_new("ml"); /*get the userlist*/ for (l = session->userlist->users; l != NULL; l = l->next) { @@ -635,36 +677,63 @@ msn_userlist_rem_buddy_from_list(session->userlist, user->passport, MSN_LIST_AL); } - msn_add_contact_xml(session, adl_node, user->passport, - user->list_op & MSN_LIST_OP_MASK, user->networkid); - - /* each ADL command may contain up to 150 contacts */ - if (++adl_count % 150 == 0 || l->next == NULL) { - payload = xmlnode_to_str(adl_node,&payload_len); + if (user->networkid != MSN_NETWORK_UNKNOWN) { + msn_add_contact_xml(session, adl_node, user->passport, + user->list_op & MSN_LIST_OP_MASK, user->networkid); - msn_notification_post_adl(session->notification->cmdproc, - payload, payload_len); + /* each ADL command may contain up to 150 contacts */ + if (++adl_count % 150 == 0) { + payload = xmlnode_to_str(adl_node, &payload_len); - g_free(payload); - xmlnode_free(adl_node); + msn_notification_post_adl(session->notification->cmdproc, + payload, payload_len); - if (l->next) { + g_free(payload); + xmlnode_free(adl_node); + adl_node = xmlnode_new("ml"); adl_node->child = NULL; xmlnode_set_attrib(adl_node, "l", "1"); } + } else { + msn_add_contact_xml(session, fqy_node, user->passport, + 0, user->networkid); + + /* each FQY command may contain up to 150 contacts, probably */ + if (++fqy_count % 150 == 0) { + payload = xmlnode_to_str(fqy_node, &payload_len); + + msn_notification_send_fqy(session, payload, payload_len, + update_contact_network); + + g_free(payload); + xmlnode_free(fqy_node); + fqy_node = xmlnode_new("ml"); + } } } - if (adl_count == 0) { - payload = xmlnode_to_str(adl_node,&payload_len); + /* Send the rest, or just an empty one to let the server set us online */ + if (adl_count == 0 || adl_count % 150 != 0) { + payload = xmlnode_to_str(adl_node, &payload_len); msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); g_free(payload); - xmlnode_free(adl_node); } + if (fqy_count % 150 != 0) { + payload = xmlnode_to_str(fqy_node, &payload_len); + + msn_notification_send_fqy(session, payload, payload_len, + update_contact_network); + + g_free(payload); + } + + xmlnode_free(adl_node); + xmlnode_free(fqy_node); + display_name = purple_connection_get_display_name(session->account->gc); if (display_name && strcmp(display_name, @@ -674,30 +743,6 @@ } -/*Post FQY to NS,Inform add a Yahoo User*/ -void -msn_notification_send_fqy(MsnSession *session, const char *passport) -{ - MsnTransaction *trans; - MsnCmdProc *cmdproc; - char* email,*domain,*payload; - char **tokens; - - cmdproc = session->notification->cmdproc; - - tokens = g_strsplit(passport, "@", 2); - email = tokens[0]; - domain = tokens[1]; - - payload = g_strdup_printf("", domain, email); - trans = msn_transaction_new(cmdproc, "FQY","%" G_GSIZE_FORMAT, strlen(payload)); - msn_transaction_set_payload(trans, payload, strlen(payload)); - msn_cmdproc_send_trans(cmdproc, trans); - - g_free(payload); - g_strfreev(tokens); -} - static void blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { @@ -861,7 +906,7 @@ fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len) { - MsnUserList *userlist; + MsnSession *session; xmlnode *ml, *d, *c; const char *domain; const char *local; @@ -869,26 +914,37 @@ char *passport; MsnNetwork network = MSN_NETWORK_PASSPORT; - userlist = cmdproc->session->userlist; + session = cmdproc->session; /* FQY response: */ ml = xmlnode_from_str(payload, len); - d = xmlnode_get_child(ml, "d"); - c = xmlnode_get_child(d, "c"); - domain = xmlnode_get_attrib(d, "n"); - local = xmlnode_get_attrib(c, "n"); - type = xmlnode_get_attrib(c, "t"); + for (d = xmlnode_get_child(ml, "d"); + d != NULL; + d = xmlnode_get_next_twin(d)) { + domain = xmlnode_get_attrib(d, "n"); + for (c = xmlnode_get_child(d, "c"); + c != NULL; + c = xmlnode_get_next_twin(c)) { + local = xmlnode_get_attrib(c, "n"); + type = xmlnode_get_attrib(c, "t"); - passport = g_strdup_printf("%s@%s", local, domain); + passport = g_strdup_printf("%s@%s", local, domain); - if (type != NULL) - network = (MsnNetwork)strtoul(type, NULL, 10); - purple_debug_info("msn", "FQY response says %s is from network %d\n", - passport, network); - msn_userlist_add_pending_buddy(userlist, passport, network); + if (type != NULL) + network = (MsnNetwork)strtoul(type, NULL, 10); + else + network = MSN_NETWORK_PASSPORT; - g_free(passport); + purple_debug_info("msn", "FQY response says %s is from network %d\n", + passport, network); + if (cmd->trans->data) + ((MsnFqyCb)cmd->trans->data)(session, passport, network); + + g_free(passport); + } + } + xmlnode_free(ml); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/notification.h --- a/libpurple/protocols/msn/notification.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/notification.h Mon Mar 02 22:07:59 2009 +0000 @@ -58,6 +58,8 @@ gboolean in_use; }; +typedef void (*MsnFqyCb)(MsnSession *session, const char *passport, MsnNetwork network); + #include "state.h" void uum_send_msg(MsnSession *session,MsnMessage *msg); @@ -69,7 +71,9 @@ void msn_notification_rem_buddy_from_list(MsnNotification *notification, MsnListId list_id, MsnUser *user); -void msn_notification_send_fqy(MsnSession *session, const char *passport); +void msn_notification_send_fqy(MsnSession *session, + const char *payload, int payload_len, + MsnFqyCb cb); MsnNotification *msn_notification_new(MsnSession *session); void msn_notification_destroy(MsnNotification *notification); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/session.c --- a/libpurple/protocols/msn/session.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/session.c Mon Mar 02 22:07:59 2009 +0000 @@ -271,16 +271,21 @@ * being logged in. This no longer happens, so we manually iterate * over the whole buddy list to identify sync issues. */ - for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { PurpleGroup *group = (PurpleGroup *)gnode; const char *group_name; if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - group_name = group->name; - for(cnode = gnode->child; cnode; cnode = cnode->next) { + group_name = purple_group_get_name(group); + for(cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for(bnode = cnode->child; bnode; bnode = bnode->next) { + for(bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { PurpleBuddy *b; if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/slpcall.c --- a/libpurple/protocols/msn/slpcall.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/slpcall.c Mon Mar 02 22:07:59 2009 +0000 @@ -47,8 +47,7 @@ if (!slpcall->pending && !slpcall->progress) { msn_slpcall_destroy(slpcall); - slpcall->timer = 0; - return FALSE; + return TRUE; } slpcall->progress = FALSE; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/switchboard.c --- a/libpurple/protocols/msn/switchboard.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/switchboard.c Mon Mar 02 22:07:59 2009 +0000 @@ -383,7 +383,7 @@ { MsnSwitchBoard *swboard = data; - purple_debug_info("msn", "unqueuing unsent message to %s", swboard->im_user); + purple_debug_info("msn", "unqueuing unsent message to %s\n", swboard->im_user); msn_switchboard_request(swboard); msn_switchboard_request_add_user(swboard, swboard->im_user); @@ -448,7 +448,7 @@ body_enc = g_markup_escape_text(body_str, -1); g_free(body_str); - purple_debug_info("msn", "queuing unsent message to %s: %s", + purple_debug_info("msn", "queuing unsent message to %s: %s\n", swboard->im_user, body_enc); g_free(body_enc); msn_send_im_message(session, msg); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/user.c --- a/libpurple/protocols/msn/user.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/user.c Mon Mar 02 22:07:59 2009 +0000 @@ -294,9 +294,8 @@ b = purple_buddy_new(account, passport, NULL); purple_blist_add_buddy(b, NULL, g, NULL); } - b->proto_data = user; + purple_buddy_set_protocol_data(b, user); /*Update the blist Node info*/ -// purple_blist_node_set_string(&(b->node), "", ""); } /*check if the msn user is online*/ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/userlist.c --- a/libpurple/protocols/msn/userlist.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/userlist.c Mon Mar 02 22:07:59 2009 +0000 @@ -770,10 +770,11 @@ * Actually adds a buddy once we have the response from FQY */ void -msn_userlist_add_pending_buddy(MsnUserList *userlist, +msn_userlist_add_pending_buddy(MsnSession *session, const char *who, /*MsnNetwork*/ int network) { + MsnUserList *userlist = session->userlist; MsnUser *user = NULL; MsnUser *user2; GList *l; @@ -930,31 +931,37 @@ msn_userlist_load(MsnSession *session) { PurpleBlistNode *gnode, *cnode, *bnode; - PurpleConnection *gc = purple_account_get_connection(session->account); + PurpleAccount *account = session->account; + PurpleConnection *gc = purple_account_get_connection(account); GSList *l; MsnUser * user; g_return_if_fail(gc != NULL); - for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode; cnode = cnode->next) + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnode->next) + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { PurpleBuddy *b; if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; b = (PurpleBuddy *)bnode; - if (b->account == gc->account) + if (purple_buddy_get_account(b) == account) { user = msn_userlist_find_add_user(session->userlist, - b->name,NULL); - b->proto_data = user; + purple_buddy_get_name(b), NULL); + purple_buddy_set_protocol_data(b, user); msn_user_set_op(user, MSN_LIST_FL_OP); } } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/msn/userlist.h --- a/libpurple/protocols/msn/userlist.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/msn/userlist.h Mon Mar 02 22:07:59 2009 +0000 @@ -95,7 +95,7 @@ void msn_userlist_save_pending_buddy(MsnUserList *userlist, const char *who, const char *group_name); -void msn_userlist_add_pending_buddy(MsnUserList *userlist, +void msn_userlist_add_pending_buddy(MsnSession *session, const char *who, /*MsnNetwork*/ int network); void msn_userlist_move_buddy(MsnUserList *userlist, const char *who, diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/myspace/README --- a/libpurple/protocols/myspace/README Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/myspace/README Mon Mar 02 22:07:59 2009 +0000 @@ -1,9 +1,8 @@ -MySpaceIM Protocol Plugin for Libpurple by Jeff Connelly 20070807 - +MySpaceIM Protocol Plugin for libpurple by Jeff Connelly 2007-08-07 Greetings. This package contains a plugin for libpurple (as used in -Pidgin, formerly Gaim) to connect to the new MySpaceIM instant messaging -network and send/receive messages. Functionality is only basic as of yet, +Pidgin, formerly Gaim) to connect to the new MySpaceIM instant messaging +network and send/receive messages. Functionality is only basic as of yet, and this code should be considered alpha quality. This code was initially developed under Google Summer of Code 2007. @@ -15,10 +14,10 @@ Login using your _email address_ you use to login to myspace.com. You can't login using your numeric ID or alias. -To test it out, send a message to yourself (by your username or numeric -uid (email not yet supported)) or tom (6221). In either case you should -get a reply. You should also be able to talk to other MySpaceIM users if -you desire. Replies will always be shown as coming from a user's username, +To test it out, send a message to yourself (by your username or numeric +uid (email not yet supported)) or tom (6221). In either case you should +get a reply. You should also be able to talk to other MySpaceIM users if +you desire. Replies will always be shown as coming from a user's username, even if you IM by email or userid. Feedback welcome. You can IM my test account at "msimprpl" if you feel like it. @@ -26,4 +25,3 @@ Enjoy, -Jeff Connelly msimprpl@xyzzy.cjb.net - diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/myspace/myspace.c --- a/libpurple/protocols/myspace/myspace.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/myspace/myspace.c Mon Mar 02 22:07:59 2009 +0000 @@ -202,7 +202,7 @@ /* Next, see if on buddy list and know uid. */ buddy = purple_find_buddy(session->account, username); if (buddy) { - uid = purple_blist_node_get_int(&buddy->node, "UserID"); + uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID"); } else { uid = 0; } @@ -311,7 +311,7 @@ /* See finch/gnthistory.c */ buddy = cur->data; - uid = purple_blist_node_get_int(&buddy->node, "UserID"); + uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID"); name = purple_buddy_get_name(buddy); if (uid == wanted_uid) @@ -383,12 +383,17 @@ MsimSession *session; MsimUser *user; const gchar *display_name, *headline; + PurpleAccount *account; + PurpleConnection *gc; g_return_val_if_fail(buddy != NULL, NULL); user = msim_get_user_from_buddy(buddy); - session = (MsimSession *)buddy->account->gc->proto_data; + account = purple_buddy_get_account(buddy); + gc = purple_account_get_connection(account); + session = (MsimSession *)gc->proto_data; + g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL); display_name = headline = NULL; @@ -435,8 +440,10 @@ if (PURPLE_BUDDY_IS_ONLINE(buddy)) { MsimSession *session; - - session = (MsimSession *)buddy->account->gc->proto_data; + PurpleAccount *account = purple_buddy_get_account(buddy); + PurpleConnection *gc = purple_account_get_connection(account); + + session = (MsimSession *)gc->proto_data; g_return_if_fail(MSIM_SESSION_VALID(session)); @@ -1036,11 +1043,11 @@ * of numbers in the buddy list. */ if (display_name != NULL) { - purple_blist_node_set_string(&buddy->node, "DisplayName", display_name); + purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name); serv_got_alias(session->gc, username, display_name); } else { serv_got_alias(session->gc, username, - purple_blist_node_get_string(&buddy->node, "DisplayName")); + purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName")); } } g_free(display_name); @@ -1050,7 +1057,7 @@ user->id = uid; /* Keep track of the user ID across sessions */ - purple_blist_node_set_int(&buddy->node, "UserID", uid); + purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid); /* Stores a few fields in the MsimUser, relevant to the buddy itself. * AvatarURL, Headline, ContactID. */ @@ -1374,7 +1381,7 @@ user->id = msim_msg_get_integer(msg, "f"); /* Keep track of the user ID across sessions */ - purple_blist_node_set_int(&buddy->node, "UserID", user->id); + purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id); msim_store_user_info(session, msg, NULL); } else { @@ -2628,10 +2635,14 @@ MsimMessage *msg; MsimMessage *msg_persist; MsimMessage *body; + const char *name, *gname; session = (MsimSession *)gc->proto_data; + name = purple_buddy_get_name(buddy); + gname = group ? purple_group_get_name(group) : NULL; + purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n", - buddy->name, (group && group->name) ? group->name : "(no group)"); + name, gname ? gname : "(no group)"); msg = msim_msg_new( "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, @@ -2640,7 +2651,7 @@ "reason", MSIM_TYPE_STRING, g_strdup(""), NULL); - if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) { + if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) { purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed.")); msim_msg_free(msg); return; @@ -2652,7 +2663,7 @@ body = msim_msg_new( "ContactID", MSIM_TYPE_STRING, g_strdup(""), - "GroupName", MSIM_TYPE_STRING, g_strdup(group->name), + "GroupName", MSIM_TYPE_STRING, g_strdup(gname), "Position", MSIM_TYPE_INTEGER, 1000, "Visibility", MSIM_TYPE_INTEGER, 1, "NickName", MSIM_TYPE_STRING, g_strdup(""), @@ -2673,7 +2684,7 @@ "body", MSIM_TYPE_DICTIONARY, body, NULL); - if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL)) + if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL)) { purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed")); msim_msg_free(msg_persist); @@ -2682,7 +2693,14 @@ msim_msg_free(msg_persist); /* Add to allow list, remove from block list */ - msim_update_blocklist_for_buddy(session, buddy->name, TRUE, FALSE); + msim_update_blocklist_for_buddy(session, name, TRUE, FALSE); +} + +static void +msim_buddy_free(PurpleBuddy *buddy) +{ + msim_user_free(purple_buddy_get_protocol_data(buddy)); + purple_buddy_set_protocol_data(buddy, NULL); } /** @@ -2694,8 +2712,10 @@ MsimSession *session; MsimMessage *delbuddy_msg; MsimMessage *persist_msg; + const char *name; session = (MsimSession *)gc->proto_data; + name = purple_buddy_get_name(buddy); delbuddy_msg = msim_msg_new( "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, @@ -2703,7 +2723,7 @@ /* 'delprofileid' with uid will be inserted here. */ NULL); - if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) { + if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) { purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed")); msim_msg_free(delbuddy_msg); return; @@ -2722,7 +2742,7 @@ "body", MSIM_TYPE_STRING, g_strdup("ContactID="), NULL); - if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) { + if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) { purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed")); msim_msg_free(persist_msg); return; @@ -2734,15 +2754,12 @@ * doesn't seem like it would be necessary, but the official client * does it) */ - if (!msim_update_blocklist_for_buddy(session, buddy->name, FALSE, FALSE)) { + if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) { purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("blocklist command failed")); return; } - if (buddy->proto_data) { - msim_user_free(buddy->proto_data); - buddy->proto_data = NULL; - } + msim_buddy_free(buddy); } /** @@ -2832,13 +2849,6 @@ msim_update_blocklist_for_buddy(session, name, FALSE, FALSE); } -static void -msim_buddy_free(PurpleBuddy *buddy) -{ - msim_user_free(buddy->proto_data); - buddy->proto_data = NULL; -} - /** * Returns a string of a username in canonical form. Basically removes all the * spaces, lowercases the string, and looks up user IDs to usernames. @@ -3112,8 +3122,8 @@ body = msim_msg_get_dictionary(reply, "body"); g_return_if_fail(body != NULL); completed = msim_msg_get_string(body, "Completed"); - g_return_if_fail(body != NULL); msim_msg_free(body); + g_return_if_fail(completed != NULL); if (!g_str_equal(completed, "True")) { purple_debug_info("msim_import_friends_cb", diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/myspace/user.c --- a/libpurple/protocols/myspace/user.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/myspace/user.c Mon Mar 02 22:07:59 2009 +0000 @@ -52,17 +52,14 @@ return NULL; } - if (!buddy->proto_data) { + if (!(user = purple_buddy_get_protocol_data(buddy))) { /* No MsimUser for this buddy; make one. */ user = g_new0(MsimUser, 1); user->buddy = buddy; - user->id = purple_blist_node_get_int((PurpleBlistNode*)buddy, "UserID"); - buddy->proto_data = (gpointer)user; + purple_buddy_set_protocol_data(buddy, user); } - user = (MsimUser *)(buddy->proto_data); - return user; } @@ -111,6 +108,7 @@ { PurplePresence *presence; gchar *str; + guint uid; guint cv; /* Useful to identify the account the tooltip refers to. @@ -119,6 +117,8 @@ purple_notify_user_info_add_pair(user_info, _("User"), user->username); } + uid = purple_blist_node_get_int((PurpleBlistNode *)user->buddy, "UserID"); + /* a/s/l...the vitals */ if (user->age) { char age[16]; @@ -209,9 +209,9 @@ gsize len, const gchar *error_message) { - MsimUser *user; - - user = (MsimUser *)user_data; + MsimUser *user = (MsimUser *)user_data; + const char *name = purple_buddy_get_name(user->buddy); + PurpleAccount *account; purple_debug_info("msim_downloaded_buddy_icon", "Downloaded %" G_GSIZE_FORMAT " bytes\n", len); @@ -219,12 +219,12 @@ if (!url_text) { purple_debug_info("msim_downloaded_buddy_icon", "failed to download icon for %s", - user->buddy->name); + name); return; } - purple_buddy_icons_set_for_user(user->buddy->account, - user->buddy->name, + account = purple_buddy_get_account(user->buddy); + purple_buddy_icons_set_for_user(account, name, g_memdup((gchar *)url_text, len), len, /* Use URL itself as buddy icon "checksum" (TODO: ETag) */ user->image_url); /* checksum */ @@ -247,7 +247,9 @@ static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, const char *new_title) { PurplePresence *presence; + PurpleAccount *account; const char *prev_artist, *prev_title; + const char *name; if (user->buddy == NULL) /* User not on buddy list so nothing to do */ @@ -261,8 +263,11 @@ if (new_title && !*new_title) new_title = NULL; + account = purple_buddy_get_account(user->buddy); + name = purple_buddy_get_name(user->buddy); + if (!new_artist && !new_title) { - purple_prpl_got_user_status_deactive(user->buddy->account, user->buddy->name, "tune"); + purple_prpl_got_user_status_deactive(account, name, "tune"); return; } @@ -282,7 +287,7 @@ if (!new_title) new_title = prev_title; - purple_prpl_got_user_status(user->buddy->account, user->buddy->name, "tune", + purple_prpl_got_user_status(account, name, "tune", PURPLE_TUNE_TITLE, new_title, PURPLE_TUNE_ARTIST, new_artist, NULL); @@ -299,14 +304,16 @@ static void msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user) { + const char *name = user->buddy ? purple_buddy_get_name(user->buddy) : NULL; + if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) { /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */ user->id = atol(value_str); g_free(value_str); if (user->buddy) { - purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name); - purple_blist_node_set_int(&user->buddy->node, "UserID", user->id); + purple_debug_info("msim", "associating uid %s with username %s\n", key_str, name); + purple_blist_node_set_int(PURPLE_BLIST_NODE(user->buddy), "UserID", user->id); } /* Need to store in MsimUser, too? What if not on blist? */ } else if (g_str_equal(key_str, "Age")) { @@ -359,9 +366,8 @@ /* Instead of showing 'no photo' picture, show nothing. */ if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif")) { - purple_buddy_icons_set_for_user(user->buddy->account, - user->buddy->name, - NULL, 0, NULL); + purple_buddy_icons_set_for_user(purple_buddy_get_account(user->buddy), + name, NULL, 0, NULL); return; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/myspace/zap.c --- a/libpurple/protocols/myspace/zap.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/myspace/zap.c Mon Mar 02 22:07:59 2009 +0000 @@ -173,13 +173,13 @@ buddy = (PurpleBuddy *)node; /* Find the session */ - account = buddy->account; + account = purple_buddy_get_account(buddy); gc = purple_account_get_connection(account); session = (MsimSession *)gc->proto_data; zap = GPOINTER_TO_INT(zap_num_ptr); - purple_prpl_send_attention(session->gc, buddy->name, zap); + purple_prpl_send_attention(session->gc, purple_buddy_get_name(buddy), zap); } /** Return menu, if any, for a buddy list node. */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/novell/novell.c --- a/libpurple/protocols/novell/novell.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/novell/novell.c Mon Mar 02 22:07:59 2009 +0000 @@ -293,7 +293,7 @@ nm_user_record_get_display_id(user_record)); alias = purple_buddy_get_alias(buddy); - if (alias == NULL || *alias == '\0' || (strcmp(alias, buddy->name) == 0)) { + if (alias == NULL || *alias == '\0' || (strcmp(alias, purple_buddy_get_name(buddy)) == 0)) { purple_blist_alias_buddy(buddy, nm_user_record_get_full_name(user_record)); @@ -1175,10 +1175,12 @@ const char *status_id; const char *text = NULL; const char *dn; + const char *name; int idle = 0; gboolean loggedin = TRUE; - account = buddy->account; + account = purple_buddy_get_account(buddy); + name = purple_buddy_get_name(buddy); switch (novellstatus) { case NM_STATUS_AVAILABLE: @@ -1205,7 +1207,7 @@ } /* Get status text for the user */ - dn = nm_lookup_dn(user, buddy->name); + dn = nm_lookup_dn(user, name); if (dn) { NMUserRecord *user_record = nm_find_user_record(user, dn); if (user_record) { @@ -1213,9 +1215,9 @@ } } - purple_prpl_got_user_status(account, buddy->name, status_id, + purple_prpl_got_user_status(account, name, status_id, "message", text, NULL); - purple_prpl_got_user_idle(account, buddy->name, + purple_prpl_got_user_idle(account, name, (novellstatus == NM_STATUS_AWAY_IDLE), idle); } @@ -1230,44 +1232,46 @@ PurpleBlistNode *bnode; PurpleGroup *group; PurpleBuddy *buddy; - PurpleBuddyList *blist; GSList *rem_list = NULL; GSList *l; NMFolder *folder = NULL; const char *gname = NULL; - if ((blist = purple_get_blist())) { - for (gnode = blist->root; gnode; gnode = gnode->next) { - if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { + if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) + continue; + group = (PurpleGroup *) gnode; + gname = purple_group_get_name(group); + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { + if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - group = (PurpleGroup *) gnode; - for (cnode = gnode->child; cnode; cnode = cnode->next) { - if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { + if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnode->next) { - if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) - continue; - buddy = (PurpleBuddy *) bnode; - if (buddy->account == user->client_data) { - gname = group->name; - if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) - gname = ""; - folder = nm_find_folder(user, gname); - if (folder == NULL || - !nm_folder_find_contact_by_display_id(folder, buddy->name)) { - rem_list = g_slist_append(rem_list, buddy); - } + buddy = (PurpleBuddy *) bnode; + if (purple_buddy_get_account(buddy) == user->client_data) { + if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) + gname = ""; + folder = nm_find_folder(user, gname); + if (folder == NULL || + !nm_folder_find_contact_by_display_id(folder, purple_buddy_get_name(buddy))) { + rem_list = g_slist_append(rem_list, buddy); } } } } - - if (rem_list) { - for (l = rem_list; l; l = l->next) { - purple_blist_remove_buddy(l->data); - } - g_slist_free(rem_list); + } + + if (rem_list) { + for (l = rem_list; l; l = l->next) { + purple_blist_remove_buddy(l->data); } + g_slist_free(rem_list); } } @@ -1613,14 +1617,14 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); user = gc->proto_data; if (user == NULL) return; /* We should already have a userrecord for the buddy */ - user_record = nm_find_user_record(user, buddy->name); + user_record = nm_find_user_record(user, purple_buddy_get_name(buddy)); if (user_record == NULL) return; @@ -2538,7 +2542,7 @@ NMContact *contact; NMUser *user; NMERR_T rc = NM_OK; - const char *alias, *gname; + const char *alias, *gname, *bname; if (gc == NULL || buddy == NULL || group == NULL) return; @@ -2554,22 +2558,22 @@ return; contact = nm_create_contact(); - nm_contact_set_dn(contact, buddy->name); + nm_contact_set_dn(contact, purple_buddy_get_name(buddy)); /* Remove the PurpleBuddy (we will add it back after adding it * to the server side list). Save the alias if there is one. */ alias = purple_buddy_get_alias(buddy); - if (alias && strcmp(alias, buddy->name)) + bname = purple_buddy_get_name(buddy); + if (alias && strcmp(alias, bname)) nm_contact_set_display_name(contact, alias); purple_blist_remove_buddy(buddy); buddy = NULL; - if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) { + gname = purple_group_get_name(group); + if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) { gname = ""; - } else { - gname = group->name; } folder = nm_find_folder(user, gname); @@ -2603,11 +2607,10 @@ return; user = (NMUser *) gc->proto_data; - if (user && (dn = nm_lookup_dn(user, buddy->name))) { - if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) { + if (user && (dn = nm_lookup_dn(user, purple_buddy_get_name(buddy)))) { + gname = purple_group_get_name(group); + if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) { gname = ""; - } else { - gname = group->name; } folder = nm_find_folder(user, gname); if (folder) { @@ -2637,7 +2640,7 @@ user = (NMUser *) gc->proto_data; if (user) { - NMFolder *folder = nm_find_folder(user, group->name); + NMFolder *folder = nm_find_folder(user, purple_group_get_name(group)); if (folder) { rc = nm_send_remove_folder(user, folder, @@ -2684,9 +2687,11 @@ } if (group) { + const char *balias; buddy = purple_find_buddy_in_group(user->client_data, name, group); - if (buddy && strcmp(buddy->alias, alias)) + balias = buddy ? purple_buddy_get_local_buddy_alias(buddy) : NULL; + if (balias && strcmp(balias, alias)) purple_blist_alias_buddy(buddy, alias); } @@ -2777,8 +2782,9 @@ user = gc->proto_data; if (user) { + const char *gname = purple_group_get_name(group); /* Does new folder exist already? */ - if (nm_find_folder(user, group->name)) { + if (nm_find_folder(user, gname)) { /* purple_blist_rename_group() adds the buddies * to the new group and removes the old group... * so there is nothing more to do here. @@ -2793,7 +2799,7 @@ folder = nm_find_folder(user, old_name); if (folder) { - rc = nm_send_rename_folder(user, folder, group->name, + rc = nm_send_rename_folder(user, folder, gname, _rename_folder_resp_cb, NULL); _check_for_disconnect(user, rc); } @@ -2819,12 +2825,12 @@ if (buddy == NULL) return; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); if (gc == NULL || (user = gc->proto_data) == NULL) return; if (PURPLE_BUDDY_IS_ONLINE(buddy)) { - user_record = nm_find_user_record(user, buddy->name); + user_record = nm_find_user_record(user, purple_buddy_get_name(buddy)); if (user_record) { status = nm_user_record_get_status(user_record); text = nm_user_record_get_status_text(user_record); @@ -2923,14 +2929,16 @@ { const char *text = NULL; const char *dn = NULL; - - if (buddy && buddy->account) { - PurpleConnection *gc = purple_account_get_connection(buddy->account); + PurpleAccount *account; + + account = buddy ? purple_buddy_get_account(buddy) : NULL; + if (buddy && account) { + PurpleConnection *gc = purple_account_get_connection(account); if (gc && gc->proto_data) { NMUser *user = gc->proto_data; - dn = nm_lookup_dn(user, buddy->name); + dn = nm_lookup_dn(user, purple_buddy_get_name(buddy)); if (dn) { NMUserRecord *user_record = nm_find_user_record(user, dn); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/null/README --- a/libpurple/protocols/null/README Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/null/README Mon Mar 02 22:07:59 2009 +0000 @@ -28,11 +28,10 @@ ----------------------- To build, just run ./configure as usual in the root directory of the pidgin -source distribution. Then cd libpurple/protocols/null and type make. To -install, copy libnull.la and .libs/libnull.so into your ~/.purple/plugins -directory. Then run Pidgin. +source distribution. Then cd libpurple/protocols/null and then make. To +install, run make install. Then run Pidgin. -To build nullprpl on Windows (with Cygwin/MinGW), use Makefile.mingw. +To build nullprpl on Windows (with Cygwin/MinGW), use: make -f Makefile.mingw ----- USAGE diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/null/nullprpl.c --- a/libpurple/protocols/null/nullprpl.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/null/nullprpl.c Mon Mar 02 22:07:59 2009 +0000 @@ -220,25 +220,7 @@ */ static const char *nullprpl_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) { - /* shamelessly steal (er, borrow) the meanwhile protocol icon. it's cute! */ - return "meanwhile"; -} - -static const char *nullprpl_list_emblem(PurpleBuddy *buddy) -{ - const char* emblem; - - if (get_nullprpl_gc(buddy->name)) { - PurplePresence *presence = purple_buddy_get_presence(buddy); - PurpleStatus *status = purple_presence_get_active_status(presence); - emblem = purple_status_get_name(status); - } else { - emblem = "offline"; - } - - purple_debug_info("nullprpl", "using emblem %s for %s's buddy %s\n", - emblem, buddy->account->username, buddy->name); - return emblem; + return "null"; } static char *nullprpl_status_text(PurpleBuddy *buddy) { @@ -304,22 +286,22 @@ acct->username, NULL_STATUS_ONLINE, NULL_STATUS_AWAY, NULL_STATUS_OFFLINE); - type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, NULL_STATUS_ONLINE, - NULL_STATUS_ONLINE, TRUE); - purple_status_type_add_attr(type, "message", _("Online"), - purple_value_new(PURPLE_TYPE_STRING)); + type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, + NULL_STATUS_ONLINE, NULL, TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_prepend(types, type); - type = purple_status_type_new(PURPLE_STATUS_AWAY, NULL_STATUS_AWAY, - NULL_STATUS_AWAY, TRUE); - purple_status_type_add_attr(type, "message", _("Away"), - purple_value_new(PURPLE_TYPE_STRING)); + type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, + NULL_STATUS_AWAY, NULL, TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_prepend(types, type); - - type = purple_status_type_new(PURPLE_STATUS_OFFLINE, NULL_STATUS_OFFLINE, - NULL_STATUS_OFFLINE, TRUE); - purple_status_type_add_attr(type, "message", _("Offline"), - purple_value_new(PURPLE_TYPE_STRING)); + + type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE, + NULL_STATUS_OFFLINE, NULL, TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_prepend(types, type); return g_list_reverse(types); @@ -1073,7 +1055,7 @@ PURPLE_ICON_SCALE_DISPLAY, /* scale_rules */ }, nullprpl_list_icon, /* list_icon */ - nullprpl_list_emblem, /* list_emblem */ + NULL, /* list_emblem */ nullprpl_status_text, /* status_text */ nullprpl_tooltip_text, /* tooltip_text */ nullprpl_status_types, /* status_types */ @@ -1130,24 +1112,24 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* padding... */ - NULL, - NULL, - sizeof(PurplePluginProtocolInfo), /* struct_size */ - NULL + NULL, /* unregister_user */ + NULL, /* send_attention */ + NULL, /* attention_types */ + sizeof(PurplePluginProtocolInfo), /* struct_size */ + NULL, /* get_account_text_table */ }; static void nullprpl_init(PurplePlugin *plugin) { /* see accountopt.h for information about user splits and protocol options */ PurpleAccountUserSplit *split = purple_account_user_split_new( - _("Example user split (unused)"), /* text shown to user */ - "default", /* default value */ - '@'); /* field separator */ + _("Example user split"), /* text shown to user */ + "default", /* default value */ + '@'); /* field separator */ PurpleAccountOption *option = purple_account_option_string_new( - _("Example option (unused)"), /* text shown to user */ - "example", /* pref name */ - "default"); /* default value */ + _("Example option"), /* text shown to user */ + "example", /* pref name */ + "default"); /* default value */ purple_debug_info("nullprpl", "starting up\n"); @@ -1156,13 +1138,13 @@ /* register whisper chat command, /msg */ purple_cmd_register("msg", - "ws", /* args: recipient and message */ + "ws", /* args: recipient and message */ PURPLE_CMD_P_DEFAULT, /* priority */ PURPLE_CMD_FLAG_CHAT, "prpl-null", send_whisper, "msg <username> <message>: send a private message, aka a whisper", - NULL); /* userdata */ + NULL); /* userdata */ /* get ready to store offline messages */ goffline_messages = g_hash_table_new_full(g_str_hash, /* hash fn */ @@ -1189,12 +1171,12 @@ NULL, /* dependencies */ PURPLE_PRIORITY_DEFAULT, /* priority */ NULLPRPL_ID, /* id */ - "Nullprpl", /* name */ - "0.3", /* version */ - "Null Protocol Plugin", /* summary */ - "Null Protocol Plugin", /* description */ - "Ryan Barrett ", /* author */ - "http://snarfed.org/space/pidgin+null+protocol+plugin", /* homepage */ + "Null - Testing Plugin", /* name */ + DISPLAY_VERSION, /* version */ + N_("Null Protocol Plugin"), /* summary */ + N_("Null Protocol Plugin"), /* description */ + NULL, /* author */ + PURPLE_WEBSITE, /* homepage */ NULL, /* load */ NULL, /* unload */ nullprpl_destroy, /* destroy */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_admin.c --- a/libpurple/protocols/oscar/family_admin.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_admin.c Mon Mar 02 22:07:59 2009 +0000 @@ -21,9 +21,8 @@ /* * Family 0x0007 - Account Administration. * - * Used for stuff like changing the formating of your screen name, changing your + * Used for stuff like changing the formating of your username, changing your * email address, requesting an account confirmation email, getting account info, - * */ #include "oscar.h" @@ -32,7 +31,7 @@ * Subtype 0x0002 - Request a bit of account info. * * Info should be one of the following: - * 0x0001 - Screen name formatting + * 0x0001 - Username formatting * 0x0011 - Email address * 0x0013 - Unknown */ @@ -111,7 +110,7 @@ } /** - * Subtype 0x0004 - Set screenname formatting. + * Subtype 0x0004 - Set the formatting of username (change spaces and capitalization). */ void aim_admin_setnick(OscarData *od, FlapConnection *conn, const char *newnick) diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_alert.c --- a/libpurple/protocols/oscar/family_alert.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_alert.c Mon Mar 02 22:07:59 2009 +0000 @@ -22,10 +22,10 @@ * Family 0x0018 - Email notification * * Used for being alerted when the email address(es) associated with - * your screen name get new electronic-m. For normal AIM accounts, you - * get the email address screenname@netscape.net. AOL accounts have - * screenname@aol.com, and can also activate a netscape.net account. - * + * your username get new electronic-m. For normal AIM accounts, you + * get the email address username@netscape.net. AOL accounts have + * username@aol.com, and can also activate a netscape.net account. + * Note: This information might be out of date. */ #include "oscar.h" @@ -88,7 +88,7 @@ * but this is coded so it will handle that, and handle it well. * This tells you if you have unread mail or not, the URL you * should use to access that mail, and the domain name for the - * email account (screenname@domainname.com). If this is the + * email account (username@domainname.com). If this is the * first 0x0007 SNAC you've received since you signed on, or if * this is just a periodic status update, this will also contain * the number of unread emails that you have. diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_auth.c --- a/libpurple/protocols/oscar/family_auth.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_auth.c Mon Mar 02 22:07:59 2009 +0000 @@ -229,7 +229,7 @@ /* Truncate ICQ and AOL passwords, if necessary */ password_len = strlen(password); - if (aim_snvalid_icq(sn) && (password_len > MAXICQPASSLEN)) + if (oscar_util_valid_name_icq(sn) && (password_len > MAXICQPASSLEN)) password_len = MAXICQPASSLEN; else if (truncate_pass && password_len > 8) password_len = 8; @@ -293,11 +293,11 @@ tlvlist = aim_tlvlist_read(bs); /* - * No matter what, we should have a screen name. + * No matter what, we should have a username. */ if (aim_tlv_gettlv(tlvlist, 0x0001, 1)) { - info->sn = aim_tlv_getstr(tlvlist, 0x0001, 1); - purple_connection_set_display_name(od->gc, info->sn); + info->bn = aim_tlv_getstr(tlvlist, 0x0001, 1); + purple_connection_set_display_name(od->gc, info->bn); } /* @@ -394,7 +394,7 @@ #if 0 /* - * Unknown. Seen on an @mac.com screen name with value of 0x003f + * Unknown. Seen on an @mac.com username with value of 0x003f */ if (aim_tlv_gettlv(tlvlist, 0x0055, 1)) { /* Unhandled */ @@ -421,7 +421,7 @@ * - connect * - server sends flap version * - client sends flap version - * - client sends screen name (17/6) + * - client sends username (17/6) * - server sends hash key (17/7) * - client sends auth request (17/2 -- aim_send_login) * - server yells @@ -460,7 +460,7 @@ * Subtype 0x0006 * * In AIM 3.5 protocol, the first stage of login is to request login from the - * Authorizer, passing it the screen name for verification. If the name is + * Authorizer, passing it the username for verification. If the name is * invalid, a 0017/0003 is spit back, with the standard error contents. If * valid, a 0017/0007 comes back, which is the signal to send it the main * login command (0017/0002). @@ -527,7 +527,7 @@ /* * If the truncate_pass TLV exists then we should truncate the * user's password to 8 characters. This flag is sent to us - * when logging in with an AOL user's screen name. + * when logging in with an AOL user's username. */ truncate_pass = aim_tlv_gettlv(tlvlist, 0x0026, 1) != NULL; @@ -597,7 +597,7 @@ { if (od->authinfo != NULL) { - g_free(od->authinfo->sn); + g_free(od->authinfo->bn); g_free(od->authinfo->bosip); g_free(od->authinfo->errorurl); g_free(od->authinfo->email); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_bart.c --- a/libpurple/protocols/oscar/family_bart.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_bart.c Mon Mar 02 22:07:59 2009 +0000 @@ -90,26 +90,26 @@ * Subtype 0x0004 - Request someone's icon. * * @param od The oscar session. - * @param sn The screen name of the person who's icon you are requesting. + * @param bn The name of the buddy whose icon you are requesting. * @param iconcsum The MD5 checksum of the icon you are requesting. * @param iconcsumlen Length of the MD5 checksum given above. Should be 10 bytes. * @return Return 0 if no errors, otherwise return the error number. */ int -aim_bart_request(OscarData *od, const char *sn, guint8 iconcsumtype, const guint8 *iconcsum, guint16 iconcsumlen) +aim_bart_request(OscarData *od, const char *bn, guint8 iconcsumtype, const guint8 *iconcsum, guint16 iconcsumlen) { FlapConnection *conn; ByteStream bs; aim_snacid_t snacid; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !sn || !strlen(sn) || !iconcsum || !iconcsumlen) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !bn || !strlen(bn) || !iconcsum || !iconcsumlen) return -EINVAL; - byte_stream_new(&bs, 1+strlen(sn) + 4 + 1+iconcsumlen); + byte_stream_new(&bs, 1+strlen(bn) + 4 + 1+iconcsumlen); - /* Screen name */ - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + /* Buddy name */ + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); /* Some numbers. You like numbers, right? */ byte_stream_put8(&bs, 0x01); @@ -138,11 +138,11 @@ { int ret = 0; aim_rxcallback_t userfunc; - char *sn; + char *bn; guint16 flags, iconlen; guint8 iconcsumtype, iconcsumlen, *iconcsum, *icon; - sn = byte_stream_getstr(bs, byte_stream_get8(bs)); + bn = byte_stream_getstr(bs, byte_stream_get8(bs)); flags = byte_stream_get16(bs); iconcsumtype = byte_stream_get8(bs); iconcsumlen = byte_stream_get8(bs); @@ -151,9 +151,9 @@ icon = byte_stream_getraw(bs, iconlen); if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, sn, iconcsumtype, iconcsum, iconcsumlen, icon, iconlen); + ret = userfunc(od, conn, frame, bn, iconcsumtype, iconcsum, iconcsumlen, icon, iconlen); - g_free(sn); + g_free(bn); g_free(iconcsum); g_free(icon); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_bos.c --- a/libpurple/protocols/oscar/family_bos.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_bos.c Mon Mar 02 22:07:59 2009 +0000 @@ -94,8 +94,7 @@ * AIM_VISIBILITYCHANGE_DENYADD: Hides you from provided list of names * AIM_VISIBILITYCHANGE_DENYREMOVE: Lets list see you again * - * list should be a list of - * screen names in the form "Screen Name One&ScreenNameTwo&" etc. + * list should be a list of "Buddy Name One&BuddyNameTwo&" etc. * * Equivelents to options in WinAIM: * - Allow all users to contact me: Send an AIM_VISIBILITYCHANGE_DENYADD diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_buddy.c --- a/libpurple/protocols/oscar/family_buddy.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_buddy.c Mon Mar 02 22:07:59 2009 +0000 @@ -121,7 +121,7 @@ * * This just builds the "set buddy list" command then queues it. * - * buddy_list = "Screen Name One&ScreenNameTwo&"; + * buddy_list = "Buddy Name One&BuddyNameTwo&"; * * XXX Clean this up. * @@ -222,7 +222,7 @@ ret = userfunc(od, conn, frame, &userinfo); if (snac->subtype == SNAC_SUBTYPE_BUDDY_ONCOMING && userinfo.flags & AIM_FLAG_AWAY) - aim_locate_autofetch_away_message(od, userinfo.sn); + aim_locate_autofetch_away_message(od, userinfo.bn); aim_info_free(&userinfo); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_feedbag.c --- a/libpurple/protocols/oscar/family_feedbag.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_feedbag.c Mon Mar 02 22:07:59 2009 +0000 @@ -243,7 +243,7 @@ if (!cur1->name && cur2->name) return 6; - if (cur1->name && cur2->name && aim_sncmp(cur1->name, cur2->name)) + if (cur1->name && cur2->name && oscar_util_name_compare(cur1->name, cur2->name)) return 7; if (cur1->gid != cur2->gid) @@ -285,8 +285,8 @@ } /** - * Locally find an item given a group name, screen name, and type. If group name - * and screen name are null, then just return the first item of the given type. + * Locally find an item given a group name, buddy name, and type. If group name + * and buddy name are null, then just return the first item of the given type. * * @param list A pointer to the current list of items. * @param gn The group name of the desired item. @@ -294,31 +294,31 @@ * @param type The type of the desired item. * @return Return a pointer to the item if found, else return NULL. */ -struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, guint16 type) +struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *bn, guint16 type) { struct aim_ssi_item *cur; if (!list) return NULL; - if (gn && sn) { /* For finding buddies in groups */ + if (gn && bn) { /* For finding buddies in groups */ for (cur=list; cur; cur=cur->next) - if ((cur->type == type) && (cur->name) && !(aim_sncmp(cur->name, sn))) { + if ((cur->type == type) && (cur->name) && !(oscar_util_name_compare(cur->name, bn))) { struct aim_ssi_item *curg; for (curg=list; curg; curg=curg->next) - if ((curg->type == AIM_SSI_TYPE_GROUP) && (curg->gid == cur->gid) && (curg->name) && !(aim_sncmp(curg->name, gn))) + if ((curg->type == AIM_SSI_TYPE_GROUP) && (curg->gid == cur->gid) && (curg->name) && !(oscar_util_name_compare(curg->name, gn))) return cur; } } else if (gn) { /* For finding groups */ for (cur=list; cur; cur=cur->next) { - if ((cur->type == type) && (cur->bid == 0x0000) && (cur->name) && !(aim_sncmp(cur->name, gn))) { + if ((cur->type == type) && (cur->bid == 0x0000) && (cur->name) && !(oscar_util_name_compare(cur->name, gn))) { return cur; } } - } else if (sn) { /* For finding permits, denies, and ignores */ + } else if (bn) { /* For finding permits, denies, and ignores */ for (cur=list; cur; cur=cur->next) { - if ((cur->type == type) && (cur->name) && !(aim_sncmp(cur->name, sn))) { + if ((cur->type == type) && (cur->name) && !(oscar_util_name_compare(cur->name, bn))) { return cur; } } @@ -336,14 +336,14 @@ * Check if the given buddy exists in any group in the buddy list. * * @param list A pointer to the current list of items. - * @param sn The group name of the desired item. + * @param bn The group name of the desired item. * @return Return a pointer to the name of the item if found, else return NULL; */ -struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn) +struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *bn) { - if (!sn) + if (!bn) return NULL; - return aim_ssi_itemlist_finditem(list, NULL, sn, AIM_SSI_TYPE_BUDDY); + return aim_ssi_itemlist_finditem(list, NULL, bn, AIM_SSI_TYPE_BUDDY); } /** @@ -353,12 +353,12 @@ * @param bn The buddy name of the desired item. * @return Return a pointer to the name of the item if found, else return NULL; */ -char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn) +char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *bn) { struct aim_ssi_item *cur, *curg; - if (!list || !sn) + if (!list || !bn) return NULL; - if (!(cur = aim_ssi_itemlist_exists(list, sn))) + if (!(cur = aim_ssi_itemlist_exists(list, bn))) return NULL; if (!(curg = aim_ssi_itemlist_find(list, cur->gid, 0x0000))) return NULL; @@ -406,14 +406,14 @@ * * @param list A pointer to the current list of items. * @param gn The group of the buddy. - * @param sn The name of the buddy. + * @param bn The name of the buddy. * @return A pointer to a NULL terminated string that is the buddy's * alias, or NULL if the buddy has no alias. You should free * this returned value! */ -char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn) +char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *bn) { - struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY); + struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY); if (cur) { aim_tlv_t *tlv = aim_tlv_gettlv(cur->data, 0x0131, 1); if (tlv && tlv->length) @@ -427,14 +427,14 @@ * * @param list A pointer to the current list of items. * @param gn The group of the buddy. - * @param sn The name of the buddy. + * @param bn The name of the buddy. * @return A pointer to a NULL terminated string that is the buddy's * comment, or NULL if the buddy has no comment. You should free * this returned value! */ -char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *sn) +char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *bn) { - struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY); + struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY); if (cur) { aim_tlv_t *tlv = aim_tlv_gettlv(cur->data, 0x013c, 1); if (tlv && tlv->length) { @@ -449,12 +449,12 @@ * * @param list A pointer to the current list of items. * @param gn The group of the buddy. - * @param sn The name of the buddy. + * @param bn The name of the buddy. * @return 1 if you are waiting for authorization; 0 if you are not */ -gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn) +gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *bn) { - struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY); + struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY); if (cur) { if (aim_tlv_gettlv(cur->data, 0x0066, 1)) return TRUE; @@ -678,7 +678,7 @@ cur2 = cur->next; while (cur2) { next2 = cur2->next; - if ((cur->type == cur2->type) && (cur->gid == cur2->gid) && (cur->name != NULL) && (cur2->name != NULL) && (!aim_sncmp(cur->name, cur2->name))) { + if ((cur->type == cur2->type) && (cur->gid == cur2->gid) && (cur->name != NULL) && (cur2->name != NULL) && (!oscar_util_name_compare(cur->name, cur2->name))) { aim_ssi_itemlist_del(&od->ssi.local, cur2); } cur2 = next2; @@ -916,16 +916,16 @@ * @param od The oscar odion. * @param oldgn The group that the buddy is currently in. * @param newgn The group that the buddy should be moved in to. - * @param sn The name of the buddy to be moved. + * @param bn The name of the buddy to be moved. * @return Return 0 if no errors, otherwise return the error number. */ -int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *sn) +int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *bn) { struct aim_ssi_item *buddy; GSList *data; /* Find the buddy */ - buddy = aim_ssi_itemlist_finditem(od->ssi.local, oldgn, sn, AIM_SSI_TYPE_BUDDY); + buddy = aim_ssi_itemlist_finditem(od->ssi.local, oldgn, bn, AIM_SSI_TYPE_BUDDY); if (buddy == NULL) return -EINVAL; @@ -933,10 +933,10 @@ data = aim_tlvlist_copy(buddy->data); /* Delete the old item */ - aim_ssi_delbuddy(od, sn, oldgn); + aim_ssi_delbuddy(od, bn, oldgn); /* Add the new item using the EXACT SAME TLV list */ - aim_ssi_addbuddy(od, sn, newgn, data, NULL, NULL, NULL, FALSE); + aim_ssi_addbuddy(od, bn, newgn, data, NULL, NULL, NULL, FALSE); return 0; } @@ -946,19 +946,19 @@ * * @param od The oscar odion. * @param gn The group that the buddy is currently in. - * @param sn The screen name of the buddy. + * @param bn The name of the buddy. * @param alias The new alias for the buddy, or NULL if you want to remove * a buddy's comment. * @return Return 0 if no errors, otherwise return the error number. */ -int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char *alias) +int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *bn, const char *alias) { struct aim_ssi_item *tmp; - if (!od || !gn || !sn) + if (!od || !gn || !bn) return -EINVAL; - if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, sn, AIM_SSI_TYPE_BUDDY))) + if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, bn, AIM_SSI_TYPE_BUDDY))) return -EINVAL; /* Either add or remove the 0x0131 TLV from the TLV chain */ @@ -976,19 +976,19 @@ * * @param od The oscar odion. * @param gn The group that the buddy is currently in. - * @param sn The screen name of the buddy. + * @param bn The name of the buddy. * @param alias The new comment for the buddy, or NULL if you want to remove * a buddy's comment. * @return Return 0 if no errors, otherwise return the error number. */ -int aim_ssi_editcomment(OscarData *od, const char *gn, const char *sn, const char *comment) +int aim_ssi_editcomment(OscarData *od, const char *gn, const char *bn, const char *comment) { struct aim_ssi_item *tmp; - if (!od || !gn || !sn) + if (!od || !gn || !bn) return -EINVAL; - if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, sn, AIM_SSI_TYPE_BUDDY))) + if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, bn, AIM_SSI_TYPE_BUDDY))) return -EINVAL; /* Either add or remove the 0x0131 TLV from the TLV chain */ @@ -1681,20 +1681,20 @@ * Authorizes a contact so they can add you to their contact list. * */ -int aim_ssi_sendauth(OscarData *od, char *sn, char *msg) +int aim_ssi_sendauth(OscarData *od, char *bn, char *msg) { FlapConnection *conn; ByteStream bs; aim_snacid_t snacid; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn) return -EINVAL; - byte_stream_new(&bs, 1+strlen(sn) + 2+(msg ? strlen(msg)+1 : 0) + 2); + byte_stream_new(&bs, 1+strlen(bn) + 2+(msg ? strlen(msg)+1 : 0) + 2); - /* Screen name */ - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + /* Username */ + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); /* Message (null terminated) */ byte_stream_put16(&bs, msg ? strlen(msg) : 0); @@ -1722,13 +1722,13 @@ int ret = 0; aim_rxcallback_t userfunc; guint16 tmp; - char *sn, *msg; + char *bn, *msg; - /* Read screen name */ + /* Read buddy name */ if ((tmp = byte_stream_get8(bs))) - sn = byte_stream_getstr(bs, tmp); + bn = byte_stream_getstr(bs, tmp); else - sn = NULL; + bn = NULL; /* Read message (null terminated) */ if ((tmp = byte_stream_get16(bs))) @@ -1740,9 +1740,9 @@ tmp = byte_stream_get16(bs); if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, sn, msg); + ret = userfunc(od, conn, frame, bn, msg); - g_free(sn); + g_free(bn); g_free(msg); return ret; @@ -1755,20 +1755,20 @@ * granted, denied, or dropped. * */ -int aim_ssi_sendauthrequest(OscarData *od, char *sn, const char *msg) +int aim_ssi_sendauthrequest(OscarData *od, char *bn, const char *msg) { FlapConnection *conn; ByteStream bs; aim_snacid_t snacid; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn) return -EINVAL; - byte_stream_new(&bs, 1+strlen(sn) + 2+(msg ? strlen(msg)+1 : 0) + 2); + byte_stream_new(&bs, 1+strlen(bn) + 2+(msg ? strlen(msg)+1 : 0) + 2); - /* Screen name */ - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + /* Username */ + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); /* Message (null terminated) */ byte_stream_put16(&bs, msg ? strlen(msg) : 0); @@ -1796,13 +1796,13 @@ int ret = 0; aim_rxcallback_t userfunc; guint16 tmp; - char *sn, *msg; + char *bn, *msg; - /* Read screen name */ + /* Read buddy name */ if ((tmp = byte_stream_get8(bs))) - sn = byte_stream_getstr(bs, tmp); + bn = byte_stream_getstr(bs, tmp); else - sn = NULL; + bn = NULL; /* Read message (null terminated) */ if ((tmp = byte_stream_get16(bs))) @@ -1814,9 +1814,9 @@ tmp = byte_stream_get16(bs); if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, sn, msg); + ret = userfunc(od, conn, frame, bn, msg); - g_free(sn); + g_free(bn); g_free(msg); return ret; @@ -1832,20 +1832,20 @@ * if reply=0x01 then grant * */ -int aim_ssi_sendauthreply(OscarData *od, char *sn, guint8 reply, const char *msg) +int aim_ssi_sendauthreply(OscarData *od, char *bn, guint8 reply, const char *msg) { FlapConnection *conn; ByteStream bs; aim_snacid_t snacid; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn) return -EINVAL; - byte_stream_new(&bs, 1+strlen(sn) + 1 + 2+(msg ? (strlen(msg)+1) : 0) + 2); + byte_stream_new(&bs, 1+strlen(bn) + 1 + 2+(msg ? (strlen(msg)+1) : 0) + 2); - /* Screen name */ - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + /* Username */ + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); /* Grant or deny */ byte_stream_put8(&bs, reply); @@ -1880,13 +1880,13 @@ aim_rxcallback_t userfunc; guint16 tmp; guint8 reply; - char *sn, *msg; + char *bn, *msg; - /* Read screen name */ + /* Read buddy name */ if ((tmp = byte_stream_get8(bs))) - sn = byte_stream_getstr(bs, tmp); + bn = byte_stream_getstr(bs, tmp); else - sn = NULL; + bn = NULL; /* Read reply */ reply = byte_stream_get8(bs); @@ -1901,9 +1901,9 @@ tmp = byte_stream_get16(bs); if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, sn, reply, msg); + ret = userfunc(od, conn, frame, bn, reply, msg); - g_free(sn); + g_free(bn); g_free(msg); return ret; @@ -1917,18 +1917,18 @@ int ret = 0; aim_rxcallback_t userfunc; guint16 tmp; - char *sn; + char *bn; - /* Read screen name */ + /* Read buddy name */ if ((tmp = byte_stream_get8(bs))) - sn = byte_stream_getstr(bs, tmp); + bn = byte_stream_getstr(bs, tmp); else - sn = NULL; + bn = NULL; if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, sn); + ret = userfunc(od, conn, frame, bn); - g_free(sn); + g_free(bn); return ret; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_icbm.c --- a/libpurple/protocols/oscar/family_icbm.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_icbm.c Mon Mar 02 22:07:59 2009 +0000 @@ -61,16 +61,16 @@ * @param bs The bstream to write the ICBM header to. * @param c c is for cookie, and cookie is for me. * @param channel The ICBM channel (1 through 4). - * @param sn Null-terminated scrizeen nizame. + * @param bn Null-terminated scrizeen nizame. * @return The number of bytes written. It's really not useful. */ -static int aim_im_puticbm(ByteStream *bs, const guchar *c, guint16 channel, const char *sn) +static int aim_im_puticbm(ByteStream *bs, const guchar *c, guint16 channel, const char *bn) { byte_stream_putraw(bs, c, 8); byte_stream_put16(bs, channel); - byte_stream_put8(bs, strlen(sn)); - byte_stream_putstr(bs, sn); - return 8+2+1+strlen(sn); + byte_stream_put8(bs, strlen(bn)); + byte_stream_putstr(bs, bn); + return 8+2+1+strlen(bn); } /** @@ -324,7 +324,7 @@ aim_icbm_makecookie(cookie); /* ICBM header */ - aim_im_puticbm(&data, cookie, 0x0001, args->destsn); + aim_im_puticbm(&data, cookie, 0x0001, args->destbn); /* Message TLV (type 0x0002) */ byte_stream_put16(&data, 0x0002); @@ -410,7 +410,7 @@ } /* XXX - should be optional */ - snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, args->destsn, strlen(args->destsn)+1); + snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, args->destbn, strlen(args->destbn)+1); flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &data); byte_stream_destroy(&data); @@ -431,11 +431,11 @@ * that requires an explicit message length. Use aim_im_sendch1_ext(). * */ -int aim_im_sendch1(OscarData *od, const char *sn, guint16 flags, const char *msg) +int aim_im_sendch1(OscarData *od, const char *bn, guint16 flags, const char *msg) { struct aim_sendimext_args args; - args.destsn = sn; + args.destbn = bn; args.flags = flags; args.msg = msg; args.msglen = strlen(msg); @@ -451,7 +451,7 @@ /* * Subtype 0x0006 - Send a chat invitation. */ -int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, guint16 exchange, const char *roomname, guint16 instance) +int aim_im_sendch2_chatinvite(OscarData *od, const char *bn, const char *msg, guint16 exchange, const char *roomname, guint16 instance) { FlapConnection *conn; ByteStream bs; @@ -465,18 +465,18 @@ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM))) return -EINVAL; - if (!sn || !msg || !roomname) + if (!bn || !msg || !roomname) return -EINVAL; aim_icbm_makecookie(cookie); - byte_stream_new(&bs, 1142+strlen(sn)+strlen(roomname)+strlen(msg)); - - snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, sn, strlen(sn)+1); + byte_stream_new(&bs, 1142+strlen(bn)+strlen(roomname)+strlen(msg)); + + snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, bn, strlen(bn)+1); /* XXX should be uncached by an unwritten 'invite accept' handler */ priv = g_malloc(sizeof(struct aim_invite_priv)); - priv->sn = g_strdup(sn); + priv->bn = g_strdup(bn); priv->roomname = g_strdup(roomname); priv->exchange = exchange; priv->instance = instance; @@ -487,7 +487,7 @@ g_free(priv); /* ICBM Header */ - aim_im_puticbm(&bs, cookie, 0x0002, sn); + aim_im_puticbm(&bs, cookie, 0x0002, bn); /* * TLV t(0005) @@ -532,7 +532,7 @@ * This is also performance sensitive. (If you can believe it...) * */ -int aim_im_sendch2_icon(OscarData *od, const char *sn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum) +int aim_im_sendch2_icon(OscarData *od, const char *bn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum) { FlapConnection *conn; ByteStream bs; @@ -542,17 +542,17 @@ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM))) return -EINVAL; - if (!sn || !icon || (iconlen <= 0) || (iconlen >= MAXICONLEN)) + if (!bn || !icon || (iconlen <= 0) || (iconlen >= MAXICONLEN)) return -EINVAL; aim_icbm_makecookie(cookie); - byte_stream_new(&bs, 8+2+1+strlen(sn)+2+2+2+8+16+2+2+2+2+2+2+2+4+4+4+iconlen+strlen(AIM_ICONIDENT)+2+2); + byte_stream_new(&bs, 8+2+1+strlen(bn)+2+2+2+8+16+2+2+2+2+2+2+2+4+4+4+iconlen+strlen(AIM_ICONIDENT)+2+2); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0002, sn); + aim_im_puticbm(&bs, cookie, 0x0002, bn); /* * TLV t(0005) @@ -623,7 +623,7 @@ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM))) return -EINVAL; - if (!args || !args->destsn || !args->rtfmsg) + if (!args || !args->destbn || !args->rtfmsg) return -EINVAL; servdatalen = 2+2+16+2+4+1+2 + 2+2+4+4+4 + 2+4+2+strlen(args->rtfmsg)+1 + 4+4+4+strlen(rtfcap)+1; @@ -635,7 +635,7 @@ snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0002, args->destsn); + aim_im_puticbm(&bs, cookie, 0x0002, args->destbn); /* TLV t(0005) - Encompasses everything below. */ byte_stream_put16(&bs, 0x0005); @@ -708,12 +708,12 @@ if (conn == NULL) return; - byte_stream_new(&bs, 118+strlen(peer_conn->sn)); + byte_stream_new(&bs, 118+strlen(peer_conn->bn)); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn); + aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->bn); aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); @@ -757,12 +757,12 @@ if (conn == NULL) return; - byte_stream_new(&bs, 11+strlen(peer_conn->sn) + 4+2+8+16); + byte_stream_new(&bs, 11+strlen(peer_conn->bn) + 4+2+8+16); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn); + aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->bn); byte_stream_put16(&bs, 0x0005); byte_stream_put16(&bs, 0x001a); @@ -783,7 +783,7 @@ * "I want to connect through a proxy server" */ void -aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber) +aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber) { FlapConnection *conn; ByteStream bs; @@ -795,12 +795,12 @@ if (conn == NULL) return; - byte_stream_new(&bs, 246+strlen(sn)); + byte_stream_new(&bs, 246+strlen(bn)); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0002, sn); + aim_im_puticbm(&bs, cookie, 0x0002, bn); aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); @@ -835,7 +835,7 @@ * remote user to connect to us via a proxy server. */ void -aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber) +aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber) { FlapConnection *conn; ByteStream bs; @@ -848,12 +848,12 @@ if (conn == NULL) return; - byte_stream_new(&bs, 246+strlen(sn)); + byte_stream_new(&bs, 246+strlen(bn)); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0002, sn); + aim_im_puticbm(&bs, cookie, 0x0002, bn); aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); @@ -898,7 +898,7 @@ * */ void -aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles) +aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles) { FlapConnection *conn; ByteStream bs; @@ -915,7 +915,7 @@ snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0002, sn); + aim_im_puticbm(&bs, cookie, 0x0002, bn); aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); @@ -981,7 +981,7 @@ * remote user to connect to us via a proxy server. */ void -aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles) +aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles) { FlapConnection *conn; ByteStream bs; @@ -999,7 +999,7 @@ snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0002, sn); + aim_im_puticbm(&bs, cookie, 0x0002, bn); aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); @@ -1073,29 +1073,29 @@ * Subtype 0x0006 - Request the status message of the given ICQ user. * * @param od The oscar session. - * @param sn The UIN of the user of whom you wish to request info. + * @param bn The UIN of the user of whom you wish to request info. * @param type The type of info you wish to request. This should be the current * state of the user, as one of the AIM_ICQ_STATE_* defines. * @return Return 0 if no errors, otherwise return the error number. */ -int aim_im_sendch2_geticqaway(OscarData *od, const char *sn, int type) +int aim_im_sendch2_geticqaway(OscarData *od, const char *bn, int type) { FlapConnection *conn; ByteStream bs; aim_snacid_t snacid; guchar cookie[8]; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)) || !sn) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)) || !bn) return -EINVAL; aim_icbm_makecookie(cookie); - byte_stream_new(&bs, 8+2+1+strlen(sn) + 4+0x5e + 4); + byte_stream_new(&bs, 8+2+1+strlen(bn) + 4+0x5e + 4); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0002, sn); + aim_im_puticbm(&bs, cookie, 0x0002, bn); /* TLV t(0005) - Encompasses almost everything below. */ byte_stream_put16(&bs, 0x0005); /* T */ @@ -1176,12 +1176,12 @@ * but thats ok, because it gives me time to try to figure out what kind of drugs the AOL people * were taking when they merged the two protocols. * - * @param sn The destination screen name. + * @param bn The destination buddy name. * @param type The type of message. 0x0007 for authorization denied. 0x0008 for authorization granted. * @param message The message you want to send, it should be null terminated. * @return Return 0 if no errors, otherwise return the error number. */ -int aim_im_sendch4(OscarData *od, const char *sn, guint16 type, const char *message) +int aim_im_sendch4(OscarData *od, const char *bn, guint16 type, const char *message) { FlapConnection *conn; ByteStream bs; @@ -1191,17 +1191,17 @@ if (!od || !(conn = flap_connection_findbygroup(od, 0x0002))) return -EINVAL; - if (!sn || !type || !message) + if (!bn || !type || !message) return -EINVAL; - byte_stream_new(&bs, 8+3+strlen(sn)+12+strlen(message)+1+4); + byte_stream_new(&bs, 8+3+strlen(bn)+12+strlen(message)+1+4); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0); aim_icbm_makecookie(cookie); /* ICBM header */ - aim_im_puticbm(&bs, cookie, 0x0004, sn); + aim_im_puticbm(&bs, cookie, 0x0004, bn); /* * TLV t(0005) @@ -1246,8 +1246,8 @@ guchar cookie[8]; guint16 channel; GSList *tlvlist; - char *sn; - int snlen; + char *bn; + int bnlen; guint16 icbmflags = 0; guint8 flag1 = 0, flag2 = 0; gchar *msg = NULL; @@ -1264,8 +1264,8 @@ return 0; } - snlen = byte_stream_get8(bs); - sn = byte_stream_getstr(bs, snlen); + bnlen = byte_stream_get8(bs); + bn = byte_stream_getstr(bs, bnlen); tlvlist = aim_tlvlist_read(bs); @@ -1296,9 +1296,9 @@ } if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, channel, sn, msg, icbmflags, flag1, flag2); - - g_free(sn); + ret = userfunc(od, conn, frame, channel, bn, msg, icbmflags, flag1, flag2); + + g_free(bn); g_free(msg); aim_tlvlist_free(tlvlist); @@ -1480,7 +1480,7 @@ msglen = byte_stream_get16(&mbs); if (msglen > byte_stream_empty(&mbs)) { - purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn); + purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn); break; } @@ -1589,7 +1589,7 @@ if (length > byte_stream_empty(bs)) { - purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn); + purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn); break; } @@ -1625,14 +1625,14 @@ if (magic1 != 0x501) { - purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn); + purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn); break; } args.featureslen = byte_stream_get16(bs); if (args.featureslen > byte_stream_empty(bs)) { - purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn); + purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn); break; } if (args.featureslen == 0) @@ -1654,7 +1654,7 @@ magic1 = byte_stream_get16(bs); /* 01 01 */ if (magic1 != 0x101) /* Bad, message comes before attributes */ { - purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn); + purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn); break; } msglen = byte_stream_get16(bs); @@ -1721,7 +1721,7 @@ if (length > byte_stream_empty(bs)) { - purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->sn); + purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s. They are probably trying to do something malicious.\n", userinfo->bn); break; } g_free(args.extdata); @@ -1796,7 +1796,7 @@ bnlen = byte_stream_get16(servdata); bn = byte_stream_getstr(servdata, bnlen); - purple_debug_misc("oscar", "got a buddy list from %s: group %s, buddy %s\n", userinfo->sn, gn, bn); + purple_debug_misc("oscar", "got a buddy list from %s: group %s, buddy %s\n", userinfo->bn, gn, bn); g_free(bn); } @@ -2285,7 +2285,7 @@ } /* - * Subtype 0x0008 - Send a warning to sn. + * Subtype 0x0008 - Send a warning to bn. * * Flags: * AIM_WARN_ANON Send as an anonymous (doesn't count as much) @@ -2293,21 +2293,21 @@ * returns -1 on error (couldn't alloc packet), 0 on success. * */ -int aim_im_warn(OscarData *od, FlapConnection *conn, const char *sn, guint32 flags) +int aim_im_warn(OscarData *od, FlapConnection *conn, const char *bn, guint32 flags) { ByteStream bs; aim_snacid_t snacid; - if (!od || !conn || !sn) + if (!od || !conn || !bn) return -EINVAL; - byte_stream_new(&bs, strlen(sn)+3); - - snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0008, 0x0000, sn, strlen(sn)+1); + byte_stream_new(&bs, strlen(bn)+3); + + snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0008, 0x0000, bn, strlen(bn)+1); byte_stream_put16(&bs, (flags & AIM_WARN_ANON) ? 0x0001 : 0x0000); - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0008, 0x0000, snacid, &bs); @@ -2349,7 +2349,7 @@ * AIM_TRANSFER_DENY_NOTACCEPTING -- "client is not accepting transfers" * */ -int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, guint16 code) +int aim_im_denytransfer(OscarData *od, const char *bn, const guchar *cookie, guint16 code) { FlapConnection *conn; ByteStream bs; @@ -2359,15 +2359,15 @@ if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM))) return -EINVAL; - byte_stream_new(&bs, 8+2+1+strlen(sn)+6); + byte_stream_new(&bs, 8+2+1+strlen(bn)+6); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x000b, 0x0000, NULL, 0); byte_stream_putraw(&bs, cookie, 8); byte_stream_put16(&bs, 0x0002); /* channel */ - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); aim_tlvlist_add_16(&tlvlist, 0x0003, code); aim_tlvlist_write(&bs, &tlvlist); @@ -2380,7 +2380,7 @@ return 0; } -static void parse_status_note_text(OscarData *od, guchar *cookie, char *sn, ByteStream *bs) +static void parse_status_note_text(OscarData *od, guchar *cookie, char *bn, ByteStream *bs) { struct aim_icq_info *info; struct aim_icq_info *prev_info; @@ -2534,10 +2534,10 @@ g_free(status_note_text); g_free(stripped_status_note_text); - buddy = purple_find_buddy(account, sn); + buddy = purple_find_buddy(account, bn); if (buddy == NULL) { - purple_debug_misc("oscar", "clientautoresp: buddy %s was not found.\n", sn); + purple_debug_misc("oscar", "clientautoresp: buddy %s was not found.\n", bn); g_free(status_note); return; } @@ -2548,7 +2548,7 @@ presence = purple_buddy_get_presence(buddy); status = purple_presence_get_active_status(presence); - purple_prpl_got_user_status(account, sn, + purple_prpl_got_user_status(account, bn, purple_status_get_id(status), "message", status_note, NULL); @@ -2565,26 +2565,26 @@ int ret = 0; aim_rxcallback_t userfunc; guint16 channel, reason; - char *sn; + char *bn; guchar *cookie; - guint8 snlen; + guint8 bnlen; cookie = byte_stream_getraw(bs, 8); channel = byte_stream_get16(bs); - snlen = byte_stream_get8(bs); - sn = byte_stream_getstr(bs, snlen); + bnlen = byte_stream_get8(bs); + bn = byte_stream_getstr(bs, bnlen); reason = byte_stream_get16(bs); if (channel == 0x0002) { if (reason == 0x0003) /* channel-specific */ /* parse status note text */ - parse_status_note_text(od, cookie, sn, bs); + parse_status_note_text(od, cookie, bn, bs); byte_stream_get16(bs); /* Unknown */ byte_stream_get16(bs); /* Unknown */ if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, channel, sn, reason, cookie); + ret = userfunc(od, conn, frame, channel, bn, reason, cookie); } else if (channel == 0x0004) { /* ICQ message */ switch (reason) { @@ -2629,20 +2629,20 @@ msg = byte_stream_getraw(bs, len); if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, channel, sn, reason, state, msg); + ret = userfunc(od, conn, frame, channel, bn, reason, state, msg); g_free(msg); } break; default: { if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, channel, sn, reason); + ret = userfunc(od, conn, frame, channel, bn, reason); } break; } /* end switch */ } g_free(cookie); - g_free(sn); + g_free(bn); return ret; } @@ -2660,17 +2660,17 @@ aim_rxcallback_t userfunc; guint16 ch; guchar *cookie; - char *sn; + char *bn; int ret = 0; cookie = byte_stream_getraw(bs, 8); ch = byte_stream_get16(bs); - sn = byte_stream_getstr(bs, byte_stream_get8(bs)); + bn = byte_stream_getstr(bs, byte_stream_get8(bs)); if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, ch, sn); - - g_free(sn); + ret = userfunc(od, conn, frame, ch, bn); + + g_free(bn); g_free(cookie); return ret; @@ -2707,7 +2707,7 @@ * and Purple 0.60 and newer. * */ -int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2) +int aim_im_sendmtn(OscarData *od, guint16 type1, const char *bn, guint16 type2) { FlapConnection *conn; ByteStream bs; @@ -2716,10 +2716,10 @@ if (!od || !(conn = flap_connection_findbygroup(od, 0x0002))) return -EINVAL; - if (!sn) + if (!bn) return -EINVAL; - byte_stream_new(&bs, 11+strlen(sn)+2); + byte_stream_new(&bs, 11+strlen(bn)+2); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0014, 0x0000, NULL, 0); @@ -2738,10 +2738,10 @@ byte_stream_put16(&bs, type1); /* - * Dest sn + * Dest buddy name */ - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); /* * Type 2 (should be 0x0000, 0x0001, or 0x0002 for mtn) @@ -2766,20 +2766,20 @@ { int ret = 0; aim_rxcallback_t userfunc; - char *sn; - guint8 snlen; + char *bn; + guint8 bnlen; guint16 type1, type2; byte_stream_advance(bs, 8); /* Unknown - All 0's */ type1 = byte_stream_get16(bs); - snlen = byte_stream_get8(bs); - sn = byte_stream_getstr(bs, snlen); + bnlen = byte_stream_get8(bs); + bn = byte_stream_getstr(bs, bnlen); type2 = byte_stream_get16(bs); if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, type1, sn, type2); - - g_free(sn); + ret = userfunc(od, conn, frame, type1, bn, type2); + + g_free(bn); return ret; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_locate.c --- a/libpurple/protocols/oscar/family_locate.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_locate.c Mon Mar 02 22:07:59 2009 +0000 @@ -100,7 +100,7 @@ 0x82, 0x22, 0x44, 0x45, 0x45, 0x53, 0x54, 0x00}}, /* Supports "new status message features" (Who advertises this one?) */ - /* OSCAR_CAPABILITY_HOST_STATUS_TEXT_AWARE */ + /* OSCAR_CAPABILITY_HOST_STATUS_TEXT_AWARE */ {OSCAR_CAPABILITY_GENERICUNKNOWN, {0x09, 0x46, 0x01, 0x0a, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, @@ -112,7 +112,7 @@ 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, /* Client only asserts caps for services in which it is participating */ - /* OSCAR_CAPABILITY_SMARTCAPS */ + /* OSCAR_CAPABILITY_SMARTCAPS */ {OSCAR_CAPABILITY_GENERICUNKNOWN, {0x09, 0x46, 0x01, 0xff, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}, @@ -253,11 +253,11 @@ FlapConnection *conn; aim_rxcallback_t userfunc; - cur = aim_locate_finduserinfo(od, userinfo->sn); + cur = aim_locate_finduserinfo(od, userinfo->bn); if (cur == NULL) { cur = (aim_userinfo_t *)g_new0(aim_userinfo_t, 1); - cur->sn = g_strdup(userinfo->sn); + cur->bn = g_strdup(userinfo->bn); cur->next = od->locate.userinfo; od->locate.userinfo = cur; } @@ -366,35 +366,35 @@ } /** - * Remove this screen name from our queue. If this info was requested + * Remove this buddy name from our queue. If this info was requested * by our info request queue, then pop the next element off of the queue. * * @param od The aim session. - * @param sn Screen name of the info we just received. + * @param bn Buddy name of the info we just received. * @return True if the request was explicit (client requested the info), * false if the request was implicit (libfaim request the info). */ static int -aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *sn) +aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *bn) { struct userinfo_node *cur, *del; int was_explicit = TRUE; - while ((od->locate.requested != NULL) && (aim_sncmp(sn, od->locate.requested->sn) == 0)) { + while ((od->locate.requested != NULL) && (oscar_util_name_compare(bn, od->locate.requested->bn) == 0)) { del = od->locate.requested; od->locate.requested = del->next; was_explicit = FALSE; - g_free(del->sn); + g_free(del->bn); g_free(del); } cur = od->locate.requested; while ((cur != NULL) && (cur->next != NULL)) { - if (aim_sncmp(sn, cur->next->sn) == 0) { + if (oscar_util_name_compare(bn, cur->next->bn) == 0) { del = cur->next; cur->next = del->next; was_explicit = FALSE; - g_free(del->sn); + g_free(del->bn); g_free(del); } else cur = cur->next; @@ -404,34 +404,34 @@ } void -aim_locate_autofetch_away_message(OscarData *od, const char *sn) +aim_locate_autofetch_away_message(OscarData *od, const char *bn) { struct userinfo_node *cur; /* Make sure we haven't already made an info request for this buddy */ for (cur = od->locate.requested; cur != NULL; cur = cur->next) - if (aim_sncmp(sn, cur->sn) == 0) + if (oscar_util_name_compare(bn, cur->bn) == 0) return; /* Add a new node to our request queue */ cur = (struct userinfo_node *)g_malloc(sizeof(struct userinfo_node)); - cur->sn = g_strdup(sn); + cur->bn = g_strdup(bn); cur->next = od->locate.requested; od->locate.requested = cur; - aim_locate_getinfoshort(od, cur->sn, 0x00000002); + aim_locate_getinfoshort(od, cur->bn, 0x00000002); } -aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *sn) { +aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *bn) { aim_userinfo_t *cur = NULL; - if (sn == NULL) + if (bn == NULL) return NULL; cur = od->locate.userinfo; while (cur != NULL) { - if (aim_sncmp(cur->sn, sn) == 0) + if (oscar_util_name_compare(cur->bn, bn) == 0) return cur; cur = cur->next; } @@ -552,7 +552,7 @@ void aim_info_free(aim_userinfo_t *info) { - g_free(info->sn); + g_free(info->bn); g_free(info->iconcsum); g_free(info->info); g_free(info->info_encoding); @@ -572,7 +572,7 @@ aim_info_extract(OscarData *od, ByteStream *bs, aim_userinfo_t *outinfo) { int curtlv, tlvcnt; - guint8 snlen; + guint8 bnlen; if (!bs || !outinfo) return -EINVAL; @@ -581,11 +581,11 @@ memset(outinfo, 0x00, sizeof(aim_userinfo_t)); /* - * Screen name. Stored as an unterminated string prepended with a + * Username. Stored as an unterminated string prepended with a * byte containing its length. */ - snlen = byte_stream_get8(bs); - outinfo->sn = byte_stream_getstr(bs, snlen); + bnlen = byte_stream_get8(bs); + outinfo->bn = byte_stream_getstr(bs, bnlen); /* * Warning Level. Stored as an unsigned short. @@ -881,7 +881,7 @@ */ #ifdef LOG_UNKNOWN_TLV purple_debug_misc("oscar", "userinfo: **warning: unexpected TLV:\n"); - purple_debug_misc("oscar", "userinfo: sn =%s\n", outinfo->sn); + purple_debug_misc("oscar", "userinfo: bn =%s\n", outinfo->bn); dumptlv(od, type, bs, length); #endif } @@ -906,8 +906,8 @@ if (!bs || !info) return -EINVAL; - byte_stream_put8(bs, strlen(info->sn)); - byte_stream_putstr(bs, info->sn); + byte_stream_put8(bs, strlen(info->bn)); + byte_stream_putstr(bs, info->bn); byte_stream_put16(bs, info->warnlevel); @@ -922,7 +922,7 @@ /* XXX - So, ICQ_OSCAR_SUPPORT is never defined anywhere... */ #ifdef ICQ_OSCAR_SUPPORT - if (atoi(info->sn) != 0) { + if (atoi(info->bn) != 0) { if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) aim_tlvlist_add_16(&tlvlist, 0x0006, info->icqinfo.status); if (info->present & AIM_USERINFO_PRESENT_ICQIPADDR) @@ -953,35 +953,35 @@ aim_rxcallback_t userfunc; aim_snac_t *snac2; guint16 reason; - char *sn; + char *bn; int was_explicit; if (!(snac2 = aim_remsnac(od, snac->id))) { - purple_debug_misc("oscar", "faim: locate.c, error(): received response from unknown request!\n"); + purple_debug_misc("oscar", "locate error: received response from unknown request!\n"); return 0; } if ((snac2->family != SNAC_FAMILY_LOCATE) && (snac2->type != 0x0015)) { - purple_debug_misc("oscar", "faim: locate.c, error(): received response from invalid request! %d\n", snac2->family); + purple_debug_misc("oscar", "locate error: received response from invalid request! %d\n", snac2->family); return 0; } - if (!(sn = snac2->data)) { - purple_debug_misc("oscar", "faim: locate.c, error(): received response from request without a screen name!\n"); + if (!(bn = snac2->data)) { + purple_debug_misc("oscar", "locate error: received response from request without a buddy name!\n"); return 0; } reason = byte_stream_get16(bs); /* - * Remove this screen name from our queue. If the client requested + * Remove this buddy name from our queue. If the client requested * this buddy's info explicitly, then notify them that we do not have * info for this buddy. */ - was_explicit = aim_locate_gotuserinfo(od, conn, sn); + was_explicit = aim_locate_gotuserinfo(od, conn, bn); if (was_explicit == TRUE) if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, reason, sn); + ret = userfunc(od, conn, frame, reason, bn); if (snac2) g_free(snac2->data); @@ -1157,29 +1157,29 @@ /* * Subtype 0x0005 - Request info of another AIM user. * - * @param sn The screenname whose info you wish to request. + * @param bn The buddy name whose info you wish to request. * @param infotype The type of info you wish to request. * 0x0001 - Info/profile * 0x0003 - Away message * 0x0004 - Capabilities */ int -aim_locate_getinfo(OscarData *od, const char *sn, guint16 infotype) +aim_locate_getinfo(OscarData *od, const char *bn, guint16 infotype) { FlapConnection *conn; ByteStream bs; aim_snacid_t snacid; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn) return -EINVAL; - byte_stream_new(&bs, 2+1+strlen(sn)); + byte_stream_new(&bs, 2+1+strlen(bn)); snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0005, 0x0000, NULL, 0); byte_stream_put16(&bs, infotype); - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0005, 0x0000, snacid, &bs); @@ -1229,18 +1229,18 @@ aim_tlvlist_free(tlvlist); aim_locate_adduserinfo(od, userinfo); - userinfo2 = aim_locate_finduserinfo(od, userinfo->sn); + userinfo2 = aim_locate_finduserinfo(od, userinfo->bn); aim_info_free(userinfo); g_free(userinfo); /* - * Remove this screen name from our queue. If the client requested + * Remove this buddy name from our queue. If the client requested * this buddy's info explicitly, then notify them that we have info * for this buddy. */ if (userinfo2 != NULL) { - was_explicit = aim_locate_gotuserinfo(od, conn, userinfo2->sn); + was_explicit = aim_locate_gotuserinfo(od, conn, userinfo2->bn); if (was_explicit == TRUE) if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) ret = userfunc(od, conn, frame, userinfo2); @@ -1307,7 +1307,7 @@ /* * Subtype 0x000b - Huh? What is this? */ -int aim_locate_000b(OscarData *od, const char *sn) +int aim_locate_000b(OscarData *od, const char *bn) { FlapConnection *conn; ByteStream bs; @@ -1315,15 +1315,15 @@ return -EINVAL; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn) return -EINVAL; - byte_stream_new(&bs, 1+strlen(sn)); + byte_stream_new(&bs, 1+strlen(bn)); snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, NULL, 0); - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, snacid, &bs); @@ -1380,7 +1380,7 @@ * Subtype 0x0015 - Request the info of a user using the short method. This is * what iChat uses. It normally is VERY leniently rate limited. * - * @param sn The screen name whose info you wish to request. + * @param bn The buddy name whose info you wish to request. * @param flags The bitmask which specifies the type of info you wish to request. * 0x00000001 - Info/profile. * 0x00000002 - Away message. @@ -1389,21 +1389,21 @@ * @return Return 0 if no errors, otherwise return the error number. */ int -aim_locate_getinfoshort(OscarData *od, const char *sn, guint32 flags) +aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags) { FlapConnection *conn; ByteStream bs; aim_snacid_t snacid; - if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn) + if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn) return -EINVAL; - byte_stream_new(&bs, 4 + 1 + strlen(sn)); + byte_stream_new(&bs, 4 + 1 + strlen(bn)); byte_stream_put32(&bs, flags); - byte_stream_put8(&bs, strlen(sn)); - byte_stream_putstr(&bs, sn); + byte_stream_put8(&bs, strlen(bn)); + byte_stream_putstr(&bs, bn); - snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, sn, strlen(sn)+1); + snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, bn, strlen(bn)+1); flap_connection_send_snac_with_priority(od, conn, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, snacid, &bs, FALSE); byte_stream_destroy(&bs); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/family_odir.c --- a/libpurple/protocols/oscar/family_odir.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/family_odir.c Mon Mar 02 22:07:59 2009 +0000 @@ -31,7 +31,7 @@ /** * Subtype 0x0002 - Submit a User Search Request * - * Search for an AIM screen name based on their email address. + * Search for an AIM buddy based on their email address. * * @param od The oscar session. * @param region Should be "us-ascii" unless you know what you're doing. @@ -70,7 +70,7 @@ /** * Subtype 0x0002 - Submit a User Search Request * - * Search for an AIM screen name based on various info + * Search for an AIM buddy based on various info * about the person. * * @param od The oscar session. @@ -202,7 +202,7 @@ new->country = aim_tlv_getstr(tlvlist, 0x0006, 1); new->state = aim_tlv_getstr(tlvlist, 0x0007, 1); new->city = aim_tlv_getstr(tlvlist, 0x0008, 1); - new->sn = aim_tlv_getstr(tlvlist, 0x0009, 1); + new->bn = aim_tlv_getstr(tlvlist, 0x0009, 1); new->interest = aim_tlv_getstr(tlvlist, 0x000b, 1); new->nick = aim_tlv_getstr(tlvlist, 0x000c, 1); new->zip = aim_tlv_getstr(tlvlist, 0x000d, 1); @@ -228,7 +228,7 @@ g_free(del->country); g_free(del->state); g_free(del->city); - g_free(del->sn); + g_free(del->bn); g_free(del->interest); g_free(del->nick); g_free(del->zip); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/odc.c --- a/libpurple/protocols/oscar/odc.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/odc.c Mon Mar 02 22:07:59 2009 +0000 @@ -62,7 +62,7 @@ PurpleConversation *conv; account = purple_connection_get_account(conn->od->gc); - conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn); purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(tmp); } @@ -90,11 +90,11 @@ purple_debug_info("oscar", "Outgoing ODC frame to %s with " "type=0x%04x, flags=0x%04x, payload length=%u\n", - conn->sn, frame->type, frame->flags, frame->payload.len); + conn->bn, frame->type, frame->flags, frame->payload.len); account = purple_connection_get_account(conn->od->gc); username = purple_account_get_username(account); - memcpy(frame->sn, username, strlen(username)); + memcpy(frame->bn, username, strlen(username)); memcpy(frame->cookie, conn->cookie, 8); length = 76; @@ -116,7 +116,7 @@ byte_stream_put16(&bs, frame->flags); byte_stream_put16(&bs, 0x0000); byte_stream_put16(&bs, 0x0000); - byte_stream_putraw(&bs, frame->sn, 32); + byte_stream_putraw(&bs, frame->bn, 32); byte_stream_putraw(&bs, frame->payload.data, frame->payload.len); peer_connection_send(conn, &bs); @@ -366,7 +366,7 @@ g_datalist_clear(&attributes); /* Append the message up to the tag */ - utf8 = purple_plugin_oscar_decode_im_part(account, conn->sn, + utf8 = purple_plugin_oscar_decode_im_part(account, conn->bn, encoding, 0x0000, tmp, start - tmp); if (utf8 != NULL) { g_string_append(newmsg, utf8); @@ -386,7 +386,7 @@ /* Append any remaining message data */ if (tmp <= msgend) { - utf8 = purple_plugin_oscar_decode_im_part(account, conn->sn, + utf8 = purple_plugin_oscar_decode_im_part(account, conn->bn, encoding, 0x0000, tmp, msgend - tmp); if (utf8 != NULL) { g_string_append(newmsg, utf8); @@ -400,7 +400,7 @@ imflags |= PURPLE_MESSAGE_IMAGES; if (autoreply) imflags |= PURPLE_MESSAGE_AUTO_RESP; - serv_got_im(gc, conn->sn, newmsg->str, imflags, time(NULL)); + serv_got_im(gc, conn->bn, newmsg->str, imflags, time(NULL)); g_string_free(newmsg, TRUE); /* unref any images we allocated */ @@ -503,11 +503,11 @@ byte_stream_advance(bs, 4); frame->flags = byte_stream_get16(bs); byte_stream_advance(bs, 4); - byte_stream_getrawbuf(bs, frame->sn, 32); + byte_stream_getrawbuf(bs, frame->bn, 32); purple_debug_info("oscar", "Incoming ODC frame from %s with " "type=0x%04x, flags=0x%04x, payload length=%u\n", - frame->sn, frame->type, frame->flags, frame->payload.len); + frame->bn, frame->type, frame->flags, frame->payload.len); if (!conn->ready) { @@ -558,7 +558,7 @@ /* Tell the local user that we are connected */ account = purple_connection_get_account(gc); - conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn); purple_conversation_write(conv, NULL, _("Direct IM established"), PURPLE_MESSAGE_SYSTEM, time(NULL)); } @@ -576,16 +576,16 @@ /* I had to leave this. It's just too funny. It reminds me of my sister. */ purple_debug_info("oscar", "ohmigod! %s has started typing " "(DirectIM). He's going to send you a message! " - "*squeal*\n", conn->sn); - serv_got_typing(gc, conn->sn, 0, PURPLE_TYPING); + "*squeal*\n", conn->bn); + serv_got_typing(gc, conn->bn, 0, PURPLE_TYPING); } else if (frame->flags & 0x0004) { - serv_got_typing(gc, conn->sn, 0, PURPLE_TYPED); + serv_got_typing(gc, conn->bn, 0, PURPLE_TYPED); } else { - serv_got_typing_stopped(gc, conn->sn); + serv_got_typing_stopped(gc, conn->bn); } if (frame->payload.len > 0) @@ -598,12 +598,12 @@ size1 = purple_str_size_to_units(frame->payload.len); size2 = purple_str_size_to_units(DIRECTIM_MAX_FILESIZE); - tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"), conn->sn, size1, size2); + tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"), conn->bn, size1, size2); g_free(size1); g_free(size2); account = purple_connection_get_account(conn->od->gc); - conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn); purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(tmp); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/oft.c --- a/libpurple/protocols/oscar/oft.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/oft.c Mon Mar 02 22:07:59 2009 +0000 @@ -544,7 +544,7 @@ frame.name = byte_stream_getraw(bs, frame.name_length); purple_debug_info("oscar", "Incoming OFT frame from %s with " - "type=0x%04x\n", conn->sn, frame.type); + "type=0x%04x\n", conn->bn, frame.type); /* TODOFT: peer_oft_dirconvert_fromstupid(frame->name); */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.c Mon Mar 02 22:07:59 2009 +0000 @@ -204,7 +204,7 @@ void oscar_set_info(PurpleConnection *gc, const char *info); static void oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *rawinfo, gboolean setstatus, PurpleStatus *status); static void oscar_set_extendedstatus(PurpleConnection *gc); -static void oscar_format_screenname(PurpleConnection *gc, const char *nick); +static void oscar_format_username(PurpleConnection *gc, const char *nick); static gboolean purple_ssi_rerequestdata(gpointer data); static void oscar_free_name_data(struct name_data *data) { @@ -362,7 +362,7 @@ const char *charset = NULL; char *ret = NULL; - if(aim_snvalid_icq(purple_account_get_username(account))) + if(oscar_util_valid_name_icq(purple_account_get_username(account))) charset = purple_account_get_string(account, "encoding", NULL); if(charset && *charset) @@ -414,7 +414,7 @@ * charsetstr1 is always set to what the correct encoding should be. */ gchar * -purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen) +purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcebn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen) { gchar *ret = NULL; const gchar *charsetstr1, *charsetstr2; @@ -428,7 +428,7 @@ charsetstr1 = "UTF-16BE"; charsetstr2 = "UTF-8"; } else if (charset == AIM_CHARSET_CUSTOM) { - if ((sourcesn != NULL) && aim_snvalid_icq(sourcesn)) + if ((sourcebn != NULL) && oscar_util_valid_name_icq(sourcebn)) charsetstr1 = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); else charsetstr1 = "ISO-8859-1"; @@ -458,7 +458,7 @@ str[datalen] = '\0'; salvage = purple_utf8_salvage(str); tmp = g_strdup_printf(_("(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)"), - sourcesn, sourcesn); + sourcebn, sourcebn); ret = g_strdup_printf("%s %s", salvage, tmp); g_free(tmp); g_free(str); @@ -473,11 +473,11 @@ */ static void purple_plugin_oscar_convert_to_best_encoding(PurpleConnection *gc, - const char *destsn, const gchar *from, + const char *destbn, const gchar *from, gchar **msg, int *msglen_int, guint16 *charset, guint16 *charsubset) { - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); PurpleAccount *account = purple_connection_get_account(gc); GError *err = NULL; aim_userinfo_t *userinfo = NULL; @@ -499,13 +499,13 @@ * capability, and they are online, then attempt to send * as UTF-16BE. */ - if ((destsn != NULL) && aim_snvalid_icq(destsn)) - userinfo = aim_locate_finduserinfo(od, destsn); + if ((destbn != NULL) && oscar_util_valid_name_icq(destbn)) + userinfo = aim_locate_finduserinfo(od, destbn); if ((userinfo != NULL) && (userinfo->capabilities & OSCAR_CAPABILITY_UNICODE)) { PurpleBuddy *b; - b = purple_find_buddy(account, destsn); + b = purple_find_buddy(account, destbn); if ((b != NULL) && (PURPLE_BUDDY_IS_ONLINE(b))) { *msg = g_convert(from, -1, "UTF-16BE", "UTF-8", NULL, &msglen, &err); @@ -529,7 +529,7 @@ * ICQ then attempt to send as the user specified character encoding. */ charsetstr = "ISO-8859-1"; - if ((destsn != NULL) && aim_snvalid_icq(destsn)) + if ((destbn != NULL) && oscar_util_valid_name_icq(destbn)) charsetstr = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); /* @@ -808,16 +808,16 @@ gchar *message = NULL, *itmsurl = NULL, *tmp; gboolean is_away; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); if (userinfo == NULL) - userinfo = aim_locate_finduserinfo(od, b->name); + userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b)); if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL))) return; if (b == NULL) - b = purple_find_buddy(purple_connection_get_account(gc), userinfo->sn); + b = purple_find_buddy(purple_connection_get_account(gc), userinfo->bn); if (b) { presence = purple_buddy_get_presence(b); @@ -884,7 +884,7 @@ if (b) { if (purple_presence_is_online(presence)) { - if (aim_snvalid_icq(b->name) || is_away || !message || !(*message)) { + if (oscar_util_valid_name_icq(purple_buddy_get_name(b)) || is_away || !message || !(*message)) { /* Append the status name for online ICQ statuses, away AIM statuses, and for all buddies with no message. * If the status name and the message are the same, only show one. */ const char *status_name = purple_status_get_name(status); @@ -899,21 +899,20 @@ message = tmp; } + } else if (aim_ssi_waitingforauth(od->ssi.local, + aim_ssi_itemlist_findparentname(od->ssi.local, purple_buddy_get_name(b)), + purple_buddy_get_name(b))) + { + /* Note if an offline buddy is not authorized */ + tmp = g_strdup_printf("%s%s%s", + _("Not Authorized"), + (message && *message) ? ": " : "", + (message && *message) ? message : ""); + g_free(message); + message = tmp; } else { - if (aim_ssi_waitingforauth(od->ssi.local, - aim_ssi_itemlist_findparentname(od->ssi.local, b->name), - b->name)) { - /* Note if an offline buddy is not authorized */ - tmp = g_strdup_printf("%s%s%s", - _("Not Authorized"), - (message && *message) ? ": " : "", - (message && *message) ? message : ""); - g_free(message); - message = tmp; - } else { - g_free(message); - message = g_strdup(_("Offline")); - } + g_free(message); + message = g_strdup(_("Offline")); } } @@ -931,27 +930,30 @@ PurpleGroup *g = NULL; struct buddyinfo *bi = NULL; char *tmp; - - od = gc->proto_data; + const char *bname, *gname = NULL; + + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL))) return; + bname = purple_buddy_get_name(b); if (userinfo == NULL) - userinfo = aim_locate_finduserinfo(od, b->name); + userinfo = aim_locate_finduserinfo(od, bname); if (b == NULL) - b = purple_find_buddy(account, userinfo->sn); + b = purple_find_buddy(account, userinfo->bn); if (b != NULL) { g = purple_buddy_get_group(b); + gname = purple_group_get_name(g); presence = purple_buddy_get_presence(b); status = purple_presence_get_active_status(presence); } if (userinfo != NULL) - bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn)); + bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->bn)); if ((bi != NULL) && (bi->ipaddr != 0)) { tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", @@ -969,8 +971,8 @@ g_free(tmp); } - if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) { - tmp = aim_ssi_getcomment(od->ssi.local, g->name, b->name); + if ((b != NULL) && (bname != NULL) && (g != NULL) && (gname != NULL)) { + tmp = aim_ssi_getcomment(od->ssi.local, gname, bname); if (tmp != NULL) { char *tmp2 = g_markup_escape_text(tmp, strlen(tmp)); g_free(tmp); @@ -1017,7 +1019,7 @@ static struct chat_connection * find_oscar_chat(PurpleConnection *gc, int id) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); GSList *cur; struct chat_connection *cc; @@ -1034,7 +1036,7 @@ static struct chat_connection * find_oscar_chat_by_conn(PurpleConnection *gc, FlapConnection *conn) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); GSList *cur; struct chat_connection *cc; @@ -1051,7 +1053,7 @@ static struct chat_connection * find_oscar_chat_by_conv(PurpleConnection *gc, PurpleConversation *conv) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); GSList *cur; struct chat_connection *cc; @@ -1076,7 +1078,7 @@ static void oscar_chat_kill(PurpleConnection *gc, struct chat_connection *cc) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); /* Notify the conversation window that we've left the chat */ serv_got_chat_left(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(cc->conv))); @@ -1292,10 +1294,10 @@ od->chpass = FALSE; } if (od->setnick) { - purple_debug_info("oscar", "formatting screen name\n"); - aim_admin_setnick(od, conn, od->newsn); - g_free(od->newsn); - od->newsn = NULL; + purple_debug_info("oscar", "formatting username\n"); + aim_admin_setnick(od, conn, od->newformatting); + g_free(od->newformatting); + od->newformatting = NULL; od->setnick = FALSE; } if (od->conf) { @@ -1391,7 +1393,7 @@ guint32 presence; gc = data; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); report_idle = strcmp((const char *)value, "none") != 0; presence = aim_ssi_getpresence(od->ssi.local); @@ -1414,7 +1416,7 @@ guint32 presence; gc = data; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); presence = aim_ssi_getpresence(od->ssi.local); if (value) @@ -1431,8 +1433,9 @@ FlapConnection *newconn; gc = purple_account_get_connection(account); - od = gc->proto_data = oscar_data_new(); + od = oscar_data_new(); od->gc = gc; + purple_connection_set_protocol_data(gc, od); oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, purple_connerr, 0); oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, flap_connection_established, 0); @@ -1499,7 +1502,7 @@ purple_debug_misc("oscar", "oscar_login: gc = %p\n", gc); - if (!aim_snvalid(purple_account_get_username(account))) { + if (!oscar_util_valid_name(purple_account_get_username(account))) { gchar *buf; buf = g_strdup_printf(_("Unable to login: Could not 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."), purple_account_get_username(account)); purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, buf); @@ -1507,7 +1510,7 @@ return; } - if (aim_snvalid_icq((purple_account_get_username(account)))) { + if (oscar_util_valid_name_icq((purple_account_get_username(account)))) { od->icq = TRUE; } else { gc->flags |= PURPLE_CONNECTION_HTML; @@ -1578,7 +1581,7 @@ { OscarData *od; - od = (OscarData *)gc->proto_data; + od = purple_connection_get_protocol_data(gc); while (od->oscar_chats) { @@ -1594,7 +1597,7 @@ g_free(cr); } oscar_data_destroy(od); - gc->proto_data = NULL; + purple_connection_set_protocol_data(gc, NULL); purple_prefs_disconnect_by_handle(gc); @@ -1605,7 +1608,7 @@ purple_parse_auth_resp(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { PurpleConnection *gc = od->gc; - PurpleAccount *account = gc->account; + PurpleAccount *account = purple_connection_get_account(gc); char *host; int port; int i; FlapConnection *newconn; @@ -1619,13 +1622,13 @@ va_end(ap); purple_debug_info("oscar", - "inside auth_resp (Username: %s)\n", info->sn); + "inside auth_resp (Username: %s)\n", info->bn); if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) { char buf[256]; switch (info->errorcode) { case 0x01: - /* Unregistered screen name */ + /* Unregistered username */ purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_USERNAME, _("Invalid username.")); break; case 0x05: @@ -1644,7 +1647,7 @@ purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("The AOL Instant Messenger service is temporarily unavailable.")); break; case 0x18: - /* screen name connecting too frequently */ + /* username connecting too frequently */ purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, _("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.")); break; case 0x1c: @@ -1722,7 +1725,7 @@ purple_parse_auth_securid_request_yes_cb(gpointer user_data, const char *msg) { PurpleConnection *gc = user_data; - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_auth_securid_send(od, msg); } @@ -1774,7 +1777,7 @@ static void damn_you(gpointer data, gint source, PurpleInputCondition c) { struct pieceofcrap *pos = data; - OscarData *od = pos->gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(pos->gc); char in = '\0'; int x = 0; unsigned char m[17]; @@ -1840,7 +1843,7 @@ pos->fd = source; if (source < 0) { - GHashTable *ui_info = purple_core_get_ui_info(); + GHashTable *ui_info = purple_core_get_ui_info(); buf = g_strdup_printf(_("You may be disconnected shortly. " "Check %s for updates."), ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); @@ -2099,7 +2102,7 @@ va_end(ap); g_return_val_if_fail(info != NULL, 1); - g_return_val_if_fail(info->sn != NULL, 1); + g_return_val_if_fail(info->bn != NULL, 1); if (info->present & AIM_USERINFO_PRESENT_FLAGS) { if (info->flags & AIM_FLAG_AWAY) @@ -2113,7 +2116,7 @@ } } - if (aim_snvalid_icq(info->sn)) { + if (oscar_util_valid_name_icq(info->bn)) { if (type & AIM_ICQ_STATE_CHAT) status_id = OSCAR_STATUS_ID_FREE4CHAT; else if (type & AIM_ICQ_STATE_DND) @@ -2139,9 +2142,9 @@ if (info->flags & AIM_FLAG_WIRELESS) { - purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_MOBILE, NULL); + purple_prpl_got_user_status(account, info->bn, OSCAR_STATUS_ID_MOBILE, NULL); } else { - purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE); + purple_prpl_got_user_status_deactive(account, info->bn, OSCAR_STATUS_ID_MOBILE); } if (info->status != NULL && info->status[0] != '\0') @@ -2164,11 +2167,11 @@ */ tmp2 = ""; - purple_prpl_got_user_status(account, info->sn, status_id, + purple_prpl_got_user_status(account, info->bn, status_id, "message", tmp2, "itmsurl", itmsurl, NULL); } else - purple_prpl_got_user_status(account, info->sn, status_id, "message", tmp2, NULL); + purple_prpl_got_user_status(account, info->bn, status_id, "message", tmp2, NULL); g_free(tmp); @@ -2180,7 +2183,7 @@ signon = info->onlinesince; else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) signon = time(NULL) - info->sessionlen; - purple_prpl_got_user_login_time(account, info->sn, signon); + purple_prpl_got_user_login_time(account, info->bn, signon); /* Idle time stuff */ /* info->idletime is the number of minutes that this user has been idle */ @@ -2188,15 +2191,15 @@ time_idle = time(NULL) - info->idletime * 60; if (time_idle > 0) - purple_prpl_got_user_idle(account, info->sn, TRUE, time_idle); + purple_prpl_got_user_idle(account, info->bn, TRUE, time_idle); else - purple_prpl_got_user_idle(account, info->sn, FALSE, 0); + purple_prpl_got_user_idle(account, info->bn, FALSE, 0); /* Server stored icon stuff */ - bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, info->sn)); + bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, info->bn)); if (!bi) { bi = g_new0(struct buddyinfo, 1); - g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, info->sn)), bi); + g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, info->bn)), bi); } bi->typingnot = FALSE; bi->ico_informed = FALSE; @@ -2208,20 +2211,20 @@ PurpleBuddy *b = NULL; b16 = purple_base16_encode(info->iconcsum, info->iconcsumlen); - b = purple_find_buddy(account, info->sn); + b = purple_find_buddy(account, info->bn); if (b != NULL) saved_b16 = purple_buddy_icons_get_checksum_for_user(b); if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) { /* Invalidate the old icon for this user */ - purple_buddy_icons_set_for_user(account, info->sn, NULL, 0, NULL); + purple_buddy_icons_set_for_user(account, info->bn, NULL, 0, NULL); /* Fetch the new icon (if we're not already doing so) */ - if (g_slist_find_custom(od->requesticon, info->sn, - (GCompareFunc)aim_sncmp) == NULL) + if (g_slist_find_custom(od->requesticon, info->bn, + (GCompareFunc)oscar_util_name_compare) == NULL) { od->requesticon = g_slist_prepend(od->requesticon, - g_strdup(purple_normalize(account, info->sn))); + g_strdup(purple_normalize(account, info->bn))); purple_icons_fetch(gc); } } @@ -2248,9 +2251,9 @@ info = va_arg(ap, aim_userinfo_t *); va_end(ap); - purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL); - purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE); - g_hash_table_remove(od->buddyinfo, purple_normalize(gc->account, info->sn)); + purple_prpl_got_user_status(account, info->bn, OSCAR_STATUS_ID_OFFLINE, NULL); + purple_prpl_got_user_status_deactive(account, info->bn, OSCAR_STATUS_ID_MOBILE); + g_hash_table_remove(od->buddyinfo, purple_normalize(gc->account, info->bn)); return 1; } @@ -2268,15 +2271,15 @@ GData *attribs; purple_debug_misc("oscar", "Received IM from %s with %d parts\n", - userinfo->sn, args->mpmsg.numparts); + userinfo->bn, args->mpmsg.numparts); if (args->mpmsg.numparts == 0) return 1; - bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn)); + bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->bn)); if (!bi) { bi = g_new0(struct buddyinfo, 1); - g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, userinfo->sn)), bi); + g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, userinfo->bn)), bi); } if (args->icbmflags & AIM_IMFLAGS_AWAY) @@ -2288,7 +2291,7 @@ bi->typingnot = FALSE; if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) { - purple_debug_misc("oscar", "%s has an icon\n", userinfo->sn); + purple_debug_misc("oscar", "%s has an icon\n", userinfo->bn); if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) { bi->ico_need = TRUE; bi->ico_len = args->iconlen; @@ -2304,8 +2307,8 @@ size_t len = purple_imgstore_get_size(img); purple_debug_info("oscar", "Sending buddy icon to %s (%" G_GSIZE_FORMAT " bytes)\n", - userinfo->sn, len); - aim_im_sendch2_icon(od, userinfo->sn, data, len, + userinfo->bn, len); + aim_im_sendch2_icon(od, userinfo->bn, data, len, purple_buddy_icons_get_account_icon_timestamp(account), aimutil_iconsum(data, len)); } @@ -2314,7 +2317,7 @@ message = g_string_new(""); curpart = args->mpmsg.parts; while (curpart != NULL) { - tmp = purple_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset, + tmp = purple_plugin_oscar_decode_im_part(account, userinfo->bn, curpart->charset, curpart->charsubset, curpart->data, curpart->datalen); if (tmp != NULL) { g_string_append(message, tmp); @@ -2334,7 +2337,7 @@ * Note: There *may* be some clients which send messages as HTML formatted - * they need to be special-cased somehow. */ - if (aim_snvalid_icq(purple_account_get_username(account)) && aim_snvalid_icq(userinfo->sn)) { + if (oscar_util_valid_name_icq(purple_account_get_username(account)) && oscar_util_valid_name_icq(userinfo->bn)) { /* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */ gchar *tmp2 = g_markup_escape_text(tmp, -1); g_free(tmp); @@ -2372,7 +2375,7 @@ g_datalist_clear(&attribs); } - serv_got_im(gc, userinfo->sn, tmp, flags, + serv_got_im(gc, userinfo->bn, tmp, flags, (args->icbmflags & AIM_IMFLAGS_OFFLINE) ? args->timestamp : time(NULL)); g_free(tmp); @@ -2391,13 +2394,13 @@ gc = od->gc; account = purple_connection_get_account(gc); - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); if (args == NULL) return 0; purple_debug_misc("oscar", "Incoming rendezvous message of type %u, " - "user %s, status %hu\n", args->type, userinfo->sn, args->status); + "user %s, status %hu\n", args->type, userinfo->bn, args->status); if (args->msg != NULL) { @@ -2443,7 +2446,7 @@ g_strdup_printf("%d", args->info.chat.roominfo.exchange)); serv_got_chat_invite(gc, utf8name, - userinfo->sn, + userinfo->bn, message, components); } @@ -2453,14 +2456,14 @@ { if (args->status == AIM_RENDEZVOUS_PROPOSE) { - peer_connection_got_proposition(od, userinfo->sn, message, args); + peer_connection_got_proposition(od, userinfo->bn, message, args); } else if (args->status == AIM_RENDEZVOUS_CANCEL) { /* The other user canceled a peer request */ PeerConnection *conn; - conn = peer_connection_find_by_cookie(od, userinfo->sn, args->cookie); + conn = peer_connection_find_by_cookie(od, userinfo->bn, args->cookie); /* * If conn is NULL it means we haven't tried to create * a connection with that user. They may be trying to @@ -2491,7 +2494,7 @@ else if (args->type & OSCAR_CAPABILITY_BUDDYICON) { - purple_buddy_icons_set_for_user(account, userinfo->sn, + purple_buddy_icons_set_for_user(account, userinfo->bn, g_memdup(args->info.icon.icon, args->info.icon.length), args->info.icon.length, NULL); @@ -2528,9 +2531,10 @@ PurpleAccount *account; PurpleBuddy *buddy; PurpleGroup *group; + const char *bname, *gname; gc = data->gc; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); buddy = purple_find_buddy(account, data->name); if (buddy != NULL) @@ -2540,15 +2544,17 @@ if (group != NULL) { + bname = purple_buddy_get_name(buddy); + gname = purple_group_get_name(group); purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n", - buddy->name, group->name); + bname, gname); aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); - if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) + if (!aim_ssi_itemlist_finditem(od->ssi.local, gname, bname, AIM_SSI_TYPE_BUDDY)) { - aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); + aim_ssi_addbuddy(od, bname, gname, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); /* Mobile users should always be online */ - if (buddy->name[0] == '+') { + if (bname[0] == '+') { purple_prpl_got_user_status(account, purple_buddy_get_name(buddy), OSCAR_STATUS_ID_AVAILABLE, NULL); @@ -2588,8 +2594,8 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - purple_auth_sendrequest(gc, buddy->name); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + purple_auth_sendrequest(gc, purple_buddy_get_name(buddy)); } /* When other people ask you for authorization */ @@ -2598,7 +2604,7 @@ { struct name_data *data = cbdata; PurpleConnection *gc = data->gc; - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_ssi_sendauthreply(od, data->name, 0x01, NULL); @@ -2610,7 +2616,7 @@ purple_auth_dontgrant(struct name_data *data, char *msg) { PurpleConnection *gc = data->gc; - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_ssi_sendauthreply(od, data->name, 0x00, msg ? msg : _("No reason given.")); } @@ -2724,21 +2730,21 @@ case 0x06: { /* Someone requested authorization */ if (i >= 6) { struct name_data *data = g_new(struct name_data, 1); - gchar *sn = g_strdup_printf("%u", args->uin); + gchar *bn = g_strdup_printf("%u", args->uin); gchar *reason = NULL; if (msg2[5] != NULL) - reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5])); + reason = purple_plugin_oscar_decode_im_part(account, bn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5])); purple_debug_info("oscar", "Received an authorization request from UIN %u\n", args->uin); data->gc = gc; - data->name = sn; + data->name = bn; data->nick = NULL; - purple_account_request_authorization(account, sn, NULL, NULL, - reason, purple_find_buddy(account, sn) != NULL, + purple_account_request_authorization(account, bn, NULL, NULL, + reason, purple_find_buddy(account, bn) != NULL, purple_auth_grant, purple_auth_dontgrant_msgprompt, data); g_free(reason); @@ -2940,7 +2946,7 @@ "You missed %hu messages from %s because they were invalid.", nummissed), nummissed, - userinfo->sn); + userinfo->bn); break; case 1: /* Message too large */ buf = g_strdup_printf( @@ -2949,7 +2955,7 @@ "You missed %hu messages from %s because they were too large.", nummissed), nummissed, - userinfo->sn); + userinfo->bn); break; case 2: /* Rate exceeded */ buf = g_strdup_printf( @@ -2958,7 +2964,7 @@ "You missed %hu messages from %s because the rate limit has been exceeded.", nummissed), nummissed, - userinfo->sn); + userinfo->bn); break; case 3: /* Evil Sender */ buf = g_strdup_printf( @@ -2967,7 +2973,7 @@ "You missed %hu messages from %s because his/her warning level is too high.", nummissed), nummissed, - userinfo->sn); + userinfo->bn); break; case 4: /* Evil Receiver */ buf = g_strdup_printf( @@ -2976,7 +2982,7 @@ "You missed %hu messages from %s because your warning level is too high.", nummissed), nummissed, - userinfo->sn); + userinfo->bn); break; default: buf = g_strdup_printf( @@ -2985,11 +2991,11 @@ "You missed %hu messages from %s for an unknown reason.", nummissed), nummissed, - userinfo->sn); + userinfo->bn); break; } - if (!purple_conv_present_error(userinfo->sn, account, buf)) + if (!purple_conv_present_error(userinfo->bn, account, buf)) purple_notify_error(od->gc, NULL, buf, NULL); g_free(buf); @@ -3107,7 +3113,7 @@ static int purple_parse_msgerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { PurpleConnection *gc = od->gc; #ifdef TODOFT - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); PurpleXfer *xfer; #endif va_list ap; @@ -3135,7 +3141,7 @@ } #endif - /* Data is assumed to be the destination sn */ + /* Data is assumed to be the destination bn */ buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); if (!purple_conv_present_error(data, purple_connection_get_account(gc), buf)) { g_free(buf); @@ -3152,25 +3158,25 @@ PurpleConnection *gc = od->gc; va_list ap; guint16 type1, type2; - char *sn; + char *bn; va_start(ap, fr); type1 = (guint16) va_arg(ap, unsigned int); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); type2 = (guint16) va_arg(ap, unsigned int); va_end(ap); switch (type2) { case 0x0000: { /* Text has been cleared */ - serv_got_typing_stopped(gc, sn); + serv_got_typing_stopped(gc, bn); } break; case 0x0001: { /* Paused typing */ - serv_got_typing(gc, sn, 0, PURPLE_TYPED); + serv_got_typing(gc, bn, 0, PURPLE_TYPED); } break; case 0x0002: { /* Typing */ - serv_got_typing(gc, sn, 0, PURPLE_TYPING); + serv_got_typing(gc, bn, 0, PURPLE_TYPING); } break; default: { @@ -3178,7 +3184,7 @@ * It looks like iChat sometimes sends typing notification * with type1=0x0001 and type2=0x000f. Not sure why. */ - purple_debug_info("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2); + purple_debug_info("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", bn, type1, type2); } break; } @@ -3239,7 +3245,7 @@ oscar_user_info_append_extra_info(gc, user_info, NULL, userinfo); - if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !aim_snvalid_sms(userinfo->sn)) { + if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !oscar_util_valid_name_sms(userinfo->bn)) { /* An SMS contact is always online; its Online Since valid is not useful */ time_t t = userinfo->onlinesince; oscar_user_info_add_pair(user_info, _("Online Since"), purple_date_format_full(localtime(&t))); @@ -3273,11 +3279,11 @@ purple_notify_user_info_add_section_break(user_info); tmp = g_strdup_printf("%s", - purple_normalize(account, userinfo->sn), _("View web profile")); + purple_normalize(account, userinfo->bn), _("View web profile")); purple_notify_user_info_add_pair(user_info, NULL, tmp); g_free(tmp); - purple_notify_userinfo(gc, userinfo->sn, user_info, NULL, NULL); + purple_notify_userinfo(gc, userinfo->bn, user_info, NULL, NULL); purple_notify_user_info_destroy(user_info); return 1; @@ -3299,14 +3305,14 @@ userinfo = va_arg(ap, aim_userinfo_t *); va_end(ap); - b = purple_find_buddy(account, userinfo->sn); + b = purple_find_buddy(account, userinfo->bn); if (b == NULL) return 1; - if (!aim_snvalid_icq(userinfo->sn)) + if (!oscar_util_valid_name_icq(userinfo->bn)) { - if (strcmp(purple_buddy_get_name(b), userinfo->sn) != 0) - serv_got_alias(gc, purple_buddy_get_name(b), userinfo->sn); + if (strcmp(purple_buddy_get_name(b), userinfo->bn) != 0) + serv_got_alias(gc, purple_buddy_get_name(b), userinfo->bn); else serv_got_alias(gc, purple_buddy_get_name(b), NULL); } @@ -3323,7 +3329,7 @@ userinfo->away, userinfo->away_len); g_free(charset); - purple_prpl_got_user_status(account, userinfo->sn, + purple_prpl_got_user_status(account, userinfo->bn, purple_status_get_id(status), "message", message, NULL); g_free(message); @@ -3444,7 +3450,7 @@ return 1; for (i = 0; i < count; i++) - purple_conv_chat_add_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL, PURPLE_CBFLAGS_NONE, TRUE); + purple_conv_chat_add_user(PURPLE_CONV_CHAT(c->conv), info[i].bn, NULL, PURPLE_CBFLAGS_NONE, TRUE); return 1; } @@ -3467,7 +3473,7 @@ return 1; for (i = 0; i < count; i++) - purple_conv_chat_remove_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL); + purple_conv_chat_remove_user(PURPLE_CONV_CHAT(c->conv), info[i].bn, NULL); return 1; } @@ -3536,7 +3542,7 @@ if (utf8 == NULL) /* The conversion failed! */ utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]")); - serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL)); + serv_got_chat_in(gc, ccon->id, info->bn, 0, utf8, time((time_t)NULL)); g_free(utf8); return 1; @@ -3544,11 +3550,15 @@ static int purple_email_parseupdate(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { va_list ap; - PurpleConnection *gc = od->gc; + PurpleConnection *gc; + PurpleAccount *account; struct aim_emailinfo *emailinfo; int havenewmail; char *alertitle, *alerturl; + gc = od->gc; + account = purple_connection_get_account(gc); + va_start(ap, fr); emailinfo = va_arg(ap, struct aim_emailinfo *); havenewmail = va_arg(ap, int); @@ -3556,12 +3566,13 @@ alerturl = va_arg(ap, char *); va_end(ap); - if ((emailinfo != NULL) && purple_account_get_check_mail(gc->account)) { - gchar *to = g_strdup_printf("%s%s%s", purple_account_get_username(purple_connection_get_account(gc)), - emailinfo->domain ? "@" : "", - emailinfo->domain ? emailinfo->domain : ""); - if (emailinfo->unread && havenewmail) - purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL); + if (account != NULL && emailinfo != NULL && emailinfo->unread && havenewmail) { + gchar *to = g_strdup_printf("%s%s%s", + purple_account_get_username(account), + emailinfo->domain ? "@" : "", + emailinfo->domain ? emailinfo->domain : ""); + purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, + (const char **)&to, (const char **)&emailinfo->url, NULL, NULL); g_free(to); } @@ -3574,12 +3585,12 @@ static int purple_icon_parseicon(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { PurpleConnection *gc = od->gc; va_list ap; - char *sn; + char *bn; guint8 iconcsumtype, *iconcsum, *icon; guint16 iconcsumlen, iconlen; va_start(ap, fr); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); iconcsumtype = va_arg(ap, int); iconcsum = va_arg(ap, guint8 *); iconcsumlen = va_arg(ap, int); @@ -3594,7 +3605,7 @@ if ((iconlen > 0) && (iconlen != 90)) { char *b16 = purple_base16_encode(iconcsum, iconcsumlen); purple_buddy_icons_set_for_user(purple_connection_get_account(gc), - sn, g_memdup(icon, iconlen), iconlen, b16); + bn, g_memdup(icon, iconlen), iconlen, b16); g_free(b16); } @@ -3604,7 +3615,7 @@ static void purple_icons_fetch(PurpleConnection *gc) { - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_userinfo_t *userinfo; FlapConnection *conn; @@ -3651,14 +3662,14 @@ static int purple_parse_msgack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { va_list ap; guint16 type; - char *sn; + char *bn; va_start(ap, fr); type = (guint16) va_arg(ap, unsigned int); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); va_end(ap); - purple_debug_info("oscar", "Sent message to %s.\n", sn); + purple_debug_info("oscar", "Sent message to %s.\n", bn); return 1; } @@ -3718,7 +3729,7 @@ userinfo = va_arg(ap, aim_userinfo_t *); va_end(ap); - purple_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5); + purple_prpl_got_account_warning_level(account, (userinfo && userinfo->bn) ? userinfo->bn : NULL, (newevil/10.0) + 0.5); #endif return 1; @@ -3733,7 +3744,7 @@ info = va_arg(ap, aim_userinfo_t *); va_end(ap); - purple_connection_set_display_name(od->gc, info->sn); + purple_connection_set_display_name(od->gc, info->bn); /* * What's with the + 0.5? @@ -3842,13 +3853,13 @@ PurpleAccount *account; PurpleStatus *status; PurplePresence *presence; - const char *message, *itmsurl; + const char *username, *message, *itmsurl; char *tmp; va_list ap; guint16 maxpermits, maxdenies; gc = od->gc; - od = (OscarData *)gc->proto_data; + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); va_start(ap, fr); @@ -3871,12 +3882,13 @@ if (purple_account_get_user_info(account) != NULL) serv_set_info(gc, purple_account_get_user_info(account)); - if (!od->icq && strcmp(purple_account_get_username(account), purple_connection_get_display_name(gc)) != 0) + username = purple_account_get_username(account); + if (!od->icq && strcmp(username, purple_connection_get_display_name(gc)) != 0) /* - * Format the screen name for AIM accounts if it's different + * Format the username for AIM accounts if it's different * than what's currently set. */ - oscar_format_screenname(gc, account->username); + oscar_format_username(gc, username); /* Set our available message based on the current status */ status = purple_account_get_active_status(account); @@ -3910,13 +3922,13 @@ /* * The "if" statement here is a pathetic attempt to not attempt to * connect to the alerts servce (aka email notification) if this - * screen name does not support it. I think mail notification + * username does not support it. I think mail notification * works for @mac.com accounts but does not work for the newer * @anythingelse.com accounts. If that's true then this change * breaks mail notification for @mac.com accounts, but it gets rid * of an annoying error at signon for @anythingelse.com accounts. */ - if ((od->authinfo->email != NULL) && ((strchr(gc->account->username, '@') == NULL))) + if (od->authinfo->email != NULL && strchr(username, '@') == NULL) aim_srv_requestnew(od, SNAC_FAMILY_ALERT); return 1; @@ -3980,9 +3992,9 @@ user_info = purple_notify_user_info_new(); g_snprintf(who, sizeof(who), "%u", info->uin); - buddy = purple_find_buddy(purple_connection_get_account(gc), who); + buddy = purple_find_buddy(account, who); if (buddy != NULL) - bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(buddy->account, buddy->name)); + bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, purple_buddy_get_name(buddy))); else bi = NULL; @@ -3999,7 +4011,7 @@ } oscar_user_info_convert_and_add(account, user_info, _("First Name"), info->first); oscar_user_info_convert_and_add(account, user_info, _("Last Name"), info->last); - if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email))) { + if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(account, info->email))) { buf = g_strdup_printf("%s", utf8, utf8); purple_notify_user_info_add_pair(user_info, _("Email Address"), buf); g_free(buf); @@ -4008,7 +4020,7 @@ if (info->numaddresses && info->email2) { int i; for (i = 0; i < info->numaddresses; i++) { - if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email2[i]))) { + if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(account, info->email2[i]))) { buf = g_strdup_printf("%s", utf8, utf8); purple_notify_user_info_add_pair(user_info, _("Email Address"), buf); g_free(buf); @@ -4043,7 +4055,7 @@ snprintf(age, sizeof(age), "%hhd", info->age); purple_notify_user_info_add_pair(user_info, _("Age"), age); } - if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->personalwebpage))) { + if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(account, info->personalwebpage))) { buf = g_strdup_printf("%s", utf8, utf8); purple_notify_user_info_add_pair(user_info, _("Personal Web Page"), buf); g_free(buf); @@ -4079,7 +4091,7 @@ oscar_user_info_convert_and_add(account, user_info, _("Division"), info->workdivision); oscar_user_info_convert_and_add(account, user_info, _("Position"), info->workposition); - if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->workwebpage))) { + if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(account, info->workwebpage))) { char *webpage = g_strdup_printf("%s", utf8, utf8); purple_notify_user_info_add_pair(user_info, _("Web Page"), webpage); g_free(webpage); @@ -4113,7 +4125,7 @@ if (info->uin && info->nick && info->nick[0] && (utf8 = oscar_utf8_try_convert(account, info->nick))) { g_snprintf(who, sizeof(who), "%u", info->uin); serv_got_alias(gc, who, utf8); - if ((b = purple_find_buddy(gc->account, who))) { + if ((b = purple_find_buddy(account, who))) { purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", utf8); } g_free(utf8); @@ -4243,7 +4255,7 @@ PurpleConnection *gc = od->gc; va_list ap; guint16 perms, err; - char *url, *sn, *email; + char *url, *bn, *email; int change; va_start(ap, fr); @@ -4251,15 +4263,15 @@ perms = (guint16) va_arg(ap, unsigned int); err = (guint16) va_arg(ap, unsigned int); url = va_arg(ap, char *); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); email = va_arg(ap, char *); va_end(ap); purple_debug_misc("oscar", - "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n", + "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, bn=%s, email=%s\n", change ? "change" : "request", perms, err, (url != NULL) ? url : "(null)", - (sn != NULL) ? sn : "(null)", + (bn != NULL) ? bn : "(null)", (email != NULL) ? email : "(null)"); if ((err > 0) && (url != NULL)) { @@ -4301,7 +4313,7 @@ OscarData *od; FlapConnection *conn; - od = (OscarData *)gc->proto_data; + od = purple_connection_get_protocol_data(gc); conn = flap_connection_getbytype(od, SNAC_FAMILY_LOCATE); if (conn != NULL) flap_connection_send_keepalive(od, conn); @@ -4313,7 +4325,7 @@ OscarData *od; PeerConnection *conn; - od = (OscarData *)gc->proto_data; + od = purple_connection_get_protocol_data(gc); conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM); if ((conn != NULL) && (conn->ready)) @@ -4323,7 +4335,7 @@ else { /* Don't send if this turkey is in our deny list */ GSList *list; - for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next); + for (list=gc->account->deny; (list && oscar_util_name_compare(name, list->data)); list=list->next); if (!list) { struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(gc->account, name)); if (bi && bi->typingnot) { @@ -4409,7 +4421,7 @@ /* Convert the message to a good encoding */ purple_plugin_oscar_convert_to_best_encoding(conn->od->gc, - conn->sn, msg->str, &tmp, &tmplen, &charset, &charsubset); + conn->bn, msg->str, &tmp, &tmplen, &charset, &charsubset); g_string_free(msg, TRUE); msg = g_string_new_len(tmp, tmplen); g_free(tmp); @@ -4435,11 +4447,11 @@ char *tmp1, *tmp2; gboolean is_sms, is_html; - od = (OscarData *)gc->proto_data; + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); ret = 0; - is_sms = aim_snvalid_sms(name); + is_sms = oscar_util_valid_name_sms(name); if (od->icq && is_sms) { /* @@ -4478,7 +4490,7 @@ "You must be Direct Connected to send IM Images."), PURPLE_MESSAGE_ERROR, time(NULL)); - buddy = purple_find_buddy(gc->account, name); + buddy = purple_find_buddy(account, name); bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, name)); if (!bi) { @@ -4553,17 +4565,17 @@ purple_imgstore_unref(img); } - args.destsn = name; + args.destbn = name; /* * If we're IMing an SMS user or an ICQ user from an ICQ account, then strip HTML. */ - if (aim_snvalid_sms(name)) { + if (oscar_util_valid_name_sms(name)) { /* Messaging an SMS (mobile) user */ tmp2 = purple_markup_strip_html(tmp1); is_html = FALSE; - } else if (aim_snvalid_icq(purple_account_get_username(account))) { - if (aim_snvalid_icq(name)) { + } else if (oscar_util_valid_name_icq(purple_account_get_username(account))) { + if (oscar_util_valid_name_icq(name)) { /* From ICQ to ICQ */ tmp2 = purple_markup_strip_html(tmp1); is_html = FALSE; @@ -4623,9 +4635,9 @@ * AIM users can only request AIM info. */ void oscar_get_info(PurpleConnection *gc, const char *name) { - OscarData *od = (OscarData *)gc->proto_data; - - if (od->icq && aim_snvalid_icq(name)) + OscarData *od = purple_connection_get_protocol_data(gc); + + if (od->icq && oscar_util_valid_name_icq(name)) aim_icq_getallinfo(od, name); else aim_locate_getinfoshort(od, name, 0x00000003); @@ -4635,14 +4647,14 @@ static void oscar_set_dir(PurpleConnection *gc, const char *first, const char *middle, const char *last, const char *maiden, const char *city, const char *state, const char *country, int web) { /* XXX - some of these things are wrong, but i'm lazy */ - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_locate_setdirinfo(od, first, middle, last, maiden, NULL, NULL, city, state, NULL, 0, web); } #endif void oscar_set_idle(PurpleConnection *gc, int time) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_srv_setidle(od, time); } @@ -4688,7 +4700,7 @@ const gchar *status_id; guint32 data = 0x00000000; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); status = purple_account_get_active_status(account); status_id = purple_status_get_id(status); @@ -4722,7 +4734,7 @@ gboolean setstatus, PurpleStatus *status) { PurpleConnection *gc = purple_account_get_connection(account); - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); PurpleStatusType *status_type; PurpleStatusPrimitive primitive; @@ -4854,7 +4866,7 @@ OscarData *od = NULL; if (gc) - od = (OscarData *)gc->proto_data; + od = purple_connection_get_protocol_data(gc); if (!od) return; @@ -4884,14 +4896,14 @@ oscar_set_info_and_status(account, FALSE, NULL, TRUE, status); /* Set the ICQ status for ICQ accounts only */ - if (aim_snvalid_icq(purple_account_get_username(account))) + if (oscar_util_valid_name_icq(purple_account_get_username(account))) oscar_set_status_icq(account, status); } #ifdef CRAZY_WARN void oscar_warn(PurpleConnection *gc, const char *name, gboolean anonymous) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_im_warn(od, od->conn, name, anonymous ? AIM_WARN_ANON : 0); } #endif @@ -4900,14 +4912,17 @@ oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { OscarData *od; PurpleAccount *account; - - od = (OscarData *)gc->proto_data; + const char *bname, *gname; + + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); - - if (!aim_snvalid(buddy->name)) { + bname = purple_buddy_get_name(buddy); + gname = purple_group_get_name(group); + + if (!oscar_util_valid_name(bname)) { gchar *buf; - buf = g_strdup_printf(_("Could not 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."), buddy->name); - if (!purple_conv_present_error(buddy->name, account, buf)) + buf = g_strdup_printf(_("Could not 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."), bname); + if (!purple_conv_present_error(bname, account, buf)) purple_notify_error(gc, NULL, _("Unable to Add"), buf); g_free(buf); @@ -4917,39 +4932,40 @@ return; } - if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) { + if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, gname, bname, AIM_SSI_TYPE_BUDDY))) { purple_debug_info("oscar", - "ssi: adding buddy %s to group %s\n", buddy->name, group->name); - aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); + "ssi: adding buddy %s to group %s\n", bname, gname); + aim_ssi_addbuddy(od, bname, gname, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); /* Mobile users should always be online */ - if (buddy->name[0] == '+') { + if (bname[0] == '+') { purple_prpl_got_user_status(account, - purple_buddy_get_name(buddy), - OSCAR_STATUS_ID_AVAILABLE, NULL); + bname, OSCAR_STATUS_ID_AVAILABLE, NULL); purple_prpl_got_user_status(account, - purple_buddy_get_name(buddy), - OSCAR_STATUS_ID_MOBILE, NULL); + bname, OSCAR_STATUS_ID_MOBILE, NULL); } } /* XXX - Should this be done from AIM accounts, as well? */ if (od->icq) - aim_icq_getalias(od, buddy->name); + aim_icq_getalias(od, bname); } void oscar_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); if (od->ssi.received_data) { + const char *gname = purple_group_get_name(group); + const char *bname = purple_buddy_get_name(buddy); purple_debug_info("oscar", - "ssi: deleting buddy %s from group %s\n", buddy->name, group->name); - aim_ssi_delbuddy(od, buddy->name, group->name); + "ssi: deleting buddy %s from group %s\n", bname, gname); + aim_ssi_delbuddy(od, bname, gname); } } void oscar_move_buddy(PurpleConnection *gc, const char *name, const char *old_group, const char *new_group) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); + if (od->ssi.received_data && strcmp(old_group, new_group)) { purple_debug_info("oscar", "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group); @@ -4958,7 +4974,8 @@ } void oscar_alias_buddy(PurpleConnection *gc, const char *name, const char *alias) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); + if (od->ssi.received_data) { char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name); if (gname) { @@ -4973,10 +4990,11 @@ * FYI, the OSCAR SSI code removes empty groups automatically. */ void oscar_rename_group(PurpleConnection *gc, const char *old_name, PurpleGroup *group, GList *moved_buddies) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); if (od->ssi.received_data) { - if (aim_ssi_itemlist_finditem(od->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) { + const char *gname = purple_group_get_name(group); + if (aim_ssi_itemlist_finditem(od->ssi.local, gname, NULL, AIM_SSI_TYPE_GROUP)) { GList *cur, *groups = NULL; PurpleAccount *account = purple_connection_get_account(gc); @@ -4986,25 +5004,25 @@ /* node is PurpleBuddy, parent is a PurpleContact. * We must go two levels up to get the Group */ groups = g_list_append(groups, - node->parent->parent); + purple_buddy_get_group((PurpleBuddy*)node)); } purple_account_remove_buddies(account, moved_buddies, groups); purple_account_add_buddies(account, moved_buddies); g_list_free(groups); purple_debug_info("oscar", - "ssi: moved all buddies from group %s to %s\n", old_name, group->name); + "ssi: moved all buddies from group %s to %s\n", old_name, gname); } else { - aim_ssi_rename_group(od, old_name, group->name); + aim_ssi_rename_group(od, old_name, gname); purple_debug_info("oscar", - "ssi: renamed group %s to %s\n", old_name, group->name); + "ssi: renamed group %s to %s\n", old_name, gname); } } } void oscar_remove_group(PurpleConnection *gc, PurpleGroup *group) { - aim_ssi_delgroup(gc->proto_data, group->name); + aim_ssi_delgroup(purple_connection_get_protocol_data(gc), purple_group_get_name(group)); } static gboolean purple_ssi_rerequestdata(gpointer data) { @@ -5085,7 +5103,7 @@ guint32 timestamp; gc = od->gc; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); va_start(ap, fr); @@ -5113,33 +5131,44 @@ /* Buddies */ cur = NULL; if ((blist = purple_get_blist()) != NULL) { - for (gnode = blist->root; gnode; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { + const char *gname; if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; g = (PurpleGroup *)gnode; - for (cnode = gnode->child; cnode; cnode = cnode->next) { + gname = purple_group_get_name(g); + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { + const char *bname; if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; b = (PurpleBuddy *)bnode; - if (b->account == gc->account) { - if (aim_ssi_itemlist_exists(od->ssi.local, b->name)) { + bname = purple_buddy_get_name(b); + if (purple_buddy_get_account(b) == account) { + if (aim_ssi_itemlist_exists(od->ssi.local, bname)) { /* If the buddy is an ICQ user then load his nickname */ const char *servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick"); char *alias; + const char *balias; if (servernick) - serv_got_alias(gc, b->name, servernick); + serv_got_alias(gc, bname, servernick); /* Store local alias on server */ - alias = aim_ssi_getalias(od->ssi.local, g->name, b->name); - if (!alias && b->alias && strlen(b->alias)) - aim_ssi_aliasbuddy(od, g->name, b->name, b->alias); + alias = aim_ssi_getalias(od->ssi.local, gname, bname); + balias = purple_buddy_get_local_buddy_alias(b); + if (!alias && balias && *balias) + aim_ssi_aliasbuddy(od, gname, bname, balias); g_free(alias); } else { purple_debug_info("oscar", - "ssi: removing buddy %s from local list\n", b->name); + "ssi: removing buddy %s from local list\n", bname); /* We can't actually remove now because it will screw up our looping */ cur = g_slist_prepend(cur, b); } @@ -5156,8 +5185,8 @@ } /* Permit list */ - if (gc->account->permit) { - next = gc->account->permit; + if (account->permit) { + next = account->permit; while (next != NULL) { cur = next; next = next->next; @@ -5170,8 +5199,8 @@ } /* Deny list */ - if (gc->account->deny) { - next = gc->account->deny; + if (account->deny) { + next = account->deny; while (next != NULL) { cur = next; next = next->next; @@ -5215,7 +5244,7 @@ if (g_utf8_validate(gname, -1, NULL)) gname_utf8 = g_strdup(gname); else - gname_utf8 = oscar_utf8_try_convert(gc->account, gname); + gname_utf8 = oscar_utf8_try_convert(account, gname); } else gname_utf8 = NULL; @@ -5235,18 +5264,18 @@ } else alias_utf8 = NULL; - b = purple_find_buddy_in_group(gc->account, curitem->name, g); + b = purple_find_buddy_in_group(account, curitem->name, g); if (b) { /* Get server stored alias */ purple_blist_alias_buddy(b, alias_utf8); } else { - b = purple_buddy_new(gc->account, curitem->name, alias_utf8); + b = purple_buddy_new(account, curitem->name, alias_utf8); purple_debug_info("oscar", - "ssi: adding buddy %s to group %s to local list\n", curitem->name, g->name); + "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname); purple_blist_add_buddy(b, NULL, g, NULL); } - if (!aim_sncmp(curitem->name, account->username)) { + if (!oscar_util_name_compare(curitem->name, purple_account_get_username(account))) { char *comment = aim_ssi_getcomment(od->ssi.local, gname, curitem->name); if (comment != NULL) { @@ -5256,7 +5285,7 @@ } /* Mobile users should always be online */ - if (b->name[0] == '+') { + if (curitem->name[0] == '+') { purple_prpl_got_user_status(account, purple_buddy_get_name(b), OSCAR_STATUS_ID_AVAILABLE, NULL); @@ -5279,7 +5308,7 @@ if (g_utf8_validate(gname, -1, NULL)) gname_utf8 = g_strdup(gname); else - gname_utf8 = oscar_utf8_try_convert(gc->account, gname); + gname_utf8 = oscar_utf8_try_convert(account, gname); } else gname_utf8 = NULL; @@ -5294,7 +5323,7 @@ if (curitem->name) { /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */ GSList *list; - for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next); + for (list=account->permit; (list && oscar_util_name_compare(curitem->name, list->data)); list=list->next); if (!list) { purple_debug_info("oscar", "ssi: adding permit buddy %s to local list\n", curitem->name); @@ -5306,7 +5335,7 @@ case 0x0003: { /* Deny buddy */ if (curitem->name) { GSList *list; - for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next); + for (list=account->deny; (list && oscar_util_name_compare(curitem->name, list->data)); list=list->next); if (!list) { purple_debug_info("oscar", "ssi: adding deny buddy %s to local list\n", curitem->name); @@ -5323,7 +5352,7 @@ "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny); account->perm_deny = permdeny; if (od->icq && account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) { - purple_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE); + purple_presence_set_status_active(purple_account_get_presence(account), OSCAR_STATUS_ID_INVISIBLE, TRUE); } } } @@ -5469,13 +5498,11 @@ purple_blist_add_buddy(b, NULL, g, NULL); /* Mobile users should always be online */ - if (b->name[0] == '+') { + if (name[0] == '+') { purple_prpl_got_user_status(account, - purple_buddy_get_name(b), - OSCAR_STATUS_ID_AVAILABLE, NULL); + name, OSCAR_STATUS_ID_AVAILABLE, NULL); purple_prpl_got_user_status(account, - purple_buddy_get_name(b), - OSCAR_STATUS_ID_MOBILE, NULL); + name, OSCAR_STATUS_ID_MOBILE, NULL); } } @@ -5498,36 +5525,36 @@ static int purple_ssi_authgiven(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { PurpleConnection *gc = od->gc; va_list ap; - char *sn, *msg; + char *bn, *msg; gchar *dialog_msg, *nombre; struct name_data *data; PurpleBuddy *buddy; va_start(ap, fr); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); msg = va_arg(ap, char *); va_end(ap); purple_debug_info("oscar", - "ssi: %s has given you permission to add him to your buddy list\n", sn); - - buddy = purple_find_buddy(gc->account, sn); + "ssi: %s has given you permission to add him to your buddy list\n", bn); + + buddy = purple_find_buddy(purple_connection_get_account(gc), bn); if (buddy && (purple_buddy_get_alias_only(buddy))) - nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy)); + nombre = g_strdup_printf("%s (%s)", bn, purple_buddy_get_alias_only(buddy)); else - nombre = g_strdup(sn); + nombre = g_strdup(bn); dialog_msg = g_strdup_printf(_("The user %s has given you permission to add him or her to your buddy list. Do you want to add this user?"), nombre); g_free(nombre); data = g_new(struct name_data, 1); data->gc = gc; - data->name = g_strdup(sn); + data->name = g_strdup(bn); data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL); purple_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg, PURPLE_DEFAULT_ACTION_NONE, - purple_connection_get_account(gc), sn, NULL, + purple_connection_get_account(gc), bn, NULL, data, G_CALLBACK(purple_icq_buddyadd), G_CALLBACK(oscar_free_name_data)); @@ -5539,7 +5566,7 @@ static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { PurpleConnection *gc = od->gc; va_list ap; - char *sn; + char *bn; char *msg; PurpleAccount *account = purple_connection_get_account(gc); gchar *reason = NULL; @@ -5547,24 +5574,24 @@ PurpleBuddy *buddy; va_start(ap, fr); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); msg = va_arg(ap, char *); va_end(ap); purple_debug_info("oscar", - "ssi: received authorization request from %s\n", sn); - - buddy = purple_find_buddy(account, sn); + "ssi: received authorization request from %s\n", bn); + + buddy = purple_find_buddy(account, bn); if (msg != NULL) - reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg)); + reason = purple_plugin_oscar_decode_im_part(account, bn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg)); data = g_new(struct name_data, 1); data->gc = gc; - data->name = g_strdup(sn); + data->name = g_strdup(bn); data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL); - purple_account_request_authorization(account, sn, NULL, + purple_account_request_authorization(account, bn, NULL, (buddy ? purple_buddy_get_alias_only(buddy) : NULL), reason, buddy != NULL, purple_auth_grant, purple_auth_dontgrant_msgprompt, data); @@ -5576,25 +5603,25 @@ static int purple_ssi_authreply(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { PurpleConnection *gc = od->gc; va_list ap; - char *sn, *msg; + char *bn, *msg; gchar *dialog_msg, *nombre; guint8 reply; PurpleBuddy *buddy; va_start(ap, fr); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); reply = (guint8)va_arg(ap, int); msg = va_arg(ap, char *); va_end(ap); purple_debug_info("oscar", - "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply); - - buddy = purple_find_buddy(gc->account, sn); + "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", bn, reply); + + buddy = purple_find_buddy(purple_connection_get_account(gc), bn); if (buddy && (purple_buddy_get_alias_only(buddy))) - nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy)); + nombre = g_strdup_printf("%s (%s)", bn, purple_buddy_get_alias_only(buddy)); else - nombre = g_strdup(sn); + nombre = g_strdup(bn); if (reply) { /* Granted */ @@ -5613,17 +5640,19 @@ static int purple_ssi_gotadded(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { PurpleConnection *gc = od->gc; + PurpleAccount *account = purple_connection_get_account(gc); va_list ap; - char *sn; + char *bn; PurpleBuddy *buddy; va_start(ap, fr); - sn = va_arg(ap, char *); + bn = va_arg(ap, char *); va_end(ap); - buddy = purple_find_buddy(gc->account, sn); - purple_debug_info("oscar", "ssi: %s added you to their buddy list\n", sn); - purple_account_notify_added(gc->account, sn, NULL, (buddy ? purple_buddy_get_alias_only(buddy) : NULL), NULL); + buddy = purple_find_buddy(account, bn); + purple_debug_info("oscar", "ssi: %s added you to their buddy list\n", bn); + purple_account_notify_added(account, bn, NULL, + (buddy ? purple_buddy_get_alias_only(buddy) : NULL), NULL); return 1; } @@ -5672,7 +5701,7 @@ void oscar_join_chat(PurpleConnection *gc, GHashTable *data) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); FlapConnection *conn; char *name, *exchange; int exchange_int; @@ -5707,7 +5736,7 @@ void oscar_chat_invite(PurpleConnection *gc, int id, const char *message, const char *name) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); struct chat_connection *ccon = find_oscar_chat(gc, id); if (ccon == NULL) @@ -5727,14 +5756,16 @@ g_return_if_fail(conv != NULL); - purple_debug_info("oscar", "Leaving chat room %s\n", conv->name); + purple_debug_info("oscar", "Leaving chat room %s\n", + purple_conversation_get_name(conv)); cc = find_oscar_chat(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv))); oscar_chat_kill(gc, cc); } -int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) { - OscarData *od = (OscarData *)gc->proto_data; +int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) +{ + OscarData *od = purple_connection_get_protocol_data(gc); PurpleConversation *conv = NULL; struct chat_connection *c = NULL; char *buf, *buf2, *buf3; @@ -5801,30 +5832,32 @@ const char *oscar_list_icon_icq(PurpleAccount *a, PurpleBuddy *b) { - if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name)) + const char *name = b ? purple_buddy_get_name(b) : NULL; + if ((b == NULL) || (name == NULL) || oscar_util_valid_name_sms(name)) { - if (a == NULL || aim_snvalid_icq(purple_account_get_username(a))) + if (a == NULL || oscar_util_valid_name_icq(purple_account_get_username(a))) return "icq"; else return "aim"; } - if (aim_snvalid_icq(b->name)) + if (oscar_util_valid_name_icq(name)) return "icq"; return "aim"; } const char *oscar_list_icon_aim(PurpleAccount *a, PurpleBuddy *b) { - if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name)) + const char *name = b ? purple_buddy_get_name(b) : NULL; + if ((b == NULL) || (name == NULL) || oscar_util_valid_name_sms(name)) { - if (a != NULL && aim_snvalid_icq(purple_account_get_username(a))) + if (a != NULL && oscar_util_valid_name_icq(purple_account_get_username(a))) return "icq"; else return "aim"; } - if (aim_snvalid_icq(b->name)) + if (oscar_util_valid_name_icq(name)) return "icq"; return "aim"; } @@ -5838,14 +5871,16 @@ PurpleStatus *status; const char *status_id; aim_userinfo_t *userinfo = NULL; - - account = b->account; + const char *name; + + account = purple_buddy_get_account(b); + name = purple_buddy_get_name(b); if (account != NULL) - gc = account->gc; + gc = purple_account_get_connection(account); if (gc != NULL) - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); if (od != NULL) - userinfo = aim_locate_finduserinfo(od, b->name); + userinfo = aim_locate_finduserinfo(od, name); presence = purple_buddy_get_presence(b); status = purple_presence_get_active_status(presence); @@ -5853,9 +5888,9 @@ if (purple_presence_is_online(presence) == FALSE) { char *gname; - if ((b->name) && (od) && (od->ssi.received_data) && - (gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name)) && - (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))) { + if ((name) && (od) && (od->ssi.received_data) && + (gname = aim_ssi_itemlist_findparentname(od->ssi.local, name)) && + (aim_ssi_waitingforauth(od->ssi.local, gname, name))) { return "not-authorized"; } } @@ -5878,15 +5913,17 @@ void oscar_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) { PurpleConnection *gc; + PurpleAccount *account; OscarData *od; aim_userinfo_t *userinfo; if (!PURPLE_BUDDY_IS_ONLINE(b)) return; - gc = b->account->gc; - od = gc->proto_data; - userinfo = aim_locate_finduserinfo(od, b->name); + account = purple_buddy_get_account(b); + gc = purple_account_get_connection(account); + od = purple_connection_get_protocol_data(gc); + userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b)); oscar_user_info_append_status(gc, user_info, b, userinfo, /* strip_html_tags */ TRUE); @@ -5907,15 +5944,16 @@ gc = purple_account_get_connection(purple_buddy_get_account(b)); account = purple_connection_get_account(gc); - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); presence = purple_buddy_get_presence(b); status = purple_presence_get_active_status(presence); id = purple_status_get_id(status); if ((od != NULL) && !purple_presence_is_online(presence)) { - char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name); - if (aim_ssi_waitingforauth(od->ssi.local, gname, b->name)) + const char *name = purple_buddy_get_name(b); + char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name); + if (aim_ssi_waitingforauth(od->ssi.local, gname, name)) ret = g_strdup(_("Not Authorized")); else ret = g_strdup(_("Offline")); @@ -6006,7 +6044,7 @@ void oscar_set_permit_deny(PurpleConnection *gc) { PurpleAccount *account = purple_connection_get_account(gc); - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); if (od->ssi.received_data) { switch (account->perm_deny) { @@ -6033,28 +6071,28 @@ } void oscar_add_permit(PurpleConnection *gc, const char *who) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); purple_debug_info("oscar", "ssi: About to add a permit\n"); if (od->ssi.received_data) aim_ssi_addpermit(od, who); } void oscar_add_deny(PurpleConnection *gc, const char *who) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); purple_debug_info("oscar", "ssi: About to add a deny\n"); if (od->ssi.received_data) aim_ssi_adddeny(od, who); } void oscar_rem_permit(PurpleConnection *gc, const char *who) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); purple_debug_info("oscar", "ssi: About to delete a permit\n"); if (od->ssi.received_data) aim_ssi_delpermit(od, who); } void oscar_rem_deny(PurpleConnection *gc, const char *who) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); purple_debug_info("oscar", "ssi: About to delete a deny\n"); if (od->ssi.received_data) aim_ssi_deldeny(od, who); @@ -6070,7 +6108,7 @@ g_return_val_if_fail(account != NULL, NULL); /* Used to flag some statuses as "user settable" or not */ - is_icq = aim_snvalid_icq(purple_account_get_username(account)); + is_icq = oscar_util_valid_name_icq(purple_account_get_username(account)); /* Common status types */ /* Really the available message should only be settable for AIM accounts */ @@ -6136,24 +6174,33 @@ } static void oscar_ssi_editcomment(struct name_data *data, const char *text) { - PurpleConnection *gc = data->gc; - OscarData *od = gc->proto_data; + PurpleConnection *gc; + PurpleAccount *account; + OscarData *od; PurpleBuddy *b; PurpleGroup *g; - - if (!(b = purple_find_buddy(purple_connection_get_account(data->gc), data->name))) { + const char *username; + + gc = data->gc; + od = purple_connection_get_protocol_data(gc); + account = purple_connection_get_account(gc); + + b = purple_find_buddy(account, data->name); + if (b == NULL) { oscar_free_name_data(data); return; } - if (!(g = purple_buddy_get_group(b))) { + g = purple_buddy_get_group(b); + if (g == NULL) { oscar_free_name_data(data); return; } - aim_ssi_editcomment(od, g->name, data->name, text); - - if (!aim_sncmp(data->name, gc->account->username)) + aim_ssi_editcomment(od, purple_group_get_name(g), data->name, text); + + username = purple_account_get_username(account); + if (!oscar_util_name_compare(data->name, username)) purple_check_comment(od, text); oscar_free_name_data(data); @@ -6169,23 +6216,27 @@ char *comment; gchar *comment_utf8; gchar *title; + PurpleAccount *account; + const char *name; g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - od = gc->proto_data; + name = purple_buddy_get_name(buddy); + account = purple_buddy_get_account(buddy); + gc = purple_account_get_connection(account); + od = purple_connection_get_protocol_data(gc); if (!(g = purple_buddy_get_group(buddy))) return; data = g_new(struct name_data, 1); - comment = aim_ssi_getcomment(od->ssi.local, g->name, buddy->name); - comment_utf8 = comment ? oscar_utf8_try_convert(gc->account, comment) : NULL; + comment = aim_ssi_getcomment(od->ssi.local, purple_group_get_name(g), name); + comment_utf8 = comment ? oscar_utf8_try_convert(account, comment) : NULL; data->gc = gc; - data->name = g_strdup(purple_buddy_get_name(buddy)); + data->name = g_strdup(name); data->nick = g_strdup(purple_buddy_get_alias_only(buddy)); title = g_strdup_printf(_("Buddy Comment for %s"), data->name); @@ -6193,7 +6244,7 @@ comment_utf8, TRUE, FALSE, NULL, _("_OK"), G_CALLBACK(oscar_ssi_editcomment), _("_Cancel"), G_CALLBACK(oscar_free_name_data), - purple_connection_get_account(gc), data->name, NULL, + account, data->name, NULL, data); g_free(title); @@ -6225,26 +6276,28 @@ PurpleConnection *gc; gchar *buf; struct oscar_ask_directim_data *data; + PurpleAccount *account; node = object; g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *)node; - gc = purple_account_get_connection(buddy->account); + account = purple_buddy_get_account(buddy); + gc = purple_account_get_connection(account); data = g_new0(struct oscar_ask_directim_data, 1); - data->who = g_strdup(buddy->name); - data->od = gc->proto_data; + data->who = g_strdup(purple_buddy_get_name(buddy)); + data->od = purple_connection_get_protocol_data(gc); buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."), - buddy->name); + data->who); purple_request_action(gc, NULL, buf, _("Because this reveals your IP address, it " "may be considered a security risk. Do you " "wish to continue?"), 0, /* Default action is "connect" */ - purple_connection_get_account(gc), data->who, NULL, + account, data->who, NULL, data, 2, _("C_onnect"), G_CALLBACK(oscar_ask_directim_yes_cb), _("_Cancel"), G_CALLBACK(oscar_ask_directim_no_cb)); @@ -6260,9 +6313,10 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *)node; - gc = purple_account_get_connection(buddy->account); - - aim_locate_getinfoshort(gc->proto_data, purple_buddy_get_name(buddy), 0x00000003); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + + aim_locate_getinfoshort(purple_connection_get_protocol_data(gc), + purple_buddy_get_name(buddy), 0x00000003); } static GList * @@ -6273,13 +6327,16 @@ GList *menu; PurpleMenuAction *act; aim_userinfo_t *userinfo; - - gc = purple_account_get_connection(buddy->account); - od = gc->proto_data; - userinfo = aim_locate_finduserinfo(od, buddy->name); + PurpleAccount *account; + const char *bname = purple_buddy_get_name(buddy); + + account = purple_buddy_get_account(buddy); + gc = purple_account_get_connection(account); + od = purple_connection_get_protocol_data(gc); + userinfo = aim_locate_finduserinfo(od, bname); menu = NULL; - if (od->icq && aim_snvalid_icq(purple_buddy_get_name(buddy))) + if (od->icq && oscar_util_valid_name_icq(bname)) { act = purple_menu_action_new(_("Get AIM Info"), PURPLE_CALLBACK(oscar_get_aim_info_cb), @@ -6307,7 +6364,7 @@ #endif if (userinfo && - aim_sncmp(purple_account_get_username(buddy->account), buddy->name) && + oscar_util_name_compare(purple_account_get_username(account), bname) && PURPLE_BUDDY_IS_ONLINE(buddy)) { if (userinfo->capabilities & OSCAR_CAPABILITY_DIRECTIM) @@ -6331,8 +6388,8 @@ if (od->ssi.received_data && purple_buddy_get_group(buddy) != NULL) { char *gname; - gname = aim_ssi_itemlist_findparentname(od->ssi.local, buddy->name); - if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, buddy->name)) + gname = aim_ssi_itemlist_findparentname(od->ssi.local, bname); + if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, bname)) { act = purple_menu_action_new(_("Re-request Authorization"), PURPLE_CALLBACK(purple_auth_sendrequest_menu), @@ -6358,7 +6415,7 @@ static void oscar_icq_privacy_opts(PurpleConnection *gc, PurpleRequestFields *fields) { - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); PurpleAccount *account = purple_connection_get_account(gc); PurpleRequestField *f; gboolean auth, web_aware; @@ -6409,13 +6466,13 @@ gc); } -static void oscar_format_screenname(PurpleConnection *gc, const char *nick) { - OscarData *od = gc->proto_data; - if (!aim_sncmp(purple_account_get_username(purple_connection_get_account(gc)), nick)) { +static void oscar_format_username(PurpleConnection *gc, const char *nick) { + OscarData *od = purple_connection_get_protocol_data(gc); + if (!oscar_util_name_compare(purple_account_get_username(purple_connection_get_account(gc)), nick)) { if (!flap_connection_getbytype(od, SNAC_FAMILY_ADMIN)) { od->setnick = TRUE; - g_free(od->newsn); - od->newsn = g_strdup(nick); + g_free(od->newformatting); + od->newformatting = g_strdup(nick); aim_srv_requestnew(od, SNAC_FAMILY_ADMIN); } else { aim_admin_setnick(od, flap_connection_getbytype(od, SNAC_FAMILY_ADMIN), nick); @@ -6433,7 +6490,7 @@ FlapConnection *conn; gc = (PurpleConnection *)action->context; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN); if (conn != NULL) { @@ -6447,7 +6504,7 @@ static void oscar_show_email(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *) action->context; - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN); if (conn) { @@ -6460,7 +6517,7 @@ static void oscar_change_email(PurpleConnection *gc, const char *email) { - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN); if (conn) { @@ -6486,29 +6543,40 @@ static void oscar_show_awaitingauth(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *) action->context; - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); gchar *nombre, *text, *tmp; PurpleBlistNode *gnode, *cnode, *bnode; + PurpleAccount *account; int num=0; text = g_strdup(""); - - for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + account = purple_connection_get_account(gc); + + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { PurpleGroup *group = (PurpleGroup *)gnode; + const char *gname; if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode; cnode = cnode->next) { + gname = purple_group_get_name(group); + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { PurpleBuddy *buddy = (PurpleBuddy *)bnode; + const char *bname; if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; - if (buddy->account == gc->account && aim_ssi_waitingforauth(od->ssi.local, group->name, buddy->name)) { + bname = purple_buddy_get_name(buddy); + if (purple_buddy_get_account(buddy) == account && aim_ssi_waitingforauth(od->ssi.local, gname, bname)) { if (purple_buddy_get_alias_only(buddy)) - nombre = g_strdup_printf(" %s (%s)", buddy->name, purple_buddy_get_alias_only(buddy)); + nombre = g_strdup_printf(" %s (%s)", bname, purple_buddy_get_alias_only(buddy)); else - nombre = g_strdup_printf(" %s", buddy->name); + nombre = g_strdup_printf(" %s", bname); tmp = g_strdup_printf("%s%s
", text, nombre); g_free(text); text = tmp; @@ -6534,7 +6602,7 @@ static void search_by_email_cb(PurpleConnection *gc, const char *email) { - OscarData *od = (OscarData *)gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); aim_search_address(od, email); } @@ -6574,7 +6642,7 @@ static void oscar_show_chpassurl(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *) action->context; - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); gchar *substituted = purple_strreplace(od->authinfo->chpassurl, "%s", purple_account_get_username(purple_connection_get_account(gc))); purple_notify_uri(gc, substituted); g_free(substituted); @@ -6588,7 +6656,7 @@ void oscar_set_icon(PurpleConnection *gc, PurpleStoredImage *img) { - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); if (img == NULL) { aim_ssi_delicon(od); @@ -6617,7 +6685,7 @@ OscarData *od; PurpleAccount *account; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); if (od != NULL) @@ -6631,7 +6699,7 @@ */ if (((userinfo == NULL) || (userinfo->capabilities & OSCAR_CAPABILITY_SENDFILE)) && - aim_sncmp(who, purple_account_get_username(account))) + oscar_util_name_compare(who, purple_account_get_username(account))) { return TRUE; } @@ -6648,7 +6716,7 @@ PurpleAccount *account; PeerConnection *conn; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); account = purple_connection_get_account(gc); xfer = purple_xfer_new(account, PURPLE_XFER_SEND, who); @@ -6692,7 +6760,7 @@ oscar_actions(PurplePlugin *plugin, gpointer context) { PurpleConnection *gc = (PurpleConnection *) context; - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); GList *menu = NULL; PurplePluginAction *act; @@ -6772,7 +6840,7 @@ void oscar_change_passwd(PurpleConnection *gc, const char *old, const char *new) { - OscarData *od = gc->proto_data; + OscarData *od = purple_connection_get_protocol_data(gc); if (od->icq) { aim_icq_changepasswd(od, new); @@ -6796,7 +6864,7 @@ OscarData *od; PeerConnection *conn; - od = gc->proto_data; + od = purple_connection_get_protocol_data(gc); conn = peer_connection_find_by_type(od, who, OSCAR_CAPABILITY_DIRECTIM); if (conn != NULL) @@ -6818,11 +6886,13 @@ g_return_val_if_fail(str != NULL, NULL); /* copy str to buf and skip all blanks */ - for (i=0, j=0; str[j] && i < BUF_LEN - 1; i++, j++) - { - while (str[j] == ' ') - j++; - buf[i] = str[j]; + i = 0; + for (j = 0; str[j]; j++) { + if (str[j] != ' ') { + buf[i++] = str[j]; + if (i >= BUF_LEN - 1) + break; + } } buf[i] = '\0'; @@ -6887,14 +6957,14 @@ /* aim:GoIM?screenname=SCREENNAME&message=MESSAGE */ if (!g_ascii_strcasecmp(cmd, "GoIM")) { - char *sname = g_hash_table_lookup(params, "screenname"); - if (sname) { + char *bname = g_hash_table_lookup(params, "screenname"); + if (bname) { char *message = g_hash_table_lookup(params, "message"); PurpleConversation *conv = purple_find_conversation_with_account( - PURPLE_CONV_TYPE_IM, sname, acct); + PURPLE_CONV_TYPE_IM, bname, acct); if (conv == NULL) - conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, sname); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, bname); purple_conversation_present(conv); if (message) { @@ -6927,9 +6997,9 @@ } /* aim:AddBuddy?screenname=SCREENNAME&groupname=GROUPNAME*/ else if (!g_ascii_strcasecmp(cmd, "AddBuddy")) { - char *sname = g_hash_table_lookup(params, "screenname"); + char *bname = g_hash_table_lookup(params, "screenname"); char *gname = g_hash_table_lookup(params, "groupname"); - purple_blist_request_add_buddy(acct, sname, gname, NULL); + purple_blist_request_add_buddy(acct, bname, gname, NULL); return TRUE; } @@ -6959,7 +7029,7 @@ option = purple_account_option_bool_new(_("Allow multiple simultaneous logins"), "allow_multiple_logins", OSCAR_DEFAULT_ALLOW_MULTIPLE_LOGINS); prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option); - + if (init) return; init = TRUE; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/oscar.h --- a/libpurple/protocols/oscar/oscar.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.h Mon Mar 02 22:07:59 2009 +0000 @@ -75,7 +75,7 @@ #define FAIM_SNAC_HASH_SIZE 16 /* - * Current Maximum Length for Screen Names (not including NULL) + * Current Maximum Length for usernames (not including NULL) * * Currently only names up to 16 characters can be registered * however it is apparently legal for them to be larger. @@ -479,7 +479,7 @@ gboolean setemail; char *email; gboolean setnick; - char *newsn; + char *newformatting; gboolean chpass; char *oldp; char *newp; @@ -582,7 +582,7 @@ struct aim_authresp_info { - char *sn; + char *bn; guint16 errorcode; char *errorurl; guint16 regstatus; @@ -611,8 +611,8 @@ } chat; }; -int aim_request_login(OscarData *od, FlapConnection *conn, const char *sn); -int aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key, gboolean allow_multiple_logins); +int aim_request_login(OscarData *od, FlapConnection *conn, const char *bn); +int aim_send_login(OscarData *od, FlapConnection *conn, const char *bn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key, gboolean allow_multiple_logins); /* 0x000b */ int aim_auth_securid_send(OscarData *od, const char *securid); void oscar_data_addhandler(OscarData *od, guint16 family, guint16 subtype, aim_rxcallback_t newhandler, guint16 flags); @@ -811,7 +811,7 @@ { /* These are _required_ */ - const char *destsn; + const char *destbn; guint32 flags; /* often 0 */ /* Only required if not using multipart messages */ @@ -840,7 +840,7 @@ */ struct aim_sendrtfmsg_args { - const char *destsn; + const char *destbn; guint32 fgcolor; guint32 bgcolor; const char *rtfmsg; /* must be in RTF */ @@ -954,28 +954,28 @@ /* 0x0002 */ int aim_im_setparams(OscarData *od, struct aim_icbmparameters *params); /* 0x0004 */ int aim_im_reqparams(OscarData *od); /* 0x0006 */ int aim_im_sendch1_ext(OscarData *od, struct aim_sendimext_args *args); -/* 0x0006 */ int aim_im_sendch1(OscarData *, const char *destsn, guint16 flags, const char *msg); -/* 0x0006 */ int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, guint16 exchange, const char *roomname, guint16 instance); -/* 0x0006 */ int aim_im_sendch2_icon(OscarData *od, const char *sn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum); +/* 0x0006 */ int aim_im_sendch1(OscarData *, const char *destbn, guint16 flags, const char *msg); +/* 0x0006 */ int aim_im_sendch2_chatinvite(OscarData *od, const char *bn, const char *msg, guint16 exchange, const char *roomname, guint16 instance); +/* 0x0006 */ int aim_im_sendch2_icon(OscarData *od, const char *bn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum); /* 0x0006 */ int aim_im_sendch2_rtfmsg(OscarData *od, struct aim_sendrtfmsg_args *args); /* 0x0006 */ void aim_im_sendch2_cancel(PeerConnection *peer_conn); /* 0x0006 */ void aim_im_sendch2_connected(PeerConnection *peer_conn); -/* 0x0006 */ void aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber); -/* 0x0006 */ void aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber); -/* 0x0006 */ void aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles); -/* 0x0006 */ void aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles); +/* 0x0006 */ void aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber); +/* 0x0006 */ void aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber); +/* 0x0006 */ void aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles); +/* 0x0006 */ void aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles); -/* 0x0006 */ int aim_im_sendch2_geticqaway(OscarData *od, const char *sn, int type); -/* 0x0006 */ int aim_im_sendch4(OscarData *od, const char *sn, guint16 type, const char *message); -/* 0x0008 */ int aim_im_warn(OscarData *od, FlapConnection *conn, const char *destsn, guint32 flags); -/* 0x000b */ int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, guint16 code); +/* 0x0006 */ int aim_im_sendch2_geticqaway(OscarData *od, const char *bn, int type); +/* 0x0006 */ int aim_im_sendch4(OscarData *od, const char *bn, guint16 type, const char *message); +/* 0x0008 */ int aim_im_warn(OscarData *od, FlapConnection *conn, const char *destbn, guint32 flags); +/* 0x000b */ int aim_im_denytransfer(OscarData *od, const char *bn, const guchar *cookie, guint16 code); /* 0x0010 */ int aim_im_reqofflinemsgs(OscarData *od); -/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2); +/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *bn, guint16 type2); void aim_icbm_makecookie(guchar* cookie); gchar *oscar_encoding_extract(const char *encoding); gchar *oscar_encoding_to_utf8(PurpleAccount *account, const char *encoding, const char *text, int textlen); -gchar *purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen); +gchar *purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcebn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen); /* 0x0002 - family_locate.c */ @@ -1010,13 +1010,13 @@ struct userinfo_node { - char *sn; + char *bn; struct userinfo_node *next; }; typedef struct aim_userinfo_s { - char *sn; + char *bn; guint16 warnlevel; /* evil percent * 10 (999 = 99.9%) */ guint16 idletime; /* in seconds */ guint16 flags; @@ -1062,7 +1062,7 @@ struct aim_invite_priv { - char *sn; + char *bn; char *roomname; guint16 exchange; guint16 instance; @@ -1085,7 +1085,7 @@ #define AIM_COOKIETYPE_OFTIMAGE 0x14 #define AIM_COOKIETYPE_OFTICON 0x15 -aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *sn); +aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *bn); void aim_locate_dorequest(OscarData *od); /* 0x0002 */ int aim_locate_reqrights(OscarData *od); @@ -1093,11 +1093,11 @@ /* 0x0004 */ int aim_locate_setprofile(OscarData *od, const char *profile_encoding, const gchar *profile, const int profile_len, const char *awaymsg_encoding, const gchar *awaymsg, const int awaymsg_len); /* 0x0005 */ int aim_locate_getinfo(OscarData *od, const char *, guint16); /* 0x0009 */ int aim_locate_setdirinfo(OscarData *od, const char *first, const char *middle, const char *last, const char *maiden, const char *nickname, const char *street, const char *city, const char *state, const char *zip, int country, guint16 privacy); -/* 0x000b */ int aim_locate_000b(OscarData *od, const char *sn); +/* 0x000b */ int aim_locate_000b(OscarData *od, const char *bn); /* 0x000f */ int aim_locate_setinterests(OscarData *od, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, guint16 privacy); -/* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *sn, guint32 flags); +/* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags); -void aim_locate_autofetch_away_message(OscarData *od, const char *sn); +void aim_locate_autofetch_away_message(OscarData *od, const char *bn); guint32 aim_locate_getcaps(OscarData *od, ByteStream *bs, int len); guint32 aim_locate_getcaps_short(OscarData *od, ByteStream *bs, int len); void aim_info_free(aim_userinfo_t *); @@ -1164,7 +1164,7 @@ char *country; char *state; char *city; - char *sn; + char *bn; char *interest; char *nick; char *zip; @@ -1181,7 +1181,7 @@ /* 0x0010 - family_bart.c */ int aim_bart_upload(OscarData *od, const guint8 *icon, guint16 iconlen); -int aim_bart_request(OscarData *od, const char *sn, guint8 iconcsumtype, const guint8 *iconstr, guint16 iconstrlen); +int aim_bart_request(OscarData *od, const char *bn, guint8 iconcsumtype, const guint8 *iconstr, guint16 iconstrlen); @@ -1231,20 +1231,20 @@ /* 0x0007 */ int aim_ssi_enable(OscarData *od); /* 0x0011 */ int aim_ssi_modbegin(OscarData *od); /* 0x0012 */ int aim_ssi_modend(OscarData *od); -/* 0x0014 */ int aim_ssi_sendauth(OscarData *od, char *sn, char *msg); -/* 0x0018 */ int aim_ssi_sendauthrequest(OscarData *od, char *sn, const char *msg); -/* 0x001a */ int aim_ssi_sendauthreply(OscarData *od, char *sn, guint8 reply, const char *msg); +/* 0x0014 */ int aim_ssi_sendauth(OscarData *od, char *bn, char *msg); +/* 0x0018 */ int aim_ssi_sendauthrequest(OscarData *od, char *bn, const char *msg); +/* 0x001a */ int aim_ssi_sendauthreply(OscarData *od, char *bn, guint8 reply, const char *msg); /* Client functions for retrieving SSI data */ struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, guint16 gid, guint16 bid); -struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, guint16 type); -struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn); -char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn); +struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *bn, guint16 type); +struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *bn); +char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *bn); int aim_ssi_getpermdeny(struct aim_ssi_item *list); guint32 aim_ssi_getpresence(struct aim_ssi_item *list); -char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn); -char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *sn); -gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn); +char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *bn); +char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *bn); +gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *bn); /* Client functions for changing SSI data */ int aim_ssi_addbuddy(OscarData *od, const char *name, const char *group, GSList *tlvlist, const char *alias, const char *comment, const char *smsnum, gboolean needauth); @@ -1254,9 +1254,9 @@ int aim_ssi_delgroup(OscarData *od, const char *group); int aim_ssi_delpermit(OscarData *od, const char *name); int aim_ssi_deldeny(OscarData *od, const char *name); -int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *sn); -int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char *alias); -int aim_ssi_editcomment(OscarData *od, const char *gn, const char *sn, const char *alias); +int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *bn); +int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *bn, const char *alias); +int aim_ssi_editcomment(OscarData *od, const char *gn, const char *bn, const char *alias); int aim_ssi_rename_group(OscarData *od, const char *oldgn, const char *newgn); int aim_ssi_cleanlist(OscarData *od); int aim_ssi_deletelist(OscarData *od); @@ -1501,11 +1501,10 @@ int aimutil_itemcnt(char *toSearch, char dl); char *aimutil_itemindex(char *toSearch, int theindex, char dl); -gboolean aim_snvalid(const char *sn); -gboolean aim_snvalid_icq(const char *sn); -gboolean aim_snvalid_sms(const char *sn); -int aim_snlen(const char *sn); -int aim_sncmp(const char *sn1, const char *sn2); +gboolean oscar_util_valid_name(const char *bn); +gboolean oscar_util_valid_name_icq(const char *bn); +gboolean oscar_util_valid_name_sms(const char *bn); +int oscar_util_name_compare(const char *bn1, const char *bn2); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/peer.c --- a/libpurple/protocols/oscar/peer.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/peer.c Mon Mar 02 22:07:59 2009 +0000 @@ -69,7 +69,7 @@ #endif PeerConnection * -peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type) +peer_connection_find_by_type(OscarData *od, const char *bn, OscarCapability type) { GSList *cur; PeerConnection *conn; @@ -77,7 +77,7 @@ for (cur = od->peer_connections; cur != NULL; cur = cur->next) { conn = cur->data; - if ((conn->type == type) && !aim_sncmp(conn->sn, sn)) + if ((conn->type == type) && !oscar_util_name_compare(conn->bn, bn)) return conn; } @@ -88,7 +88,7 @@ * @param cookie This must be exactly 8 characters. */ PeerConnection * -peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cookie) +peer_connection_find_by_cookie(OscarData *od, const char *bn, const guchar *cookie) { GSList *cur; PeerConnection *conn; @@ -96,7 +96,7 @@ for (cur = od->peer_connections; cur != NULL; cur = cur->next) { conn = cur->data; - if (!memcmp(conn->cookie, cookie, 8) && !aim_sncmp(conn->sn, sn)) + if (!memcmp(conn->cookie, cookie, 8) && !oscar_util_name_compare(conn->bn, bn)) return conn; } @@ -104,7 +104,7 @@ } PeerConnection * -peer_connection_new(OscarData *od, OscarCapability type, const char *sn) +peer_connection_new(OscarData *od, OscarCapability type, const char *bn) { PeerConnection *conn; PurpleAccount *account; @@ -114,7 +114,7 @@ conn = g_new0(PeerConnection, 1); conn->od = od; conn->type = type; - conn->sn = g_strdup(sn); + conn->bn = g_strdup(bn); conn->buffer_outgoing = purple_circ_buffer_new(0); conn->listenerfd = -1; conn->fd = -1; @@ -228,7 +228,7 @@ conn->xfer = NULL; } - g_free(conn->sn); + g_free(conn->bn); g_free(conn->error_message); g_free(conn->proxyip); g_free(conn->clientip); @@ -698,20 +698,20 @@ if (conn->type == OSCAR_CAPABILITY_DIRECTIM) { aim_im_sendch2_odc_requestdirect(od, - conn->cookie, conn->sn, purple_network_ip_atoi(listener_ip), + conn->cookie, conn->bn, purple_network_ip_atoi(listener_ip), listener_port, ++conn->lastrequestnumber); /* Print a message to a local conversation window */ - conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn); tmp = g_strdup_printf(_("Asking %s to connect to us at %s:%hu for " - "Direct IM."), conn->sn, listener_ip, listener_port); + "Direct IM."), conn->bn, listener_ip, listener_port); purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(tmp); } else if (conn->type == OSCAR_CAPABILITY_SENDFILE) { aim_im_sendch2_sendfile_requestdirect(od, - conn->cookie, conn->sn, + conn->cookie, conn->bn, purple_network_ip_atoi(listener_ip), listener_port, ++conn->lastrequestnumber, (const gchar *)conn->xferdata.name, @@ -790,7 +790,7 @@ PurpleConversation *conv; tmp = g_strdup_printf(_("Attempting to connect to %s:%hu."), conn->verifiedip, conn->port); - conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn); purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(tmp); @@ -863,7 +863,7 @@ gchar *tmp; PurpleConversation *conv; tmp = g_strdup(_("Attempting to connect via proxy server.")); - conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn); purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(tmp); @@ -888,13 +888,13 @@ * Initiate a peer connection with someone. */ void -peer_connection_propose(OscarData *od, OscarCapability type, const char *sn) +peer_connection_propose(OscarData *od, OscarCapability type, const char *bn) { PeerConnection *conn; if (type == OSCAR_CAPABILITY_DIRECTIM) { - conn = peer_connection_find_by_type(od, sn, type); + conn = peer_connection_find_by_type(od, bn, type); if (conn != NULL) { if (conn->ready) @@ -903,10 +903,10 @@ PurpleConversation *conv; purple_debug_info("oscar", "Already have a direct IM " - "session with %s.\n", sn); + "session with %s.\n", bn); account = purple_connection_get_account(od->gc); conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, - sn, account); + bn, account); if (conv != NULL) purple_conversation_present(conv); return; @@ -917,7 +917,7 @@ } } - conn = peer_connection_new(od, type, sn); + conn = peer_connection_new(od, type, bn); conn->flags |= PEER_CONNECTION_FLAG_INITIATED_BY_ME; conn->flags |= PEER_CONNECTION_FLAG_APPROVED; aim_icbm_makecookie(conn->cookie); @@ -954,7 +954,7 @@ conn = data; - aim_im_denytransfer(conn->od, conn->sn, conn->cookie, + aim_im_denytransfer(conn->od, conn->bn, conn->cookie, AIM_TRANSFER_DENY_DECLINE); peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL); } @@ -963,7 +963,7 @@ * Someone else wants to establish a peer connection with us. */ void -peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *message, IcbmArgsCh2 *args) +peer_connection_got_proposition(OscarData *od, const gchar *bn, const gchar *message, IcbmArgsCh2 *args) { PurpleConnection *gc; PurpleAccount *account; @@ -979,7 +979,7 @@ * and we should try connecting to them, instead. Or they want * to go through a proxy. */ - conn = peer_connection_find_by_cookie(od, sn, args->cookie); + conn = peer_connection_find_by_cookie(od, bn, args->cookie); if ((conn != NULL) && (conn->type == args->type)) { purple_debug_info("oscar", "Remote user wants to try a " @@ -1003,12 +1003,12 @@ /* If this is a direct IM, then close any existing session */ if (args->type == OSCAR_CAPABILITY_DIRECTIM) { - conn = peer_connection_find_by_type(od, sn, args->type); + conn = peer_connection_find_by_type(od, bn, args->type); if (conn != NULL) { /* Close the old direct IM and start a new one */ purple_debug_info("oscar", "Received new direct IM request " - "from %s. Destroying old connection.\n", sn); + "from %s. Destroying old connection.\n", bn); peer_connection_destroy(conn, OSCAR_DISCONNECT_REMOTE_CLOSED, NULL); } } @@ -1022,12 +1022,12 @@ { purple_debug_warning("oscar", "%s tried to send you a file with incomplete " - "information.\n", sn); + "information.\n", bn); return; } } - conn = peer_connection_new(od, args->type, sn); + conn = peer_connection_new(od, args->type, bn); memcpy(conn->cookie, args->cookie, 8); if (args->use_proxy) conn->proxyip = g_strdup(args->proxyip); @@ -1040,7 +1040,7 @@ if (args->type == OSCAR_CAPABILITY_DIRECTIM) { buf = g_strdup_printf(_("%s has just asked to directly connect to %s"), - sn, purple_account_get_username(account)); + bn, purple_account_get_username(account)); purple_request_action(conn, NULL, buf, _("This requires a direct connection between " @@ -1049,7 +1049,7 @@ "revealed, this may be considered a privacy " "risk."), PURPLE_DEFAULT_ACTION_NONE, - account, sn, NULL, + account, bn, NULL, conn, 2, _("C_onnect"), G_CALLBACK(peer_connection_got_proposition_yes_cb), _("Cancel"), G_CALLBACK(peer_connection_got_proposition_no_cb)); @@ -1058,7 +1058,7 @@ { gchar *filename; - conn->xfer = purple_xfer_new(account, PURPLE_XFER_RECEIVE, sn); + conn->xfer = purple_xfer_new(account, PURPLE_XFER_RECEIVE, bn); if (conn->xfer) { conn->xfer->data = conn; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/peer.h --- a/libpurple/protocols/oscar/peer.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/peer.h Mon Mar 02 22:07:59 2009 +0000 @@ -83,7 +83,7 @@ /* Unknown */ guint16 flags; /* 38 */ /* Unknown */ - guchar sn[32]; /* 44 */ + guchar bn[32]; /* 44 */ /* Unknown */ ByteStream payload; /* 76 */ }; @@ -137,7 +137,7 @@ { OscarData *od; OscarCapability type; - char *sn; + char *bn; guchar magic[4]; guchar cookie[8]; guint16 lastrequestnumber; @@ -228,12 +228,12 @@ * @param type The type of the peer connection. One of * OSCAR_CAPABILITY_DIRECTIM or OSCAR_CAPABILITY_SENDFILE. */ -PeerConnection *peer_connection_new(OscarData *od, OscarCapability type, const char *sn); +PeerConnection *peer_connection_new(OscarData *od, OscarCapability type, const char *bn); void peer_connection_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message); void peer_connection_schedule_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message); -PeerConnection *peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type); -PeerConnection *peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cookie); +PeerConnection *peer_connection_find_by_type(OscarData *od, const char *bn, OscarCapability type); +PeerConnection *peer_connection_find_by_cookie(OscarData *od, const char *bn, const guchar *cookie); void peer_connection_listen_cb(gpointer data, gint source, PurpleInputCondition cond); void peer_connection_recv_cb(gpointer data, gint source, PurpleInputCondition cond); @@ -241,8 +241,8 @@ void peer_connection_trynext(PeerConnection *conn); void peer_connection_finalize_connection(PeerConnection *conn); -void peer_connection_propose(OscarData *od, OscarCapability type, const char *sn); -void peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *message, IcbmArgsCh2 *args); +void peer_connection_propose(OscarData *od, OscarCapability type, const char *bn); +void peer_connection_got_proposition(OscarData *od, const gchar *bn, const gchar *message, IcbmArgsCh2 *args); /* * For ODC diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/peer_proxy.c --- a/libpurple/protocols/oscar/peer_proxy.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/peer_proxy.c Mon Mar 02 22:07:59 2009 +0000 @@ -63,19 +63,19 @@ { ProxyFrame frame; PurpleAccount *account; - const gchar *sn; - guint8 sn_length; + const gchar *bn; + guint8 bn_length; memset(&frame, 0, sizeof(ProxyFrame)); frame.type = PEER_PROXY_TYPE_CREATE; frame.flags = 0x0000; account = purple_connection_get_account(conn->od->gc); - sn = purple_account_get_username(account); - sn_length = strlen(sn); - byte_stream_new(&frame.payload, 1 + sn_length + 8 + 20); - byte_stream_put8(&frame.payload, sn_length); - byte_stream_putraw(&frame.payload, (const guint8 *)sn, sn_length); + bn = purple_account_get_username(account); + bn_length = strlen(bn); + byte_stream_new(&frame.payload, 1 + bn_length + 8 + 20); + byte_stream_put8(&frame.payload, bn_length); + byte_stream_putraw(&frame.payload, (const guint8 *)bn, bn_length); byte_stream_putraw(&frame.payload, conn->cookie, 8); byte_stream_put16(&frame.payload, 0x0001); /* Type */ @@ -99,19 +99,19 @@ { ProxyFrame frame; PurpleAccount *account; - const gchar *sn; - guint8 sn_length; + const gchar *bn; + guint8 bn_length; memset(&frame, 0, sizeof(ProxyFrame)); frame.type = PEER_PROXY_TYPE_JOIN; frame.flags = 0x0000; account = purple_connection_get_account(conn->od->gc); - sn = purple_account_get_username(account); - sn_length = strlen(sn); - byte_stream_new(&frame.payload, 1 + sn_length + 2 + 8 + 20); - byte_stream_put8(&frame.payload, sn_length); - byte_stream_putraw(&frame.payload, (const guint8 *)sn, sn_length); + bn = purple_account_get_username(account); + bn_length = strlen(bn); + byte_stream_new(&frame.payload, 1 + bn_length + 2 + 8 + 20); + byte_stream_put8(&frame.payload, bn_length); + byte_stream_putraw(&frame.payload, (const guint8 *)bn, bn_length); byte_stream_put16(&frame.payload, pin); byte_stream_putraw(&frame.payload, conn->cookie, 8); @@ -149,11 +149,11 @@ if (conn->type == OSCAR_CAPABILITY_DIRECTIM) aim_im_sendch2_odc_requestproxy(conn->od, conn->cookie, - conn->sn, ip, pin, ++conn->lastrequestnumber); + conn->bn, ip, pin, ++conn->lastrequestnumber); else if (conn->type == OSCAR_CAPABILITY_SENDFILE) { aim_im_sendch2_sendfile_requestproxy(conn->od, - conn->cookie, conn->sn, + conn->cookie, conn->bn, ip, pin, ++conn->lastrequestnumber, (const gchar *)conn->xferdata.name, conn->xferdata.size, conn->xferdata.totfiles); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/snactypes.h --- a/libpurple/protocols/oscar/snactypes.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/snactypes.h Mon Mar 02 22:07:59 2009 +0000 @@ -252,7 +252,6 @@ * SNAC Family: Authorizer * * Used only in protocol versions three and above. - * */ #define SNAC_SUBTYPE_AUTH_ERROR 0x0001 #define SNAC_SUBTYPE_AUTH_LOGINREQEST 0x0002 @@ -266,8 +265,7 @@ * SNAC Family: Email * * Used for getting information on the email address - * associated with your screen name. - * + * associated with your username. */ #define SNAC_SUBTYPE_ALERT_ERROR 0x0001 #define SNAC_SUBTYPE_ALERT_SENDCOOKIES 0x0006 @@ -280,7 +278,6 @@ * This isn't truly a SNAC family either, but using * these, we can integrated non-SNAC services into * the SNAC-centered libfaim callback structure. - * */ #define AIM_CB_SPECIAL_CONNERR 0x0003 #define AIM_CB_SPECIAL_CONNINITDONE 0x0006 diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/oscar/util.c --- a/libpurple/protocols/oscar/util.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/oscar/util.c Mon Mar 02 22:07:59 2009 +0000 @@ -136,27 +136,27 @@ } /** - * Check if the given screen name is a valid AIM screen name. + * Check if the given name is a valid AIM username. * Example: BobDole * Example: Henry_Ford@mac.com * Example: 1KrazyKat@example.com * - * @return TRUE if the screen name is valid, FALSE if not. + * @return TRUE if the name is valid, FALSE if not. */ static gboolean -aim_snvalid_aim(const char *sn) +oscar_util_valid_name_aim(const char *name) { int i; - if (purple_email_is_valid(sn)) + if (purple_email_is_valid(name)) return TRUE; - /* Normal AIM screen names can't start with a number */ - if (isdigit(sn[0])) + /* Normal AIM usernames can't start with a number */ + if (isdigit(name[0])) return FALSE; - for (i = 0; sn[i] != '\0'; i++) { - if (!isalnum(sn[i]) && (sn[i] != ' ')) + for (i = 0; name[i] != '\0'; i++) { + if (!isalnum(name[i]) && (name[i] != ' ')) return FALSE; } @@ -164,18 +164,18 @@ } /** - * Check if the given screen name is a valid ICQ screen name. + * Check if the given name is a valid ICQ username. * Example: 1234567 * - * @return TRUE if the screen name is valid, FALSE if not. + * @return TRUE if the name is valid, FALSE if not. */ gboolean -aim_snvalid_icq(const char *sn) +oscar_util_valid_name_icq(const char *name) { int i; - for (i = 0; sn[i] != '\0'; i++) { - if (!isdigit(sn[i])) + for (i = 0; name[i] != '\0'; i++) { + if (!isdigit(name[i])) return FALSE; } @@ -183,21 +183,21 @@ } /** - * Check if the given screen name is a valid SMS screen name. + * Check if the given name is a valid SMS username. * Example: +19195551234 * - * @return TRUE if the screen name is valid, FALSE if not. + * @return TRUE if the name is valid, FALSE if not. */ gboolean -aim_snvalid_sms(const char *sn) +oscar_util_valid_name_sms(const char *name) { int i; - if (sn[0] != '+') + if (name[0] != '+') return FALSE; - for (i = 1; sn[i] != '\0'; i++) { - if (!isdigit(sn[i])) + for (i = 1; name[i] != '\0'; i++) { + if (!isdigit(name[i])) return FALSE; } @@ -205,44 +205,46 @@ } /** - * Check if the given screen name is a valid oscar screen name. + * Check if the given name is a valid oscar username. * - * @return TRUE if the screen name is valid, FALSE if not. + * @return TRUE if the name is valid, FALSE if not. */ gboolean -aim_snvalid(const char *sn) +oscar_util_valid_name(const char *name) { - if ((sn == NULL) || (*sn == '\0')) + if ((name == NULL) || (*name == '\0')) return FALSE; - return aim_snvalid_icq(sn) || aim_snvalid_sms(sn) || aim_snvalid_aim(sn); + return oscar_util_valid_name_icq(name) + || oscar_util_valid_name_sms(name) + || oscar_util_valid_name_aim(name); } /** - * This takes two screen names and compares them using the rules - * on screen names for AIM/AOL. Mainly, this means case and space + * This takes two names and compares them using the rules + * on usernames for AIM/AOL. Mainly, this means case and space * insensitivity (all case differences and spacing differences are - * ignored, with the exception that screen names can not start with + * ignored, with the exception that usernames can not start with * a space). * * @return 0 if equal, non-0 if different */ /* TODO: Do something different for email addresses. */ int -aim_sncmp(const char *sn1, const char *sn2) +oscar_util_name_compare(const char *name1, const char *name2) { - if ((sn1 == NULL) || (sn2 == NULL)) + if ((name1 == NULL) || (name2 == NULL)) return -1; do { - while (*sn2 == ' ') - sn2++; - while (*sn1 == ' ') - sn1++; - if (toupper(*sn1) != toupper(*sn2)) + while (*name2 == ' ') + name2++; + while (*name1 == ' ') + name1++; + if (toupper(*name1) != toupper(*name2)) return 1; - } while ((*sn1 != '\0') && sn1++ && sn2++); + } while ((*name1 != '\0') && name1++ && name2++); return 0; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/ChangeLog --- a/libpurple/protocols/qq/ChangeLog Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/ChangeLog Mon Mar 02 22:07:59 2009 +0000 @@ -1,3 +1,9 @@ +2009.02.25 - flos + * Changed text 'ZipCode' to 'Postal Code' + +2009.02.24 - flos + * NEVER forget our COPYRIGHT, ;) + 2009.02.24 - flos * Changed update_class type from gint to guint32 * Fixed a bug of displaying of memo when memo is nothing diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/buddy_info.c --- a/libpurple/protocols/qq/buddy_info.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/buddy_info.c Mon Mar 02 22:07:59 2009 +0000 @@ -614,7 +614,7 @@ gchar *alias_utf8; PurpleAccount *account = purple_connection_get_account(gc); - qd = (qq_data *) gc->proto_data; + qd = (qq_data *)purple_connection_get_protocol_data(gc); uid = strtoul(segments[QQ_INFO_UID], NULL, 10); who = uid_to_purple_name(uid); @@ -633,15 +633,16 @@ buddy = purple_find_buddy(gc->account, who); } - if (buddy == NULL || buddy->proto_data == NULL) { + /* if the buddy is null, the api will catch it and return null here */ + bd = purple_buddy_get_protocol_data(buddy); + + if (buddy == NULL || bd) { g_free(who); g_free(alias_utf8); return; } /* update buddy list (including myself, if myself is the buddy) */ - bd = (qq_buddy_data *)buddy->proto_data; - bd->age = strtol(segments[QQ_INFO_AGE], NULL, 10); bd->gender = strtol(segments[QQ_INFO_GENDER], NULL, 10); bd->face = strtol(segments[QQ_INFO_FACE], NULL, 10); @@ -770,8 +771,7 @@ for (it = buddies; it; it = it->next) { buddy = it->data; if (buddy == NULL) continue; - if (buddy->proto_data == NULL) continue; - bd = (qq_buddy_data *)buddy->proto_data; + if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) continue; if (bd->uid == 0) continue; /* keep me as end of packet*/ if (bd->uid == qd->uid) continue; bytes += qq_put32(buf + bytes, bd->uid); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/buddy_list.c --- a/libpurple/protocols/qq/buddy_list.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/buddy_list.c Mon Mar 02 22:07:59 2009 +0000 @@ -233,7 +233,7 @@ /* create no-auth buddy */ buddy = qq_buddy_new(gc, bs.uid); } - bd = (buddy == NULL) ? NULL : (qq_buddy_data *)buddy->proto_data; + bd = (buddy == NULL) ? NULL : (qq_buddy_data *)purple_buddy_get_protocol_data(buddy); if (bd == NULL) { purple_debug_error("QQ", "Got an online buddy %u, but not in my buddy list\n", bs.uid); @@ -335,7 +335,7 @@ #endif buddy = qq_buddy_find_or_new(gc, bd.uid); - if (buddy == NULL || buddy->proto_data == NULL) { + if (buddy == NULL || purple_buddy_get_protocol_data(buddy) == NULL) { g_free(bd.nickname); continue; } @@ -343,7 +343,7 @@ bd.last_update = time(NULL); qq_update_buddy_status(gc, bd.uid, bd.status, bd.comm_flag); - g_memmove(buddy->proto_data, &bd, sizeof(qq_buddy_data)); + g_memmove(purple_buddy_get_protocol_data(buddy), &bd, sizeof(qq_buddy_data)); /* nickname has been copy to buddy_data do not free g_free(bd.nickname); */ @@ -570,7 +570,7 @@ /* create no-auth buddy */ buddy = qq_buddy_new(gc, bs.uid); } - bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data; + bd = (buddy == NULL) ? NULL : (qq_buddy_data *)purple_buddy_get_protocol_data(buddy); if (bd == NULL) { purple_debug_warning("QQ", "Got status of no-auth buddy %u\n", bs.uid); return; @@ -662,9 +662,10 @@ for (it = buddies; it; it = it->next) { buddy = it->data; if (buddy == NULL) continue; - if (buddy->proto_data == NULL) continue; - bd = (qq_buddy_data *)buddy->proto_data; + bd = purple_buddy_get_protocol_data(buddy); + if (bd == NULL) continue; + if (bd->uid == 0) continue; if (bd->uid == qd->uid) continue; /* my status is always online in my buddy list */ if (tm_limit < bd->last_update) continue; @@ -684,16 +685,20 @@ GSList *buddies, *it; gint count = 0; - qd = (qq_data *) (gc->proto_data); + qd = (qq_data *)purple_connection_get_protocol_data(gc); buddies = purple_find_buddies(purple_connection_get_account(gc), NULL); for (it = buddies; it; it = it->next) { + qq_buddy_data *qbd = NULL; + buddy = it->data; if (buddy == NULL) continue; - if (buddy->proto_data == NULL) continue; - qq_buddy_data_free(buddy->proto_data); - buddy->proto_data = NULL; + qbd = purple_buddy_get_protocol_data(buddy); + if (qbd == NULL) continue; + + qq_buddy_data_free(qbd); + purple_buddy_set_protocol_data(buddy, NULL); count++; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/buddy_memo.c --- a/libpurple/protocols/qq/buddy_memo.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/buddy_memo.c Mon Mar 02 22:07:59 2009 +0000 @@ -1,3 +1,27 @@ +/** + * @file buddy_memo.c + * + * purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + #include "internal.h" #include "debug.h" #include "notify.h" @@ -53,7 +77,7 @@ N_("Telephone"), N_("Address"), N_("Email"), - N_("ZipCode"), + N_("Postal Code"), N_("Note") }; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/buddy_memo.h --- a/libpurple/protocols/qq/buddy_memo.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/buddy_memo.h Mon Mar 02 22:07:59 2009 +0000 @@ -1,3 +1,27 @@ +/** + * @file buddy_memo.h + * + * purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + #ifndef _QQ_BUDDY_MEMO_H_ #define _QQ_BUDDY_MEMO_H_ diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/buddy_opt.c --- a/libpurple/protocols/qq/buddy_opt.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/buddy_opt.c Mon Mar 02 22:07:59 2009 +0000 @@ -101,6 +101,7 @@ { gchar *who; PurpleBuddy *buddy; + qq_buddy_data *bd; g_return_val_if_fail(gc != NULL, NULL); @@ -113,11 +114,12 @@ purple_debug_error("QQ", "Can not find purple buddy of %u\n", uid); return NULL; } - if (buddy->proto_data == NULL) { + + if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) { purple_debug_error("QQ", "Can not find buddy data of %u\n", uid); return NULL; } - return (qq_buddy_data *)buddy->proto_data; + return bd; } void qq_buddy_data_free(qq_buddy_data *bd) @@ -149,7 +151,7 @@ purple_debug_info("QQ", "Add new purple buddy: [%u]\n", uid); who = uid_to_purple_name(uid); buddy = purple_buddy_new(gc->account, who, NULL); /* alias is NULL */ - buddy->proto_data = NULL; + purple_buddy_set_protocol_data(buddy, NULL); g_free(who); @@ -162,11 +164,14 @@ static void qq_buddy_free(PurpleBuddy *buddy) { + qq_buddy_data *bd; + g_return_if_fail(buddy); - if (buddy->proto_data) { - qq_buddy_data_free(buddy->proto_data); + + if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) { + qq_buddy_data_free(bd); } - buddy->proto_data = NULL; + purple_buddy_set_protocol_data(buddy, NULL); purple_blist_remove_buddy(buddy); } @@ -186,6 +191,7 @@ PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid) { PurpleBuddy *buddy; + qq_buddy_data *bd; g_return_val_if_fail(gc->account != NULL && uid != 0, NULL); @@ -197,11 +203,12 @@ } } - if (buddy->proto_data != NULL) { + if (purple_buddy_get_protocol_data(buddy) != NULL) { return buddy; } - buddy->proto_data = qq_buddy_data_new(uid); + bd = qq_buddy_data_new(uid); + purple_buddy_set_protocol_data(buddy, bd); return buddy; } @@ -691,7 +698,7 @@ if (!qd->is_login) return; /* IMPORTANT ! */ - uid = purple_name_to_uid(buddy->name); + uid = purple_name_to_uid(purple_buddy_get_name(buddy)); if (uid > 0) { if (qd->client_version > 2005) { request_add_buddy_no_auth_ex(gc, uid); @@ -782,6 +789,7 @@ gchar **segments; gchar *dest_uid, *reply; PurpleBuddy *buddy; + qq_buddy_data *bd; g_return_if_fail(data != NULL && data_len != 0); g_return_if_fail(uid != 0); @@ -826,10 +834,10 @@ if (buddy == NULL) { buddy = qq_buddy_new(gc, uid); } - if (buddy != NULL && buddy->proto_data != NULL) { + if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) { /* Not authorized now, free buddy data */ - qq_buddy_data_free(buddy->proto_data); - buddy->proto_data = NULL; + qq_buddy_data_free(bd); + purple_buddy_set_protocol_data(buddy, NULL); } add_buddy_authorize_input(gc, uid, NULL, 0); @@ -905,6 +913,7 @@ void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { qq_data *qd; + qq_buddy_data *bd; guint32 uid; g_return_if_fail(gc != NULL && gc->proto_data != NULL); @@ -914,7 +923,7 @@ if (!qd->is_login) return; - uid = purple_name_to_uid(buddy->name); + uid = purple_name_to_uid(purple_buddy_get_name(buddy)); if (uid > 0 && uid != qd->uid) { if (qd->client_version > 2005) { qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_REMOVE_BUDDY, uid); @@ -924,11 +933,11 @@ } } - if (buddy->proto_data) { - qq_buddy_data_free(buddy->proto_data); - buddy->proto_data = NULL; + if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) { + qq_buddy_data_free(bd); + purple_buddy_set_protocol_data(buddy, NULL); } else { - purple_debug_warning("QQ", "Empty buddy data of %s\n", buddy->name); + purple_debug_warning("QQ", "Empty buddy data of %s\n", purple_buddy_get_name(buddy)); } /* Do not call purple_blist_remove_buddy, @@ -1216,6 +1225,7 @@ gint bytes; gchar **segments; gchar *primary, *secondary; + qq_buddy_data *bd; g_return_if_fail(from != NULL && to != NULL); @@ -1255,10 +1265,10 @@ g_return_if_fail(uid != 0); buddy = qq_buddy_find(gc, uid); - if (buddy != NULL && buddy->proto_data != NULL) { + if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) { /* Not authorized now, free buddy data */ - qq_buddy_data_free(buddy->proto_data); - buddy->proto_data = NULL; + qq_buddy_data_free(bd); + purple_buddy_set_protocol_data(buddy, NULL); } } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/group_internal.c --- a/libpurple/protocols/qq/group_internal.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/group_internal.c Mon Mar 02 22:07:59 2009 +0000 @@ -103,16 +103,21 @@ void qq_room_update_chat_info(PurpleChat *chat, qq_room_data *rmd) { + GHashTable *components; + if (rmd->title_utf8 != NULL && strlen(rmd->title_utf8) > 0) { purple_blist_alias_chat(chat, rmd->title_utf8); } - g_hash_table_replace(chat->components, + + components = purple_chat_get_components(chat); + + g_hash_table_replace(components, g_strdup(QQ_ROOM_KEY_INTERNAL_ID), g_strdup_printf("%u", rmd->id)); - g_hash_table_replace(chat->components, + g_hash_table_replace(components, g_strdup(QQ_ROOM_KEY_EXTERNAL_ID), g_strdup_printf("%u", rmd->ext_id)); - g_hash_table_replace(chat->components, + g_hash_table_replace(components, g_strdup(QQ_ROOM_KEY_TITLE_UTF8), g_strdup(rmd->title_utf8)); } @@ -251,11 +256,13 @@ member->uid = member_uid; buddy = purple_find_buddy(purple_connection_get_account(gc), uid_to_purple_name(member_uid)); if (buddy != NULL) { - bd = (qq_buddy_data *) buddy->proto_data; + const gchar *alias = NULL; + + bd = purple_buddy_get_protocol_data(buddy); if (bd != NULL && bd->nickname != NULL) member->nickname = g_strdup(bd->nickname); - else if (buddy->alias != NULL) - member->nickname = g_strdup(buddy->alias); + else if ((alias = purple_buddy_get_alias(buddy)) != NULL) + member->nickname = g_strdup(alias); } rmd->members = g_list_append(rmd->members, member); } @@ -384,16 +391,19 @@ } count = 0; - for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) { + for (node = purple_blist_node_get_first_child((PurpleBlistNode *)purple_group); + node != NULL; + node = purple_blist_node_get_sibling_next(node)) + { if ( !PURPLE_BLIST_NODE_IS_CHAT(node)) { continue; } /* got one */ chat = (PurpleChat *) node; - if (account != chat->account) /* not qq account*/ + if (account != purple_chat_get_account(chat)) /* not qq account*/ continue; - rmd = room_data_new_by_hashtable(gc, chat->components); + rmd = room_data_new_by_hashtable(gc, purple_chat_get_components(chat)); qd->groups = g_list_append(qd->groups, rmd); count++; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/im.c --- a/libpurple/protocols/qq/im.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/im.c Mon Mar 02 22:07:59 2009 +0000 @@ -718,7 +718,7 @@ qq_buddy_find_or_new(gc, qd->uid); from = uid_to_purple_name(qd->uid); - serv_got_im(gc, from, msg, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NOTIFY, now); + serv_got_im(gc, from, msg, PURPLE_MESSAGE_SYSTEM, now); g_free(from); } @@ -788,7 +788,7 @@ /* create no-auth buddy */ buddy = qq_buddy_new(gc, im_header->uid_from); } - bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data; + bd = (buddy == NULL) ? NULL : purple_buddy_get_protocol_data(buddy); if (bd != NULL) { bd->client_tag = im_header->version_from; bd->face = im_text.sender_icon; @@ -889,7 +889,7 @@ /* create no-auth buddy */ buddy = qq_buddy_new(gc, im_header->uid_from); } - bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data; + bd = (buddy == NULL) ? NULL : purple_buddy_get_protocol_data(buddy); if (bd != NULL) { bd->client_tag = im_header->version_from; bd->face = im_text.sender_icon; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/qq.c --- a/libpurple/protocols/qq/qq.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/qq.c Mon Mar 02 22:07:59 2009 +0000 @@ -248,7 +248,7 @@ qq_buddy_data *bd; GString *status; - bd = (qq_buddy_data *) b->proto_data; + bd = purple_buddy_get_protocol_data(b); if (bd == NULL) return NULL; @@ -291,7 +291,7 @@ g_return_if_fail(b != NULL); - bd = (qq_buddy_data *) b->proto_data; + bd = purple_buddy_get_protocol_data(b); if (bd == NULL) return; @@ -382,11 +382,12 @@ qq_data *qd; qq_buddy_data *buddy; - if (!b || !(account = b->account) || - !(gc = purple_account_get_connection(account)) || !(qd = gc->proto_data)) + if (!b || !(account = purple_buddy_get_account(b)) || + !(gc = purple_account_get_connection(account)) || + !(qd = purple_connection_get_protocol_data(gc))) return NULL; - buddy = (qq_buddy_data *)b->proto_data; + buddy = purple_buddy_get_protocol_data(b); if (!buddy) { return "not-authorized"; } @@ -708,8 +709,9 @@ static void action_chat_quit(PurpleBlistNode * node) { PurpleChat *chat = (PurpleChat *)node; - PurpleConnection *gc = purple_account_get_connection(chat->account); - GHashTable *components = chat -> components; + PurpleAccount *account = purple_chat_get_account(chat); + PurpleConnection *gc = purple_account_get_connection(account); + GHashTable *components = purple_chat_get_components(chat); gchar *num_str; guint32 room_id; @@ -727,8 +729,9 @@ static void action_chat_get_info(PurpleBlistNode * node) { PurpleChat *chat = (PurpleChat *)node; - PurpleConnection *gc = purple_account_get_connection(chat->account); - GHashTable *components = chat -> components; + PurpleAccount *account = purple_chat_get_account(chat); + PurpleConnection *gc = purple_account_get_connection(account); + GHashTable *components = purple_chat_get_components(chat); gchar *num_str; guint32 room_id; @@ -815,7 +818,7 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); qq_add_buddy(gc, buddy, NULL); } @@ -830,12 +833,12 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *)node; - g_return_if_fail(NULL != buddy && NULL != buddy->proto_data); + g_return_if_fail(NULL != buddy); - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); g_return_if_fail(NULL != gc); - bd = (qq_buddy_data *)buddy->proto_data; + bd = (qq_buddy_data *)purple_buddy_get_protocol_data(buddy); g_return_if_fail(NULL != bd); bd_uid = bd->uid; @@ -849,7 +852,7 @@ { GList *m = NULL; PurpleMenuAction *act; - qq_buddy_data *bd = (qq_buddy_data *)buddy->proto_data; + qq_buddy_data *bd = purple_buddy_get_protocol_data(buddy); if (bd == NULL) { act = purple_menu_action_new(_("Add Buddy"), diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/qq/send_file.c --- a/libpurple/protocols/qq/send_file.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/qq/send_file.c Mon Mar 02 22:07:59 2009 +0000 @@ -808,7 +808,7 @@ "Received a FACE ip detect from %d, so he/she must be online :)\n", sender_uid); b = purple_find_buddy(gc->account, sender_name); - bd = (b == NULL) ? NULL : (qq_buddy_data *) b->proto_data; + bd = (b == NULL) ? NULL : purple_buddy_get_protocol_data(b); if (bd) { if(0 != info->remote_real_ip) { g_memmove(&(bd->ip), &info->remote_real_ip, sizeof(bd->ip)); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/sametime/sametime.c --- a/libpurple/protocols/sametime/sametime.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/sametime/sametime.c Mon Mar 02 22:07:59 2009 +0000 @@ -663,7 +663,6 @@ */ PurpleAccount *acct; - PurpleBuddyList *blist; PurpleBlistNode *gn, *cn, *bn; PurpleGroup *grp; PurpleBuddy *bdy; @@ -674,10 +673,8 @@ acct = purple_connection_get_account(gc); g_return_if_fail(acct != NULL); - blist = purple_get_blist(); - g_return_if_fail(blist != NULL); - - for(gn = blist->root; gn; gn = gn->next) { + for(gn = purple_blist_get_root(); gn; + gn = purple_blist_node_get_sibling_next(gn)) { const char *owner; const char *gname; enum mwSametimeGroupType gtype; @@ -702,13 +699,13 @@ /* the group's actual name may be different from the purple group's name. Find whichever is there */ gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME); - if(! gname) gname = grp->name; + if(! gname) gname = purple_group_get_name(grp); /* we save this, but never actually honor it */ gopen = ! purple_blist_node_get_bool(gn, GROUP_KEY_COLLAPSED); stg = mwSametimeGroup_new(stlist, gtype, gname); - mwSametimeGroup_setAlias(stg, grp->name); + mwSametimeGroup_setAlias(stg, purple_group_get_name(grp)); mwSametimeGroup_setOpen(stg, gopen); /* don't attempt to put buddies in a dynamic group, it breaks @@ -716,27 +713,31 @@ if(gtype == mwSametimeGroup_DYNAMIC) continue; - for(cn = gn->child; cn; cn = cn->next) { + for(cn = purple_blist_node_get_first_child(gn); + cn; + cn = purple_blist_node_get_sibling_next(cn)) { if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue; - for(bn = cn->child; bn; bn = bn->next) { + for(bn = purple_blist_node_get_first_child(cn); + bn; + bn = purple_blist_node_get_sibling_next(bn)) { if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue; if(! PURPLE_BLIST_NODE_SHOULD_SAVE(bn)) continue; bdy = (PurpleBuddy *) bn; - if(bdy->account == acct) { + if(purple_buddy_get_account(bdy) == acct) { struct mwSametimeUser *stu; enum mwSametimeUserType utype; - idb.user = bdy->name; + idb.user = (char *)purple_buddy_get_name(bdy); utype = purple_blist_node_get_int(bn, BUDDY_KEY_TYPE); if(! utype) utype = mwSametimeUser_NORMAL; stu = mwSametimeUser_new(stg, utype, &idb); - mwSametimeUser_setShortName(stu, bdy->server_alias); - mwSametimeUser_setAlias(stu, bdy->alias); + mwSametimeUser_setShortName(stu, purple_buddy_get_server_alias(bdy)); + mwSametimeUser_setAlias(stu, purple_buddy_get_local_buddy_alias(bdy)); } } } @@ -816,7 +817,7 @@ static gboolean buddy_is_external(PurpleBuddy *b) { g_return_val_if_fail(b != NULL, FALSE); - return purple_str_has_prefix(b->name, "@E "); + return purple_str_has_prefix(purple_buddy_get_name(b), "@E "); } @@ -825,7 +826,7 @@ static void buddy_add(struct mwPurplePluginData *pd, PurpleBuddy *buddy) { - struct mwAwareIdBlock idb = { mwAware_USER, (char *) buddy->name, NULL }; + struct mwAwareIdBlock idb = { mwAware_USER, (char *) purple_buddy_get_name(buddy), NULL }; struct mwAwareList *list; PurpleGroup *group; @@ -890,7 +891,7 @@ GList *add; n = purple_blist_node_get_string((PurpleBlistNode *) group, GROUP_KEY_NAME); - if(! n) n = group->name; + if(! n) n = purple_group_get_name(group); idb.user = (char *) n; add = g_list_prepend(NULL, &idb); @@ -926,7 +927,8 @@ NSTR(name), NSTR(alias)); /* first attempt at finding the group, by the name key */ - for(gn = blist->root; gn; gn = gn->next) { + for(gn = purple_blist_get_root(); gn; + gn = purple_blist_node_get_sibling_next(gn)) { const char *n, *o; if(! PURPLE_BLIST_NODE_IS_GROUP(gn)) continue; n = purple_blist_node_get_string(gn, GROUP_KEY_NAME); @@ -1006,23 +1008,27 @@ g_return_if_fail(group != NULL); - DEBUG_INFO("clearing members from pruned group %s\n", NSTR(group->name)); + DEBUG_INFO("clearing members from pruned group %s\n", NSTR(purple_group_get_name(group))); gc = purple_account_get_connection(acct); g_return_if_fail(gc != NULL); gn = (PurpleBlistNode *) group; - for(cn = gn->child; cn; cn = cn->next) { + for(cn = purple_blist_node_get_first_child(gn); + cn; + cn = purple_blist_node_get_sibling_next(cn)) { if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue; - for(bn = cn->child; bn; bn = bn->next) { + for(bn = purple_blist_node_get_first_child(cn); + bn; + bn = purple_blist_node_get_sibling_next(bn)) { PurpleBuddy *gb = (PurpleBuddy *) bn; if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue; - if(gb->account == acct) { - DEBUG_INFO("clearing %s from group\n", NSTR(gb->name)); + if(purple_buddy_get_account(gb) == acct) { + DEBUG_INFO("clearing %s from group\n", NSTR(purple_buddy_get_name(gb))); prune = g_list_prepend(prune, gb); } } @@ -1059,7 +1065,7 @@ g_return_if_fail(group != NULL); - DEBUG_INFO("pruning membership of group %s\n", NSTR(group->name)); + DEBUG_INFO("pruning membership of group %s\n", NSTR(purple_group_get_name(group))); acct = purple_connection_get_account(gc); g_return_if_fail(acct != NULL); @@ -1078,18 +1084,22 @@ gn = (PurpleBlistNode *) group; - for(cn = gn->child; cn; cn = cn->next) { + for(cn = purple_blist_node_get_first_child(gn); + cn; + cn = purple_blist_node_get_sibling_next(cn)) { if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue; - for(bn = cn->child; bn; bn = bn->next) { + for(bn = purple_blist_node_get_first_child(cn); + bn; + bn = purple_blist_node_get_sibling_next(bn)) { PurpleBuddy *gb = (PurpleBuddy *) bn; if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue; /* if the account is correct and they're not in our table, mark them for pruning */ - if(gb->account == acct && !g_hash_table_lookup(stusers, gb->name)) { - DEBUG_INFO("marking %s for pruning\n", NSTR(gb->name)); + if(purple_buddy_get_account(gb) == acct && !g_hash_table_lookup(stusers, purple_buddy_get_name(gb))) { + DEBUG_INFO("marking %s for pruning\n", NSTR(purple_buddy_get_name(gb))); prune = g_list_prepend(prune, gb); } } @@ -1145,7 +1155,8 @@ g_list_free(gtl); /* find all groups which should be pruned from the local list */ - for(gn = blist->root; gn; gn = gn->next) { + for(gn = purple_blist_get_root(); gn; + gn = purple_blist_node_get_sibling_next(gn)) { PurpleGroup *grp = (PurpleGroup *) gn; const char *gname, *owner; struct mwSametimeGroup *stgrp; @@ -1164,12 +1175,12 @@ /* we actually are synching by this key as opposed to the group title, which can be different things in the st list */ gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME); - if(! gname) gname = grp->name; + if(! gname) gname = purple_group_get_name(grp); stgrp = g_hash_table_lookup(stgroups, gname); if(! stgrp) { /* remove the whole group */ - DEBUG_INFO("marking group %s for pruning\n", grp->name); + DEBUG_INFO("marking group %s for pruning\n", purple_group_get_name(grp)); g_prune = g_list_prepend(g_prune, grp); } else { @@ -1284,6 +1295,7 @@ GString *str; char *tmp; + const char *gname; g_return_if_fail(pd != NULL); @@ -1295,11 +1307,12 @@ str = g_string_new(NULL); tmp = (char *) purple_blist_node_get_string(node, GROUP_KEY_NAME); - - g_string_append_printf(str, _("Group Title: %s
"), group->name); + gname = purple_group_get_name(group); + + g_string_append_printf(str, _("Group Title: %s
"), gname); g_string_append_printf(str, _("Notes Group ID: %s
"), tmp); - tmp = g_strdup_printf(_("Info for Group %s"), group->name); + tmp = g_strdup_printf(_("Info for Group %s"), gname); purple_notify_formatted(gc, tmp, _("Notes Address Book Information"), NULL, str->str, NULL, NULL); @@ -1356,19 +1369,24 @@ PurpleBlistNode *gnode, *cnode, *bnode; GList *add_buds = NULL; - for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + for(gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { if(! PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for(cnode = gnode->child; cnode; cnode = cnode->next) { + for(cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if(! PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for(bnode = cnode->child; bnode; bnode = bnode->next) { + for(bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { PurpleBuddy *b; if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; - + b = (PurpleBuddy *)bnode; - if(b->account == acct) { + if(purple_buddy_get_account(b) == acct) { add_buds = g_list_append(add_buds, b); } } @@ -1388,7 +1406,6 @@ PurpleConnection *gc; PurpleAccount *acct; struct mwStorageUnit *unit; - PurpleBuddyList *blist; PurpleBlistNode *l; gc = pd->gc; @@ -1399,8 +1416,8 @@ mwServiceStorage_load(pd->srvc_store, unit, fetch_blist_cb, pd, NULL); /* find all the NAB groups and subscribe to them */ - blist = purple_get_blist(); - for(l = blist->root; l; l = l->next) { + for(l = purple_blist_get_root(); l; + l = purple_blist_node_get_sibling_next(l)) { PurpleGroup *group = (PurpleGroup *) l; enum mwSametimeGroupType gt; const char *owner; @@ -3239,10 +3256,10 @@ static char *mw_prpl_status_text(PurpleBuddy *b) { PurpleConnection *gc; struct mwPurplePluginData *pd; - struct mwAwareIdBlock t = { mwAware_USER, b->name, NULL }; + struct mwAwareIdBlock t = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL }; const char *ret = NULL; - if ((gc = purple_account_get_connection(b->account)) + if ((gc = purple_account_get_connection(purple_buddy_get_account(b))) && (pd = gc->proto_data)) ret = mwServiceAware_getText(pd->srvc_aware, &t); @@ -3299,13 +3316,13 @@ static void mw_prpl_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) { PurpleConnection *gc; struct mwPurplePluginData *pd = NULL; - struct mwAwareIdBlock idb = { mwAware_USER, b->name, NULL }; + struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL }; const char *message = NULL; const char *status; char *tmp; - if ((gc = purple_account_get_connection(b->account)) + if ((gc = purple_account_get_connection(purple_buddy_get_account(b))) && (pd = gc->proto_data)) message = mwServiceAware_getText(pd->srvc_aware, &idb); @@ -3321,7 +3338,7 @@ } if(full && pd != NULL) { - tmp = user_supports_text(pd->srvc_aware, b->name); + tmp = user_supports_text(pd->srvc_aware, purple_buddy_get_name(b)); if(tmp) { purple_notify_user_info_add_pair(user_info, _("Supports"), tmp); g_free(tmp); @@ -3333,34 +3350,34 @@ } } - -static GList *mw_prpl_status_types(PurpleAccount *acct) { - GList *types = NULL; - PurpleStatusType *type; - - type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, MW_STATE_ACTIVE, - NULL, TRUE); - purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"), - purple_value_new(PURPLE_TYPE_STRING)); - types = g_list_append(types, type); - - type = purple_status_type_new(PURPLE_STATUS_AWAY, MW_STATE_AWAY, - NULL, TRUE); - purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"), - purple_value_new(PURPLE_TYPE_STRING)); - types = g_list_append(types, type); - - type = purple_status_type_new(PURPLE_STATUS_UNAVAILABLE, MW_STATE_BUSY, - _("Do Not Disturb"), TRUE); - purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"), - purple_value_new(PURPLE_TYPE_STRING)); - types = g_list_append(types, type); - - type = purple_status_type_new(PURPLE_STATUS_OFFLINE, MW_STATE_OFFLINE, - NULL, TRUE); - types = g_list_append(types, type); - - return types; +static GList *mw_prpl_status_types(PurpleAccount *acct) +{ + GList *types = NULL; + PurpleStatusType *type; + + type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, + MW_STATE_ACTIVE, NULL, TRUE, TRUE, FALSE, + MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING), + NULL); + types = g_list_append(types, type); + + type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, + MW_STATE_AWAY, NULL, TRUE, TRUE, FALSE, + MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING), + NULL); + types = g_list_append(types, type); + + type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE, + MW_STATE_BUSY, _("Do Not Disturb"), TRUE, TRUE, FALSE, + MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING), + NULL); + types = g_list_append(types, type); + + type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, + MW_STATE_OFFLINE, NULL, TRUE, TRUE, FALSE); + types = g_list_append(types, type); + + return types; } @@ -3383,7 +3400,7 @@ struct mwConference *conf; struct mwIdBlock idb = { NULL, NULL }; - acct = buddy->account; + acct = purple_buddy_get_account(buddy); gc = purple_account_get_connection(acct); pd = gc->proto_data; srvc = pd->srvc_conf; @@ -3397,7 +3414,7 @@ conf = mwConference_new(srvc, topic); mwConference_open(conf); - idb.user = buddy->name; + idb.user = (char *)purple_buddy_get_name(buddy); mwConference_invite(conf, &idb, invite); } @@ -3417,7 +3434,7 @@ g_return_if_fail(buddy != NULL); - acct = buddy->account; + acct = purple_buddy_get_account(buddy); g_return_if_fail(acct != NULL); gc = purple_account_get_connection(acct); @@ -3437,7 +3454,7 @@ msgA = _("Create conference with user"); msgB = _("Please enter a topic for the new conference, and an invitation" " message to be sent to %s"); - msg1 = g_strdup_printf(msgB, buddy->name); + msg1 = g_strdup_printf(msgB, purple_buddy_get_name(buddy)); purple_request_fields(gc, _("New Conference"), msgA, msg1, fields, @@ -3474,7 +3491,7 @@ blist_menu_conf_create(buddy, msg); } else { - struct mwIdBlock idb = { buddy->name, NULL }; + struct mwIdBlock idb = { (char *)purple_buddy_get_name(buddy), NULL }; mwConference_invite(d, &idb, msg); } } @@ -3495,7 +3512,7 @@ const char *msgB; char *msg; - acct = buddy->account; + acct = purple_buddy_get_account(buddy); g_return_if_fail(acct != NULL); gc = purple_account_get_connection(acct); @@ -3523,7 +3540,7 @@ msgB = _("Select a conference from the list below to send an invite to" " user %s. Select \"Create New Conference\" if you'd like to" " create a new conference to invite this user to."); - msg = g_strdup_printf(msgB, buddy->name); + msg = g_strdup_printf(msgB, purple_buddy_get_name(buddy)); purple_request_fields(gc, _("Invite to Conference"), msgA, msg, fields, @@ -3545,7 +3562,7 @@ g_return_if_fail(node != NULL); g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); - acct = buddy->account; + acct = purple_buddy_get_account(buddy); g_return_if_fail(acct != NULL); gc = purple_account_get_connection(acct); @@ -4186,8 +4203,8 @@ if(b) { guint32 type; - if(b->server_alias) { - purple_notify_user_info_add_pair(user_info, _("Full Name"), b->server_alias); + if(purple_buddy_get_server_alias(b)) { + purple_notify_user_info_add_pair(user_info, _("Full Name"), purple_buddy_get_server_alias(b)); } type = purple_blist_node_get_int((PurpleBlistNode *) b, BUDDY_KEY_CLIENT); @@ -4329,10 +4346,10 @@ static void notify_add(PurpleConnection *gc, GList *row, void *user_data) { BuddyAddData *data = user_data; - char *group_name = NULL; + const char *group_name = NULL; if (data && data->group) { - group_name = data->group->name; + group_name = purple_group_get_name(data->group); } purple_blist_request_add_buddy(purple_connection_get_account(gc), @@ -4414,7 +4431,7 @@ buddy = data->buddy; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); pd = gc->proto_data; if(results) @@ -4515,7 +4532,7 @@ srvc = pd->srvc_resolve; - query = g_list_prepend(NULL, buddy->name); + query = g_list_prepend(NULL, (char *)purple_buddy_get_name(buddy)); flags = mwResolveFlag_FIRST | mwResolveFlag_USERS; req = mwServiceResolve_resolve(srvc, query, flags, add_buddy_resolved, @@ -4568,7 +4585,7 @@ /* convert PurpleBuddy into a mwAwareIdBlock */ idb->type = mwAware_USER; - idb->user = (char *) b->name; + idb->user = (char *) purple_buddy_get_name(b); idb->community = NULL; /* put idb into the list associated with the buddy's group */ @@ -4593,7 +4610,7 @@ PurpleBuddy *buddy, PurpleGroup *group) { struct mwPurplePluginData *pd; - struct mwAwareIdBlock idb = { mwAware_USER, buddy->name, NULL }; + struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(buddy), NULL }; struct mwAwareList *list; GList *rem = g_list_prepend(NULL, &idb); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/silc/buddy.c --- a/libpurple/protocols/silc/buddy.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/silc/buddy.c Mon Mar 02 22:07:59 2009 +0000 @@ -322,9 +322,12 @@ silcpurple_buddy_keyagr(PurpleBlistNode *node, gpointer data) { PurpleBuddy *buddy; + PurpleAccount *account; buddy = (PurpleBuddy *)node; - silcpurple_buddy_keyagr_do(buddy->account->gc, buddy->name, FALSE); + account = purple_buddy_get_account(buddy); + silcpurple_buddy_keyagr_do(purple_account_get_connection(account), + purple_buddy_get_name(buddy), FALSE); } @@ -341,12 +344,12 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); b = (PurpleBuddy *) node; - gc = purple_account_get_connection(b->account); + gc = purple_account_get_connection(purple_buddy_get_account(b)); sg = gc->proto_data; /* Find client entry */ clients = silc_client_get_clients_local(sg->client, sg->conn, - b->name, FALSE); + purple_buddy_get_name(b), FALSE); if (!clients) return; @@ -467,9 +470,9 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); - silcpurple_buddy_privkey(gc, buddy->name); + silcpurple_buddy_privkey(gc, purple_buddy_get_name(buddy)); } @@ -596,9 +599,9 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); - silcpurple_buddy_getkey(gc, buddy->name); + silcpurple_buddy_getkey(gc, purple_buddy_get_name(buddy)); } static void @@ -613,7 +616,7 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); b = (PurpleBuddy *) node; - gc = purple_account_get_connection(b->account); + gc = purple_account_get_connection(purple_buddy_get_account(b)); sg = gc->proto_data; pkfile = purple_blist_node_get_string(node, "public-key"); @@ -624,7 +627,7 @@ return; } - silcpurple_show_public_key(sg, b->name, public_key, NULL, NULL); + silcpurple_show_public_key(sg, purple_buddy_get_name(b), public_key, NULL, NULL); silc_pkcs_public_key_free(public_key); } @@ -686,6 +689,7 @@ if (b) { /* See if we have this buddy's public key. If we do use that to search the details. */ + gpointer proto_data; filename = purple_blist_node_get_string((PurpleBlistNode *)b, "public-key"); if (filename) { /* Call WHOIS. The user info is displayed in the WHOIS @@ -695,15 +699,15 @@ return; } - if (!b->proto_data) { + if (!(proto_data = purple_buddy_get_protocol_data(b))) { g_snprintf(tmp, sizeof(tmp), - _("User %s is not present in the network"), b->name); + _("User %s is not present in the network"), purple_buddy_get_name(b)); purple_notify_error(gc, _("User Information"), _("Cannot get user information"), tmp); return; } - client_entry = silc_client_get_client_by_id(client, conn, b->proto_data); + client_entry = silc_client_get_client_by_id(client, conn, proto_data); if (client_entry) { /* Call WHOIS. The user info is displayed in the WHOIS command reply. */ @@ -721,7 +725,7 @@ { char tmp[512]; g_snprintf(tmp, sizeof(tmp), _("The %s buddy is not trusted"), - r->b->name); + purple_buddy_get_name(r->b)); purple_notify_error(r->client->application, _("Add Buddy"), tmp, _("You cannot receive buddy notifications until you " "import his/her public key. You can use the Get Public Key " @@ -1033,7 +1037,7 @@ /* Now verify the public key */ r->offline_pk = silc_pkcs_public_key_encode(r->public_key, &r->offline_pk_len); - silcpurple_verify_public_key(r->client, r->conn, r->b->name, + silcpurple_verify_public_key(r->client, r->conn, purple_buddy_get_name(r->b), SILC_CONN_CLIENT, r->public_key, silcpurple_add_buddy_save, r); } @@ -1071,7 +1075,7 @@ { char tmp[512]; g_snprintf(tmp, sizeof(tmp), _("The %s buddy is not present in the network"), - r->b->name); + purple_buddy_get_name(r->b)); purple_request_action(r->client->application, _("Add Buddy"), tmp, _("To add the buddy you must import his/her public key. " "Press Import to import a public key."), 0, @@ -1209,6 +1213,7 @@ const char *filename; SilcClientEntry client_entry = NULL; SilcUInt16 cmd_ident; + const char *name; filename = purple_blist_node_get_string((PurpleBlistNode *)b, "public-key"); @@ -1246,17 +1251,19 @@ silc_dlist_start(clients); client_entry = silc_dlist_get(clients); + name = purple_buddy_get_name(b); + /* If we searched using public keys and more than one entry was found the same person is logged on multiple times. */ - if (silc_dlist_count(clients) > 1 && r->pubkey_search && b->name) { + if (silc_dlist_count(clients) > 1 && r->pubkey_search && name) { if (r->init) { /* Find the entry that closest matches to the buddy nickname. */ SilcClientEntry entry; silc_dlist_start(clients); while ((entry = silc_dlist_get(clients))) { - if (!g_ascii_strncasecmp(b->name, entry->nickname, - strlen(b->name))) { + if (!g_ascii_strncasecmp(name, entry->nickname, + strlen(name))) { client_entry = entry; break; } @@ -1271,7 +1278,7 @@ /* The client was found. Now get its public key and verify that before adding the buddy. */ memset(&userpk, 0, sizeof(userpk)); - b->proto_data = silc_memdup(&client_entry->id, sizeof(client_entry->id)); + purple_buddy_set_protocol_data(b, silc_memdup(&client_entry->id, sizeof(client_entry->id))); r->client_id = client_entry->id; /* Get the public key from attributes, if not present then @@ -1335,7 +1342,7 @@ SilcClientConnection conn = sg->conn; SilcPurpleBuddyRes r; SilcBuffer attrs; - const char *filename, *name = b->name; + const char *filename, *name = purple_buddy_get_name(b); r = silc_calloc(1, sizeof(*r)); if (!r) @@ -1395,31 +1402,33 @@ void silcpurple_send_buddylist(PurpleConnection *gc) { - PurpleBuddyList *blist; PurpleBlistNode *gnode, *cnode, *bnode; PurpleBuddy *buddy; PurpleAccount *account; account = purple_connection_get_account(gc); - if ((blist = purple_get_blist()) != NULL) + for (gnode = purple_blist_get_root(); + gnode != NULL; + gnode = purple_blist_node_get_sibling_next(gnode)) { - for (gnode = blist->root; gnode != NULL; gnode = gnode->next) + if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) + continue; + for (cnode = purple_blist_node_get_first_child(gnode); + cnode != NULL; + cnode = purple_blist_node_get_sibling_next(cnode)) { - if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) + if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) + for (bnode = purple_blist_node_get_first_child(cnode); + bnode != NULL; + bnode = purple_blist_node_get_sibling_next(bnode)) { - if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) + if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; - for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) - { - if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) - continue; - buddy = (PurpleBuddy *)bnode; - if (purple_buddy_get_account(buddy) == account) - silcpurple_add_buddy_i(gc, buddy, TRUE); - } + buddy = (PurpleBuddy *)bnode; + if (purple_buddy_get_account(buddy) == account) + silcpurple_add_buddy_i(gc, buddy, TRUE); } } } @@ -1428,7 +1437,7 @@ void silcpurple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { - silc_free(buddy->proto_data); + silc_free(purple_buddy_get_protocol_data(buddy)); } void silcpurple_idle_set(PurpleConnection *gc, int idle) @@ -1469,10 +1478,12 @@ char *silcpurple_status_text(PurpleBuddy *b) { - SilcPurple sg = b->account->gc->proto_data; + PurpleAccount *account = purple_buddy_get_account(b); + PurpleConnection *gc = purple_account_get_connection(account); + SilcPurple sg = gc->proto_data; SilcClient client = sg->client; SilcClientConnection conn = sg->conn; - SilcClientID *client_id = b->proto_data; + SilcClientID *client_id = purple_buddy_get_protocol_data(b); SilcClientEntry client_entry; SilcAttributePayload attr; SilcAttributeMood mood = 0; @@ -1533,10 +1544,12 @@ void silcpurple_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) { - SilcPurple sg = b->account->gc->proto_data; + PurpleAccount *account = purple_buddy_get_account(b); + PurpleConnection *gc = purple_account_get_connection(account); + SilcPurple sg = gc->proto_data; SilcClient client = sg->client; SilcClientConnection conn = sg->conn; - SilcClientID *client_id = b->proto_data; + SilcClientID *client_id = purple_buddy_get_protocol_data(b); SilcClientEntry client_entry; char *moodstr, *statusstr, *contactstr, *langstr, *devicestr, *tzstr, *geostr; char tmp[256]; @@ -1610,12 +1623,12 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); b = (PurpleBuddy *) node; - gc = purple_account_get_connection(b->account); + gc = purple_account_get_connection(purple_buddy_get_account(b)); sg = gc->proto_data; /* Call KILL */ silc_client_command_call(sg->client, sg->conn, NULL, "KILL", - b->name, "Killed by operator", NULL); + purple_buddy_get_name(b), "Killed by operator", NULL); } typedef struct { @@ -1633,7 +1646,8 @@ GList *silcpurple_buddy_menu(PurpleBuddy *buddy) { - PurpleConnection *gc = purple_account_get_connection(buddy->account); + PurpleAccount *account = purple_buddy_get_account(buddy); + PurpleConnection *gc = purple_account_get_connection(account); SilcPurple sg = gc->proto_data; SilcClientConnection conn = sg->conn; const char *pkfile = NULL; @@ -1645,7 +1659,7 @@ pkfile = purple_blist_node_get_string((PurpleBlistNode *) buddy, "public-key"); client_entry = silc_client_get_client_by_id(sg->client, sg->conn, - buddy->proto_data); + purple_buddy_get_protocol_data(buddy)); if (client_entry && silc_client_private_message_key_is_set(sg->client, diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/silc/chat.c --- a/libpurple/protocols/silc/chat.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/silc/chat.c Mon Mar 02 22:07:59 2009 +0000 @@ -182,7 +182,9 @@ silcpurple_chat_getinfo_menu(PurpleBlistNode *node, gpointer data) { PurpleChat *chat = (PurpleChat *)node; - silcpurple_chat_getinfo(chat->account->gc, chat->components); + PurpleAccount *account = purple_chat_get_account(chat); + silcpurple_chat_getinfo(purple_account_get_connection(account), + purple_chat_get_components(chat)); } @@ -496,11 +498,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "+C", NULL); } @@ -549,7 +551,7 @@ g_hash_table_replace(comp, "passphrase", g_strdup(passphrase)); cn = purple_chat_new(sg->account, alias, comp); - g = (PurpleGroup *)p->c->node.parent; + g = purple_chat_get_group(p->c); purple_blist_add_chat(cn, g, (PurpleBlistNode *)p->c); /* Associate to a real channel */ @@ -583,7 +585,7 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; p = silc_calloc(1, sizeof(*p)); @@ -591,7 +593,7 @@ return; p->sg = sg; - p->channel = g_hash_table_lookup(chat->components, "channel"); + p->channel = g_hash_table_lookup(purple_chat_get_components(chat), "channel"); p->c = purple_blist_find_chat(sg->account, p->channel); fields = purple_request_fields_new(); @@ -633,11 +635,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "-f", NULL); } @@ -652,7 +654,7 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; if (!sg->conn) @@ -663,7 +665,7 @@ (default key). */ /* Call CMODE */ - channel = g_hash_table_lookup(chat->components, "channel"); + channel = g_hash_table_lookup(purple_chat_get_components(chat), "channel"); silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", channel, "+f", NULL); } @@ -729,13 +731,13 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; if (!sg->conn) return; - ch = g_strdup(g_hash_table_lookup(chat->components, "channel")); + ch = g_strdup(g_hash_table_lookup(purple_chat_get_components(chat), "channel")); channel = silc_client_get_channel(sg->client, sg->conn, (char *)ch); if (!channel) return; @@ -764,11 +766,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "-t", NULL); } @@ -782,11 +784,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "+t", NULL); } @@ -800,11 +802,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "-p", NULL); } @@ -818,11 +820,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "+p", NULL); } @@ -836,11 +838,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "-s", NULL); } @@ -854,11 +856,11 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); chat = (PurpleChat *) node; - gc = purple_account_get_connection(chat->account); + gc = purple_account_get_connection(purple_chat_get_account(chat)); sg = gc->proto_data; silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", - g_hash_table_lookup(chat->components, "channel"), + g_hash_table_lookup(purple_chat_get_components(chat), "channel"), "+s", NULL); } @@ -877,8 +879,8 @@ GList *silcpurple_chat_menu(PurpleChat *chat) { - GHashTable *components = chat->components; - PurpleConnection *gc = purple_account_get_connection(chat->account); + GHashTable *components = purple_chat_get_components(chat); + PurpleConnection *gc = purple_account_get_connection(purple_chat_get_account(chat)); SilcPurple sg = gc->proto_data; SilcClientConnection conn = sg->conn; const char *chname = NULL; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/silc/ops.c --- a/libpurple/protocols/silc/ops.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/silc/ops.c Mon Mar 02 22:07:59 2009 +0000 @@ -431,6 +431,7 @@ va_list va; PurpleConnection *gc = client->application; SilcPurple sg = gc->proto_data; + PurpleAccount *account = purple_connection_get_account(gc); PurpleConversation *convo; SilcClientEntry client_entry, client_entry2; SilcChannelEntry channel; @@ -856,19 +857,22 @@ silc_free(pk); /* Find buddy by associated public key */ - for (gnode = purple_get_blist()->root; gnode; - gnode = gnode->next) { + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if( !PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; - bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; b = (PurpleBuddy *)bnode; - if (b->account != gc->account) + if (purple_buddy_get_account(b) != account) continue; f = purple_blist_node_get_string(bnode, "public-key"); if (f && !strcmp(f, buf)) @@ -889,9 +893,9 @@ } } - silc_free(b->proto_data); - b->proto_data = silc_memdup(&client_entry->id, - sizeof(client_entry->id)); + silc_free(purple_buddy_get_protocol_data(b)); + purple_buddy_set_protocol_data(b, silc_memdup(&client_entry->id, + sizeof(client_entry->id))); if (notify == SILC_NOTIFY_TYPE_NICK_CHANGE) { break; } else if (notify == SILC_NOTIFY_TYPE_UMODE_CHANGE) { diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/simple/simple.c --- a/libpurple/protocols/simple/simple.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/simple/simple.c Mon Mar 02 22:07:59 2009 +0000 @@ -196,33 +196,41 @@ { struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data; struct simple_buddy *b; - if(strncmp(buddy->name, "sip:", 4)) { - gchar *buf = g_strdup_printf("sip:%s", buddy->name); + const char *name = purple_buddy_get_name(buddy); + if(strncmp(name, "sip:", 4)) { + gchar *buf = g_strdup_printf("sip:%s", name); purple_blist_rename_buddy(buddy, buf); g_free(buf); } - if(!g_hash_table_lookup(sip->buddies, buddy->name)) { + if(!g_hash_table_lookup(sip->buddies, name)) { b = g_new0(struct simple_buddy, 1); - purple_debug_info("simple", "simple_add_buddy %s\n", buddy->name); - b->name = g_strdup(buddy->name); + purple_debug_info("simple", "simple_add_buddy %s\n", name); + b->name = g_strdup(name); g_hash_table_insert(sip->buddies, b->name, b); } else { - purple_debug_info("simple", "buddy %s already in internal list\n", buddy->name); + purple_debug_info("simple", "buddy %s already in internal list\n", name); } } static void simple_get_buddies(PurpleConnection *gc) { PurpleBlistNode *gnode, *cnode, *bnode; + PurpleAccount *account; purple_debug_info("simple", "simple_get_buddies\n"); - for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + account = purple_connection_get_account(gc); + for(gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for(cnode = gnode->child; cnode; cnode = cnode->next) { + for(cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for(bnode = cnode->child; bnode; bnode = bnode->next) { + for(bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; - if(((PurpleBuddy*)bnode)->account == gc->account) + if(purple_buddy_get_account((PurpleBuddy*)bnode) == account) simple_add_buddy(gc, (PurpleBuddy*)bnode, (PurpleGroup *)gnode); } } @@ -231,9 +239,10 @@ static void simple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { + const char *name = purple_buddy_get_name(buddy); struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data; - struct simple_buddy *b = g_hash_table_lookup(sip->buddies, buddy->name); - g_hash_table_remove(sip->buddies, buddy->name); + struct simple_buddy *b = g_hash_table_lookup(sip->buddies, name); + g_hash_table_remove(sip->buddies, name); g_free(b->name); g_free(b); } @@ -922,7 +931,7 @@ purple_blist_add_buddy(b, NULL, g, NULL); purple_blist_alias_buddy(b, uri); bs = g_new0(struct simple_buddy, 1); - bs->name = g_strdup(b->name); + bs->name = g_strdup(purple_buddy_get_name(b)); g_hash_table_insert(sip->buddies, bs->name, bs); } xmlnode_free(isc); diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/toc/toc.c --- a/libpurple/protocols/toc/toc.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/toc/toc.c Mon Mar 02 22:07:59 2009 +0000 @@ -119,7 +119,7 @@ #define TOC_CONNECT_STEPS 3 -static void toc_login_callback(gpointer, gint, PurpleInputCondition); +static void toc_login_callback(gpointer, gint, const gchar *); static void toc_callback(gpointer, gint, PurpleInputCondition); /* ok. this function used to take username/password, and return 0 on success. @@ -152,7 +152,7 @@ } } -static void toc_login_callback(gpointer data, gint source, PurpleInputCondition cond) +static void toc_login_callback(gpointer data, gint source, const gchar *error_message) { PurpleConnection *gc = data; struct toc_data *tdt; @@ -260,7 +260,8 @@ } } -char *escape_message(const char *msg) +static char * +escape_message(const char *msg) { char *ret; int i, j; @@ -305,7 +306,8 @@ * Duplicates the input string, replacing each \n with a
, and * escaping a few other characters. */ -char *escape_text(const char *msg) +static char * +escape_text(const char *msg) { char *ret; int i, j; @@ -435,7 +437,7 @@ if (buflen < ntohs(hdr->len)) { /* fake like there's a read error */ purple_debug(PURPLE_DEBUG_ERROR, "toc", - "buffer too small (have %d, need %d)\n", + "buffer too small (have %" G_GSIZE_FORMAT ", need %d)\n", buflen, ntohs(hdr->len)); return -1; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Mon Mar 02 22:07:59 2009 +0000 @@ -385,7 +385,7 @@ for (i = list; i; i = i->next) { b = i->data; g = purple_buddy_get_group(b); - if (!purple_utf8_strcasecmp(group, g->name)) { + if (!purple_utf8_strcasecmp(group, purple_group_get_name(g))) { purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Oh good, %s is in the right group (%s).\n", name, group); list = g_slist_delete_link(list, i); @@ -423,7 +423,8 @@ for (i = list; i; i = i->next) { b = i->data; g = purple_buddy_get_group(b); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, g->name); + purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, + purple_group_get_name(g)); purple_blist_remove_buddy(b); } } @@ -2029,21 +2030,23 @@ return; group = purple_buddy_get_group(buddy); - name = g_strdup(buddy->name); - account = buddy->account; + name = g_strdup(purple_buddy_get_name(buddy)); + account = purple_buddy_get_account(buddy); purple_debug(PURPLE_DEBUG_INFO, "blist", - "Removing '%s' from buddy list.\n", buddy->name); + "Removing '%s' from buddy list.\n", name); purple_account_remove_buddy(account, buddy, group); purple_blist_remove_buddy(buddy); - serv_add_deny(account->gc, name); + serv_add_deny(purple_account_get_connection(account), name); g_free(name); } -static void keep_buddy(PurpleBuddy *b) { - purple_privacy_deny_remove(b->account, b->name, 1); +static void keep_buddy(PurpleBuddy *b) +{ + purple_privacy_deny_remove(purple_buddy_get_account(b), + purple_buddy_get_name(b), 1); } static void yahoo_process_ignore(PurpleConnection *gc, struct yahoo_packet *pkt) { @@ -3130,11 +3133,12 @@ YahooFriend *f; PurplePresence *presence; - if (!b || !(account = b->account) || !(gc = purple_account_get_connection(account)) || - !(yd = gc->proto_data)) + if (!b || !(account = purple_buddy_get_account(b)) || + !(gc = purple_account_get_connection(account)) || + !(yd = gc->proto_data)) return NULL; - f = yahoo_friend_find(gc, b->name); + f = yahoo_friend_find(gc, purple_buddy_get_name(b)); if (!f) { return "not-authorized"; } @@ -3194,7 +3198,7 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); yd = gc->proto_data; id = yd->conf_id; @@ -3206,7 +3210,7 @@ yahoo_c_join(gc, components); g_hash_table_destroy(components); - yahoo_c_invite(gc, id, "Join my conference...", buddy->name); + yahoo_c_invite(gc, id, "Join my conference...", purple_buddy_get_name(buddy)); } static void yahoo_presence_settings(PurpleBlistNode *node, gpointer data) { @@ -3215,9 +3219,9 @@ int presence_val = GPOINTER_TO_INT(data); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - - yahoo_friend_update_presence(gc, buddy->name, presence_val); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + + yahoo_friend_update_presence(gc, purple_buddy_get_name(buddy), presence_val); } static void yahoo_game(PurpleBlistNode *node, gpointer data) { @@ -3235,10 +3239,10 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); yd = (struct yahoo_data *) gc->proto_data; - f = yahoo_friend_find(gc, buddy->name); + f = yahoo_friend_find(gc, purple_buddy_get_name(buddy)); if (!f) return; @@ -3260,8 +3264,10 @@ YahooFriend *f = NULL; const char *msg; char *msg2; - - f = yahoo_friend_find(b->account->gc, b->name); + PurpleAccount *account; + + account = purple_buddy_get_account(b); + f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b)); if (!f) return g_strdup(_("Not on server list")); @@ -3290,8 +3296,10 @@ char *escaped; char *status = NULL; const char *presence = NULL; - - f = yahoo_friend_find(b->account->gc, b->name); + PurpleAccount *account; + + account = purple_buddy_get_account(b); + f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b)); if (!f) status = g_strdup_printf("\n%s", _("Not on server list")); else { @@ -3342,7 +3350,7 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); yahoo_add_buddy(gc, buddy, NULL); } @@ -3356,9 +3364,9 @@ g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); buddy = (PurpleBuddy *) node; - gc = purple_account_get_connection(buddy->account); - - yahoo_chat_goto(gc, buddy->name); + gc = purple_account_get_connection(purple_buddy_get_account(buddy)); + + yahoo_chat_goto(gc, purple_buddy_get_name(buddy)); } static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) { @@ -3402,9 +3410,10 @@ static void yahoo_doodle_blist_node(PurpleBlistNode *node, gpointer data) { PurpleBuddy *b = (PurpleBuddy *)node; - PurpleConnection *gc = b->account->gc; - - yahoo_doodle_initiate(gc, b->name); + PurpleAccount *account = purple_buddy_get_account(b); + PurpleConnection *gc = purple_account_get_connection(account); + + yahoo_doodle_initiate(gc, purple_buddy_get_name(b)); } static GList *yahoo_buddy_menu(PurpleBuddy *buddy) @@ -3412,12 +3421,12 @@ GList *m = NULL; PurpleMenuAction *act; - PurpleConnection *gc = purple_account_get_connection(buddy->account); + PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy)); struct yahoo_data *yd = gc->proto_data; static char buf2[1024]; YahooFriend *f; - f = yahoo_friend_find(gc, buddy->name); + f = yahoo_friend_find(gc, purple_buddy_get_name(buddy)); if (!f && !yd->wm) { act = purple_menu_action_new(_("Add Buddy"), @@ -3944,19 +3953,20 @@ const char *group = NULL; char *group2; YahooFriend *f; + const char *bname; if (!yd->logged_in) return; - if (!purple_privacy_check(purple_connection_get_account(gc), - purple_buddy_get_name(buddy))) + bname = purple_buddy_get_name(buddy); + if (!purple_privacy_check(purple_connection_get_account(gc), bname)) return; - f = yahoo_friend_find(gc, purple_buddy_get_name(buddy)); + f = yahoo_friend_find(gc, bname); g = purple_buddy_get_group(buddy); if (g) - group = g->name; + group = purple_group_get_name(g); else group = "Buddies"; @@ -3969,7 +3979,7 @@ 1, purple_connection_get_display_name(gc), 302, "319", 300, "319", - 7, buddy->name, + 7, bname, 334, "0", 301, "319", 303, "319" @@ -3983,19 +3993,22 @@ static void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data; - struct yahoo_packet *pkt; + struct yahoo_packet *pkt; GSList *buddies, *l; PurpleGroup *g; gboolean remove = TRUE; char *cg; - - if (!(yahoo_friend_find(gc, buddy->name))) + const char *bname, *gname; + + bname = purple_buddy_get_name(buddy); + if (!(yahoo_friend_find(gc, bname))) return; - buddies = purple_find_buddies(purple_connection_get_account(gc), buddy->name); + gname = purple_group_get_name(group); + buddies = purple_find_buddies(purple_connection_get_account(gc), bname); for (l = buddies; l; l = l->next) { g = purple_buddy_get_group(l->data); - if (purple_utf8_strcasecmp(group->name, g->name)) { + if (purple_utf8_strcasecmp(gname, purple_group_get_name(g))) { remove = FALSE; break; } @@ -4004,12 +4017,12 @@ g_slist_free(buddies); if (remove) - g_hash_table_remove(yd->friends, buddy->name); - - cg = yahoo_string_encode(gc, group->name, NULL); + 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); yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), - 7, buddy->name, 65, cg); + 7, bname, 65, cg); yahoo_packet_send_and_free(pkt, yd); g_free(cg); } @@ -4118,7 +4131,7 @@ struct yahoo_packet *pkt; char *gpn, *gpo; - gpn = yahoo_string_encode(gc, group->name, NULL); + gpn = yahoo_string_encode(gc, purple_group_get_name(group), NULL); gpo = yahoo_string_encode(gc, old_name, NULL); if (!strcmp(gpn, gpo)) { g_free(gpn); @@ -4274,7 +4287,7 @@ } /* This may not be the best way to do this, but we find the first key w/o a value - * and assume it is the screenname */ + * and assume it is the buddy name */ static void yahoo_find_uri_novalue_param(gpointer key, gpointer value, gpointer user_data) { char **retval = user_data; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/yahoo/yahoo_picture.c --- a/libpurple/protocols/yahoo/yahoo_picture.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_picture.c Mon Mar 02 22:07:59 2009 +0000 @@ -569,7 +569,7 @@ checksum &= ~g; } - purple_debug_misc("yahoo", "Calculated buddy icon checksum: %d", checksum); + purple_debug_misc("yahoo", "Calculated buddy icon checksum: %d\n", checksum); return checksum; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/yahoo/yahoo_profile.c --- a/libpurple/protocols/yahoo/yahoo_profile.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_profile.c Mon Mar 02 22:07:59 2009 +0000 @@ -699,8 +699,9 @@ info_data->name); if (b) { - if(b->alias && b->alias[0]) { - char *aliastext = g_markup_escape_text(b->alias, -1); + const char *balias = purple_buddy_get_local_buddy_alias(b); + if(balias && balias[0]) { + char *aliastext = g_markup_escape_text(balias, -1); purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext); g_free(aliastext); } @@ -715,7 +716,7 @@ /* Add the normal tooltip pairs */ yahoo_tooltip_text(b, user_info, TRUE); - if ((f = yahoo_friend_find(info_data->gc, b->name))) { + if ((f = yahoo_friend_find(info_data->gc, purple_buddy_get_name(b)))) { const char *ip; if ((ip = yahoo_friend_get_ip(f))) purple_notify_user_info_add_pair(user_info, _("IP Address"), ip); @@ -1213,7 +1214,9 @@ * in which case the user may or may not actually exist. * Hence this extra step. */ - f = yahoo_friend_find(b->account->gc, b->name); + PurpleAccount *account = purple_buddy_get_account(b); + f = yahoo_friend_find(purple_account_get_connection(account), + purple_buddy_get_name(b)); } str = f ? _("Could not retrieve the user's profile. " "This most likely is a temporary server-side problem. " diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/yahoo/yahoochat.c --- a/libpurple/protocols/yahoo/yahoochat.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoochat.c Mon Mar 02 22:07:59 2009 +0000 @@ -519,7 +519,7 @@ GList *l; GList *flags = NULL; for (l = members; l; l = l->next) - flags = g_list_append(flags, GINT_TO_POINTER(PURPLE_CBFLAGS_NONE)); + flags = g_list_prepend(flags, GINT_TO_POINTER(PURPLE_CBFLAGS_NONE)); if (c && purple_conv_chat_has_left(PURPLE_CONV_CHAT(c))) { /* this might be a hack, but oh well, it should nicely */ char *tmpmsg; diff -r a0668fbf2483 -r b98519a42e53 libpurple/protocols/zephyr/zephyr.c --- a/libpurple/protocols/zephyr/zephyr.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/protocols/zephyr/zephyr.c Mon Mar 02 22:07:59 2009 +0000 @@ -732,7 +732,7 @@ return ret; } -static gboolean pending_zloc(zephyr_account *zephyr,char *who) +static gboolean pending_zloc(zephyr_account *zephyr, const char *who) { GList *curr; @@ -771,6 +771,8 @@ int nlocs; char *user; PurpleBuddy *b; + const char *bname; + /* XXX add real error reporting */ if (ZParseLocations(¬ice, NULL, &nlocs, &user) != ZERR_NONE) return; @@ -780,15 +782,19 @@ b = purple_find_buddy(gc->account,stripped_user); g_free(stripped_user); } - if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user)) { + + bname = b ? purple_buddy_get_name(b) : NULL; + if ((b && pending_zloc(zephyr,bname)) || pending_zloc(zephyr,user)) { ZLocations_t locs; int one = 1; PurpleNotifyUserInfo *user_info = purple_notify_user_info_new(); char *tmp; + const char *balias; - purple_notify_user_info_add_pair(user_info, _("User"), (b ? b->name : user)); - if (b && b->alias) - purple_notify_user_info_add_pair(user_info, _("Alias"), b->alias); + purple_notify_user_info_add_pair(user_info, _("User"), (b ? bname : user)); + balias = purple_buddy_get_local_buddy_alias(b); + if (b && balias) + purple_notify_user_info_add_pair(user_info, _("Alias"), balias); if (!nlocs) { purple_notify_user_info_add_pair(user_info, NULL, _("Hidden or not logged-in")); @@ -801,14 +807,14 @@ purple_notify_user_info_add_pair(user_info, _("Location"), tmp); g_free(tmp); } - purple_notify_userinfo(gc, (b ? b->name : user), + purple_notify_userinfo(gc, (b ? bname : user), user_info, NULL, NULL); purple_notify_user_info_destroy(user_info); } else { if (nlocs>0) - purple_prpl_got_user_status(gc->account, b ? b->name : user, "available", NULL); + purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL); else - purple_prpl_got_user_status(gc->account, b ? b->name : user, "offline", NULL); + purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL); } g_free(user); @@ -1141,6 +1147,7 @@ /* XXX fix */ char *user; PurpleBuddy *b; + const char *bname; int nlocs = 0; parse_tree *locations; gchar *locval; @@ -1160,15 +1167,18 @@ nlocs = 1; } - if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user) || pending_zloc(zephyr,local_zephyr_normalize(zephyr,user))){ + bname = b ? purple_buddy_get_name(b) : NULL; + if ((b && pending_zloc(zephyr,bname)) || pending_zloc(zephyr,user) || pending_zloc(zephyr,local_zephyr_normalize(zephyr,user))){ PurpleNotifyUserInfo *user_info = purple_notify_user_info_new(); char *tmp; + const char *balias; - purple_notify_user_info_add_pair(user_info, _("User"), (b ? b->name : user)); + purple_notify_user_info_add_pair(user_info, _("User"), (b ? bname : user)); - if (b && b->alias) - purple_notify_user_info_add_pair(user_info, _("Alias"), b->alias); - + balias = b ? purple_buddy_get_local_buddy_alias(b) : NULL; + if (balias) + purple_notify_user_info_add_pair(user_info, _("Alias"), balias); + if (!nlocs) { purple_notify_user_info_add_pair(user_info, NULL, _("Hidden or not logged-in")); } else { @@ -1179,14 +1189,14 @@ g_free(tmp); } - purple_notify_userinfo(gc, b ? b->name : user, + purple_notify_userinfo(gc, b ? bname : user, user_info, NULL, NULL); purple_notify_user_info_destroy(user_info); } else { if (nlocs>0) - purple_prpl_got_user_status(gc->account, b ? b->name : user, "available", NULL); + purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL); else - purple_prpl_got_user_status(gc->account, b ? b->name : user, "offline", NULL); + purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL); } } else if (!g_ascii_strncasecmp(spewtype,"subscribed",10)) { @@ -1246,38 +1256,44 @@ static gint check_loc(gpointer_data) { - PurpleBlistNode *gnode, *cnode, *bnode; - ZLocations_t locations; - int numlocs; - int one = 1; + PurpleBlistNode *gnode, *cnode, *bnode; + ZLocations_t locations; + int numlocs; + int one = 1; - for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { PurpleBuddy *b = (PurpleBuddy *) bnode; if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; - if (b->account->gc == zgc) { + if (purple_buddy_get_account(b)->gc == zgc) { char *chk; - chk = local_zephyr_normalize(b->name); - ZLocateUser(chk,&numlocs, ZAUTH); - if (numlocs) { - int i; - for(i=0;iname,1,0,0,0,0); - } - } - } - } - } - } - return TRUE; + const char *bname = purple_buddy_get_name(b); + chk = local_zephyr_normalize(bname); + ZLocateUser(chk,&numlocs, ZAUTH); + if (numlocs) { + int i; + for(i=0;iproto_data; + PurpleAccount *account = purple_connection_get_account(gc); if (use_zeph02(zephyr)) { ald.user = NULL; @@ -1295,22 +1312,28 @@ ald.version = NULL; } - for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { PurpleBuddy *b = (PurpleBuddy *) bnode; if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; - if (b->account->gc == gc) { + if (purple_buddy_get_account(b) == account) { const char *chk; + const char *name = purple_buddy_get_name(b); - chk = local_zephyr_normalize(zephyr,b->name); - purple_debug_info("zephyr","chk: %s b->name %s\n",chk,b->name); + chk = local_zephyr_normalize(zephyr,name); + purple_debug_info("zephyr","chk: %s b->name %s\n",chk,name); /* XXX add real error reporting */ /* doesn't matter if this fails or not; we'll just move on to the next one */ if (use_zeph02(zephyr)) { @@ -1323,9 +1346,9 @@ for(i=0;i0) - purple_prpl_got_user_status(gc->account,b->name,"available",NULL); + purple_prpl_got_user_status(account,name,"available",NULL); else - purple_prpl_got_user_status(gc->account,b->name,"offline",NULL); + purple_prpl_got_user_status(account,name,"offline",NULL); } } #else @@ -1936,6 +1959,7 @@ PurpleBuddy *b; char *fname; FILE *fd; + PurpleAccount *account; zephyr_account* zephyr = gc->proto_data; fname = g_strdup_printf("%s/.anyone", purple_home_dir()); fd = g_fopen(fname, "w"); @@ -1944,18 +1968,25 @@ return; } - for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { + account = purple_connection_get_account(gc); + for (gnode = purple_blist_get_root(); + gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for (cnode = gnode->child; cnode; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) { if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; b = (PurpleBuddy *) bnode; - if (b->account == gc->account) { - gchar *stripped_user = zephyr_strip_local_realm(zephyr,b->name); + if (purple_buddy_get_account(b) == account) { + gchar *stripped_user = zephyr_strip_local_realm(zephyr, purple_buddy_get_name(b)); fprintf(fd, "%s\n", stripped_user); g_free(stripped_user); } @@ -2498,26 +2529,31 @@ PurpleBlistNode *gnode, *cnode; /* XXX needs to be %host%,%canon%, and %me% clean */ - for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { - for(cnode = gnode->child; cnode; cnode = cnode->next) { + for(gnode = purple_blist_get_root(); gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) { + for(cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) { PurpleChat *chat = (PurpleChat*)cnode; char *zclass, *inst, *recip; char** triple; + GHashTable *components; if(!PURPLE_BLIST_NODE_IS_CHAT(cnode)) continue; - if(chat->account !=account) - continue; - if(!(zclass = g_hash_table_lookup(chat->components, "class"))) + if(purple_chat_get_account(chat) != account) continue; - if(!(inst = g_hash_table_lookup(chat->components, "instance"))) + components = purple_chat_get_components(chat); + if(!(zclass = g_hash_table_lookup(components, "class"))) + continue; + if(!(inst = g_hash_table_lookup(components, "instance"))) inst = g_strdup(""); - if(!(recip = g_hash_table_lookup(chat->components, "recipient"))) + if(!(recip = g_hash_table_lookup(components, "recipient"))) recip = g_strdup(""); /* purple_debug_info("zephyr","in zephyr_find_blist_chat name: %s\n",name?name:""); */ triple = g_strsplit(name,",",3); if (!g_ascii_strcasecmp(triple[0],zclass) && !g_ascii_strcasecmp(triple[1],inst) && !g_ascii_strcasecmp(triple[2],recip)) return chat; - + } } return NULL; diff -r a0668fbf2483 -r b98519a42e53 libpurple/proxy.c --- a/libpurple/proxy.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/proxy.c Mon Mar 02 22:07:59 2009 +0000 @@ -207,6 +207,16 @@ return global_proxy_info; } +void +purple_global_proxy_set_info(PurpleProxyInfo *info) +{ + g_return_if_fail(info != NULL); + + purple_proxy_info_destroy(global_proxy_info); + + global_proxy_info = info; +} + static PurpleProxyInfo * purple_gnome_proxy_get_info(void) { @@ -228,13 +238,13 @@ g_free(err); err = NULL; - if (!strcmp(tmp, "none\n")) { + if (purple_strequal(tmp, "none\n")) { info.type = PURPLE_PROXY_NONE; g_free(tmp); return &info; } - if (strcmp(tmp, "manual\n")) { + if (purple_strequal(tmp, "manual\n")) { /* Unknown setting. Fallback to using our global proxy settings. */ g_free(tmp); return purple_global_proxy_get_info(); @@ -263,7 +273,7 @@ g_free(err); err = NULL; - if (!strcmp(tmp, "true\n")) + if (purple_strequal(tmp, "true\n")) use_same_proxy = TRUE; g_free(tmp); tmp = NULL; @@ -2300,31 +2310,31 @@ { PurpleProxyInfo *info = purple_global_proxy_get_info(); - if (!strcmp(name, "/purple/proxy/type")) { + if (purple_strequal(name, "/purple/proxy/type")) { int proxytype; const char *type = value; - if (!strcmp(type, "none")) + if (purple_strequal(type, "none")) proxytype = PURPLE_PROXY_NONE; - else if (!strcmp(type, "http")) + else if (purple_strequal(type, "http")) proxytype = PURPLE_PROXY_HTTP; - else if (!strcmp(type, "socks4")) + else if (purple_strequal(type, "socks4")) proxytype = PURPLE_PROXY_SOCKS4; - else if (!strcmp(type, "socks5")) + else if (purple_strequal(type, "socks5")) proxytype = PURPLE_PROXY_SOCKS5; - else if (!strcmp(type, "envvar")) + else if (purple_strequal(type, "envvar")) proxytype = PURPLE_PROXY_USE_ENVVAR; else proxytype = -1; purple_proxy_info_set_type(info, proxytype); - } else if (!strcmp(name, "/purple/proxy/host")) + } else if (purple_strequal(name, "/purple/proxy/host")) purple_proxy_info_set_host(info, value); - else if (!strcmp(name, "/purple/proxy/port")) + else if (purple_strequal(name, "/purple/proxy/port")) purple_proxy_info_set_port(info, GPOINTER_TO_INT(value)); - else if (!strcmp(name, "/purple/proxy/username")) + else if (purple_strequal(name, "/purple/proxy/username")) purple_proxy_info_set_username(info, value); - else if (!strcmp(name, "/purple/proxy/password")) + else if (purple_strequal(name, "/purple/proxy/password")) purple_proxy_info_set_password(info, value); } diff -r a0668fbf2483 -r b98519a42e53 libpurple/proxy.h --- a/libpurple/proxy.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/proxy.h Mon Mar 02 22:07:59 2009 +0000 @@ -186,6 +186,14 @@ */ PurpleProxyInfo *purple_global_proxy_get_info(void); +/** + * Set purple's global proxy information. + * + * @param info The proxy information. + * @since 2.6.0 + */ +void purple_global_proxy_set_info(PurpleProxyInfo *info); + /*@}*/ /**************************************************************************/ diff -r a0668fbf2483 -r b98519a42e53 libpurple/prpl.c --- a/libpurple/prpl.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/prpl.c Mon Mar 02 22:07:59 2009 +0000 @@ -75,7 +75,7 @@ purple_attention_type_set_icon_name(PurpleAttentionType *type, const char *name) { g_return_if_fail(type != NULL); - + type->icon_name = name; } @@ -400,7 +400,7 @@ PurpleConversation *conv; gboolean (*send_attention)(PurpleConnection *, const char *, guint); PurpleBuddy *buddy; - const char *alias; + const char *alias; gchar *description; time_t mtime; @@ -425,7 +425,7 @@ } else { description = g_strdup_printf(_("Requesting %s's attention..."), alias); } - + flags = PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM; purple_debug_info("server", "serv_send_attention: sending '%s' to %s\n", @@ -511,7 +511,7 @@ for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) { plugin = (PurplePlugin *)l->data; - if (!strcmp(plugin->info->id, id)) + if (purple_strequal(plugin->info->id, id)) return plugin; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/prpl.h --- a/libpurple/prpl.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/prpl.h Mon Mar 02 22:07:59 2009 +0000 @@ -178,9 +178,11 @@ OPT_PROTO_USE_POINTSIZE = 0x00000100, /** - * Set the Register button active when screenname is not given. + * Set the Register button active even when the username has not + * been specified. * - * Gadu-Gadu doesn't need a screenname to register new account. + * Gadu-Gadu doesn't need a username to register new account (because + * usernames are assigned by the server). */ OPT_PROTO_REGISTER_NOSCREENNAME = 0x00000200, @@ -211,7 +213,7 @@ /** * Returns the base icon name for the given buddy and account. - * If buddy is NULL and the account is non-NULL, it will return the + * If buddy is NULL and the account is non-NULL, it will return the * name to use for the account's icon. If both are NULL, it will * return the name to use for the protocol's icon. * @@ -413,7 +415,7 @@ * reasons. */ void (*unregister_user)(PurpleAccount *, PurpleAccountUnregistrationCb cb, void *user_data); - + /* Attention API for sending & receiving zaps/nudges/buzzes etc. */ gboolean (*send_attention)(PurpleConnection *gc, const char *username, guint type); GList *(*get_attention_types)(PurpleAccount *acct); @@ -594,7 +596,7 @@ /*@{*/ /** - * Notifies Purple that an account's idle state and time have changed. + * Notifies Purple that our account's idle state and time have changed. * * This is meant to be called from protocol plugins. * @@ -606,7 +608,7 @@ time_t idle_time); /** - * Notifies Purple of an account's log-in time. + * Notifies Purple of our account's log-in time. * * This is meant to be called from protocol plugins. * @@ -616,7 +618,7 @@ void purple_prpl_got_account_login_time(PurpleAccount *account, time_t login_time); /** - * Notifies Purple that an account's status has changed. + * Notifies Purple that our account's status has changed. * * This is meant to be called from protocol plugins. * @@ -627,13 +629,14 @@ */ void purple_prpl_got_account_status(PurpleAccount *account, const char *status_id, ...) G_GNUC_NULL_TERMINATED; + /** - * Notifies Purple that a user's idle state and time have changed. + * Notifies Purple that a buddy's idle state and time have changed. * * This is meant to be called from protocol plugins. * * @param account The account the user is on. - * @param name The screen name of the user. + * @param name The name of the buddy. * @param idle The user's idle state. * @param idle_time The user's idle time. This is the time at * which the user became idle, in seconds since @@ -644,24 +647,24 @@ gboolean idle, time_t idle_time); /** - * Notifies Purple of a user's log-in time. + * Notifies Purple of a buddy's log-in time. * * This is meant to be called from protocol plugins. * * @param account The account the user is on. - * @param name The screen name of the user. + * @param name The name of the buddy. * @param login_time The user's log-in time. */ void purple_prpl_got_user_login_time(PurpleAccount *account, const char *name, time_t login_time); /** - * Notifies Purple that a user's status has been activated. + * Notifies Purple that a buddy's status has been activated. * * This is meant to be called from protocol plugins. * * @param account The account the user is on. - * @param name The screen name of the user. + * @param name The name of the buddy. * @param status_id The status ID. * @param ... A NULL-terminated list of attribute IDs and values, * beginning with the value for @a attr_id. @@ -670,19 +673,19 @@ const char *status_id, ...) G_GNUC_NULL_TERMINATED; /** - * Notifies libpurple that a user's status has been deactivated + * Notifies libpurple that a buddy's status has been deactivated * * This is meant to be called from protocol plugins. * * @param account The account the user is on. - * @param name The screen name of the user. + * @param name The name of the buddy. * @param status_id The status ID. */ void purple_prpl_got_user_status_deactive(PurpleAccount *account, const char *name, const char *status_id); - + /** - * Informs the server that an account's status changed. + * Informs the server that our account's status changed. * * @param account The account the user is on. * @param old_status The previous status. @@ -703,37 +706,43 @@ */ GList *purple_prpl_get_statuses(PurpleAccount *account, PurplePresence *presence); -/** Send an attention request message. +/** + * Send an attention request message. * * @param gc The connection to send the message on. * @param who Whose attention to request. * @param type_code An index into the prpl's attention_types list determining the type - * of the attention request command to send. 0 if prpl only defines one - * (for example, Yahoo and MSN), but some protocols define more (MySpaceIM). + * of the attention request command to send. 0 if prpl only defines one + * (for example, Yahoo and MSN), but some protocols define more (MySpaceIM). * * Note that you can't send arbitrary PurpleAttentionType's, because there is * only a fixed set of attention commands. + * * @since 2.5.0 */ void purple_prpl_send_attention(PurpleConnection *gc, const char *who, guint type_code); -/** Process an incoming attention message. +/** + * Process an incoming attention message. * * @param gc The connection that received the attention message. * @param who Who requested your attention. * @param type_code An index into the prpl's attention_types list determining the type - * of the attention request command to send. + * of the attention request command to send. + * * @since 2.5.0 */ void purple_prpl_got_attention(PurpleConnection *gc, const char *who, guint type_code); -/** Process an incoming attention message in a chat. +/** + * Process an incoming attention message in a chat. * * @param gc The connection that received the attention message. * @param id The chat id. * @param who Who requested your attention. * @param type_code An index into the prpl's attention_types list determining the type - * of the attention request command to send. + * of the attention request command to send. + * * @since 2.5.0 */ void purple_prpl_got_attention_in_chat(PurpleConnection *gc, int id, const char *who, guint type_code); diff -r a0668fbf2483 -r b98519a42e53 libpurple/purple-remote --- a/libpurple/purple-remote Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/purple-remote Mon Mar 02 22:07:59 2009 +0000 @@ -61,6 +61,8 @@ jabber:addbuddy?screenname=my friend setstatus?status=away&message=don't disturb + getstatus + getstatusmessage quit PurpleAccountsFindConnected?name=&protocol=prpl-jabber diff -r a0668fbf2483 -r b98519a42e53 libpurple/purple-send-async --- a/libpurple/purple-send-async Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/purple-send-async Mon Mar 02 22:07:59 2009 +0000 @@ -2,18 +2,18 @@ METHOD_NAME=$1 -if test -z "$METHOD_NAME" +if test -z "$METHOD_NAME" then - cat <ui_data; +} + +void +purple_request_field_set_ui_data(PurpleRequestField *field, + gpointer ui_data) +{ + g_return_if_fail(field != NULL); + + field->ui_data = ui_data; +} + gboolean purple_request_fields_all_required_filled(const PurpleRequestFields *fields) { @@ -443,6 +462,14 @@ return field->type; } +PurpleRequestFieldGroup * +purple_request_field_get_group(const PurpleRequestField *field) +{ + g_return_val_if_fail(field != NULL, NULL); + + return field->group; +} + const char * purple_request_field_get_id(const PurpleRequestField *field) { diff -r a0668fbf2483 -r b98519a42e53 libpurple/request.h --- a/libpurple/request.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/request.h Mon Mar 02 22:07:59 2009 +0000 @@ -30,6 +30,9 @@ #include #include +/** @copydoc _PurpleRequestField */ +typedef struct _PurpleRequestField PurpleRequestField; + #include "account.h" #define PURPLE_DEFAULT_ACTION_NONE -1 @@ -93,10 +96,11 @@ } PurpleRequestFieldGroup; +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_REQUEST_C_) /** * A request field. */ -typedef struct +struct _PurpleRequestField { PurpleRequestFieldType type; PurpleRequestFieldGroup *group; @@ -176,7 +180,8 @@ void *ui_data; -} PurpleRequestField; +}; +#endif /** * Request UI operations. @@ -521,6 +526,17 @@ PurpleRequestFieldType purple_request_field_get_type(const PurpleRequestField *field); /** + * Returns the group for the field. + * + * @param field The field. + * + * @return The UI data. + * + * @since 2.6.0 + */ +PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field); + +/** * Returns the ID of a field. * * @param field The field. @@ -565,6 +581,30 @@ */ gboolean purple_request_field_is_required(const PurpleRequestField *field); +/** + * Returns the ui_data for a field. + * + * @param field The field. + * + * @return The UI data. + * + * @since 2.6.0 + */ +gpointer purple_request_field_get_ui_data(const PurpleRequestField *field); + +/** + * Sets the ui_data for a field. + * + * @param field The field. + * @param ui_data The UI data. + * + * @return The UI data. + * + * @since 2.6.0 + */ +void purple_request_field_set_ui_data(PurpleRequestField *field, + gpointer ui_data); + /*@}*/ /**************************************************************************/ diff -r a0668fbf2483 -r b98519a42e53 libpurple/savedstatuses.c --- a/libpurple/savedstatuses.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/savedstatuses.c Mon Mar 02 22:07:59 2009 +0000 @@ -461,7 +461,7 @@ ret = g_new0(PurpleSavedStatus, 1); attrib = xmlnode_get_attrib(status, "transient"); - if ((attrib == NULL) || (strcmp(attrib, "true"))) + if (!purple_strequal(attrib, "true")) { /* Read the title */ attrib = xmlnode_get_attrib(status, "name"); @@ -940,7 +940,7 @@ for (iter = saved_statuses; iter != NULL; iter = iter->next) { status = (PurpleSavedStatus *)iter->data; - if ((status->title != NULL) && !strcmp(status->title, title)) + if (purple_strequal(status->title, title)) return status; } @@ -975,8 +975,7 @@ status = (PurpleSavedStatus *)iter->data; if ((status->type == type) && purple_savedstatus_is_transient(status) && !purple_savedstatus_has_substatuses(status) && - (((status->message == NULL) && (message == NULL)) || - ((status->message != NULL) && (message != NULL) && !strcmp(status->message, message)))) + purple_strequal(status->message, message)) { return status; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/server.c --- a/libpurple/server.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/server.c Mon Mar 02 22:07:59 2009 +0000 @@ -152,7 +152,7 @@ auto_reply_pref = purple_prefs_get_string("/purple/away/auto_reply"); if((gc->flags & PURPLE_CONNECTION_AUTO_RESP) && !purple_presence_is_available(presence) && - strcmp(auto_reply_pref, "never")) { + !purple_strequal(auto_reply_pref, "never")) { struct last_auto_response *lar; lar = get_last_auto_response(gc, name); @@ -172,7 +172,7 @@ if(gc) prpl = purple_connection_get_prpl(gc); - + if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); @@ -188,7 +188,7 @@ if(gc) prpl = purple_connection_get_prpl(gc); - + if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); @@ -230,7 +230,7 @@ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); if(b && prpl_info && prpl_info->alias_buddy) { - prpl_info->alias_buddy(gc, b->name, b->alias); + prpl_info->alias_buddy(gc, purple_buddy_get_name(b), purple_buddy_get_local_buddy_alias(b)); } } @@ -247,20 +247,20 @@ while (buddies != NULL) { + const char *server_alias; + b = buddies->data; buddies = g_slist_delete_link(buddies, buddies); - if((b->server_alias == NULL && alias == NULL) || - (b->server_alias && alias && !strcmp(b->server_alias, alias))) - { + server_alias = purple_buddy_get_server_alias(b); + + if (purple_strequal(server_alias, alias)) continue; - } purple_blist_server_alias_buddy(b, alias); - conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, account); - if(conv != NULL && alias != NULL && - who != NULL && strcmp(alias, who)) + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, purple_buddy_get_name(b), account); + if (conv != NULL && alias != NULL && purple_strequal(alias, who)) { char *escaped = g_markup_escape_text(who, -1); char *escaped2 = g_markup_escape_text(alias, -1); @@ -289,11 +289,13 @@ buddies = purple_find_buddies(account, who); while(buddies != NULL) { + const char *balias; b = buddies->data; buddies = g_slist_delete_link(buddies, buddies); - if((!b->alias && !alias) || (b->alias && alias && !strcmp(b->alias, alias))) + balias = purple_buddy_get_local_buddy_alias(b); + if (purple_strequal(balias, alias)) continue; purple_blist_alias_buddy(b, alias); @@ -367,7 +369,9 @@ if(gc && og && ng) { if (prpl_info && prpl_info->group_buddy) { - prpl_info->group_buddy(gc, b->name, og->name, ng->name); + prpl_info->group_buddy(gc, purple_buddy_get_name(b), + purple_group_get_name(og), + purple_group_get_name(ng)); } } } @@ -666,8 +670,8 @@ if ((primitive == PURPLE_STATUS_AVAILABLE) || (primitive == PURPLE_STATUS_INVISIBLE) || mobile || - !strcmp(auto_reply_pref, "never") || - (!purple_presence_is_idle(presence) && !strcmp(auto_reply_pref, "awayidle"))) + purple_strequal(auto_reply_pref, "never") || + (!purple_presence_is_idle(presence) && purple_strequal(auto_reply_pref, "awayidle"))) { g_free(name); return; diff -r a0668fbf2483 -r b98519a42e53 libpurple/server.h --- a/libpurple/server.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/server.h Mon Mar 02 22:07:59 2009 +0000 @@ -55,8 +55,8 @@ void serv_move_buddy(PurpleBuddy *, PurpleGroup *, PurpleGroup *); int serv_send_im(PurpleConnection *, const char *, const char *, PurpleMessageFlags flags); -/** Get information about an account's attention commands, from the prpl. - * +/** Get information about an account's attention commands, from the prpl. + * * @return The attention command numbered 'code' from the prpl's attention_types, or NULL. */ PurpleAttentionType *purple_get_attention_type_from_code(PurpleAccount *account, guint type_code); @@ -76,14 +76,14 @@ */ void serv_send_attention(PurpleConnection *gc, const char *who, guint type_code); -/** Process an incoming attention message. +/** Process an incoming attention message. * * @deprecated Use purple_prpl_got_attention() instead. * * @param gc The connection that received the attention message. * @param who Who requested your attention. * @param type_code An index into the prpl's attention_types list determining the type - * of the attention request command to send. + * of the attention request command to send. */ void serv_got_attention(PurpleConnection *gc, const char *who, guint type_code); @@ -108,7 +108,7 @@ * aliases are the aliases or display names that buddies set for themselves. * * @param gc The connection on which the alias was received. - * @param who The screen name of the buddy whose alias was received. + * @param who The name of the buddy whose alias was received. * @param alias The alias that was received. */ void purple_serv_got_private_alias(PurpleConnection *gc, const char *who, const char *alias); @@ -180,7 +180,7 @@ * function should be g_str_equal(). */ void purple_serv_got_join_chat_failed(PurpleConnection *gc, GHashTable *data); - + void serv_got_chat_left(PurpleConnection *g, int id); void serv_got_chat_in(PurpleConnection *g, int id, const char *who, PurpleMessageFlags flags, const char *message, time_t mtime); diff -r a0668fbf2483 -r b98519a42e53 libpurple/signals.c --- a/libpurple/signals.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/signals.c Mon Mar 02 22:07:59 2009 +0000 @@ -487,7 +487,7 @@ } #ifdef HAVE_DBUS - purple_dbus_signal_emit_purple(signal, signal_data->num_values, + purple_dbus_signal_emit_purple(signal, signal_data->num_values, signal_data->values, args); #endif /* HAVE_DBUS */ @@ -539,7 +539,7 @@ #ifdef HAVE_DBUS G_VA_COPY(tmp, args); - purple_dbus_signal_emit_purple(signal, signal_data->num_values, + purple_dbus_signal_emit_purple(signal, signal_data->num_values, signal_data->values, tmp); va_end(tmp); #endif /* HAVE_DBUS */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/signals.h --- a/libpurple/signals.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/signals.h Mon Mar 02 22:07:59 2009 +0000 @@ -137,7 +137,7 @@ /** * Connects a signal handler to a signal for a particular object. * (Its priority defaults to 0, aka #PURPLE_SIGNAL_PRIORITY_DEFAULT.) - * + * * Take care not to register a handler function twice. Purple will * not correct any mistakes for you in this area. * diff -r a0668fbf2483 -r b98519a42e53 libpurple/smiley.c --- a/libpurple/smiley.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/smiley.c Mon Mar 02 22:07:59 2009 +0000 @@ -722,7 +722,7 @@ smiley = purple_smiley_new_from_stream(shortcut, smiley_data, smiley_data_len); } - + return smiley; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/sound-theme-loader.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/sound-theme-loader.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,111 @@ +/* + * SoundThemeLoader for libpurple + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "internal.h" +#include "sound-theme-loader.h" +#include "sound-theme.h" +#include "util.h" +#include "xmlnode.h" + +/***************************************************************************** + * Sound Theme Builder + *****************************************************************************/ + +static PurpleTheme * +purple_sound_loader_build(const gchar *dir) +{ + xmlnode *root_node = NULL, *sub_node; + gchar *filename_full, *data; + PurpleSoundTheme *theme = NULL; + + /* Find the theme file */ + g_return_val_if_fail(dir != NULL, NULL); + filename_full = g_build_filename(dir, "theme.xml", NULL); + + if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR)) + root_node = xmlnode_from_file(dir, "theme.xml", "sound themes", "sound-theme-loader"); + + g_free(filename_full); + g_return_val_if_fail(root_node != NULL, NULL); + + /* Parse the tree */ + sub_node = xmlnode_get_child(root_node, "description"); + data = xmlnode_get_data(sub_node); + + if (xmlnode_get_attrib(root_node, "name") != NULL) { + theme = g_object_new(PURPLE_TYPE_SOUND_THEME, + "type", "sound", + "name", xmlnode_get_attrib(root_node, "name"), + "author", xmlnode_get_attrib(root_node, "author"), + "image", xmlnode_get_attrib(root_node, "image"), + "directory", dir, + "description", data, NULL); + + sub_node = xmlnode_get_child(root_node, "event"); + + while (sub_node) { + purple_sound_theme_set_file(theme, + xmlnode_get_attrib(sub_node, "name"), + xmlnode_get_attrib(sub_node, "file")); + sub_node = xmlnode_get_next_twin(sub_node); + } + } + + xmlnode_free(root_node); + g_free(data); + return PURPLE_THEME(theme); +} + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +purple_sound_theme_loader_class_init(PurpleSoundThemeLoaderClass *klass) +{ + PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass); + + loader_klass->purple_theme_loader_build = purple_sound_loader_build; +} + +GType +purple_sound_theme_loader_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PurpleSoundThemeLoaderClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)purple_sound_theme_loader_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PurpleSoundThemeLoader), + 0, /* n_preallocs */ + NULL, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static(PURPLE_TYPE_THEME_LOADER, + "PurpleSoundThemeLoader", &info, 0); + } + return type; +} diff -r a0668fbf2483 -r b98519a42e53 libpurple/sound-theme-loader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/sound-theme-loader.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,71 @@ +/** + * @file sound-theme-loader.h Purple Sound Theme Loader Class API + */ + +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PURPLE_SOUND_THEME_LOADER_H +#define PURPLE_SOUND_THEME_LOADER_H + +#include +#include +#include "theme-loader.h" + +/** + * A purple sound theme loader. extends PurpleThemeLoader (theme-loader.h) + * This is a class designed to build sound themes + * + * PurpleSoundThemeLoader is a GObject. + */ +typedef struct _PurpleSoundThemeLoader PurpleSoundThemeLoader; +typedef struct _PurpleSoundThemeLoaderClass PurpleSoundThemeLoaderClass; + +#define PURPLE_TYPE_SOUND_THEME_LOADER (purple_sound_theme_loader_get_type()) +#define PURPLE_SOUND_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoader)) +#define PURPLE_SOUND_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoaderClass)) +#define PURPLE_IS_SOUND_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_SOUND_THEME_LOADER)) +#define PURPLE_IS_SOUND_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_SOUND_THEME_LOADER)) +#define PURPLE_SOUND_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoaderClass)) + +struct _PurpleSoundThemeLoader +{ + PurpleThemeLoader parent; +}; + +struct _PurpleSoundThemeLoaderClass +{ + PurpleThemeLoaderClass parent_class; +}; + +/**************************************************************************/ +/** @name Purple Theme-Loader API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType purple_sound_theme_loader_get_type(void); + +G_END_DECLS +#endif /* PURPLE_SOUND_THEME_LOADER_H */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/sound-theme.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/sound-theme.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,158 @@ +/* + * Sound Themes for libpurple + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "internal.h" +#include "sound-theme.h" + +#define PURPLE_SOUND_THEME_GET_PRIVATE(Gobject) \ + ((PurpleSoundThemePrivate *) ((PURPLE_SOUND_THEME(Gobject))->priv)) + +/****************************************************************************** + * Structs + *****************************************************************************/ + +typedef struct { + /* used to store filenames of diffrent sounds */ + GHashTable *sound_files; +} PurpleSoundThemePrivate; + +/****************************************************************************** + * Globals + *****************************************************************************/ + +static GObjectClass *parent_class = NULL; + +/****************************************************************************** + * Enums + *****************************************************************************/ + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +purple_sound_theme_init(GTypeInstance *instance, + gpointer klass) +{ + PurpleSoundThemePrivate *priv; + + (PURPLE_SOUND_THEME(instance))->priv = g_new0(PurpleSoundThemePrivate, 1); + + priv = PURPLE_SOUND_THEME_GET_PRIVATE(instance); + + priv->sound_files = g_hash_table_new_full(g_str_hash, + g_str_equal, g_free, g_free); +} + +static void +purple_sound_theme_finalize(GObject *obj) +{ + PurpleSoundThemePrivate *priv; + + priv = PURPLE_SOUND_THEME_GET_PRIVATE(obj); + + g_hash_table_destroy(priv->sound_files); + + parent_class->finalize(obj); +} + +static void +purple_sound_theme_class_init(PurpleSoundThemeClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + + parent_class = g_type_class_peek_parent(klass); + + obj_class->finalize = purple_sound_theme_finalize; +} + +GType +purple_sound_theme_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PurpleSoundThemeClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)purple_sound_theme_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PurpleSoundTheme), + 0, /* n_preallocs */ + purple_sound_theme_init, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static(PURPLE_TYPE_THEME, + "PurpleSoundTheme", &info, 0); + } + return type; +} + +/***************************************************************************** + * Public API functions + *****************************************************************************/ + +const gchar * +purple_sound_theme_get_file(PurpleSoundTheme *theme, + const gchar *event) +{ + PurpleSoundThemePrivate *priv; + + g_return_val_if_fail(PURPLE_IS_SOUND_THEME(theme), NULL); + + priv = PURPLE_SOUND_THEME_GET_PRIVATE(theme); + + return g_hash_table_lookup(priv->sound_files, event); +} + +gchar * +purple_sound_theme_get_file_full(PurpleSoundTheme *theme, + const gchar *event) +{ + const gchar *filename; + + g_return_val_if_fail(PURPLE_IS_SOUND_THEME(theme), NULL); + + filename = purple_sound_theme_get_file(theme, event); + + g_return_val_if_fail(filename, NULL); + + return g_build_filename(purple_theme_get_dir(PURPLE_THEME(theme)), filename, NULL); +} + +void +purple_sound_theme_set_file(PurpleSoundTheme *theme, + const gchar *event, + const gchar *filename) +{ + PurpleSoundThemePrivate *priv; + g_return_if_fail(PURPLE_IS_SOUND_THEME(theme)); + + priv = PURPLE_SOUND_THEME_GET_PRIVATE(theme); + + if (filename != NULL) + g_hash_table_replace(priv->sound_files, + g_strdup(event), g_strdup(filename)); + else + g_hash_table_remove(priv->sound_files, event); +} diff -r a0668fbf2483 -r b98519a42e53 libpurple/sound-theme.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/sound-theme.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,105 @@ +/** + * @file sound-theme.h Purple Sound Theme Abstact Class API + */ + +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PURPLE_SOUND_THEME_H +#define PURPLE_SOUND_THEME_H + +#include +#include +#include "theme.h" +#include "sound.h" + +/** + * extends PurpleTheme (theme.h) + * A purple sound theme. + * This is an object for Purple to represent a sound theme. + * + * PurpleSoundTheme is a PurpleTheme Object. + */ +typedef struct _PurpleSoundTheme PurpleSoundTheme; +typedef struct _PurpleSoundThemeClass PurpleSoundThemeClass; + +#define PURPLE_TYPE_SOUND_THEME (purple_sound_theme_get_type()) +#define PURPLE_SOUND_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_SOUND_THEME, PurpleSoundTheme)) +#define PURPLE_SOUND_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_SOUND_THEME, PurpleSoundThemeClass)) +#define PURPLE_IS_SOUND_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_SOUND_THEME)) +#define PURPLE_IS_SOUND_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_SOUND_THEME)) +#define PURPLE_SOUND_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_SOUND_THEME, PurpleSoundThemeClass)) + +struct _PurpleSoundTheme +{ + PurpleTheme parent; + gpointer priv; +}; + +struct _PurpleSoundThemeClass +{ + PurpleThemeClass parent_class; +}; + +/**************************************************************************/ +/** @name Purple Sound Theme API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType purple_sound_theme_get_type(void); + +/** + * Returns a copy of the filename for the sound event. + * + * @param event The purple sound event to look up. + * + * @returns The filename of the sound event. + */ +const gchar *purple_sound_theme_get_file(PurpleSoundTheme *theme, + const gchar *event); + +/** + * Returns a copy of the directory and filename for the sound event + * + * @param event The purple sound event to look up + * + * @returns The directory + '/' + filename of the sound event. This is + * a newly allocated string that should be freed with g_free. + */ +gchar *purple_sound_theme_get_file_full(PurpleSoundTheme *theme, + const gchar *event); + +/** + * Sets the filename for a given sound event + * + * @param event the purple sound event to look up + * @param filename the name of the file to be used for the event + */ +void purple_sound_theme_set_file(PurpleSoundTheme *theme, + const gchar *event, + const gchar *filename); + +G_END_DECLS +#endif /* PURPLE_SOUND_THEME_H */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/sound.c --- a/libpurple/sound.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/sound.c Mon Mar 02 22:07:59 2009 +0000 @@ -25,6 +25,8 @@ #include "blist.h" #include "prefs.h" #include "sound.h" +#include "sound-theme-loader.h" +#include "theme-manager.h" static PurpleSoundUiOps *sound_ui_ops = NULL; @@ -134,6 +136,8 @@ purple_prefs_add_none("/purple/sound"); purple_prefs_add_int("/purple/sound/while_status", STATUS_AVAILABLE); memset(last_played, 0, sizeof(last_played)); + + purple_theme_manager_register_type(g_object_new(PURPLE_TYPE_SOUND_THEME_LOADER, "type", "sound", NULL)); } void diff -r a0668fbf2483 -r b98519a42e53 libpurple/sslconn.c --- a/libpurple/sslconn.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/sslconn.c Mon Mar 02 22:07:59 2009 +0000 @@ -216,7 +216,7 @@ /* TODO: Move this elsewhere */ gsc->verifier = purple_certificate_find_verifier("x509","tls_cached"); - + ops = purple_ssl_get_ops(); ops->connectfunc(gsc); diff -r a0668fbf2483 -r b98519a42e53 libpurple/sslconn.h --- a/libpurple/sslconn.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/sslconn.h Mon Mar 02 22:07:59 2009 +0000 @@ -66,7 +66,7 @@ /** File descriptor used to refer to the socket */ int fd; - /** Glib event source ID; used to refer to the received data callback + /** Glib event source ID; used to refer to the received data callback * in the glib eventloop */ guint inpa; /** Data related to the underlying TCP connection */ @@ -134,7 +134,7 @@ * list can be guaranteed. */ GList * (* get_peer_certificates)(PurpleSslConnection * gsc); - + void (*_purple_reserved2)(void); void (*_purple_reserved3)(void); void (*_purple_reserved4)(void); diff -r a0668fbf2483 -r b98519a42e53 libpurple/status.c --- a/libpurple/status.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/status.c Mon Mar 02 22:07:59 2009 +0000 @@ -23,6 +23,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ +#define _PURPLE_STATUS_C_ + #include "internal.h" #include "blist.h" @@ -203,7 +205,7 @@ for (i = 0; i < PURPLE_STATUS_NUM_PRIMITIVES; i++) { - if (!strcmp(id, status_primitive_map[i].id)) + if (purple_strequal(id, status_primitive_map[i].id)) return status_primitive_map[i].type; } @@ -451,7 +453,7 @@ { PurpleStatusAttr *attr = (PurpleStatusAttr *)l->data; - if (!strcmp(purple_status_attr_get_id(attr), id)) + if (purple_strequal(purple_status_attr_get_id(attr), id)) return attr; } @@ -477,7 +479,7 @@ { status_type = status_types->data; - if (!strcmp(id, status_type->id)) + if (purple_strequal(id, status_type->id)) return status_type; status_types = status_types->next; @@ -612,7 +614,8 @@ if (old_status != NULL) { - tmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias, buddy->name, + tmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias, + purple_buddy_get_name(buddy), purple_status_get_name(old_status), purple_status_get_name(new_status)); logtmp = g_markup_escape_text(tmp, -1); @@ -623,19 +626,21 @@ if (purple_status_is_active(new_status)) { - tmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias, buddy->name, + tmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias, + purple_buddy_get_name(buddy), purple_status_get_name(new_status)); logtmp = g_markup_escape_text(tmp, -1); } else { - tmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias, buddy->name, + tmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias, + purple_buddy_get_name(buddy), purple_status_get_name(new_status)); logtmp = g_markup_escape_text(tmp, -1); } } - log = purple_account_get_log(buddy->account, FALSE); + log = purple_account_get_log(purple_buddy_get_account(buddy), FALSE); if (log != NULL) { purple_log_write(log, PURPLE_MESSAGE_SYSTEM, buddy_alias, @@ -779,12 +784,8 @@ { const gchar *string_data = l->data; l = l->next; - if (((string_data == NULL) && (value->data.string_data == NULL)) || - ((string_data != NULL) && (value->data.string_data != NULL) && - !strcmp(string_data, value->data.string_data))) - { + if (purple_strequal(string_data, value->data.string_data)) continue; - } purple_status_set_attr_string(status, id, string_data); changed = TRUE; } @@ -1146,13 +1147,13 @@ PurpleAccount *account; g_return_val_if_fail(buddy != NULL, NULL); - account = buddy->account; + account = purple_buddy_get_account(buddy); presence = purple_presence_new(PURPLE_PRESENCE_CONTEXT_BUDDY); - presence->u.buddy.name = g_strdup(buddy->name); - presence->u.buddy.account = buddy->account; - presence->statuses = purple_prpl_get_statuses(buddy->account, presence); + presence->u.buddy.name = g_strdup(purple_buddy_get_name(buddy)); + presence->u.buddy.account = account; + presence->statuses = purple_prpl_get_statuses(account, presence); presence->u.buddy.buddy = buddy; @@ -1248,12 +1249,13 @@ time_t current_time, gboolean old_idle, gboolean idle) { PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); + PurpleAccount *account = purple_buddy_get_account(buddy); if (!old_idle && idle) { if (purple_prefs_get_bool("/purple/logging/log_system")) { - PurpleLog *log = purple_account_get_log(buddy->account, FALSE); + PurpleLog *log = purple_account_get_log(account, FALSE); if (log != NULL) { @@ -1273,7 +1275,7 @@ { if (purple_prefs_get_bool("/purple/logging/log_system")) { - PurpleLog *log = purple_account_get_log(buddy->account, FALSE); + PurpleLog *log = purple_account_get_log(account, FALSE); if (log != NULL) { @@ -1461,7 +1463,7 @@ { PurpleStatus *temp_status = l->data; - if (!strcmp(status_id, purple_status_get_id(temp_status))) + if (purple_strequal(status_id, purple_status_get_id(temp_status))) status = temp_status; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/status.h --- a/libpurple/status.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/status.h Mon Mar 02 22:07:59 2009 +0000 @@ -252,6 +252,7 @@ */ void purple_status_type_destroy(PurpleStatusType *status_type); +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Sets a status type's primary attribute. * @@ -261,10 +262,14 @@ * * @param status_type The status type. * @param attr_id The ID of the primary attribute. + * + * @deprecated This function isn't used and should be removed in 3.0.0. */ void purple_status_type_set_primary_attr(PurpleStatusType *status_type, const char *attr_id); +#endif +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Adds an attribute to a status type. * @@ -272,10 +277,16 @@ * @param id The ID of the attribute. * @param name The name presented to the user. * @param value The value type of this attribute. + * + * @deprecated This function isn't needed and should be removed in 3.0.0. + * Status type attributes should be set when the status type + * is created, in the call to purple_status_type_new_with_attrs. */ void purple_status_type_add_attr(PurpleStatusType *status_type, const char *id, const char *name, PurpleValue *value); +#endif +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Adds multiple attributes to a status type. * @@ -284,18 +295,29 @@ * @param name The description of the first attribute. * @param value The value type of the first attribute attribute. * @param ... Additional attribute information. + * + * @deprecated This function isn't needed and should be removed in 3.0.0. + * Status type attributes should be set when the status type + * is created, in the call to purple_status_type_new_with_attrs. */ void purple_status_type_add_attrs(PurpleStatusType *status_type, const char *id, const char *name, PurpleValue *value, ...) G_GNUC_NULL_TERMINATED; +#endif +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Adds multiple attributes to a status type using a va_list. * * @param status_type The status type to add the attribute to. * @param args The va_list of attributes. + * + * @deprecated This function isn't needed and should be removed in 3.0.0. + * Status type attributes should be set when the status type + * is created, in the call to purple_status_type_new_with_attrs. */ void purple_status_type_add_attrs_vargs(PurpleStatusType *status_type, va_list args); +#endif /** * Returns the primitive type of a status type. @@ -378,14 +400,18 @@ */ gboolean purple_status_type_is_available(const PurpleStatusType *status_type); +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Returns a status type's primary attribute ID. * * @param type The status type. * * @return The primary attribute's ID. + * + * @deprecated This function isn't used and should be removed in 3.0.0. */ const char *purple_status_type_get_primary_attr(const PurpleStatusType *type); +#endif /** * Returns the attribute with the specified ID. @@ -537,35 +563,50 @@ void purple_status_set_active_with_attrs_list(PurpleStatus *status, gboolean active, GList *attrs); +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Sets the boolean value of an attribute in a status with the specified ID. * * @param status The status. * @param id The attribute ID. * @param value The boolean value. + * + * @deprecated This function is only used by status.c and should be made + * static in 3.0.0. */ void purple_status_set_attr_boolean(PurpleStatus *status, const char *id, gboolean value); +#endif +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Sets the integer value of an attribute in a status with the specified ID. * * @param status The status. * @param id The attribute ID. * @param value The integer value. + * + * @deprecated This function is only used by status.c and should be made + * static in 3.0.0. */ void purple_status_set_attr_int(PurpleStatus *status, const char *id, int value); +#endif +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Sets the string value of an attribute in a status with the specified ID. * * @param status The status. * @param id The attribute ID. * @param value The string value. + * + * @deprecated This function is only used by status.c and should be made + * static in 3.0.0. */ void purple_status_set_attr_string(PurpleStatus *status, const char *id, const char *value); +#endif /** * Returns the status's type. @@ -773,22 +814,31 @@ */ void purple_presence_destroy(PurplePresence *presence); +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Adds a status to a presence. * * @param presence The presence. * @param status The status to add. + * + * @deprecated This function is only used by purple_presence_add_list, + * and both should be removed in 3.0.0. */ void purple_presence_add_status(PurplePresence *presence, PurpleStatus *status); +#endif +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_) /** * Adds a list of statuses to the presence. * * @param presence The presence. * @param source_list The source list of statuses to add, which is not * modified or freed by this function. + * + * @deprecated This function isn't used and should be removed in 3.0.0. */ void purple_presence_add_list(PurplePresence *presence, GList *source_list); +#endif /** * Sets the active state of a status in a presence. diff -r a0668fbf2483 -r b98519a42e53 libpurple/stun.c --- a/libpurple/stun.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/stun.c Mon Mar 02 22:07:59 2009 +0000 @@ -388,9 +388,7 @@ /** Deal with the server name having changed since we did the lookup */ if (servername && strlen(servername) > 1 - && ((nattype.servername - && strcmp(servername, nattype.servername)) - || !nattype.servername)) { + && !purple_strequal(servername, nattype.servername)) { use_cached_result = FALSE; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/theme-loader.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/theme-loader.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,183 @@ +/* + * ThemeLoaders for libpurple + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "internal.h" +#include "theme-loader.h" + +#define PURPLE_THEME_LOADER_GET_PRIVATE(PurpleThemeLoader) \ + ((PurpleThemeLoaderPrivate *) ((PurpleThemeLoader)->priv)) + +void purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type); + +/****************************************************************************** + * Structs + *****************************************************************************/ +typedef struct { + gchar *type; +} PurpleThemeLoaderPrivate; + +/****************************************************************************** + * Globals + *****************************************************************************/ + +static GObjectClass *parent_class = NULL; + +/****************************************************************************** + * Enums + *****************************************************************************/ + +enum { + PROP_ZERO = 0, + PROP_TYPE, +}; + +/****************************************************************************** + * GObject Stuff * + *****************************************************************************/ + +static void +purple_theme_loader_get_property(GObject *obj, guint param_id, GValue *value, + GParamSpec *psec) +{ + PurpleThemeLoader *theme_loader = PURPLE_THEME_LOADER(obj); + + switch (param_id) { + case PROP_TYPE: + g_value_set_string(value, purple_theme_loader_get_type_string(theme_loader)); + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); + break; + } +} + +static void +purple_theme_loader_set_property(GObject *obj, guint param_id, const GValue *value, + GParamSpec *psec) +{ + PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj); + + switch (param_id) { + case PROP_TYPE: + purple_theme_loader_set_type_string(loader, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); + break; + } +} + +static void +purple_theme_loader_init(GTypeInstance *instance, + gpointer klass) +{ + PurpleThemeLoader *loader = PURPLE_THEME_LOADER(instance); + loader->priv = g_new0(PurpleThemeLoaderPrivate, 1); +} + +static void +purple_theme_loader_finalize(GObject *obj) +{ + PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj); + PurpleThemeLoaderPrivate *priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader); + + g_free(priv->type); + + parent_class->finalize(obj); +} + +static void +purple_theme_loader_class_init(PurpleThemeLoaderClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec; + + parent_class = g_type_class_peek_parent(klass); + + obj_class->get_property = purple_theme_loader_get_property; + obj_class->set_property = purple_theme_loader_set_property; + obj_class->finalize = purple_theme_loader_finalize; + + /* TYPE STRING (read only) */ + pspec = g_param_spec_string("type", "Type", + "The string represtenting the type of the theme", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + g_object_class_install_property(obj_class, PROP_TYPE, pspec); +} + +GType +purple_theme_loader_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PurpleThemeLoaderClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)purple_theme_loader_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PurpleThemeLoader), + 0, /* n_preallocs */ + purple_theme_loader_init, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static(G_TYPE_OBJECT, + "PurpleThemeLoader", &info, G_TYPE_FLAG_ABSTRACT); + } + return type; +} + +/***************************************************************************** + * Public API functions + *****************************************************************************/ + +const gchar * +purple_theme_loader_get_type_string(PurpleThemeLoader *theme_loader) +{ + PurpleThemeLoaderPrivate *priv = NULL; + + g_return_val_if_fail(PURPLE_IS_THEME_LOADER(theme_loader), NULL); + + priv = PURPLE_THEME_LOADER_GET_PRIVATE(theme_loader); + return priv->type; +} + +/* < private > */ +void +purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type) +{ + PurpleThemeLoaderPrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME_LOADER(loader)); + + priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader); + + g_free(priv->type); + priv->type = g_strdup(type); +} + +PurpleTheme * +purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir) +{ + return PURPLE_THEME_LOADER_GET_CLASS(loader)->purple_theme_loader_build(dir); +} diff -r a0668fbf2483 -r b98519a42e53 libpurple/theme-loader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/theme-loader.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,92 @@ +/** + * @file theme-loader.h Purple Theme Loader Abstact Class API + */ + +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PURPLE_THEME_LOADER_H +#define PURPLE_THEME_LOADER_H + +#include +#include +#include "theme.h" + +/** + * A purple theme loader. + * This is an abstract class for Purple to use with the Purple theme manager. + * The loader is responsible for building each type of theme + * + * PurpleThemeLoader is a GObject. + */ +typedef struct _PurpleThemeLoader PurpleThemeLoader; +typedef struct _PurpleThemeLoaderClass PurpleThemeLoaderClass; + +#define PURPLE_TYPE_THEME_LOADER (purple_theme_loader_get_type()) +#define PURPLE_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoader)) +#define PURPLE_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoaderClass)) +#define PURPLE_IS_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_THEME_LOADER)) +#define PURPLE_IS_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_THEME_LOADER)) +#define PURPLE_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoaderClass)) + +struct _PurpleThemeLoader +{ + GObject parent; + gpointer priv; +}; + +struct _PurpleThemeLoaderClass +{ + GObjectClass parent_class; + PurpleTheme *((*purple_theme_loader_build)(const gchar*)); +}; + +/**************************************************************************/ +/** @name Purple Theme-Loader API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType purple_theme_loader_get_type(void); + +/** + * Returns the string represtenting the type of the theme loader + * + * @param self The theme loader + * + * @returns The string represting this type + */ +const gchar *purple_theme_loader_get_type_string(PurpleThemeLoader *self); + +/** + * Creates a new PurpleTheme + * + * @param dir The directory containing the theme + * + * @returns A PurpleTheme containing the information from the directory + */ +PurpleTheme *purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir); + +G_END_DECLS +#endif /* PURPLE_THEME_LOADER_H */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/theme-manager.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/theme-manager.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,295 @@ +/* + * Themes for libpurple + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include +#include + +#include "internal.h" +#include "theme-manager.h" +#include "util.h" + +/****************************************************************************** + * Globals + *****************************************************************************/ + +static GHashTable *theme_table = NULL; + +/***************************************************************************** + * GObject Stuff + ****************************************************************************/ + +GType +purple_theme_manager_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PurpleThemeManagerClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + NULL, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PurpleThemeManager), + 0, /* n_preallocs */ + NULL, /* instance_init */ + NULL, /* Value Table */ + }; + type = g_type_register_static(G_TYPE_OBJECT, + "PurpleThemeManager", &info, 0); + } + return type; +} + +/****************************************************************************** + * Helpers + *****************************************************************************/ + +/* makes a key of + '/' + */ +static gchar * +purple_theme_manager_make_key(const gchar *name, const gchar *type) +{ + g_return_val_if_fail(name && *name, NULL); + g_return_val_if_fail(type && *type, NULL); + return g_strconcat(type, "/", name, NULL); +} + +/* returns TRUE if theme is of type "user_data" */ +static gboolean +purple_theme_manager_is_theme_type(gchar *key, + gpointer value, + gchar *user_data) +{ + return g_str_has_prefix(key, g_strconcat(user_data, "/", NULL)); +} + +static gboolean +purple_theme_manager_is_theme(gchar *key, + gpointer value, + gchar *user_data) +{ + return PURPLE_IS_THEME(value); +} + +static void +purple_theme_manager_function_wrapper(gchar *key, + gpointer value, + PTFunc user_data) +{ + if (PURPLE_IS_THEME(value)) + (* user_data)(value); +} + +static void +purple_theme_manager_build_dir(const gchar *root) +{ + gchar *purple_dir, *theme_dir; + const gchar *name = NULL, *type = NULL; + GDir *rdir, *tdir; + PurpleThemeLoader *loader; + + rdir = g_dir_open(root, 0, NULL); + + if (!rdir) + return; + + /* Parses directory by root/name/purple/type */ + while ((name = g_dir_read_name(rdir))) { + purple_dir = g_build_filename(root, name, "purple", NULL); + tdir = g_dir_open(purple_dir, 0, NULL); + + if (!tdir) { + g_free(purple_dir); + + continue; + } + + while ((type = g_dir_read_name(tdir))) { + if ((loader = g_hash_table_lookup(theme_table, type))) { + PurpleTheme *theme = NULL; + + theme_dir = g_build_filename(purple_dir, type, NULL); + + theme = purple_theme_loader_build(loader, theme_dir); + + if (PURPLE_IS_THEME(theme)) + purple_theme_manager_add_theme(theme); + } + } + + g_dir_close(tdir); + g_free(purple_dir); + } + + g_dir_close(rdir); +} + +/***************************************************************************** + * Public API functions + *****************************************************************************/ + +void +purple_theme_manager_init(void) +{ + theme_table = g_hash_table_new_full(g_str_hash, + g_str_equal, g_free, g_object_unref); +} + +void +purple_theme_manager_refresh(void) +{ + gchar *path = NULL; + const gchar *xdg = NULL; + gint i = 0; + + g_hash_table_foreach_remove(theme_table, + (GHRFunc) purple_theme_manager_is_theme, NULL); + + /* Add themes from ~/.purple */ + path = g_build_filename(purple_user_dir(), "themes", NULL); + purple_theme_manager_build_dir(path); + g_free(path); + + /* look for XDG_DATA_HOME. If we don't have it use ~/.local, and add it */ + if ((xdg = g_getenv("XDG_DATA_HOME")) != NULL) + path = g_build_filename(xdg, "themes", NULL); + else + path = g_build_filename(purple_home_dir(), ".local", "themes", NULL); + + purple_theme_manager_build_dir(path); + g_free(path); + + /* now dig through XDG_DATA_DIRS and add those too */ + xdg = g_getenv("XDG_DATA_DIRS"); + if (xdg) { + gchar **xdg_dirs = g_strsplit(xdg, G_SEARCHPATH_SEPARATOR_S, 0); + + for (i = 0; xdg_dirs[i]; i++) { + path = g_build_filename(xdg_dirs[i], "themes", NULL); + purple_theme_manager_build_dir(path); + g_free(path); + } + + g_strfreev(xdg_dirs); + } +} + +void +purple_theme_manager_uninit(void) +{ + g_hash_table_destroy(theme_table); +} + +void +purple_theme_manager_register_type(PurpleThemeLoader *loader) +{ + gchar *type; + + g_return_if_fail(PURPLE_IS_THEME_LOADER(loader)); + + type = g_strdup(purple_theme_loader_get_type_string(loader)); + g_return_if_fail(type); + + /* if something is already there do nothing */ + if (!g_hash_table_lookup(theme_table, type)) + g_hash_table_insert(theme_table, type, loader); +} + +void +purple_theme_manager_unregister_type(PurpleThemeLoader *loader) +{ + const gchar *type; + + g_return_if_fail(PURPLE_IS_THEME_LOADER(loader)); + + type = purple_theme_loader_get_type_string(loader); + g_return_if_fail(type); + + if (g_hash_table_lookup(theme_table, type) == loader) + { + g_hash_table_remove(theme_table, type); + + g_hash_table_foreach_remove(theme_table, + (GHRFunc)purple_theme_manager_is_theme_type, (gpointer)type); + } /* only free if given registered loader */ +} + +PurpleTheme * +purple_theme_manager_find_theme(const gchar *name, + const gchar *type) +{ + gchar *key; + PurpleTheme *theme; + + key = purple_theme_manager_make_key(name, type); + + g_return_val_if_fail(key, NULL); + + theme = g_hash_table_lookup(theme_table, key); + + g_free(key); + + return theme; +} + +void +purple_theme_manager_add_theme(PurpleTheme *theme) +{ + gchar *key; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + key = purple_theme_manager_make_key(purple_theme_get_name(theme), + purple_theme_get_type_string(theme)); + + g_return_if_fail(key); + + /* if something is already there do nothing */ + if (g_hash_table_lookup(theme_table, key) == NULL) + g_hash_table_insert(theme_table, key, theme); +} + +void +purple_theme_manager_remove_theme(PurpleTheme *theme) +{ + gchar *key; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + key = purple_theme_manager_make_key(purple_theme_get_name(theme), + purple_theme_get_type_string(theme)); + + g_return_if_fail(key); + + g_hash_table_remove(theme_table, key); + + g_free(key); +} + +void +purple_theme_manager_for_each_theme(PTFunc func) +{ + g_return_if_fail(func); + + g_hash_table_foreach(theme_table, + (GHFunc) purple_theme_manager_function_wrapper, func); +} diff -r a0668fbf2483 -r b98519a42e53 libpurple/theme-manager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/theme-manager.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,131 @@ +/** + * @file thememanager.h Theme Manager API + */ + +/* + * purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PURPLE_THEME_MANAGER_H +#define PURPLE_THEME_MANAGER_H + +#include +#include +#include "theme.h" +#include "theme-loader.h" + +typedef void (*PTFunc) (PurpleTheme *); + +typedef struct _PurpleThemeManager PurpleThemeManager; +typedef struct _PurpleThemeManagerClass PurpleThemeManagerClass; + +#define PURPLE_TYPE_THEME_MANAGER (purple_theme_manager_get_type()) +#define PURPLE_THEME_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManager)) +#define PURPLE_THEME_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManagerClass)) +#define PURPLE_IS_THEME_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_THEME_MANAGER)) +#define PURPLE_IS_THEME_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_THEME_MANAGER)) +#define PURPLE_GET_THEME_MANAGER_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManagerClass)) + +struct _PurpleThemeManager { + GObject parent; +}; + +struct _PurpleThemeManagerClass { + GObjectClass parent_class; +}; + +/**************************************************************************/ +/** @name Purple Theme Manager API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * + * @internal. + */ +GType purple_theme_manager_get_type(void); + +/** + * Initalizes the theme manager. + */ +void purple_theme_manager_init(void); + +/** + * Uninitalizes the manager then frees all the themes and loaders it is + * responsible for. + */ +void purple_theme_manager_uninit(void); + +/** + * Rebuilds all the themes in the theme manager. + * (Removes all current themes but keeps the added loaders.) + */ +void purple_theme_manager_refresh(void); + +/** + * Finds the PurpleTheme object stored by the theme manager. + * + * @param name The name of the PurpleTheme. + * @param type The type of the PurpleTheme. + * + * @returns The PurpleTheme, or NULL if it wasn't found. + */ +PurpleTheme *purple_theme_manager_find_theme(const gchar *name, const gchar *type); + +/** + * Adds a PurpleTheme to the theme manager. If the theme already exists + * then this function does nothing. + * + * @param theme The PurpleTheme to add to the manager. + */ +void purple_theme_manager_add_theme(PurpleTheme *theme); + +/** + * Removes a PurpleTheme from the theme manager and frees the theme. + * + * @param theme The PurpleTheme to remove from the manager. + */ +void purple_theme_manager_remove_theme(PurpleTheme *theme); + +/** + * Adds a loader to the theme manager so it knows how to build themes. + * + * @param loader The PurpleThemeLoader to add. + */ +void purple_theme_manager_register_type(PurpleThemeLoader *loader); + +/** + * Removes the loader and all themes of the same type from the loader. + * + * @param loader The PurpleThemeLoader to be removed. + */ +void purple_theme_manager_unregister_type(PurpleThemeLoader *loader); + +/** + * Calls the given function on each purple theme. + * + * @param func The PTFunc to be applied to each theme. + */ +void purple_theme_manager_for_each_theme(PTFunc func); + +G_END_DECLS +#endif /* PURPLE_THEME_MANAGER_H */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/theme.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/theme.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,408 @@ +/* + * Themes for libpurple + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include +#include + +#include "internal.h" +#include "theme.h" +#include "util.h" + +#define PURPLE_THEME_GET_PRIVATE(PurpleTheme) \ + ((PurpleThemePrivate *) ((PurpleTheme)->priv)) + +void purple_theme_set_type_string(PurpleTheme *theme, const gchar *type); + +/****************************************************************************** + * Structs + *****************************************************************************/ + +typedef struct { + gchar *name; + gchar *description; + gchar *author; + gchar *type; + gchar *dir; + gchar *img; +} PurpleThemePrivate; + +/****************************************************************************** + * Globals + *****************************************************************************/ + +static GObjectClass *parent_class = NULL; + +/****************************************************************************** + * Enums + *****************************************************************************/ + +enum { + PROP_ZERO = 0, + PROP_NAME, + PROP_DESCRIPTION, + PROP_AUTHOR, + PROP_TYPE, + PROP_DIR, + PROP_IMAGE +}; + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +purple_theme_get_property(GObject *obj, guint param_id, GValue *value, + GParamSpec *psec) +{ + PurpleTheme *theme = PURPLE_THEME(obj); + + switch (param_id) { + case PROP_NAME: + g_value_set_string(value, purple_theme_get_name(theme)); + break; + case PROP_DESCRIPTION: + g_value_set_string(value, purple_theme_get_description(theme)); + break; + case PROP_AUTHOR: + g_value_set_string(value, purple_theme_get_author(theme)); + break; + case PROP_TYPE: + g_value_set_string(value, purple_theme_get_type_string(theme)); + break; + case PROP_DIR: + g_value_set_string(value, purple_theme_get_dir(theme)); + break; + case PROP_IMAGE: + g_value_set_string(value, purple_theme_get_image(theme)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); + break; + } +} + +static void +purple_theme_set_property(GObject *obj, guint param_id, const GValue *value, + GParamSpec *psec) +{ + PurpleTheme *theme = PURPLE_THEME(obj); + + switch (param_id) { + case PROP_NAME: + purple_theme_set_name(theme, g_value_get_string(value)); + break; + case PROP_DESCRIPTION: + purple_theme_set_description(theme, g_value_get_string(value)); + break; + case PROP_AUTHOR: + purple_theme_set_author(theme, g_value_get_string(value)); + break; + case PROP_TYPE: + purple_theme_set_type_string(theme, g_value_get_string(value)); + break; + case PROP_DIR: + purple_theme_set_dir(theme, g_value_get_string(value)); + break; + case PROP_IMAGE: + purple_theme_set_image(theme, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); + break; + } +} + +static void +purple_theme_init(GTypeInstance *instance, + gpointer klass) +{ + PurpleTheme *theme = PURPLE_THEME(instance); + theme->priv = g_new0(PurpleThemePrivate, 1); +} + +static void +purple_theme_finalize(GObject *obj) +{ + PurpleTheme *theme = PURPLE_THEME(obj); + PurpleThemePrivate *priv = PURPLE_THEME_GET_PRIVATE(theme); + + g_free(priv->name); + g_free(priv->description); + g_free(priv->author); + g_free(priv->type); + g_free(priv->dir); + g_free(priv->img); + + G_OBJECT_CLASS (parent_class)->finalize (obj); +} + +static void +purple_theme_class_init(PurpleThemeClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec; + + parent_class = g_type_class_peek_parent(klass); + + obj_class->get_property = purple_theme_get_property; + obj_class->set_property = purple_theme_set_property; + obj_class->finalize = purple_theme_finalize; + + /* NAME */ + pspec = g_param_spec_string("name", "Name", + "The name of the theme", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property(obj_class, PROP_NAME, pspec); + + /* DESCRIPTION */ + pspec = g_param_spec_string("description", "Description", + "The description of the theme", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property(obj_class, PROP_DESCRIPTION, pspec); + + /* AUTHOR */ + pspec = g_param_spec_string("author", "Author", + "The author of the theme", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property(obj_class, PROP_AUTHOR, pspec); + + /* TYPE STRING (read only) */ + pspec = g_param_spec_string("type", "Type", + "The string represtenting the type of the theme", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + g_object_class_install_property(obj_class, PROP_TYPE, pspec); + + /* DIRECTORY */ + pspec = g_param_spec_string("directory", "Directory", + "The directory that contains the theme and all its files", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property(obj_class, PROP_DIR, pspec); + + /* PREVIEW IMAGE */ + pspec = g_param_spec_string("image", "Image", + "A preview image of the theme", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_IMAGE, pspec); +} + + +GType +purple_theme_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PurpleThemeClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)purple_theme_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PurpleTheme), + 0, /* n_preallocs */ + purple_theme_init, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static (G_TYPE_OBJECT, + "PurpleTheme", &info, G_TYPE_FLAG_ABSTRACT); + } + return type; +} + +/****************************************************************************** + * Helper Functions + *****************************************************************************/ + +static gchar * +theme_clean_text(const gchar *text) +{ + gchar *clean_text = g_markup_escape_text(text, -1); + g_strdelimit(clean_text, "\n", ' '); + purple_str_strip_char(clean_text, '\r'); + return clean_text; +} + +/***************************************************************************** + * Public API function + *****************************************************************************/ + +const gchar * +purple_theme_get_name(PurpleTheme *theme) +{ + PurpleThemePrivate *priv; + + g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + return priv->name; +} + +void +purple_theme_set_name(PurpleTheme *theme, const gchar *name) +{ + PurpleThemePrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + + g_free(priv->name); + priv->name = theme_clean_text(name); +} + +const gchar * +purple_theme_get_description(PurpleTheme *theme) +{ + PurpleThemePrivate *priv; + + g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + return priv->description; +} + +void +purple_theme_set_description(PurpleTheme *theme, const gchar *description) +{ + PurpleThemePrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + + g_free(priv->description); + priv->description = theme_clean_text(description); +} + +const gchar * +purple_theme_get_author(PurpleTheme *theme) +{ + PurpleThemePrivate *priv; + + g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + return priv->author; +} + +void +purple_theme_set_author(PurpleTheme *theme, const gchar *author) +{ + PurpleThemePrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + + g_free(priv->author); + priv->author = theme_clean_text(author); +} + +const gchar * +purple_theme_get_type_string(PurpleTheme *theme) +{ + PurpleThemePrivate *priv; + + g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + return priv->type; +} + +/* < private > */ +void +purple_theme_set_type_string(PurpleTheme *theme, const gchar *type) +{ + PurpleThemePrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + + g_free(priv->type); + priv->type = g_strdup(type); +} + +const gchar * +purple_theme_get_dir(PurpleTheme *theme) +{ + PurpleThemePrivate *priv; + + g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + return priv->dir; +} + +void +purple_theme_set_dir(PurpleTheme *theme, const gchar *dir) +{ + PurpleThemePrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + + g_free(priv->dir); + priv->dir = g_strdup(dir); +} + +const gchar * +purple_theme_get_image(PurpleTheme *theme) +{ + PurpleThemePrivate *priv; + + g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + + return priv->img; +} + +gchar * +purple_theme_get_image_full(PurpleTheme *theme) +{ + const gchar *filename = purple_theme_get_image(theme); + + g_return_val_if_fail(filename, NULL); + + return g_build_filename(purple_theme_get_dir(PURPLE_THEME(theme)), filename, NULL); +} + +void +purple_theme_set_image(PurpleTheme *theme, const gchar *img) +{ + PurpleThemePrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME(theme)); + + priv = PURPLE_THEME_GET_PRIVATE(theme); + + g_free(priv->img); + priv->img = g_strdup(img); +} diff -r a0668fbf2483 -r b98519a42e53 libpurple/theme.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/theme.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,175 @@ +/** + * @file theme.h Purple Theme Abstact Class API + */ + +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PURPLE_THEME_H +#define PURPLE_THEME_H + +#include +#include +#include "imgstore.h" + +/** + * A purple theme. + * This is an abstract class for Purple to use with the Purple theme manager. + * + * PurpleTheme is a GObject. + */ +typedef struct _PurpleTheme PurpleTheme; +typedef struct _PurpleThemeClass PurpleThemeClass; + +#define PURPLE_TYPE_THEME (purple_theme_get_type ()) +#define PURPLE_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PURPLE_TYPE_THEME, PurpleTheme)) +#define PURPLE_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PURPLE_TYPE_THEME, PurpleThemeClass)) +#define PURPLE_IS_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PURPLE_TYPE_THEME)) +#define PURPLE_IS_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PURPLE_TYPE_THEME)) +#define PURPLE_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PURPLE_TYPE_THEME, PurpleThemeClass)) + +struct _PurpleTheme +{ + GObject parent; + gpointer priv; +}; + +struct _PurpleThemeClass +{ + GObjectClass parent_class; +}; + +/**************************************************************************/ +/** @name Purple Theme API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType purple_theme_get_type(void); + +/** + * Returns the name of the PurpleTheme object. + * + * @param theme The purple theme. + * + * @return The string representating the name of the theme. + */ +const gchar *purple_theme_get_name(PurpleTheme *theme); + +/** + * Sets the name of the PurpleTheme object. + * + * @param theme The purple theme. + * @param name The name of the PurpleTheme object. + */ +void purple_theme_set_name(PurpleTheme *theme, const gchar *name); + +/** + * Returns the description of the PurpleTheme object. + * + * @param theme The purple theme. + * + * @return A short description of the theme. + */ +const gchar *purple_theme_get_description(PurpleTheme *theme); + +/** + * Sets the description of the PurpleTheme object. + * + * @param theme The purple theme. + * @param description The description of the PurpleTheme object. + */ +void purple_theme_set_description(PurpleTheme *theme, const gchar *description); + +/** + * Returns the author of the PurpleTheme object. + * + * @param theme The purple theme. + * + * @return The author of the theme. + */ +const gchar *purple_theme_get_author(PurpleTheme *theme); + +/** + * Sets the author of the PurpleTheme object. + * + * @param theme The purple theme. + * @param author The author of the PurpleTheme object. + */ +void purple_theme_set_author(PurpleTheme *theme, const gchar *author); + +/** + * Returns the type (string) of the PurpleTheme object. + * + * @param theme The purple theme. + * + * @return The string represtenting the type. + */ +const gchar *purple_theme_get_type_string(PurpleTheme *theme); + +/** + * Returns the directory of the PurpleTheme object. + * + * @param theme The purple theme. + * + * @return The string represtenting the theme directory. + */ +const gchar *purple_theme_get_dir(PurpleTheme *theme); + +/** + * Sets the directory of the PurpleTheme object. + * + * @param theme The purple theme. + * @param dir The directory of the PurpleTheme object. + */ +void purple_theme_set_dir(PurpleTheme *theme, const gchar *dir); + +/** + * Returns the image preview of the PurpleTheme object. + * + * @param theme The purple theme. + * + * @return The image preview of the PurpleTheme object. + */ +const gchar *purple_theme_get_image(PurpleTheme *theme); + +/** + * Returns the image preview and directory of the PurpleTheme object. + * + * @param theme The purple theme. + * + * @return The image preview of the PurpleTheme object. + */ +gchar *purple_theme_get_image_full(PurpleTheme *theme); + +/** + * Sets the directory of the PurpleTheme object. + * + * @param theme The purple theme. + * @param img The image preview of the PurpleTheme object. + */ +void purple_theme_set_image(PurpleTheme *theme, const gchar *img); + +G_END_DECLS +#endif /* PURPLE_THEME_H */ diff -r a0668fbf2483 -r b98519a42e53 libpurple/upnp.c --- a/libpurple/upnp.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/upnp.c Mon Mar 02 22:07:59 2009 +0000 @@ -1049,7 +1049,7 @@ purple_upnp_get_handle(void) { static int handle; - + return &handle; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/util.c --- a/libpurple/util.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/util.c Mon Mar 02 22:07:59 2009 +0000 @@ -98,7 +98,7 @@ void purple_util_init(void) { - /* This does nothing right now. It exists for symmetry with + /* This does nothing right now. It exists for symmetry with * purple_util_uninit() and forwards compatibility. */ } @@ -1409,7 +1409,7 @@ struct purple_parse_tag *pt = tags->data; if(xhtml) g_string_append_printf(xhtml, "", pt->dest_tag); - if(plain && !strcmp(pt->src_tag, "a")) { + if(plain && purple_strequal(pt->src_tag, "a")) { /* if this is a link, we have to add the url to the plaintext, too */ if (cdata && url && (!g_string_equal(cdata, url) && (g_ascii_strncasecmp(url->str, "mailto:", 7) != 0 || @@ -2693,7 +2693,7 @@ return FALSE; } #endif - + /* Close file */ if (fclose(file) != 0) { @@ -2774,70 +2774,7 @@ xmlnode * purple_util_read_xml_from_file(const char *filename, const char *description) { - const char *user_dir = purple_user_dir(); - gchar *filename_full; - GError *error = NULL; - gchar *contents = NULL; - gsize length; - xmlnode *node = NULL; - - g_return_val_if_fail(user_dir != NULL, NULL); - - purple_debug_info("util", "Reading file %s from directory %s\n", - filename, user_dir); - - filename_full = g_build_filename(user_dir, filename, NULL); - - if (!g_file_test(filename_full, G_FILE_TEST_EXISTS)) - { - purple_debug_info("util", "File %s does not exist (this is not " - "necessarily an error)\n", filename_full); - g_free(filename_full); - return NULL; - } - - if (!g_file_get_contents(filename_full, &contents, &length, &error)) - { - purple_debug_error("util", "Error reading file %s: %s\n", - filename_full, error->message); - g_error_free(error); - } - - if ((contents != NULL) && (length > 0)) - { - node = xmlnode_from_str(contents, length); - - /* If we were unable to parse the file then save its contents to a backup file */ - if (node == NULL) - { - gchar *filename_temp; - - filename_temp = g_strdup_printf("%s~", filename); - purple_debug_error("util", "Error parsing file %s. Renaming old " - "file to %s\n", filename_full, filename_temp); - purple_util_write_data_to_file(filename_temp, contents, length); - g_free(filename_temp); - } - - g_free(contents); - } - - /* If we could not parse the file then show the user an error message */ - if (node == NULL) - { - gchar *title, *msg; - title = g_strdup_printf(_("Error Reading %s"), filename); - msg = g_strdup_printf(_("An error was encountered reading your " - "%s. They have not been loaded, and the old file " - "has been renamed to %s~."), description, filename_full); - purple_notify_error(NULL, NULL, title, msg); - g_free(title); - g_free(msg); - } - - g_free(filename_full); - - return node; + return xmlnode_from_file(purple_user_dir(), filename, description, "util"); } /* @@ -3012,7 +2949,7 @@ g_free(tmp); session = g_getenv("KDE_FULL_SESSION"); - if (session != NULL && !strcmp(session, "true")) + if (purple_strequal(session, "true")) return TRUE; /* If you run Purple from Konsole under !KDE, this will provide a @@ -3053,6 +2990,17 @@ /************************************************************************** * String Functions **************************************************************************/ +gboolean +purple_strequal(const gchar *left, const gchar *right) +{ +#if GLIB_CHECK_VERSION(2,16,0) + return (g_strcmp0(left, right) == 0); +#else + return ((left == NULL && right == NULL) || + (left != NULL && right != NULL && strcmp(left, right) == 0)); +#endif +} + const char * purple_normalize(const PurpleAccount *account, const char *str) { @@ -3167,7 +3115,7 @@ g_return_val_if_fail(x != NULL, FALSE); off = strlen(s) - strlen(x); - return (off >= 0 && !strcmp(s + off, x)); + return (off >= 0 && purple_strequal(s + off, x)); #endif } @@ -4764,7 +4712,7 @@ const char *_purple_oscar_convert(const char *act, const char *protocol) { - if (protocol && act && strcmp(protocol, "prpl-oscar") == 0) { + if (act && purple_strequal(protocol, "prpl-oscar")) { int i; for (i = 0; act[i] != '\0'; i++) if (!isdigit(act[i])) diff -r a0668fbf2483 -r b98519a42e53 libpurple/util.h --- a/libpurple/util.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/util.h Mon Mar 02 22:07:59 2009 +0000 @@ -775,6 +775,21 @@ /*@{*/ /** + * Tests two strings for equality. + * + * Unlike strcmp(), this function will not crash if one or both of the + * strings are @c NULL. + * + * @param left A string + * @param right A string to compare with left + * + * @return @c TRUE if the strings are the same, else @c FALSE. + * + * @since 2.6.0 + */ +gboolean purple_strequal(const gchar *left, const gchar *right); + +/** * Normalizes a string, so that it is suitable for comparison. * * The returned string will point to a static buffer, so if the diff -r a0668fbf2483 -r b98519a42e53 libpurple/whiteboard.c --- a/libpurple/whiteboard.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/whiteboard.c Mon Mar 02 22:07:59 2009 +0000 @@ -115,7 +115,7 @@ { wb = l->data; - if(wb->account == account && !strcmp(wb->who, who)) + if(wb->account == account && purple_strequal(wb->who, who)) return wb; l = l->next; diff -r a0668fbf2483 -r b98519a42e53 libpurple/xmlnode.c --- a/libpurple/xmlnode.c Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/xmlnode.c Mon Mar 02 22:07:59 2009 +0000 @@ -129,7 +129,7 @@ for(attr_node = node->child; attr_node; attr_node = attr_node->next) { if(attr_node->type == XMLNODE_TYPE_ATTRIB && - !strcmp(attr_node->name, attr)) + purple_strequal(attr_node->name, attr)) { if(sibling == NULL) { node->child = attr_node->next; @@ -146,20 +146,6 @@ } } -/* Compare two nullable xmlns strings. - * They are considered equal if they're both NULL or the strings are equal - */ -static gboolean _xmlnode_compare_xmlns(const char *xmlns1, const char *xmlns2) { - gboolean equal = FALSE; - - if (xmlns1 == NULL && xmlns2 == NULL) - equal = TRUE; - else if (xmlns1 != NULL && xmlns2 != NULL && !strcmp(xmlns1, xmlns2)) - equal = TRUE; - - return equal; -} - void xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns) { @@ -171,8 +157,8 @@ for(attr_node = node->child; attr_node; attr_node = attr_node->next) { if(attr_node->type == XMLNODE_TYPE_ATTRIB && - !strcmp(attr_node->name, attr) && - _xmlnode_compare_xmlns(xmlns, attr_node->xmlns)) + purple_strequal(attr, attr_node->name) && + purple_strequal(xmlns, attr_node->xmlns)) { if(sibling == NULL) { node->child = attr_node->next; @@ -252,7 +238,7 @@ g_return_val_if_fail(attr != NULL, NULL); for(x = node->child; x; x = x->next) { - if(x->type == XMLNODE_TYPE_ATTRIB && !strcmp(attr, x->name)) { + if(x->type == XMLNODE_TYPE_ATTRIB && purple_strequal(attr, x->name)) { return x->data; } } @@ -270,8 +256,8 @@ for(x = node->child; x; x = x->next) { if(x->type == XMLNODE_TYPE_ATTRIB && - !strcmp(attr, x->name) && - _xmlnode_compare_xmlns(xmlns, x->xmlns)) { + purple_strequal(attr, x->name) && + purple_strequal(xmlns, x->xmlns)) { return x->data; } } @@ -382,8 +368,8 @@ if(ns) xmlns = xmlnode_get_namespace(x); - if(x->type == XMLNODE_TYPE_TAG && name && !strcmp(parent_name, x->name) - && (!ns || (xmlns && !strcmp(ns, xmlns)))) { + if(x->type == XMLNODE_TYPE_TAG && purple_strequal(parent_name, x->name) + && purple_strequal(ns, xmlns)) { ret = x; break; } @@ -471,7 +457,7 @@ g_hash_table_foreach(node->namespace_map, (GHFunc)xmlnode_to_str_foreach_append_ns, text); } else if (node->xmlns) { - if(!node->parent || !node->parent->xmlns || strcmp(node->xmlns, node->parent->xmlns)) + if(!node->parent || !purple_strequal(node->xmlns, node->parent->xmlns)) { char *xmlns = g_markup_escape_text(node->xmlns, -1); g_string_append_printf(text, " xmlns='%s'", xmlns); @@ -642,7 +628,7 @@ if(!xpd->current || xpd->error) return; - + if(!text || !text_len) return; @@ -730,6 +716,78 @@ return ret; } +xmlnode * +xmlnode_from_file(const char *dir,const char *filename, const char *description, const char *process) +{ + gchar *filename_full; + GError *error = NULL; + gchar *contents = NULL; + gsize length; + xmlnode *node = NULL; + + g_return_val_if_fail(dir != NULL, NULL); + + purple_debug_info(process, "Reading file %s from directory %s\n", + filename, dir); + + filename_full = g_build_filename(dir, filename, NULL); + + if (!g_file_test(filename_full, G_FILE_TEST_EXISTS)) + { + purple_debug_info(process, "File %s does not exist (this is not " + "necessarily an error)\n", filename_full); + g_free(filename_full); + return NULL; + } + + if (!g_file_get_contents(filename_full, &contents, &length, &error)) + { + purple_debug_error(process, "Error reading file %s: %s\n", + filename_full, error->message); + g_error_free(error); + } + + if ((contents != NULL) && (length > 0)) + { + node = xmlnode_from_str(contents, length); + + /* If we were unable to parse the file then save its contents to a backup file */ + if (node == NULL) + { + gchar *filename_temp, *filename_temp_full; + + filename_temp = g_strdup_printf("%s~", filename); + filename_temp_full = g_build_filename(dir, filename_temp, NULL); + + purple_debug_error("util", "Error parsing file %s. Renaming old " + "file to %s\n", filename_full, filename_temp); + purple_util_write_data_to_file_absolute(filename_temp_full, contents, length); + + g_free(filename_temp_full); + g_free(filename_temp); + } + + g_free(contents); + } + + /* If we could not parse the file then show the user an error message */ + if (node == NULL) + { + gchar *title, *msg; + title = g_strdup_printf(_("Error Reading %s"), filename); + msg = g_strdup_printf(_("An error was encountered reading your " + "%s. The file has not been loaded, and the old file " + "has been renamed to %s~."), description, filename_full); + purple_notify_error(NULL, NULL, title, msg); + g_free(title); + g_free(msg); + } + + g_free(filename_full); + + return node; +} + static void xmlnode_copy_foreach_ns(gpointer key, gpointer value, gpointer user_data) { @@ -794,8 +852,8 @@ if(ns) xmlns = xmlnode_get_namespace(sibling); - if(sibling->type == XMLNODE_TYPE_TAG && !strcmp(node->name, sibling->name) && - (!ns || (xmlns && !strcmp(ns, xmlns)))) + if(sibling->type == XMLNODE_TYPE_TAG && purple_strequal(node->name, sibling->name) && + purple_strequal(ns, xmlns)) return sibling; } diff -r a0668fbf2483 -r b98519a42e53 libpurple/xmlnode.h --- a/libpurple/xmlnode.h Mon Mar 02 21:53:53 2009 +0000 +++ b/libpurple/xmlnode.h Mon Mar 02 22:07:59 2009 +0000 @@ -26,6 +26,8 @@ #ifndef _PURPLE_XMLNODE_H_ #define _PURPLE_XMLNODE_H_ +#include + #ifdef __cplusplus extern "C" { #endif @@ -297,6 +299,22 @@ */ void xmlnode_free(xmlnode *node); +/** + * Creates a node from a XML File. Calling this on the + * root node of an XML document will parse the entire document + * into a tree of nodes, and return the xmlnode of the root. + * + * @param str The string of xml. + * @param description The description of the file being parsed + * @process The utility that is calling xmlnode_from_file + * + * @return The new node. + * + * @since 2.6.0 + */ +xmlnode *xmlnode_from_file(const char *dir, const char *filename, + const char *description, const char *process); + #ifdef __cplusplus } #endif diff -r a0668fbf2483 -r b98519a42e53 pidgin/Makefile.am --- a/pidgin/Makefile.am Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/Makefile.am Mon Mar 02 22:07:59 2009 +0000 @@ -78,6 +78,8 @@ pidginstock.c \ gtkaccount.c \ gtkblist.c \ + gtkblist-theme.c \ + gtkblist-theme-loader.c \ gtkcelllayout.c \ gtkcellrendererexpander.c \ gtkcellrendererprogress.c \ @@ -94,6 +96,8 @@ gtkeventloop.c \ gtkexpander.c \ gtkft.c \ + gtkicon-theme.c \ + gtkicon-theme-loader.c \ gtkidle.c \ gtkimhtml.c \ gtkimhtmltoolbar.c \ @@ -116,6 +120,7 @@ gtksourceiter.c \ gtksourceundomanager.c \ gtksourceview-marshal.c \ + gtkstatus-icon-theme.c \ gtkstatusbox.c \ gtkthemes.c \ gtkutils.c \ @@ -127,6 +132,8 @@ eggtrayicon.h \ gtkaccount.h \ gtkblist.h \ + gtkblist-theme.h \ + gtkblist-theme-loader.h \ gtkcelllayout.h \ gtkcellrendererexpander.h \ gtkcellrendererprogress.h \ @@ -146,6 +153,8 @@ gtkeventloop.h \ gtkexpander.h \ gtkft.h \ + gtkicon-theme.h \ + gtkicon-theme-loader.h \ gtkidle.h \ gtkgaim-compat.h \ gtkimhtml.h \ @@ -169,6 +178,7 @@ gtksourceiter.h \ gtksourceundomanager.h \ gtksourceview-marshal.h \ + gtkstatus-icon-theme.h \ gtkstatusbox.h \ pidginstock.h \ gtkthemes.h \ diff -r a0668fbf2483 -r b98519a42e53 pidgin/Makefile.mingw --- a/pidgin/Makefile.mingw Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/Makefile.mingw Mon Mar 02 22:07:59 2009 +0000 @@ -56,6 +56,8 @@ PIDGIN_C_SRC = \ gtkaccount.c \ gtkblist.c \ + gtkblist-theme.c \ + gtkblist-theme-loader.c \ gtkcertmgr.c \ gtkcellrendererexpander.c \ gtkcellrendererprogress.c \ @@ -68,6 +70,8 @@ gtkeventloop.c \ gtkexpander.c \ gtkft.c \ + gtkicon-theme.c \ + gtkicon-theme-loader.c \ gtkidle.c \ gtkimhtml.c \ gtkimhtmltoolbar.c \ @@ -88,6 +92,7 @@ gtksound.c \ gtksourceiter.c \ gtksourceundomanager.c \ + gtkstatus-icon-theme.c \ gtkstatusbox.c \ gtkthemes.c \ gtkutils.c \ diff -r a0668fbf2483 -r b98519a42e53 pidgin/eggtrayicon.c --- a/pidgin/eggtrayicon.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/eggtrayicon.c Mon Mar 02 22:07:59 2009 +0000 @@ -39,7 +39,7 @@ PROP_0, PROP_ORIENTATION }; - + static GtkPlugClass *parent_class = NULL; static void egg_tray_icon_init (EggTrayIcon *icon); @@ -102,7 +102,7 @@ { icon->stamp = 1; icon->orientation = GTK_ORIENTATION_HORIZONTAL; - + gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK); } @@ -250,7 +250,7 @@ egg_tray_icon_manager_window_destroyed (icon); } } - + return GDK_FILTER_CONTINUE; } @@ -296,7 +296,7 @@ { XClientMessageEvent ev; Display *display; - + ev.type = ClientMessage; ev.window = window; ev.message_type = icon->system_tray_opcode_atom; @@ -335,7 +335,7 @@ gboolean dock_if_realized) { Display *xdisplay; - + if (icon->manager_window != None) return; @@ -345,7 +345,7 @@ return; XGrabServer (xdisplay); - + icon->manager_window = XGetSelectionOwner (xdisplay, icon->selection_atom); @@ -355,7 +355,7 @@ XUngrabServer (xdisplay); XFlush (xdisplay); - + if (icon->manager_window != None) { GdkWindow *gdkwin; @@ -380,7 +380,7 @@ egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon) { GdkWindow *gdkwin; - + g_return_if_fail (icon->manager_window != None); #if GTK_CHECK_VERSION(2,1,0) @@ -458,9 +458,9 @@ screen); icon->selection_atom = XInternAtom (xdisplay, buffer, False); - + icon->manager_atom = XInternAtom (xdisplay, "MANAGER", False); - + icon->system_tray_opcode_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_OPCODE", False); @@ -514,11 +514,11 @@ gint len) { guint stamp; - + g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), 0); g_return_val_if_fail (timeout >= 0, 0); g_return_val_if_fail (message != NULL, 0); - + if (icon->manager_window == None) return 0; @@ -526,7 +526,7 @@ len = strlen (message); stamp = icon->stamp++; - + /* Get ready to send the message */ egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE, (Window)gtk_plug_get_id (GTK_PLUG (icon)), @@ -576,7 +576,7 @@ { g_return_if_fail (EGG_IS_TRAY_ICON (icon)); g_return_if_fail (id > 0); - + egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE, (Window)gtk_plug_get_id (GTK_PLUG (icon)), id, 0, 0); diff -r a0668fbf2483 -r b98519a42e53 pidgin/eggtrayicon.h --- a/pidgin/eggtrayicon.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/eggtrayicon.h Mon Mar 02 22:07:59 2009 +0000 @@ -33,7 +33,7 @@ #define EGG_IS_TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TRAY_ICON)) #define EGG_IS_TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TRAY_ICON)) #define EGG_TRAY_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TRAY_ICON, EggTrayIconClass)) - + typedef struct _EggTrayIcon EggTrayIcon; typedef struct _EggTrayIconClass EggTrayIconClass; @@ -42,7 +42,7 @@ GtkPlug parent_instance; guint stamp; - + Atom selection_atom; Atom manager_atom; Atom system_tray_opcode_atom; @@ -74,7 +74,7 @@ guint id); GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon); - + G_END_DECLS #endif /* __EGG_TRAY_ICON_H__ */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/getopt.c --- a/pidgin/getopt.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/getopt.c Mon Mar 02 22:07:59 2009 +0000 @@ -178,7 +178,7 @@ { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; - + #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. @@ -219,7 +219,7 @@ to[i] = from[i]; } #endif /* GNU C library. */ - + /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have @@ -259,7 +259,7 @@ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } - + /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. @@ -663,7 +663,7 @@ } #endif /* _LIBC or not __GNU_LIBRARY__. */ - + #ifdef TEST /* Compile with -DTEST to make an executable for use in testing diff -r a0668fbf2483 -r b98519a42e53 pidgin/getopt1.c --- a/pidgin/getopt1.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/getopt1.c Mon Mar 02 22:07:59 2009 +0000 @@ -81,7 +81,7 @@ #endif /* _LIBC or not __GNU_LIBRARY__. */ - + #ifdef TEST #include diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkaccount.c Mon Mar 02 22:07:59 2009 +0000 @@ -51,7 +51,7 @@ { COLUMN_ICON, COLUMN_BUDDYICON, - COLUMN_SCREENNAME, + COLUMN_USERNAME, COLUMN_ENABLED, COLUMN_PROTOCOL, COLUMN_DATA, @@ -78,7 +78,7 @@ GtkListStore *model; GtkTreeIter drag_iter; - GtkTreeViewColumn *screenname_col; + GtkTreeViewColumn *username_col; } AccountsWindow; @@ -115,7 +115,7 @@ GtkWidget *login_frame; GtkWidget *protocol_menu; GtkWidget *password_box; - GtkWidget *screenname_entry; + GtkWidget *username_entry; GtkWidget *password_entry; GtkWidget *alias_entry; GtkWidget *remember_pass_check; @@ -256,7 +256,7 @@ } static gboolean -screenname_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) +username_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) { GHashTable *table; const char *label; @@ -275,7 +275,7 @@ } static void -screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog) +username_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog) { if (dialog->ok_button) gtk_widget_set_sensitive(dialog->ok_button, @@ -290,7 +290,7 @@ } static gboolean -screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) +username_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) { GdkColor color = {0, 34952, 35466, 34181}; GHashTable *table = NULL; @@ -301,13 +301,13 @@ label = g_hash_table_lookup(table, "login_label"); if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') { - /* We have to avoid hitting the screenname_changed_cb function + /* We have to avoid hitting the username_changed_cb function * because it enables buttons we don't want enabled yet ;) */ - g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); + g_signal_handlers_block_by_func(widget, G_CALLBACK(username_changed_cb), dialog); gtk_entry_set_text(GTK_ENTRY(widget), label); /* Make sure we can hit it again */ - g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); + g_signal_handlers_unblock_by_func(widget, G_CALLBACK(username_changed_cb), dialog); gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color); } @@ -393,7 +393,7 @@ set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account)); gtk_widget_set_sensitive(dialog->protocol_menu, set); - gtk_widget_set_sensitive(dialog->screenname_entry, set); + gtk_widget_set_sensitive(dialog->username_entry, set); for (l = dialog->user_split_entries ; l != NULL ; l = l->next) gtk_widget_set_sensitive((GtkWidget *)l->data, set); @@ -449,13 +449,13 @@ gtk_widget_unref(dialog->protocol_menu); - /* Screen name */ - dialog->screenname_entry = gtk_entry_new(); + /* Username */ + dialog->username_entry = gtk_entry_new(); #if GTK_CHECK_VERSION(2,10,0) - g_object_set(G_OBJECT(dialog->screenname_entry), "truncate-multiline", TRUE, NULL); + g_object_set(G_OBJECT(dialog->username_entry), "truncate-multiline", TRUE, NULL); #endif - add_pref_box(dialog, vbox, _("_Username:"), dialog->screenname_entry); + add_pref_box(dialog, vbox, _("_Username:"), dialog->username_entry); if (dialog->account != NULL) username = g_strdup(purple_account_get_username(dialog->account)); @@ -468,17 +468,17 @@ table = dialog->prpl_info->get_account_text_table(NULL); label = g_hash_table_lookup(table, "login_label"); - gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), label); - g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-in-event", - G_CALLBACK(screenname_focus_cb), dialog); - g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-out-event", - G_CALLBACK(screenname_nofocus_cb), dialog); - gtk_widget_modify_text(dialog->screenname_entry, GTK_STATE_NORMAL, &color); + gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), label); + g_signal_connect(G_OBJECT(dialog->username_entry), "focus-in-event", + G_CALLBACK(username_focus_cb), dialog); + g_signal_connect(G_OBJECT(dialog->username_entry), "focus-out-event", + G_CALLBACK(username_nofocus_cb), dialog); + gtk_widget_modify_text(dialog->username_entry, GTK_STATE_NORMAL, &color); g_hash_table_destroy(table); } - g_signal_connect(G_OBJECT(dialog->screenname_entry), "changed", - G_CALLBACK(screenname_changed_cb), dialog); + g_signal_connect(G_OBJECT(dialog->username_entry), "changed", + G_CALLBACK(username_changed_cb), dialog); /* Do the user split thang */ if (dialog->prpl_info == NULL) @@ -547,7 +547,7 @@ } if (username != NULL) - gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), username); + gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), username); g_free(username); @@ -590,7 +590,7 @@ gtk_widget_hide(dialog->remember_pass_check); } - /* Do not let the user change the protocol/screenname while connected. */ + /* Do not let the user change the protocol/username while connected. */ update_editable(NULL, dialog); purple_signal_connect(purple_connections_get_handle(), "signing-on", dialog, G_CALLBACK(update_editable), dialog); @@ -1193,7 +1193,7 @@ PurpleAccount *account; /* Build the username string. */ - username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->screenname_entry))); + username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->username_entry))); if (dialog->prpl_info != NULL) { @@ -1933,7 +1933,7 @@ gtk_tree_view_column_set_resizable(column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); - /* Screen Name column */ + /* Username column */ column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, _("Username")); gtk_tree_view_column_set_resizable(column, TRUE); @@ -1945,12 +1945,12 @@ gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", COLUMN_BUDDYICON); - /* Screen Name */ + /* Username */ renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_add_attribute(column, renderer, - "text", COLUMN_SCREENNAME); - dialog->screenname_col = column; + "text", COLUMN_USERNAME); + dialog->username_col = column; /* Protocol name */ @@ -2016,7 +2016,7 @@ gtk_list_store_set(store, iter, COLUMN_ICON, pixbuf, COLUMN_BUDDYICON, buddyicon, - COLUMN_SCREENNAME, purple_account_get_username(account), + COLUMN_USERNAME, purple_account_get_username(account), COLUMN_ENABLED, purple_account_get_enabled(account, PIDGIN_UI), COLUMN_PROTOCOL, purple_account_get_protocol_name(account), COLUMN_DATA, account, @@ -2190,7 +2190,7 @@ dialog->model = gtk_list_store_new(NUM_COLUMNS, GDK_TYPE_PIXBUF, /* COLUMN_ICON */ GDK_TYPE_PIXBUF, /* COLUMN_BUDDYICON */ - G_TYPE_STRING, /* COLUMN_SCREENNAME */ + G_TYPE_STRING, /* COLUMN_USERNAME */ G_TYPE_BOOLEAN, /* COLUMN_ENABLED */ G_TYPE_STRING, /* COLUMN_PROTOCOL */ G_TYPE_POINTER /* COLUMN_DATA */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkblist-theme-loader.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkblist-theme-loader.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,279 @@ +/* + * GTKBlistThemeLoader for Pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include + +#include "xmlnode.h" + +#include "gtkblist-theme-loader.h" +#include "gtkblist-theme.h" + +/****************************************************************************** + * Globals + *****************************************************************************/ + +#define DEFAULT_TEXT_COLOR "black" + +/***************************************************************************** + * Buddy List Theme Builder + *****************************************************************************/ + +static PurpleTheme * +pidgin_blist_loader_build(const gchar *dir) +{ + xmlnode *root_node = NULL, *sub_node, *sub_sub_node; + gchar *filename_full, *data; + const gchar *temp; + gboolean success = TRUE; + GdkColor *bgcolor, *expanded_bgcolor, *collapsed_bgcolor, *contact_color; + GdkColor color; + FontColorPair *expanded, *collapsed, *contact, *online, *away, *offline, *idle, *message, *message_nick_said, *status; + PidginBlistLayout *layout; + PidginBlistTheme *theme; + + /* Find the theme file */ + g_return_val_if_fail(dir != NULL, NULL); + filename_full = g_build_filename(dir, "theme.xml", NULL); + + if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR)) + root_node = xmlnode_from_file(dir, "theme.xml", "buddy list themes", "blist-loader"); + + g_free(filename_full); + g_return_val_if_fail(root_node != NULL, NULL); + + sub_node = xmlnode_get_child(root_node, "description"); + data = xmlnode_get_data(sub_node); + + /* init all structs and colors */ + bgcolor = g_new0(GdkColor, 1); + expanded_bgcolor = g_new0(GdkColor, 1); + collapsed_bgcolor = g_new0(GdkColor, 1); + + layout = g_new0(PidginBlistLayout, 1); + + contact_color = g_new0(GdkColor, 1); + + expanded = g_new0(FontColorPair, 1); + collapsed = g_new0(FontColorPair, 1); + contact = g_new0(FontColorPair, 1); + online = g_new0(FontColorPair, 1); + away = g_new0(FontColorPair, 1); + offline = g_new0(FontColorPair, 1); + idle = g_new0(FontColorPair, 1); + message = g_new0(FontColorPair, 1); + message_nick_said = g_new0(FontColorPair, 1); + status = g_new0(FontColorPair, 1); + + /* */ + if ((success = (sub_node = xmlnode_get_child(root_node, "blist")) != NULL)) { + if ((temp = xmlnode_get_attrib(sub_node, "color")) != NULL && gdk_color_parse(temp, bgcolor)) + gdk_colormap_alloc_color(gdk_colormap_get_system(), bgcolor, FALSE, TRUE); + else { + g_free(bgcolor); + bgcolor = NULL; + } + } + + /* */ + if ((success = (success && (sub_node = xmlnode_get_child(root_node, "groups")) != NULL + && (sub_sub_node = xmlnode_get_child(sub_node, "expanded")) != NULL))) + { + expanded->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + + if ((temp = xmlnode_get_attrib(sub_sub_node, "text_color")) != NULL && gdk_color_parse(temp, &color)) + expanded->color = g_strdup(temp); + else expanded->color = g_strdup(DEFAULT_TEXT_COLOR); + + if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, expanded_bgcolor)) + gdk_colormap_alloc_color(gdk_colormap_get_system(), expanded_bgcolor, FALSE, TRUE); + else { + g_free(expanded_bgcolor); + expanded_bgcolor = NULL; + } + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "collapsed")) != NULL))) + { + collapsed->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + + if((temp = xmlnode_get_attrib(sub_sub_node, "text_color")) != NULL && gdk_color_parse(temp, &color)) + collapsed->color = g_strdup(temp); + else collapsed->color = g_strdup(DEFAULT_TEXT_COLOR); + + if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, collapsed_bgcolor)) + gdk_colormap_alloc_color(gdk_colormap_get_system(), collapsed_bgcolor, FALSE, TRUE); + else { + g_free(collapsed_bgcolor); + collapsed_bgcolor = NULL; + } + } + + /* */ + if ((success = (success && (sub_node = xmlnode_get_child(root_node, "buddys")) != NULL && + (sub_sub_node = xmlnode_get_child(sub_node, "placement")) != NULL))) + { + layout->status_icon = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) : 0; + layout->text = (temp = xmlnode_get_attrib(sub_sub_node, "name")) != NULL ? atoi(temp) : 1; + layout->emblem = (temp = xmlnode_get_attrib(sub_sub_node, "emblem")) != NULL ? atoi(temp) : 2; + layout->protocol_icon = (temp = xmlnode_get_attrib(sub_sub_node, "protocol_icon")) != NULL ? atoi(temp) : 3; + layout->buddy_icon = (temp = xmlnode_get_attrib(sub_sub_node, "buddy_icon")) != NULL ? atoi(temp) : 4; + layout->show_status = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) != 0 : 1; + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "background")) != NULL))) { + if(gdk_color_parse(xmlnode_get_attrib(sub_sub_node, "color"), contact_color)) + gdk_colormap_alloc_color(gdk_colormap_get_system(), contact_color, FALSE, TRUE); + else { + g_free(contact_color); + contact_color = NULL; + } + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "contact_text")) != NULL))) { + contact->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + contact->color = g_strdup(temp); + else contact->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "online_text")) != NULL))) { + online->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + online->color = g_strdup(temp); + else online->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "away_text")) != NULL))) { + away->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + away->color = g_strdup(temp); + else away->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "offline_text")) != NULL))) { + offline->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + online->color = g_strdup(temp); + else online->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "idle_text")) != NULL))) { + idle->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + idle->color = g_strdup(temp); + else online->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_text")) != NULL))) { + message->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + message->color = g_strdup(temp); + else message->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_nick_said_text")) != NULL))) { + message_nick_said->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + message_nick_said->color = g_strdup(temp); + else message_nick_said->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "status_text")) != NULL))) { + status->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + status->color = g_strdup(temp); + else status->color = g_strdup(DEFAULT_TEXT_COLOR); + } + + /* name is required for theme manager */ + success = (success && xmlnode_get_attrib(root_node, "name") != NULL); + + /* the new theme */ + theme = g_object_new(PIDGIN_TYPE_BLIST_THEME, + "type", "blist", + "name", xmlnode_get_attrib(root_node, "name"), + "author", xmlnode_get_attrib(root_node, "author"), + "image", xmlnode_get_attrib(root_node, "image"), + "directory", dir, + "description", data, + "background-color", bgcolor, + "layout", layout, + "expanded-color", expanded_bgcolor, + "expanded-text", expanded, + "collapsed-color", collapsed_bgcolor, + "collapsed-text", collapsed, + "contact-color", contact_color, + "contact", contact, + "online", online, + "away", away, + "offline", offline, + "idle", idle, + "message", message, + "message_nick_said", message_nick_said, + "status", status, NULL); + + xmlnode_free(root_node); + g_free(data); + + /* malformed xml file - also frees all partial data*/ + if (!success) { + g_object_unref(theme); + theme = NULL; + } + + return PURPLE_THEME(theme); +} + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +pidgin_blist_theme_loader_class_init(PidginBlistThemeLoaderClass *klass) +{ + PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass); + + loader_klass->purple_theme_loader_build = pidgin_blist_loader_build; +} + +GType +pidgin_blist_theme_loader_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PidginBlistThemeLoaderClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)pidgin_blist_theme_loader_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PidginBlistThemeLoader), + 0, /* n_preallocs */ + NULL, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static(PURPLE_TYPE_THEME_LOADER, + "PidginBlistThemeLoader", &info, 0); + } + return type; +} diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkblist-theme-loader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkblist-theme-loader.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,71 @@ +/** + * @file gtkblist-loader.h Pidgin Buddy List Theme Loader Class API + */ + +/* pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PIDGIN_BLIST_THEME_LOADER_H +#define PIDGIN_BLIST_THEME_LOADER_H + +#include +#include +#include "theme-loader.h" + +/** + * A pidgin buddy list theme loader. extends PurpleThemeLoader (theme-loader.h) + * This is a class designed to build sound themes + * + * PidginBlistThemeLoader is a GObject. + */ +typedef struct _PidginBlistThemeLoader PidginBlistThemeLoader; +typedef struct _PidginBlistThemeLoaderClass PidginBlistThemeLoaderClass; + +#define PIDGIN_TYPE_BLIST_THEME_LOADER (pidgin_blist_theme_loader_get_type ()) +#define PIDGIN_BLIST_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoader)) +#define PIDGIN_BLIST_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoaderClass)) +#define PIDGIN_IS_BLIST_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER)) +#define PIDGIN_IS_BLIST_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_BLIST_THEME_LOADER)) +#define PIDGIN_BLIST_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoaderClass)) + +struct _PidginBlistThemeLoader +{ + PurpleThemeLoader parent; +}; + +struct _PidginBlistThemeLoaderClass +{ + PurpleThemeLoaderClass parent_class; +}; + +/**************************************************************************/ +/** @name Buddy List Theme-Loader API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType pidgin_blist_theme_loader_get_type(void); + +G_END_DECLS +#endif /* PIDGIN_BLIST_THEME_LOADER_H */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkblist-theme.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkblist-theme.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,784 @@ +/* + * Buddy List Themes for Pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "gtkblist-theme.h" + +#define PIDGIN_BLIST_THEME_GET_PRIVATE(Gobject) \ + ((PidginBlistThemePrivate *) ((PIDGIN_BLIST_THEME(Gobject))->priv)) + +/****************************************************************************** + * Structs + *****************************************************************************/ + +typedef struct { + /* Buddy list */ + gdouble opacity; + GdkColor *bgcolor; + PidginBlistLayout *layout; + + /* groups */ + GdkColor *expanded_color; + FontColorPair *expanded; + + GdkColor *collapsed_color; + FontColorPair *collapsed; + + /* buddy */ + GdkColor *contact_color; + + FontColorPair *contact; + + FontColorPair *online; + FontColorPair *away; + FontColorPair *offline; + FontColorPair *idle; + FontColorPair *message; + FontColorPair *message_nick_said; + + FontColorPair *status; + +} PidginBlistThemePrivate; + +/****************************************************************************** + * Globals + *****************************************************************************/ + +static GObjectClass *parent_class = NULL; + +/****************************************************************************** + * Enums + *****************************************************************************/ + +enum { + PROP_ZERO = 0, + PROP_BACKGROUND_COLOR, + PROP_OPACITY, + PROP_LAYOUT, + PROP_EXPANDED_COLOR, + PROP_EXPANDED_TEXT, + PROP_COLLAPSED_COLOR, + PROP_COLLAPSED_TEXT, + PROP_CONTACT_COLOR, + PROP_CONTACT, + PROP_ONLINE, + PROP_AWAY, + PROP_OFFLINE, + PROP_IDLE, + PROP_MESSAGE, + PROP_MESSAGE_NICK_SAID, + PROP_STATUS, +}; + +/****************************************************************************** + * Helpers + *****************************************************************************/ + +void +free_font_and_color(FontColorPair *pair) +{ + if (pair != NULL) { + if (pair->font) + g_free(pair->font); + if (pair->color) + g_free(pair->color); + g_free(pair); + } +} + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +pidgin_blist_theme_init(GTypeInstance *instance, + gpointer klass) +{ + (PIDGIN_BLIST_THEME(instance))->priv = g_new0(PidginBlistThemePrivate, 1); +} + +static void +pidgin_blist_theme_get_property(GObject *obj, guint param_id, GValue *value, + GParamSpec *psec) +{ + PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj); + + switch (param_id) { + case PROP_BACKGROUND_COLOR: + g_value_set_pointer(value, pidgin_blist_theme_get_background_color(theme)); + break; + case PROP_OPACITY: + g_value_set_double(value, pidgin_blist_theme_get_opacity(theme)); + break; + case PROP_LAYOUT: + g_value_set_pointer(value, pidgin_blist_theme_get_layout(theme)); + break; + case PROP_EXPANDED_COLOR: + g_value_set_pointer(value, pidgin_blist_theme_get_expanded_background_color(theme)); + break; + case PROP_EXPANDED_TEXT: + g_value_set_pointer(value, pidgin_blist_theme_get_expanded_text_info(theme)); + break; + case PROP_COLLAPSED_COLOR: + g_value_set_pointer(value, pidgin_blist_theme_get_collapsed_background_color(theme)); + break; + case PROP_COLLAPSED_TEXT: + g_value_set_pointer(value, pidgin_blist_theme_get_collapsed_text_info(theme)); + break; + case PROP_CONTACT_COLOR: + g_value_set_pointer(value, pidgin_blist_theme_get_contact_color(theme)); + break; + case PROP_CONTACT: + g_value_set_pointer(value, pidgin_blist_theme_get_contact_text_info(theme)); + break; + case PROP_ONLINE: + g_value_set_pointer(value, pidgin_blist_theme_get_online_text_info(theme)); + break; + case PROP_AWAY: + g_value_set_pointer(value, pidgin_blist_theme_get_away_text_info(theme)); + break; + case PROP_OFFLINE: + g_value_set_pointer(value, pidgin_blist_theme_get_offline_text_info(theme)); + break; + case PROP_IDLE: + g_value_set_pointer(value, pidgin_blist_theme_get_idle_text_info(theme)); + break; + case PROP_MESSAGE: + g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_text_info(theme)); + break; + case PROP_MESSAGE_NICK_SAID: + g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_nick_said_text_info(theme)); + break; + case PROP_STATUS: + g_value_set_pointer(value, pidgin_blist_theme_get_status_text_info(theme)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); + break; + } +} + +static void +pidgin_blist_theme_set_property(GObject *obj, guint param_id, const GValue *value, + GParamSpec *psec) +{ + PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj); + + switch (param_id) { + case PROP_BACKGROUND_COLOR: + pidgin_blist_theme_set_background_color(theme, g_value_get_pointer(value)); + break; + case PROP_OPACITY: + pidgin_blist_theme_set_opacity(theme, g_value_get_double(value)); + break; + case PROP_LAYOUT: + pidgin_blist_theme_set_layout(theme, g_value_get_pointer(value)); + break; + case PROP_EXPANDED_COLOR: + pidgin_blist_theme_set_expanded_background_color(theme, g_value_get_pointer(value)); + break; + case PROP_EXPANDED_TEXT: + pidgin_blist_theme_set_expanded_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_COLLAPSED_COLOR: + pidgin_blist_theme_set_collapsed_background_color(theme, g_value_get_pointer(value)); + break; + case PROP_COLLAPSED_TEXT: + pidgin_blist_theme_set_collapsed_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_CONTACT_COLOR: + pidgin_blist_theme_set_contact_color(theme, g_value_get_pointer(value)); + break; + case PROP_CONTACT: + pidgin_blist_theme_set_contact_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_ONLINE: + pidgin_blist_theme_set_online_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_AWAY: + pidgin_blist_theme_set_away_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_OFFLINE: + pidgin_blist_theme_set_offline_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_IDLE: + pidgin_blist_theme_set_idle_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_MESSAGE: + pidgin_blist_theme_set_unread_message_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_MESSAGE_NICK_SAID: + pidgin_blist_theme_set_unread_message_nick_said_text_info(theme, g_value_get_pointer(value)); + break; + case PROP_STATUS: + pidgin_blist_theme_set_status_text_info(theme, g_value_get_pointer(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); + break; + } +} + +static void +pidgin_blist_theme_finalize(GObject *obj) +{ + PidginBlistThemePrivate *priv; + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(obj); + + /* Buddy List */ + g_free(priv->layout); + + /* Group */ + free_font_and_color(priv->expanded); + free_font_and_color(priv->collapsed); + + /* Buddy */ + free_font_and_color(priv->contact); + free_font_and_color(priv->online); + free_font_and_color(priv->away); + free_font_and_color(priv->offline); + free_font_and_color(priv->message); + free_font_and_color(priv->message_nick_said); + free_font_and_color(priv->status); + + g_free(priv); + + parent_class->finalize (obj); +} + +static void +pidgin_blist_theme_class_init(PidginBlistThemeClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec; + + parent_class = g_type_class_peek_parent (klass); + + obj_class->get_property = pidgin_blist_theme_get_property; + obj_class->set_property = pidgin_blist_theme_set_property; + obj_class->finalize = pidgin_blist_theme_finalize; + + /* Buddy List */ + pspec = g_param_spec_pointer("background-color", "Background Color", + "The background color for the buddy list", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_BACKGROUND_COLOR, pspec); + + pspec = g_param_spec_pointer("layout", "Layout", + "The layout of icons, name, and status of the blist", + G_PARAM_READWRITE); + + g_object_class_install_property(obj_class, PROP_LAYOUT, pspec); + + /* Group */ + pspec = g_param_spec_pointer("expanded-color", "Expanded Background Color", + "The background color of an expanded group", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_EXPANDED_COLOR, pspec); + + pspec = g_param_spec_pointer("expanded-text", "Expanded Text", + "The text information for when a group is expanded", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_EXPANDED_TEXT, pspec); + + pspec = g_param_spec_pointer("collapsed-color", "Collapsed Background Color", + "The background color of a collapsed group", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_COLLAPSED_COLOR, pspec); + + pspec = g_param_spec_pointer("collapsed-text", "Collapsed Text", + "The text information for when a group is collapsed", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_COLLAPSED_TEXT, pspec); + + /* Buddy */ + pspec = g_param_spec_pointer("contact-color", "Contact/Chat Background Color", + "The background color of a contact or chat", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_CONTACT_COLOR, pspec); + + pspec = g_param_spec_pointer("contact", "Contact Text", + "The text information for when a contact is expanded", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_CONTACT, pspec); + + pspec = g_param_spec_pointer("online", "On-line Text", + "The text information for when a buddy is online", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_ONLINE, pspec); + + pspec = g_param_spec_pointer("away", "Away Text", + "The text information for when a buddy is away", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_AWAY, pspec); + + pspec = g_param_spec_pointer("offline", "Off-line Text", + "The text information for when a buddy is off-line", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_OFFLINE, pspec); + + pspec = g_param_spec_pointer("idle", "Idle Text", + "The text information for when a buddy is idle", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_IDLE, pspec); + + pspec = g_param_spec_pointer("message", "Message Text", + "The text information for when a buddy has an unread message", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_MESSAGE, pspec); + + pspec = g_param_spec_pointer("message_nick_said", "Message (Nick Said) Text", + "The text information for when a chat has an unread message that mentions your nick", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_MESSAGE_NICK_SAID, pspec); + + pspec = g_param_spec_pointer("status", "Status Text", + "The text information for a buddy's status", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_STATUS, pspec); +} + +GType +pidgin_blist_theme_get_type (void) +{ + static GType type = 0; + if (type == 0) { + static GTypeInfo info = { + sizeof(PidginBlistThemeClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)pidgin_blist_theme_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PidginBlistTheme), + 0, /* n_preallocs */ + pidgin_blist_theme_init, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static (PURPLE_TYPE_THEME, + "PidginBlistTheme", &info, 0); + } + return type; +} + + +/***************************************************************************** + * Public API functions + *****************************************************************************/ + +/* get methods */ + +GdkColor * +pidgin_blist_theme_get_background_color(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->bgcolor; +} + +gdouble +pidgin_blist_theme_get_opacity(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), 1.0); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->opacity; +} + +PidginBlistLayout * +pidgin_blist_theme_get_layout(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->layout; +} + +GdkColor * +pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->expanded_color; +} + +FontColorPair * +pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->expanded; +} + +GdkColor * +pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->collapsed_color; +} + +FontColorPair * +pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->collapsed; +} + +GdkColor * +pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->contact_color; +} + +FontColorPair * +pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->contact; +} + +FontColorPair * +pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->online; +} + +FontColorPair * +pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->away; +} + +FontColorPair * +pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->offline; +} + +FontColorPair * +pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->idle; +} + +FontColorPair * +pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->message; +} + +FontColorPair * +pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->message_nick_said; +} + +FontColorPair * +pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->status; +} + +/* Set Methods */ +void +pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, GdkColor *color) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + priv->bgcolor = color; +} + +void +pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme) || opacity < 0.0 || opacity > 1.0); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + priv->opacity = opacity; +} + +void +pidgin_blist_theme_set_layout(PidginBlistTheme *theme, PidginBlistLayout *layout) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + g_free(priv->layout); + priv->layout = layout; +} + +void +pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, GdkColor *color) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + priv->expanded_color = color; +} + +void +pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->expanded); + priv->expanded = pair; +} + +void +pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, GdkColor *color) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + priv->collapsed_color = color; +} + +void +pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->collapsed); + priv->collapsed = pair; +} + +void +pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, GdkColor *color) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + priv->contact_color = color; +} + +void +pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->contact); + priv->contact = pair; +} + +void +pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->online); + priv->online = pair; +} + +void +pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->away); + priv->away = pair; +} + +void +pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->offline); + priv->offline = pair; +} + +void +pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->idle); + priv->idle = pair; +} + +void +pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->message); + priv->message = pair; +} + +void +pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->message_nick_said); + priv->message_nick_said = pair; +} + +void +pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->status); + priv->status = pair; +} diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkblist-theme.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkblist-theme.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,332 @@ +/** + * @file gtkblist-theme.h GTK+ Buddy List Theme API + */ + +/* pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PIDGIN_BLIST_THEME_H +#define PIDGIN_BLIST_THEME_H + +#include +#include +#include + +#include "theme.h" + +/** + * A pidgin buddy list theme. + * This is an object for Purple to represent a buddy list theme. + * + * PidginBlistTheme is a PurpleTheme Object. + */ +typedef struct _PidginBlistTheme PidginBlistTheme; +typedef struct _PidginBlistThemeClass PidginBlistThemeClass; + +#define PIDGIN_TYPE_BLIST_THEME (pidgin_blist_theme_get_type ()) +#define PIDGIN_BLIST_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_BLIST_THEME, PidginBlistTheme)) +#define PIDGIN_BLIST_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_BLIST_THEME, PidginBlistThemeClass)) +#define PIDGIN_IS_BLIST_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_BLIST_THEME)) +#define PIDGIN_IS_BLIST_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_BLIST_THEME)) +#define PIDGIN_BLIST_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_BLIST_THEME, PidginBlistThemeClass)) + +struct _PidginBlistTheme +{ + PurpleTheme parent; + gpointer priv; +}; + +struct _PidginBlistThemeClass +{ + PurpleThemeClass parent_class; +}; + +typedef struct +{ + gchar *font; + gchar *color; + +} FontColorPair; + +typedef struct +{ + gint status_icon; + gint text; + gint emblem; + gint protocol_icon; + gint buddy_icon; + gboolean show_status; + +} PidginBlistLayout; + +/**************************************************************************/ +/** @name FontColorPair API */ +/**************************************************************************/ + +/** + * Frees a font and color pair + */ +void free_font_and_color(FontColorPair *pair); + +/**************************************************************************/ +/** @name Purple Buddy List Theme API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType pidgin_blist_theme_get_type(void); + +/* get methods */ + +/** + * Returns the background color of the buddy list. + * + * @returns A gdk color. + */ + GdkColor *pidgin_blist_theme_get_background_color(PidginBlistTheme *theme); + +/** + * Returns the opacity of the buddy list window + * (0.0 or clear to 1.0 fully opaque). + * + * @returns The opacity + */ +gdouble pidgin_blist_theme_get_opacity(PidginBlistTheme *theme); + +/** + * Returns the layout to be used with the buddy list. + * + * @returns The buddy list layout. + */ + PidginBlistLayout *pidgin_blist_theme_get_layout(PidginBlistTheme *theme); + +/** + * Returns the background color to be used with expanded groups. + * + * @returns A gdk color. + */ + GdkColor *pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used with expanded groups. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme); + +/** + * Returns the background color to be used with collapsed groups. + * + * @returns A gdk color. + */ + GdkColor *pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used with collapsed groups. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme); + +/** + * Returns the colors to be used for contacts and chats. + * + * @returns A gdkcolor for contacts and chats. + */ + GdkColor *pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for expanded contacts. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for online buddies. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for away and idle buddies. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for offline buddies. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for idle buddies. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for buddies with unread messages. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for chats with unread messages + * that mention your nick. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme); + +/** + * Returns the text font and color to be used for a buddy's status message. + * + * @returns A font and color pair. + */ + FontColorPair *pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme); + +/* Set Methods */ + +/** + * Sets the background color to be used for this buddy list theme. + * + * @param color The new background color. + */ +void pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, GdkColor *color); + +/** + * Sets the opacity to be used for this buddy list theme. + * + * @param opacity The new opacity setting. + */ +void pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity); + +/** + * Sets the buddy list layout to be used for this buddy list theme. + * + * @param layout The new layout. + */ +void pidgin_blist_theme_set_layout(PidginBlistTheme *theme, PidginBlistLayout *layout); + +/** + * Sets the background color to be used for expanded groups. + * + * @param color The new background color. + */ +void pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, GdkColor *color); + +/** + * Sets the text color and font to be used for expanded groups. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the background color to be used for collapsed groups. + * + * @param color The new background color. + */ +void pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, GdkColor *color); + +/** + * Sets the text color and font to be used for expanded groups. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the background color to be used for contacts and chats. + * + * @param color The color to use for contacts and chats. + */ +void pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, GdkColor *color); + +/** + * Sets the text color and font to be used for expanded contacts. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the text color and font to be used for online buddies. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the text color and font to be used for away and idle buddies. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the text color and font to be used for offline buddies. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the text color and font to be used for idle buddies. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the text color and font to be used for buddies with unread messages. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the text color and font to be used for a chat with unread messages + * that mention your nick. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** + * Sets the text color and font to be used for buddy status messages. + * + * @param pair The new text font at color pair. + */ +void pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +G_END_DECLS +#endif /* PIDGIN_BLIST_THEME_H */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkblist.c --- a/pidgin/gtkblist.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkblist.c Mon Mar 02 22:07:59 2009 +0000 @@ -38,6 +38,8 @@ #include "request.h" #include "signals.h" #include "pidginstock.h" +#include "theme-loader.h" +#include "theme-manager.h" #include "util.h" #include "gtkaccount.h" @@ -58,6 +60,8 @@ #include "gtkstatusbox.h" #include "gtkscrollbook.h" #include "gtksmiley.h" +#include "gtkblist-theme.h" +#include "gtkblist-theme-loader.h" #include "gtkutils.h" #include "pidgin/minidialog.h" #include "pidgin/pidgintooltip.h" @@ -121,6 +125,9 @@ * is showing; @c NULL otherwise. */ PidginMiniDialog *signed_on_elsewhere; + + PidginBlistTheme *current_theme; + } PidginBuddyListPrivate; #define PIDGIN_BUDDY_LIST_GET_PRIVATE(list) \ @@ -142,7 +149,7 @@ #if GTK_CHECK_VERSION(2,2,1) static void sort_method_alphabetical(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); -static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); +static void sort_method_log_activity(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); #endif static PidginBuddyList *gtkblist = NULL; @@ -164,7 +171,8 @@ static void set_urgent(void); typedef enum { - PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */ + PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */ + PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK = 1 << 1, /* Whether there's a pending message in a chat that mentions our nick */ } PidginBlistNodeFlags; typedef struct _pidgin_blist_node { @@ -179,17 +187,6 @@ } conv; } PidginBlistNode; -static char dim_grey_string[8] = ""; -static char *dim_grey(void) -{ - if (!gtkblist) - return "dim grey"; - if (!dim_grey_string[0]) { - snprintf(dim_grey_string, sizeof(dim_grey_string), "%s", pidgin_get_dim_grey_string(gtkblist->treeview)); - } - return dim_grey_string; -} - /*************************************************** * Callbacks * ***************************************************/ @@ -329,17 +326,24 @@ static void gtk_blist_menu_info_cb(GtkWidget *w, PurpleBuddy *b) { - pidgin_retrieve_user_info(b->account->gc, purple_buddy_get_name(b)); + PurpleAccount *account = purple_buddy_get_account(b); + + pidgin_retrieve_user_info(purple_account_get_connection(account), + purple_buddy_get_name(b)); } static void gtk_blist_menu_im_cb(GtkWidget *w, PurpleBuddy *b) { - pidgin_dialogs_im_with_user(b->account, b->name); + pidgin_dialogs_im_with_user(purple_buddy_get_account(b), + purple_buddy_get_name(b)); } static void gtk_blist_menu_send_file_cb(GtkWidget *w, PurpleBuddy *b) { - serv_send_file(b->account->gc, b->name, NULL); + PurpleAccount *account = purple_buddy_get_account(b); + + serv_send_file(purple_account_get_connection(account), + purple_buddy_get_name(b), NULL); } static void gtk_blist_menu_move_to_cb(GtkWidget *w, PurpleBlistNode *node) @@ -364,7 +368,7 @@ static PurpleConversation * find_conversation_with_buddy(PurpleBuddy *buddy) { - PidginBlistNode *ui = buddy->node.ui_data; + PidginBlistNode *ui = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(buddy)); if (ui) return ui->conv.conv; return purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, @@ -374,15 +378,20 @@ static void gtk_blist_join_chat(PurpleChat *chat) { + PurpleAccount *account; PurpleConversation *conv; PurplePluginProtocolInfo *prpl_info; + GHashTable *components; const char *name; char *chat_name; - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(chat->account))); + account = purple_chat_get_account(chat); + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account))); + + components = purple_chat_get_components(chat); if (prpl_info && prpl_info->get_chat_name) - chat_name = prpl_info->get_chat_name(chat->components); + chat_name = prpl_info->get_chat_name(components); else chat_name = NULL; @@ -392,14 +401,14 @@ name = purple_chat_get_name(chat); conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, - chat->account); + account); if (conv != NULL) { pidgin_conv_attach_to_conversation(conv); purple_conversation_present(conv); } - serv_join_chat(chat->account->gc, chat->components); + serv_join_chat(purple_account_get_connection(account), components); g_free(chat_name); } @@ -434,15 +443,15 @@ gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); node = g_value_get_pointer(&val); - switch (node->type) { + switch (purple_blist_node_get_type(node)) { case PURPLE_BLIST_CONTACT_NODE: - text = purple_contact_get_alias((PurpleContact *)node); + text = purple_contact_get_alias(PURPLE_CONTACT(node)); break; case PURPLE_BLIST_BUDDY_NODE: - text = purple_buddy_get_alias((PurpleBuddy *)node); + text = purple_buddy_get_alias(PURPLE_BUDDY(node)); break; case PURPLE_BLIST_GROUP_NODE: - text = ((PurpleGroup *)node)->name; + text = purple_group_get_name(PURPLE_GROUP(node)); break; default: g_return_if_reached(); @@ -470,17 +479,24 @@ for (tmp = merges; tmp; tmp = tmp->next) { PurpleBlistNode *node = tmp->data; PurpleBlistNode *b; + PurpleBlistNodeType type; int i = 0; - if (node->type == PURPLE_BLIST_BUDDY_NODE) - node = node->parent; - - if (node->type != PURPLE_BLIST_CONTACT_NODE) + type = purple_blist_node_get_type(node); + + if(type == PURPLE_BLIST_BUDDY_NODE) + node = purple_blist_node_get_parent(node); + + if(type == PURPLE_BLIST_CONTACT_NODE) continue; - - - for (b = node->child; b; b = b->next) + + for (b = purple_blist_node_get_first_child(node); + b; + b = purple_blist_node_get_sibling_next(b)) + { i++; + } + if (i > max) { contact = node; max = i; @@ -493,8 +509,8 @@ /* Merge all those buddies into this contact */ for (tmp = merges; tmp; tmp = tmp->next) { PurpleBlistNode *node = tmp->data; - if (node->type == PURPLE_BLIST_BUDDY_NODE) - node = node->parent; + if (purple_blist_node_get_type(node) == PURPLE_BLIST_BUDDY_NODE) + node = purple_blist_node_get_parent(node); if (node == contact) continue; @@ -516,9 +532,11 @@ int i = 0; char *a = g_utf8_casefold(alias, -1); - for (contact = group->child; contact; contact = contact->next) { + for (contact = purple_blist_node_get_first_child(group); + contact != NULL; + contact = purple_blist_node_get_sibling_next(contact)) { char *node_alias; - if (contact->type != PURPLE_BLIST_CONTACT_NODE) + if (purple_blist_node_get_type(contact) != PURPLE_BLIST_CONTACT_NODE) continue; node_alias = g_utf8_casefold(purple_contact_get_alias((PurpleContact *)contact), -1); @@ -530,11 +548,14 @@ } g_free(node_alias); - for (buddy = contact->child; buddy; buddy = buddy->next) { - if (buddy->type != PURPLE_BLIST_BUDDY_NODE) + for (buddy = purple_blist_node_get_first_child(contact); + buddy; + buddy = purple_blist_node_get_sibling_next(buddy)) + { + if (purple_blist_node_get_type(buddy) != PURPLE_BLIST_BUDDY_NODE) continue; - node_alias = g_utf8_casefold(purple_buddy_get_alias((PurpleBuddy *)buddy), -1); + node_alias = g_utf8_casefold(purple_buddy_get_alias(PURPLE_BUDDY(buddy)), -1); if (node_alias && !g_utf8_collate(node_alias, a)) { merges = g_list_append(merges, buddy); i++; @@ -576,39 +597,45 @@ gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE); g_object_set(G_OBJECT(gtkblist->text_rend), "editable", FALSE, NULL); - switch (node->type) + switch (purple_blist_node_get_type(node)) { case PURPLE_BLIST_CONTACT_NODE: { - PurpleContact *contact = (PurpleContact *)node; - struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data; - - if (contact->alias || gtknode->contact_expanded) { + PurpleContact *contact = PURPLE_CONTACT(node); + struct _pidgin_blist_node *gtknode = + (struct _pidgin_blist_node *)purple_blist_node_get_ui_data(node); + + if (purple_contact_get_alias(contact) || gtknode->contact_expanded) { purple_blist_alias_contact(contact, arg2); - gtk_blist_auto_personize(node->parent, arg2); + gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2); } else { PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact); purple_blist_alias_buddy(buddy, arg2); serv_alias_buddy(buddy); - gtk_blist_auto_personize(node->parent, arg2); + gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2); } } break; case PURPLE_BLIST_BUDDY_NODE: - purple_blist_alias_buddy((PurpleBuddy*)node, arg2); - serv_alias_buddy((PurpleBuddy *)node); - gtk_blist_auto_personize(node->parent->parent, arg2); + { + PurpleGroup *group = purple_buddy_get_group(PURPLE_BUDDY(node)); + + purple_blist_alias_buddy(PURPLE_BUDDY(node), arg2); + serv_alias_buddy(PURPLE_BUDDY(node)); + gtk_blist_auto_personize(PURPLE_BLIST_NODE(group), arg2); + } break; case PURPLE_BLIST_GROUP_NODE: dest = purple_find_group(arg2); - if (dest != NULL && purple_utf8_strcasecmp(arg2, ((PurpleGroup*) node)->name)) { - pidgin_dialogs_merge_groups((PurpleGroup*) node, arg2); - } else - purple_blist_rename_group((PurpleGroup*)node, arg2); + if (dest != NULL && purple_utf8_strcasecmp(arg2, purple_group_get_name(PURPLE_GROUP(node)))) { + pidgin_dialogs_merge_groups(PURPLE_GROUP(node), arg2); + } else { + purple_blist_rename_group(PURPLE_GROUP(node), arg2); + } break; case PURPLE_BLIST_CHAT_NODE: - purple_blist_alias_chat((PurpleChat*)node, arg2); + purple_blist_alias_chat(PURPLE_CHAT(node), arg2); break; default: break; @@ -695,7 +722,7 @@ if (!(get_iter_from_node(node, &iter))) { /* This is either a bug, or the buddy is in a collapsed contact */ - node = node->parent; + node = purple_blist_node_get_parent(node); if (!get_iter_from_node(node, &iter)) /* Now it's definitely a bug */ return; @@ -718,7 +745,8 @@ static void gtk_blist_menu_bp_cb(GtkWidget *w, PurpleBuddy *b) { - pidgin_pounce_editor_show(b->account, b->name, NULL); + pidgin_pounce_editor_show(purple_buddy_get_account(b), + purple_buddy_get_name(b), NULL); } static void gtk_blist_menu_showlog_cb(GtkWidget *w, PurpleBlistNode *node) @@ -732,19 +760,19 @@ if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { PurpleBuddy *b = (PurpleBuddy*) node; type = PURPLE_LOG_IM; - name = g_strdup(b->name); - account = b->account; + name = g_strdup(purple_buddy_get_name(b)); + account = purple_buddy_get_account(b); } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { - PurpleChat *c = (PurpleChat*) node; + PurpleChat *c = PURPLE_CHAT(node); PurplePluginProtocolInfo *prpl_info = NULL; type = PURPLE_LOG_CHAT; - account = c->account; + account = purple_chat_get_account(c); prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account))); if (prpl_info && prpl_info->get_chat_name) { - name = prpl_info->get_chat_name(c->components); + name = prpl_info->get_chat_name(purple_chat_get_components(c)); } } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { - pidgin_log_show_contact((PurpleContact *)node); + pidgin_log_show_contact(PURPLE_CONTACT(node)); pidgin_clear_cursor(gtkblist->window); return; } else { @@ -757,10 +785,10 @@ if (name && account) { pidgin_log_show(type, name, account); - g_free(name); - pidgin_clear_cursor(gtkblist->window); } + + g_free(name); } static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node) @@ -777,7 +805,10 @@ gboolean setting = !purple_blist_node_get_bool(node, "show_offline"); purple_blist_node_set_bool(node, "show_offline", setting); - for (bnode = node->child; bnode != NULL; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(node); + bnode != NULL; + bnode = purple_blist_node_get_sibling_next(bnode)) + { purple_blist_node_set_bool(bnode, "show_offline", setting); pidgin_blist_update(purple_get_blist(), bnode); } @@ -786,9 +817,15 @@ gboolean setting = !purple_blist_node_get_bool(node, "show_offline"); purple_blist_node_set_bool(node, "show_offline", setting); - for (cnode = node->child; cnode != NULL; cnode = cnode->next) { + for (cnode = purple_blist_node_get_first_child(node); + cnode != NULL; + cnode = purple_blist_node_get_sibling_next(cnode)) + { purple_blist_node_set_bool(cnode, "show_offline", setting); - for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) { + for (bnode = purple_blist_node_get_first_child(cnode); + bnode != NULL; + bnode = purple_blist_node_get_sibling_next(bnode)) + { purple_blist_node_set_bool(bnode, "show_offline", setting); pidgin_blist_update(purple_get_blist(), bnode); } @@ -900,9 +937,10 @@ static void pidgin_blist_update_privacy_cb(PurpleBuddy *buddy) { - if (buddy->node.ui_data == NULL || ((struct _pidgin_blist_node*)buddy->node.ui_data)->row == NULL) + struct _pidgin_blist_node *ui_data = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(buddy)); + if (ui_data == NULL || ui_data->row == NULL) return; - pidgin_blist_update_buddy(purple_get_blist(), (PurpleBlistNode*)(buddy), TRUE); + pidgin_blist_update_buddy(purple_get_blist(), PURPLE_BLIST_NODE(buddy), TRUE); } static void @@ -1032,7 +1070,7 @@ GtkWidget *img = NULL; PidginJoinChatData *data = NULL; - gtkblist = PIDGIN_BLIST(purple_get_blist()); + gtkblist = purple_blist_get_ui_data(); img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); data = g_new0(PidginJoinChatData, 1); @@ -1452,7 +1490,7 @@ pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce..."), NULL, G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL); - if (node->parent && node->parent->child->next && + if (node->parent && node->parent->child->next && !sub && !contact_expanded) { pidgin_new_item_from_stock(menu, _("View _Log"), NULL, G_CALLBACK(gtk_blist_menu_showlog_cb), @@ -1474,7 +1512,7 @@ if (!contact_expanded && contact != NULL) pidgin_append_blist_node_move_to_menu(menu, (PurpleBlistNode *)contact); - if (node->parent && node->parent->child->next && + if (node->parent && node->parent->child->next && !sub && !contact_expanded) { pidgin_separator(menu); pidgin_append_blist_node_privacy_menu(menu, node); @@ -1792,7 +1830,8 @@ return handled; } -static gboolean gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data) +static gboolean +gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data) { GtkTreePath *path; PurpleBlistNode *node; @@ -2496,7 +2535,7 @@ node = g_value_get_pointer(&val); if (PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CONTACT(node)) { - PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? (PurpleBuddy*)node : purple_contact_get_priority_buddy((PurpleContact*)node); + PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? PURPLE_BUDDY(node) : purple_contact_get_priority_buddy(PURPLE_CONTACT(node)); pidgin_dnd_file_manage(sd, b->account, b->name); gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); } else { @@ -2720,7 +2759,7 @@ * * */ -#define STATUS_SIZE 16 +#define STATUS_SIZE 16 #define TOOLTIP_BORDER 12 #define SMALL_SPACE 6 #define LARGE_SPACE 12 @@ -2982,18 +3021,18 @@ } static void -pidgin_blist_align_tooltip(struct tooltip_data *td, GtkWidget *widget) -{ - GtkTextDirection dir = gtk_widget_get_direction(widget); - - if (dir == GTK_TEXT_DIR_RTL) +pidgin_blist_align_tooltip(struct tooltip_data *td, GtkWidget *widget) +{ + GtkTextDirection dir = gtk_widget_get_direction(widget); + + if (dir == GTK_TEXT_DIR_RTL) { char* layout_name = purple_markup_strip_html(pango_layout_get_text(td->name_layout)); PangoDirection dir = pango_find_base_dir(layout_name, -1); if (dir == PANGO_DIRECTION_RTL || dir == PANGO_DIRECTION_NEUTRAL) - pango_layout_set_alignment(td->name_layout, PANGO_ALIGN_RIGHT); + pango_layout_set_alignment(td->name_layout, PANGO_ALIGN_RIGHT); g_free(layout_name); - pango_layout_set_alignment(td->layout, PANGO_ALIGN_RIGHT); + pango_layout_set_alignment(td->layout, PANGO_ALIGN_RIGHT); } } @@ -3082,7 +3121,7 @@ GValue val; struct _pidgin_blist_node *gtknode; - if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y + (gtkblist->tip_rect.height/2), + if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y + (gtkblist->tip_rect.height/2), &path, NULL, NULL, NULL)) return FALSE; gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path); @@ -3168,7 +3207,7 @@ if (y < rect.y + (rect.height / 3) || y > rect.y + (2 * (rect.height /3))) return FALSE; - + rect.height = rect.height / 3; rect.y += rect.height; @@ -3287,10 +3326,10 @@ { N_("/_Tools"), NULL, NULL, 0, "", NULL }, { N_("/Tools/Buddy _Pounces"), NULL, pidgin_pounces_manager_show, 1, "", NULL }, { N_("/Tools/_Certificates"), NULL, pidgin_certmgr_show, 0, "", NULL }, + { N_("/Tools/Custom Smile_ys"), "Y", pidgin_smiley_manager_show, 0, "", PIDGIN_STOCK_TOOLBAR_SMILEY }, { N_("/Tools/Plu_gins"), "U", pidgin_plugin_dialog_show, 2, "", PIDGIN_STOCK_TOOLBAR_PLUGINS }, { N_("/Tools/Pr_eferences"), "P", pidgin_prefs_show, 0, "", GTK_STOCK_PREFERENCES }, { N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "", NULL }, - { N_("/Tools/Smile_y"), "Y", pidgin_smiley_manager_show, 0, "", PIDGIN_STOCK_TOOLBAR_SMILEY }, { "/Tools/sep2", NULL, NULL, 0, "", NULL }, { N_("/Tools/_File Transfers"), "T", pidgin_xfer_dialog_show, 0, "", PIDGIN_STOCK_TOOLBAR_TRANSFER }, { N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "", NULL }, @@ -3815,19 +3854,22 @@ return ret; } -gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased) -{ - const char *name; - char *esc, *text = NULL; +gchar * +pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased) +{ + const char *name, *name_color, *name_font, *status_color, *status_font; + char *text = NULL; PurplePlugin *prpl; PurplePluginProtocolInfo *prpl_info = NULL; PurpleContact *contact; PurplePresence *presence; struct _pidgin_blist_node *gtkcontactnode = NULL; - char *idletime = NULL, *statustext = NULL; - time_t t; + char *idletime = NULL, *statustext = NULL, *nametext = NULL; PurpleConversation *conv = find_conversation_with_buddy(b); gboolean hidden_conv = FALSE; + gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); + FontColorPair *pair = NULL; + PidginBlistTheme *theme; if (conv != NULL) { PidginBlistNode *ui = b->node.ui_data; @@ -3841,178 +3883,171 @@ } /* XXX Good luck cleaning up this crap */ - contact = (PurpleContact*)((PurpleBlistNode*)b)->parent; + contact = PURPLE_CONTACT(PURPLE_BLIST_NODE(b)->parent); if(contact) - gtkcontactnode = ((PurpleBlistNode*)contact)->ui_data; - - if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias) + gtkcontactnode = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(contact)); + + /* Name */ + if (gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias) name = contact->alias; else name = purple_buddy_get_alias(b); - - esc = g_markup_escape_text(name, strlen(name)); + + nametext = g_markup_escape_text(name, strlen(name)); presence = purple_buddy_get_presence(b); - if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons") && aliased) - { - if (!selected && purple_presence_is_idle(presence)) - { - text = g_strdup_printf("%s", - dim_grey(), esc); - g_free(esc); - if (hidden_conv) { - char *tmp = text; - text = g_strdup_printf("%s", text); + /* Name is all that is needed */ + if (aliased && biglist) { + + /* Status Info */ + prpl = purple_find_prpl(purple_account_get_protocol_id(b->account)); + + if (prpl != NULL) + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); + + if (prpl_info && prpl_info->status_text && b->account->gc) { + char *tmp = prpl_info->status_text(b); + const char *end; + + if(tmp && !g_utf8_validate(tmp, -1, &end)) { + char *new = g_strndup(tmp, + g_utf8_pointer_to_offset(tmp, end)); + g_free(tmp); + tmp = new; + } + /* add ... to messages that are too long, GTK 2.6+ does it automatically */ +#if !GTK_CHECK_VERSION(2,6,0) + if(tmp) { + char buf[32]; + char *c = tmp; + int length = 0, vis=0; + gboolean inside = FALSE; + g_strdelimit(tmp, "\n", ' '); + purple_str_strip_char(tmp, '\r'); + + while(*c && vis < 20) { + if(*c == '&') + inside = TRUE; + else if(*c == ';') + inside = FALSE; + if(!inside) + vis++; + c = g_utf8_next_char(c); /* this is fun */ + } + + length = c - tmp; + + if(vis == 20) + g_snprintf(buf, sizeof(buf), "%%.%ds...", length); + else + g_snprintf(buf, sizeof(buf), "%%s "); + + statustext = g_strdup_printf(buf, tmp);purple_presence_is_idle(presence) + g_free(tmp); } - return text; - } - else if (hidden_conv) - { - char *tmp = esc; - esc = g_strdup_printf("%s", esc); - g_free(tmp); - } - return esc; - } - - prpl = purple_find_prpl(purple_account_get_protocol_id(b->account)); - - if (prpl != NULL) - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - - if (prpl_info && prpl_info->status_text && b->account->gc) { - char *tmp = prpl_info->status_text(b); - const char *end; - - if(tmp && !g_utf8_validate(tmp, -1, &end)) { - char *new = g_strndup(tmp, - g_utf8_pointer_to_offset(tmp, end)); - g_free(tmp); - tmp = new; +#else + if(tmp) { + g_strdelimit(tmp, "\n", ' '); + purple_str_strip_char(tmp, '\r'); + } + statustext = tmp; +#endif } -#if !GTK_CHECK_VERSION(2,6,0) - if(tmp) { - char buf[32]; - char *c = tmp; - int length = 0, vis=0; - gboolean inside = FALSE; - g_strdelimit(tmp, "\n", ' '); - purple_str_strip_char(tmp, '\r'); - - while(*c && vis < 20) { - if(*c == '&') - inside = TRUE; - else if(*c == ';') - inside = FALSE; - if(!inside) - vis++; - c = g_utf8_next_char(c); /* this is fun */ - } - - length = c - tmp; - - if(vis == 20) - g_snprintf(buf, sizeof(buf), "%%.%ds...", length); - else - g_snprintf(buf, sizeof(buf), "%%s "); - - statustext = g_strdup_printf(buf, tmp); - - g_free(tmp); - } -#else - if(tmp) { - g_strdelimit(tmp, "\n", ' '); - purple_str_strip_char(tmp, '\r'); - } - statustext = tmp; -#endif - } - - if(!purple_presence_is_online(presence) && !statustext) - statustext = g_strdup(_("Offline")); - else if (!statustext) - text = g_strdup(esc); - - if (purple_presence_is_idle(presence)) { - if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) { + if(!purple_presence_is_online(presence) && !statustext) + statustext = g_strdup(_("Offline")); + + /* Idle Text */ + if (purple_presence_is_idle(presence) && purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) { time_t idle_secs = purple_presence_get_idle_time(presence); if (idle_secs > 0) { int iday, ihrs, imin; + time_t t; time(&t); iday = (t - idle_secs) / (24 * 60 * 60); ihrs = ((t - idle_secs) / 60 / 60) % 24; imin = ((t - idle_secs) / 60) % 60; - if (iday) + if (iday) idletime = g_strdup_printf(_("Idle %dd %dh %02dm"), iday, ihrs, imin); else if (ihrs) idletime = g_strdup_printf(_("Idle %dh %02dm"), ihrs, imin); else idletime = g_strdup_printf(_("Idle %dm"), imin); - } - else + + } else idletime = g_strdup(_("Idle")); - - if (!selected) { - g_free(text); - text = g_strdup_printf("%s\n" - "%s%s%s", - dim_grey(), esc, dim_grey(), - idletime != NULL ? idletime : "", - (idletime != NULL && statustext != NULL) ? " - " : "", - statustext != NULL ? statustext : ""); - } - } - else if (!selected && !statustext) {/* We handle selected text later */ - g_free(text); - text = g_strdup_printf("%s", dim_grey(), esc); - } else if (!selected && !text) { - g_free(text); - text = g_strdup_printf("%s\n" - "%s", - dim_grey(), esc, dim_grey(), - statustext != NULL ? statustext : ""); } - } else if (!PURPLE_BUDDY_IS_ONLINE(b)) { - if (!selected && !statustext) {/* We handle selected text later */ - g_free(text); - text = g_strdup_printf("%s", dim_grey(), esc); - } else if (!selected && !text) - text = g_strdup_printf("%s\n" - "%s", - dim_grey(), esc, dim_grey(), - statustext != NULL ? statustext : ""); - - } - /* Not idle and not selected */ - else if (!selected && !text) - { - text = g_strdup_printf("%s\n" - "%s", - esc, dim_grey(), - statustext != NULL ? statustext : ""); - } - - /* It is selected. */ - if ((selected && !text) || (selected && idletime)) { - g_free(text); - text = g_strdup_printf("%s\n" - "%s%s%s", - esc, - idletime != NULL ? idletime : "", - (idletime != NULL && statustext != NULL) ? " - " : "", - statustext != NULL ? statustext : ""); - } - + } + + /* choose the colors of the text */ + theme = pidgin_blist_get_theme(); + + if (purple_presence_is_idle(presence)) { + if (theme) + pair = pidgin_blist_theme_get_idle_text_info(theme); + status_color = name_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; + status_font = name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; + + } else if (!purple_presence_is_online(presence)) { + if (theme) + pair = pidgin_blist_theme_get_offline_text_info(theme); + name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black"; + name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; + + if (theme) + pair = pidgin_blist_theme_get_status_text_info(theme); + status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; + status_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; + + } else if (purple_presence_is_available(presence)) { + if (theme) + pair = pidgin_blist_theme_get_online_text_info(theme); + name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black"; + name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; + + if (theme) + pair = pidgin_blist_theme_get_status_text_info(theme); + status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; + status_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; + + } else { + if (theme) + pair = pidgin_blist_theme_get_away_text_info(theme); + name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black"; + name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; + + if (theme) + pair = pidgin_blist_theme_get_status_text_info(theme); + status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; + status_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; + } + + if (aliased && selected) { + name_color = "black"; + status_color = "black"; + } + + /* Put it all together */ + if (aliased && biglist && (statustext || idletime)) { + /* using breaks the status, so it must be seperated into */ + text = g_strdup_printf("%s\n" + "%s%s%s", + name_font, name_color, nametext, status_font, status_color, + idletime != NULL ? idletime : "", + (idletime != NULL && statustext != NULL) ? " - " : "", + statustext != NULL ? statustext : ""); + + } else + text = g_strdup_printf("%s", name_font, name_color, nametext); + + g_free(nametext); + g_free(statustext); g_free(idletime); - g_free(statustext); - g_free(esc); if (hidden_conv) { char *tmp = text; @@ -4062,7 +4097,7 @@ PurpleBlistNode *gnode, *cnode; if (gtk_blist_visibility == GDK_VISIBILITY_FULLY_OBSCURED - || !GTK_WIDGET_VISIBLE(gtkblist->window)) + || !GTK_WIDGET_VISIBLE(gtkblist->window)) return TRUE; for(gnode = list->root; gnode; gnode = gnode->next) { @@ -4331,6 +4366,10 @@ !(flag & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV))) return; ui->conv.flags |= PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE; + if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT + && (flag & PURPLE_MESSAGE_NICK)) + ui->conv.flags |= PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK; + ui->conv.last_message = time(NULL); /* XXX: for lack of better data */ pidgin_blist_update(purple_get_blist(), node); } @@ -4341,7 +4380,8 @@ PidginBlistNode *ui = node->ui_data; if (ui->conv.conv != gtkconv->active_conv) return; - ui->conv.flags &= ~PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE; + ui->conv.flags &= ~(PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE | + PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK); pidgin_blist_update(purple_get_blist(), node); } @@ -4450,7 +4490,7 @@ #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 log size"), sort_method_log); + 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")); } @@ -5261,11 +5301,144 @@ } #endif +/* builds the blist layout according to to the current theme */ +static void +pidgin_blist_build_layout(PurpleBuddyList *list) +{ + GtkTreeViewColumn *column; + PidginBlistLayout *layout; + PidginBlistTheme *theme; + GtkCellRenderer *rend; + gint i, status_icon = 0, text = 1, emblem = 2, protocol_icon = 3, buddy_icon = 4; + + + column = gtkblist->text_column; + + if ((theme = pidgin_blist_get_theme()) != NULL && (layout = pidgin_blist_theme_get_layout(theme)) != NULL) { + status_icon = layout->status_icon ; + text = layout->text; + emblem = layout->emblem; + protocol_icon = layout->protocol_icon; + buddy_icon = layout->buddy_icon; + } + + gtk_tree_view_column_clear(column); + + /* group */ + rend = pidgin_cell_renderer_expander_new(); + gtk_tree_view_column_pack_start(column, rend, FALSE); + gtk_tree_view_column_set_attributes(column, rend, + "visible", GROUP_EXPANDER_VISIBLE_COLUMN, + "expander-visible", GROUP_EXPANDER_COLUMN, +#if GTK_CHECK_VERSION(2,6,0) + "sensitive", GROUP_EXPANDER_COLUMN, + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + NULL); + + /* contact */ + rend = pidgin_cell_renderer_expander_new(); + gtk_tree_view_column_pack_start(column, rend, FALSE); + gtk_tree_view_column_set_attributes(column, rend, + "visible", CONTACT_EXPANDER_VISIBLE_COLUMN, + "expander-visible", CONTACT_EXPANDER_COLUMN, +#if GTK_CHECK_VERSION(2,6,0) + "sensitive", CONTACT_EXPANDER_COLUMN, + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + NULL); + + for (i = 0; i < 5; i++) { + + if (status_icon == i) { + /* status icons */ + rend = gtk_cell_renderer_pixbuf_new(); + gtk_tree_view_column_pack_start(column, rend, FALSE); + gtk_tree_view_column_set_attributes(column, rend, + "pixbuf", STATUS_ICON_COLUMN, + "visible", STATUS_ICON_VISIBLE_COLUMN, +#if GTK_CHECK_VERSION(2,6,0) + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + NULL); + g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); + + } else if (text == i) { + /* name */ + gtkblist->text_rend = rend = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(column, rend, TRUE); + gtk_tree_view_column_set_attributes(column, rend, +#if GTK_CHECK_VERSION(2,6,0) + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + "markup", NAME_COLUMN, + NULL); +#if GTK_CHECK_VERSION(2,6,0) + g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL); + g_signal_connect(G_OBJECT(rend), "editing-canceled", G_CALLBACK(gtk_blist_renderer_editing_cancelled_cb), list); +#endif + g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), list); + g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); +#if GTK_CHECK_VERSION(2,6,0) + g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); +#endif + + /* idle */ + rend = gtk_cell_renderer_text_new(); + g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); + gtk_tree_view_column_pack_start(column, rend, FALSE); + gtk_tree_view_column_set_attributes(column, rend, + "markup", IDLE_COLUMN, + "visible", IDLE_VISIBLE_COLUMN, +#if GTK_CHECK_VERSION(2,6,0) + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + NULL); + } else if (emblem == i) { + /* emblem */ + rend = gtk_cell_renderer_pixbuf_new(); + g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL); + gtk_tree_view_column_pack_start(column, rend, FALSE); + gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN, +#if GTK_CHECK_VERSION(2,6,0) + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + "visible", EMBLEM_VISIBLE_COLUMN, NULL); + + } else if (protocol_icon == i) { + /* protocol icon */ + rend = gtk_cell_renderer_pixbuf_new(); + gtk_tree_view_column_pack_start(column, rend, FALSE); + gtk_tree_view_column_set_attributes(column, rend, + "pixbuf", PROTOCOL_ICON_COLUMN, + "visible", PROTOCOL_ICON_VISIBLE_COLUMN, +#if GTK_CHECK_VERSION(2,6,0) + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + NULL); + g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL); + + } else if (buddy_icon == i) { + /* buddy icon */ + rend = gtk_cell_renderer_pixbuf_new(); + g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); + gtk_tree_view_column_pack_start(column, rend, FALSE); + gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN, +#if GTK_CHECK_VERSION(2,6,0) + "cell-background-gdk", BGCOLOR_COLUMN, +#endif + "visible", BUDDY_ICON_VISIBLE_COLUMN, + NULL); + } + + }/* end for loop */ + +} + static void pidgin_blist_show(PurpleBuddyList *list) { PidginBuddyListPrivate *priv; void *handle; - GtkCellRenderer *rend; GtkTreeViewColumn *column; GtkWidget *menu; GtkWidget *ebox; @@ -5291,6 +5464,8 @@ gtkblist = PIDGIN_BLIST(list); priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist); + priv->current_theme = PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme"), "blist")); + gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32); gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000); @@ -5323,8 +5498,8 @@ gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu), blist_menu, NULL); pidgin_load_accels(); - g_signal_connect(G_OBJECT(accel_group), "accel-changed", - G_CALLBACK(pidgin_save_accels_cb), NULL); + g_signal_connect(G_OBJECT(accel_group), "accel-changed", G_CALLBACK(pidgin_save_accels_cb), NULL); + menu = gtk_item_factory_get_widget(gtkblist->ift, ""); gtkblist->menutray = pidgin_menu_tray_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtkblist->menutray); @@ -5468,105 +5643,16 @@ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(gtkblist->treeview), FALSE); + /* expander columns */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column); gtk_tree_view_column_set_visible(column, FALSE); gtk_tree_view_set_expander_column(GTK_TREE_VIEW(gtkblist->treeview), column); - gtkblist->text_column = column = gtk_tree_view_column_new (); - rend = pidgin_cell_renderer_expander_new(); - gtk_tree_view_column_pack_start(column, rend, FALSE); - gtk_tree_view_column_set_attributes(column, rend, - "visible", GROUP_EXPANDER_VISIBLE_COLUMN, - "expander-visible", GROUP_EXPANDER_COLUMN, -#if GTK_CHECK_VERSION(2,6,0) - "sensitive", GROUP_EXPANDER_COLUMN, - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - NULL); - - rend = pidgin_cell_renderer_expander_new(); - gtk_tree_view_column_pack_start(column, rend, FALSE); - gtk_tree_view_column_set_attributes(column, rend, - "expander-visible", CONTACT_EXPANDER_COLUMN, -#if GTK_CHECK_VERSION(2,6,0) - "sensitive", CONTACT_EXPANDER_COLUMN, - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - "visible", CONTACT_EXPANDER_VISIBLE_COLUMN, - NULL); - - rend = gtk_cell_renderer_pixbuf_new(); - gtk_tree_view_column_pack_start(column, rend, FALSE); - gtk_tree_view_column_set_attributes(column, rend, - "pixbuf", STATUS_ICON_COLUMN, - "visible", STATUS_ICON_VISIBLE_COLUMN, -#if GTK_CHECK_VERSION(2,6,0) - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - NULL); - g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); - - gtkblist->text_rend = rend = gtk_cell_renderer_text_new(); - gtk_tree_view_column_pack_start (column, rend, TRUE); - gtk_tree_view_column_set_attributes(column, rend, -#if GTK_CHECK_VERSION(2,6,0) - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - "markup", NAME_COLUMN, - NULL); -#if GTK_CHECK_VERSION(2,6,0) - g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL); - g_signal_connect(G_OBJECT(rend), "editing-canceled", G_CALLBACK(gtk_blist_renderer_editing_cancelled_cb), list); -#endif - g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), list); - g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); -#if GTK_CHECK_VERSION(2,6,0) - g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); -#endif - gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column); - - rend = gtk_cell_renderer_text_new(); - g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); - gtk_tree_view_column_pack_start(column, rend, FALSE); - gtk_tree_view_column_set_attributes(column, rend, - "markup", IDLE_COLUMN, - "visible", IDLE_VISIBLE_COLUMN, -#if GTK_CHECK_VERSION(2,6,0) - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - NULL); - - rend = gtk_cell_renderer_pixbuf_new(); - g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL); - gtk_tree_view_column_pack_start(column, rend, FALSE); - gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN, -#if GTK_CHECK_VERSION(2,6,0) - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - "visible", EMBLEM_VISIBLE_COLUMN, NULL); - - rend = gtk_cell_renderer_pixbuf_new(); - gtk_tree_view_column_pack_start(column, rend, FALSE); - gtk_tree_view_column_set_attributes(column, rend, - "pixbuf", PROTOCOL_ICON_COLUMN, - "visible", PROTOCOL_ICON_VISIBLE_COLUMN, -#if GTK_CHECK_VERSION(2,6,0) - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - NULL); - g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL); - - rend = gtk_cell_renderer_pixbuf_new(); - g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); - gtk_tree_view_column_pack_start(column, rend, FALSE); - gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN, -#if GTK_CHECK_VERSION(2,6,0) - "cell-background-gdk", BGCOLOR_COLUMN, -#endif - "visible", BUDDY_ICON_VISIBLE_COLUMN, - NULL); - + /* everything else column */ + gtkblist->text_column = gtk_tree_view_column_new (); + gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->text_column); + pidgin_blist_build_layout(list); g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL); g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL); @@ -5959,7 +6045,7 @@ if (editing_blist) return; - + if (PURPLE_BLIST_NODE_IS_GROUP(node)) gnode = node; else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) @@ -5993,13 +6079,19 @@ GtkTreeIter iter; GtkTreePath *path; gboolean expanded; - GdkColor bgcolor; + GdkColor *bgcolor = NULL; GdkPixbuf *avatar = NULL; + PidginBlistTheme *theme = NULL; if(!insert_node(list, gnode, &iter)) return; - bgcolor = gtkblist->treeview->style->bg[GTK_STATE_ACTIVE]; + if ((theme = pidgin_blist_get_theme()) == NULL) + bgcolor = NULL; + else if (purple_blist_node_get_bool(gnode, "collapsed") || count <= 0) + bgcolor = pidgin_blist_theme_get_collapsed_background_color(theme); + else + bgcolor = pidgin_blist_theme_get_expanded_background_color(theme); path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path); @@ -6017,7 +6109,7 @@ STATUS_ICON_COLUMN, NULL, NAME_COLUMN, title, NODE_COLUMN, gnode, - /* BGCOLOR_COLUMN, &bgcolor, */ + BGCOLOR_COLUMN, bgcolor, GROUP_EXPANDER_COLUMN, TRUE, GROUP_EXPANDER_VISIBLE_COLUMN, TRUE, CONTACT_EXPANDER_VISIBLE_COLUMN, FALSE, @@ -6040,6 +6132,9 @@ char *mark, *esc; PurpleBlistNode *selected_node = NULL; GtkTreeIter iter; + FontColorPair *pair; + gchar *text_color, *text_font; + PidginBlistTheme *theme; group = (PurpleGroup*)gnode; @@ -6055,8 +6150,21 @@ purple_blist_get_group_size(group, FALSE)); } + theme = pidgin_blist_get_theme(); + if (theme == NULL) + pair = NULL; + else if (expanded) + pair = pidgin_blist_theme_get_expanded_text_info(theme); + else + pair = pidgin_blist_theme_get_collapsed_text_info(theme); + + + text_color = (selected || pair == NULL || pair->color == NULL) ? "black" : pair->color; + text_font = (pair == NULL || pair->font == NULL) ? "" : pair->font; + esc = g_markup_escape_text(group->name, -1); - mark = g_strdup_printf("%s%s", esc ? esc : "", group_count); + mark = g_strdup_printf("%s%s", + text_color, text_font, esc ? esc : "", group_count); g_free(esc); return mark; @@ -6064,14 +6172,15 @@ static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *node) { - PurplePresence *presence; + PurplePresence *presence = purple_buddy_get_presence(buddy); GdkPixbuf *status, *avatar, *emblem, *prpl_icon; + GdkColor *color = NULL; char *mark; char *idle = NULL; gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded; gboolean selected = (gtkblist->selected_node == node); gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); - presence = purple_buddy_get_presence(buddy); + PidginBlistTheme *theme; if (editing_blist) return; @@ -6095,35 +6204,39 @@ emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy); mark = pidgin_blist_get_name_markup(buddy, selected, TRUE); + theme = pidgin_blist_get_theme(); + if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time") && - purple_presence_is_idle(presence) && - !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons")) + purple_presence_is_idle(presence) && !biglist) { time_t idle_secs = purple_presence_get_idle_time(presence); if (idle_secs > 0) { + FontColorPair *pair = NULL; + const gchar *textcolor; time_t t; int ihrs, imin; time(&t); + ihrs = (t - idle_secs) / 3600; imin = ((t - idle_secs) / 60) % 60; - idle = g_strdup_printf("%d:%02d", ihrs, imin); - } - } - - if (purple_presence_is_idle(presence)) - { - if (idle && !selected) { - char *i2 = g_strdup_printf("%s", - dim_grey(), idle); - g_free(idle); - idle = i2; + + if (!selected && theme != NULL && (pair = pidgin_blist_theme_get_idle_text_info(theme)) != NULL && pair->color != NULL) + textcolor = pair->color; + else + textcolor = "black"; + + idle = g_strdup_printf("%d:%02d", textcolor, + (pair == NULL || pair->font == NULL) ? "" : pair->font, ihrs, imin); } } prpl_icon = pidgin_create_prpl_icon(buddy->account, PIDGIN_PRPL_ICON_SMALL); + if (theme != NULL) + color = pidgin_blist_theme_get_contact_color(theme); + gtk_tree_store_set(gtkblist->treemodel, iter, STATUS_ICON_COLUMN, status, STATUS_ICON_VISIBLE_COLUMN, TRUE, @@ -6136,7 +6249,7 @@ EMBLEM_VISIBLE_COLUMN, (emblem != NULL), PROTOCOL_ICON_COLUMN, prpl_icon, PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"), - BGCOLOR_COLUMN, NULL, + BGCOLOR_COLUMN, color, CONTACT_EXPANDER_COLUMN, NULL, CONTACT_EXPANDER_VISIBLE_COLUMN, expanded, GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, @@ -6194,19 +6307,41 @@ if(gtknode->contact_expanded) { GdkPixbuf *status; - char *mark; + gchar *mark, *tmp; + const gchar *fg_color, *font; + GdkColor *color = NULL; + PidginBlistTheme *theme = pidgin_blist_get_theme(); + FontColorPair *pair; + gboolean selected = (gtkblist->selected_node == cnode); + + mark = g_markup_escape_text(purple_contact_get_alias(contact), -1); + + theme = pidgin_blist_get_theme(); + if (theme == NULL) + pair = NULL; + else { + pair = pidgin_blist_theme_get_contact_text_info(theme); + color = pidgin_blist_theme_get_contact_color(theme); + } + + font = (pair == NULL || pair->font == NULL) ? "" : pair->font; + fg_color = (selected || pair == NULL || pair->color == NULL) ? "black" : pair->color; + + tmp = g_strdup_printf("%s", + font, fg_color, mark); + g_free(mark); + mark = tmp; status = pidgin_blist_get_status_icon(cnode, biglist? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL); - mark = g_markup_escape_text(purple_contact_get_alias(contact), -1); gtk_tree_store_set(gtkblist->treemodel, &iter, STATUS_ICON_COLUMN, status, STATUS_ICON_VISIBLE_COLUMN, TRUE, NAME_COLUMN, mark, IDLE_COLUMN, NULL, IDLE_VISIBLE_COLUMN, FALSE, - BGCOLOR_COLUMN, NULL, + BGCOLOR_COLUMN, color, BUDDY_ICON_COLUMN, NULL, CONTACT_EXPANDER_COLUMN, TRUE, CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE, @@ -6274,20 +6409,28 @@ if(purple_account_is_connected(chat->account)) { GtkTreeIter iter; GdkPixbuf *status, *avatar, *emblem, *prpl_icon; - char *mark; + const gchar *color, *font; + gchar *mark, *tmp; gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); PidginBlistNode *ui; PurpleConversation *conv; gboolean hidden; + GdkColor *bgcolor = NULL; + FontColorPair *pair; + PidginBlistTheme *theme; + gboolean selected = (gtkblist->selected_node == node); + gboolean nick_said = FALSE; if (!insert_node(list, node, &iter)) return; ui = node->ui_data; conv = ui->conv.conv; - hidden = (conv && (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE) && - pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))); + if (conv && pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))) { + hidden = (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE); + nick_said = (ui->conv.flags & PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK); + } status = pidgin_blist_get_status_icon(node, biglist ? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL); @@ -6300,14 +6443,36 @@ avatar = NULL; mark = g_markup_escape_text(purple_chat_get_name(chat), -1); - if (hidden) { - char *bold = g_strdup_printf("%s", mark); - g_free(mark); - mark = bold; - } + + theme = pidgin_blist_get_theme(); + + if (theme == NULL) + pair = NULL; + else if (nick_said) + pair = pidgin_blist_theme_get_unread_message_nick_said_text_info(theme); + else if (hidden) + pair = pidgin_blist_theme_get_unread_message_text_info(theme); + else pair = pidgin_blist_theme_get_online_text_info(theme); + + + font = (pair == NULL || pair->font == NULL) ? "" : pair->font; + if (selected || pair == NULL || pair->color == NULL) + /* nick_said color is the same as gtkconv:tab-label-attention */ + color = (nick_said ? "#006aff" : "black"); + else + color = pair->color; + + tmp = g_strdup_printf("%s", + font, color, hidden ? "bold" : "normal", mark); + + g_free(mark); + mark = tmp; prpl_icon = pidgin_create_prpl_icon(chat->account, PIDGIN_PRPL_ICON_SMALL); + if (theme != NULL) + bgcolor = pidgin_blist_theme_get_contact_color(theme); + gtk_tree_store_set(gtkblist->treemodel, &iter, STATUS_ICON_COLUMN, status, STATUS_ICON_VISIBLE_COLUMN, TRUE, @@ -6318,6 +6483,7 @@ PROTOCOL_ICON_COLUMN, prpl_icon, PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"), NAME_COLUMN, mark, + BGCOLOR_COLUMN, bgcolor, GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, -1); @@ -6330,6 +6496,7 @@ g_object_unref(avatar); if(prpl_icon) g_object_unref(prpl_icon); + } else { pidgin_blist_hide_node(list, node, TRUE); } @@ -6987,7 +7154,7 @@ data->group_combo = pidgin_text_combo_box_entry_new(group ? group->name : NULL, groups_tree()); pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Group:"), data->sg, data->group_combo, TRUE, NULL); - + data->autojoin = gtk_check_button_new_with_mnemonic(_("Auto_join when account becomes online.")); data->persistent = gtk_check_button_new_with_mnemonic(_("_Remain in chat after window is closed.")); gtk_box_pack_start(GTK_BOX(vbox), data->autojoin, FALSE, FALSE, 0); @@ -7191,6 +7358,34 @@ (GSourceFunc)buddy_signonoff_timeout_cb, buddy); } +void +pidgin_blist_set_theme(PidginBlistTheme *theme) +{ + PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist); + PurpleBuddyList *list = purple_get_blist(); + + if (theme != NULL) + purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme", + purple_theme_get_name(PURPLE_THEME(theme))); + else + purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme", ""); + + priv->current_theme = theme; + + pidgin_blist_build_layout(list); + + pidgin_blist_refresh(list); +} + + +PidginBlistTheme * +pidgin_blist_get_theme() +{ + PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist); + + return priv->current_theme; +} + void pidgin_blist_init(void) { void *gtk_blist_handle = pidgin_blist_get_handle(); @@ -7219,6 +7414,9 @@ /* This pref is used in pidgintooltip.c. */ purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay", 500); #endif + purple_prefs_add_string(PIDGIN_PREFS_ROOT "/blist/theme", ""); + + purple_theme_manager_register_type(g_object_new(PIDGIN_TYPE_BLIST_THEME_LOADER, "type", "blist", NULL)); /* Register our signals */ purple_signal_register(gtk_blist_handle, "gtkblist-hiding", @@ -7493,11 +7691,11 @@ } } -static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter) +static void sort_method_log_activity(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter) { GtkTreeIter more_z; - int log_size = 0, this_log_size = 0; + int activity_score = 0, this_log_activity_score = 0; const char *buddy_name, *this_buddy_name; if(cur && (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter) == 1)) { @@ -7507,8 +7705,11 @@ if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { PurpleBlistNode *n; - for (n = node->child; n; n = n->next) - log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n))->name, ((PurpleBuddy*)(n))->account); + PurpleBuddy *buddy; + for (n = node->child; n; n = n->next) { + buddy = (PurpleBuddy*)n; + activity_score += purple_log_get_activity_score(PURPLE_LOG_IM, buddy->name, buddy->account); + } buddy_name = purple_contact_get_alias((PurpleContact*)node); } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { /* we don't have a reliable way of getting the log filename @@ -7535,16 +7736,19 @@ GValue val; PurpleBlistNode *n; PurpleBlistNode *n2; + PurpleBuddy *buddy; int cmp; val.g_type = 0; gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val); n = g_value_get_pointer(&val); - this_log_size = 0; + this_log_activity_score = 0; if(PURPLE_BLIST_NODE_IS_CONTACT(n)) { - for (n2 = n->child; n2; n2 = n2->next) - this_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n2))->name, ((PurpleBuddy*)(n2))->account); + for (n2 = n->child; n2; n2 = n2->next) { + buddy = (PurpleBuddy*)n2; + this_log_activity_score += purple_log_get_activity_score(PURPLE_LOG_IM, buddy->name, buddy->account); + } this_buddy_name = purple_contact_get_alias((PurpleContact*)n); } else { this_buddy_name = NULL; @@ -7552,8 +7756,8 @@ cmp = purple_utf8_strcasecmp(buddy_name, this_buddy_name); - if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || log_size > this_log_size || - ((log_size == this_log_size) && + if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || activity_score > this_log_activity_score || + ((activity_score == this_log_activity_score) && (cmp < 0 || (cmp == 0 && node < n)))) { if (cur != NULL) { gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkblist.h --- a/pidgin/gtkblist.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkblist.h Mon Mar 02 22:07:59 2009 +0000 @@ -60,6 +60,7 @@ #include "pidgin.h" #include "blist.h" +#include "gtkblist-theme.h" /************************************************************************** * @name Structures @@ -251,6 +252,23 @@ */ void pidgin_blist_add_alert(GtkWidget *widget); +/** + * Sets the current theme for Pidgin to use + * + * @param theme the new theme to use + * + * @since 2.6.0 + */ +void pidgin_blist_set_theme(PidginBlistTheme *theme); + +/** + * Gets Pidgin's current buddy list theme + * + * @returns the current theme + * + * @since 2.6.0 + */ +PidginBlistTheme *pidgin_blist_get_theme(void); /************************************************************************** * @name GTK+ Buddy List sorting functions @@ -382,7 +400,7 @@ * * @param buddy The buddy to return markup from * @param selected Whether this buddy is selected. If TRUE, the markup will not change the color. - * @param aliased TRUE to return the appropriate alias of this buddy, FALSE to return its screenname and status information + * @param aliased TRUE to return the appropriate alias of this buddy, FALSE to return its username and status information * @return The markup for this buddy * * @since 2.1.0 diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkcellrendererexpander.c --- a/pidgin/gtkcellrendererexpander.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkcellrendererexpander.c Mon Mar 02 22:07:59 2009 +0000 @@ -18,14 +18,14 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA * */ -/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by +/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by * Jonathon Blandford for RedHat, Inc. */ @@ -74,14 +74,14 @@ PROP_0, PROP_IS_EXPANDER }; - + static gpointer parent_class; /* static guint expander_cell_renderer_signals [LAST_SIGNAL]; */ GType pidgin_cell_renderer_expander_get_type (void) { static GType cell_expander_type = 0; - + if (!cell_expander_type) { static const GTypeInfo cell_expander_info = @@ -97,13 +97,13 @@ (GInstanceInitFunc) pidgin_cell_renderer_expander_init, NULL /* value_table */ }; - + cell_expander_type = g_type_register_static (GTK_TYPE_CELL_RENDERER, "PidginCellRendererExpander", &cell_expander_info, 0); } - + return cell_expander_type; } @@ -118,17 +118,17 @@ { GObjectClass *object_class = G_OBJECT_CLASS(class); GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class); - + parent_class = g_type_class_peek_parent (class); object_class->finalize = pidgin_cell_renderer_expander_finalize; object_class->get_property = pidgin_cell_renderer_expander_get_property; object_class->set_property = pidgin_cell_renderer_expander_set_property; - + cell_class->get_size = pidgin_cell_renderer_expander_get_size; cell_class->render = pidgin_cell_renderer_expander_render; cell_class->activate = pidgin_cell_renderer_expander_activate; - + g_object_class_install_property (object_class, PROP_IS_EXPANDER, g_param_spec_boolean ("expander-visible", @@ -162,7 +162,7 @@ default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, psec); break; - + } } @@ -199,19 +199,19 @@ { gint calc_width; gint calc_height; - gint expander_size; - + gint expander_size; + gtk_widget_style_get(widget, "expander-size", &expander_size, NULL); - + calc_width = (gint) cell->xpad * 2 + expander_size; calc_height = (gint) cell->ypad * 2 + expander_size; - + if (width) *width = calc_width; - + if (height) *height = calc_height; - + if (cell_area) { if (x_offset) @@ -228,7 +228,7 @@ } -static void pidgin_cell_renderer_expander_render (GtkCellRenderer *cell, +static void pidgin_cell_renderer_expander_render(GtkCellRenderer *cell, GdkWindow *window, GtkWidget *widget, GdkRectangle *background_area, @@ -237,7 +237,7 @@ guint flags) { PidginCellRendererExpander *cellexpander = (PidginCellRendererExpander *) cell; - + gboolean set; gint width, height; GtkStateType state; @@ -246,7 +246,7 @@ width = cell_area->width; height = cell_area->height; - + #if GTK_CHECK_VERSION(2,6,0) if (!cell->sensitive) state = GTK_STATE_INSENSITIVE; @@ -270,8 +270,11 @@ cell_area->x + cell->xpad + (width / 2), cell_area->y + cell->ypad + (height / 2), cell->is_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED); - if (cell->is_expanded) - gtk_paint_hline (widget->style, window, state, NULL, widget, NULL, 0, + + /* only draw the line if the color isn't set - this prevents a bug where the hline appears only under the expander */ + g_object_get(cellexpander, "cell-background-set", &set, NULL); + if (cell->is_expanded && !set) + gtk_paint_hline (widget->style, window, state, NULL, widget, NULL, 0, widget->allocation.width, cell_area->y + cell_area->height); } diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkcellrendererexpander.h --- a/pidgin/gtkcellrendererexpander.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkcellrendererexpander.h Mon Mar 02 22:07:59 2009 +0000 @@ -12,7 +12,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkcellrendererprogress.c --- a/pidgin/gtkcellrendererprogress.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkcellrendererprogress.c Mon Mar 02 22:07:59 2009 +0000 @@ -18,14 +18,14 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA * */ -/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by +/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by * Jonathon Blandford for RedHat, Inc. */ @@ -76,14 +76,14 @@ PROP_TEXT, PROP_SHOW_TEXT }; - + static gpointer parent_class; /* static guint progress_cell_renderer_signals [LAST_SIGNAL]; */ GType pidgin_cell_renderer_progress_get_type (void) { static GType cell_progress_type = 0; - + if (!cell_progress_type) { static const GTypeInfo cell_progress_info = @@ -99,13 +99,13 @@ (GInstanceInitFunc) pidgin_cell_renderer_progress_init, NULL /* value_table */ }; - + cell_progress_type = g_type_register_static (GTK_TYPE_CELL_RENDERER, "PidginCellRendererProgress", &cell_progress_info, 0); } - + return cell_progress_type; } @@ -120,16 +120,16 @@ { GObjectClass *object_class = G_OBJECT_CLASS(class); GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class); - + parent_class = g_type_class_peek_parent (class); object_class->finalize = pidgin_cell_renderer_progress_finalize; object_class->get_property = pidgin_cell_renderer_progress_get_property; object_class->set_property = pidgin_cell_renderer_progress_set_property; - + cell_class->get_size = pidgin_cell_renderer_progress_get_size; cell_class->render = pidgin_cell_renderer_progress_render; - + g_object_class_install_property (object_class, PROP_PERCENTAGE, g_param_spec_double ("percentage", @@ -228,16 +228,16 @@ { gint calc_width; gint calc_height; - + calc_width = (gint) cell->xpad * 2 + 50; calc_height = (gint) cell->ypad * 2 + 12; - + if (width) *width = calc_width; - + if (height) *height = calc_height; - + if (cell_area) { if (x_offset) @@ -263,13 +263,13 @@ guint flags) { PidginCellRendererProgress *cellprogress = (PidginCellRendererProgress *) cell; - + gint width, height; GtkStateType state; width = cell_area->width; height = cell_area->height; - + if (GTK_WIDGET_HAS_FOCUS (widget)) state = GTK_STATE_ACTIVE; else @@ -280,7 +280,7 @@ gtk_paint_box (widget->style, window, - GTK_STATE_NORMAL, GTK_SHADOW_IN, + GTK_STATE_NORMAL, GTK_SHADOW_IN, NULL, widget, "trough", cell_area->x + cell->xpad, cell_area->y + cell->ypad, diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkcellrendererprogress.h --- a/pidgin/gtkcellrendererprogress.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkcellrendererprogress.h Mon Mar 02 22:07:59 2009 +0000 @@ -12,7 +12,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkcellview.c --- a/pidgin/gtkcellview.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkcellview.c Mon Mar 02 22:07:59 2009 +0000 @@ -463,14 +463,14 @@ area = widget->allocation; /* we draw on our very own window, initialize x and y to zero */ - area.x = widget->allocation.x + (rtl ? widget->allocation.width : 0); + area.x = widget->allocation.x + (rtl ? widget->allocation.width : 0); area.y = widget->allocation.y; if (GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT) state = GTK_CELL_RENDERER_PRELIT; else state = 0; - + /* PACK_START */ for (i = cellview->priv->cell_list; i; i = i->next) { @@ -483,7 +483,7 @@ continue; area.width = info->real_width; - if (rtl) + if (rtl) area.x -= area.width; gtk_cell_renderer_render (info->cell, @@ -492,11 +492,11 @@ /* FIXME! */ &area, &area, &event->area, state); - if (!rtl) + if (!rtl) area.x += info->real_width; } - area.x = rtl ? widget->allocation.x : (widget->allocation.x + widget->allocation.width); + area.x = rtl ? widget->allocation.x : (widget->allocation.x + widget->allocation.width); /* PACK_END */ for (i = cellview->priv->cell_list; i; i = i->next) @@ -511,7 +511,7 @@ area.width = info->real_width; if (!rtl) - area.x -= area.width; + area.x -= area.width; gtk_cell_renderer_render (info->cell, widget->window, @@ -550,7 +550,7 @@ GtkTreePath *path; g_return_if_fail (cellview->priv->displayed_row != NULL); - + path = gtk_tree_row_reference_get_path (cellview->priv->displayed_row); gtk_tree_model_get_iter (cellview->priv->model, &iter, path); gtk_tree_path_free (path); @@ -666,7 +666,7 @@ gtk_cell_view_cell_layout_clear_attributes (layout, info->cell); g_object_unref (G_OBJECT (info->cell)); g_free (info); - cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list, + cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list, cellview->priv->cell_list); } } @@ -719,7 +719,7 @@ g_free (list->data); list = list->next->next; } - + g_slist_free (info->attributes); info->attributes = NULL; } @@ -905,7 +905,7 @@ * gtk_cell_view_set_displayed_row: * @cell_view: a #GtkCellView * @path: a #GtkTreePath or %NULL to unset. - * + * * Sets the row of the model that is currently displayed * by the #GtkCellView. If the path is unset, then the * contents of the cellview "stick" at their last value; diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkconv.c Mon Mar 02 22:07:59 2009 +0000 @@ -201,11 +201,11 @@ switch (purple_conversation_get_type(conv)) { case PURPLE_CONV_TYPE_IM: - node = (PurpleBlistNode*)purple_find_buddy(conv->account, conv->name); + node = PURPLE_BLIST_NODE(purple_find_buddy(conv->account, conv->name)); node = node ? node->parent : NULL; break; case PURPLE_CONV_TYPE_CHAT: - node = (PurpleBlistNode*)purple_blist_find_chat(conv->account, conv->name); + node = PURPLE_BLIST_NODE(purple_blist_find_chat(conv->account, conv->name)); break; default: break; @@ -1409,7 +1409,7 @@ if (logging == purple_conversation_is_logging(conv)) return; - + node = get_conversation_blist_node(conv); if (logging) @@ -1849,7 +1849,7 @@ gtk_tree_selection_select_path(GTK_TREE_SELECTION( gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path); gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkchat->list), - path, NULL, FALSE); + path, NULL, FALSE); gtk_widget_grab_focus(GTK_WIDGET(gtkchat->list)); gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); @@ -1881,7 +1881,7 @@ GtkTreeIter iter; GtkTreeModel *model; gchar *who; - + model = gtk_tree_view_get_model(GTK_TREE_VIEW(list)); gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); @@ -2075,7 +2075,7 @@ gtkconv = (PidginConversation *)data; conv = gtkconv->active_conv; win = gtkconv->win; - + if (conv_keypress_common(gtkconv, event)) return TRUE; @@ -2538,7 +2538,7 @@ if (ops && ops->update) ops->update(NULL, (PurpleBlistNode*)b); - /* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */ + /* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */ if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY)) status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, parent, icon_size); else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY)) @@ -2564,7 +2564,7 @@ status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_CHAT, size, "GtkWidget"); } - } + } return status; } @@ -2607,11 +2607,11 @@ gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); - gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), + gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), &(gtkconv->infopane_iter), CONV_ICON_COLUMN, infopane_status, -1); - gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), + gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), &(gtkconv->infopane_iter), CONV_EMBLEM_COLUMN, emblem, -1); if (emblem) @@ -3876,7 +3876,7 @@ { PurpleBlistNode *node; - node = (PurpleBlistNode *) purple_buddy_get_contact((PurpleBuddy *)l->data); + node = PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(l->data))); for (node = node->child; node != NULL; node = node->next) { @@ -4825,7 +4825,7 @@ gtkconv->infopane = gtk_cell_view_new(); gtkconv->infopane_model = gtk_list_store_new(CONV_NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF); - gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane), + gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane), GTK_TREE_MODEL(gtkconv->infopane_model)); g_object_unref(gtkconv->infopane_model); gtk_list_store_append(gtkconv->infopane_model, &(gtkconv->infopane_iter)); @@ -5059,9 +5059,9 @@ static PidginConversation * pidgin_conv_find_gtkconv(PurpleConversation * conv) { - PurpleBuddy *bud = purple_find_buddy(conv->account, conv->name), *b; + PurpleBuddy *bud = purple_find_buddy(conv->account, conv->name); PurpleContact *c; - PurpleBlistNode *cn; + PurpleBlistNode *cn, *bn; if (!bud) return NULL; @@ -5069,8 +5069,9 @@ if (!(c = purple_buddy_get_contact(bud))) return NULL; - cn = (PurpleBlistNode *)c; - for (b = (PurpleBuddy *)cn->child; b; b = (PurpleBuddy *) ((PurpleBlistNode *)b)->next) { + cn = PURPLE_BLIST_NODE(c); + for (bn = purple_blist_node_get_first_child(cn); bn; bn = purple_blist_node_get_sibling_next(bn)) { + PurpleBuddy *b = PURPLE_BUDDY(bn); PurpleConversation *conv; if ((conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, b->account))) { if (conv->ui_data) @@ -5520,7 +5521,7 @@ gtkconv->newday = mktime(tm); } -/* Detect string direction and encapsulate the string in RLE/LRE/PDF unicode characters +/* Detect string direction and encapsulate the string in RLE/LRE/PDF unicode characters str - pointer to string (string is re-allocated and the pointer updated) */ static void str_embed_direction_chars(char **str) @@ -5557,14 +5558,14 @@ } /* Returns true if the given HTML contains RTL text */ -static gboolean +static gboolean html_is_rtl(const char *html) { GData *attributes; const gchar *start, *end; gboolean res = FALSE; - if (purple_markup_find_tag("span", html, &start, &end, &attributes)) + if (purple_markup_find_tag("span", html, &start, &end, &attributes)) { /* tmp is a member of attributes and is free with g_datalist_clear call */ const char *tmp = g_datalist_get_data(&attributes, "dir"); @@ -6492,10 +6493,10 @@ PurpleBuddy *buddy = purple_find_buddy(conv->account, conv->name); window_icon = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); - + if (buddy && !PURPLE_BUDDY_IS_ONLINE(buddy)) gdk_pixbuf_saturate_and_pixelate(window_icon, window_icon, 0.0, FALSE); - + g_object_ref(window_icon); l = g_list_append(l, window_icon); } else { @@ -6688,7 +6689,7 @@ pango_attr_list_unref(list); } else gtk_label_set_attributes(GTK_LABEL(gtkconv->tab_label), NULL); - + if (pidgin_conv_window_is_active_conversation(conv)) update_typing_icon(gtkconv); @@ -7261,7 +7262,7 @@ PurpleConversation *conv = l->data; if (!PIDGIN_CONVERSATION(conv)) continue; - if (GPOINTER_TO_INT(value)) + if (GPOINTER_TO_INT(value)) gtk_widget_show(PIDGIN_CONVERSATION(conv)->infopane_hbox); else gtk_widget_hide(PIDGIN_CONVERSATION(conv)->infopane_hbox); @@ -7671,7 +7672,7 @@ list = purple_conversation_get_message_history(conv); if (list) { switch (purple_conversation_get_type(conv)) { - case PURPLE_CONV_TYPE_IM: + case PURPLE_CONV_TYPE_IM: { GList *convs; list = g_list_copy(list); @@ -8437,7 +8438,7 @@ G_CALLBACK(notebook_leave_cb), gtkconv->win); return FALSE; } - + if (e->button == 3) { /* Right click was pressed. Popup the context menu. */ GtkWidget *menu = gtk_menu_new(), *sub; @@ -8463,7 +8464,7 @@ } return FALSE; } - + static gboolean notebook_press_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win) { @@ -9043,7 +9044,7 @@ static gboolean gtk_conv_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data) { int x, y; - + if (GTK_WIDGET_VISIBLE(w)) gtk_window_get_position(GTK_WINDOW(w), &x, &y); else @@ -9053,7 +9054,7 @@ * when the window is being maximized */ if (gdk_window_get_state(w->window) & GDK_WINDOW_STATE_MAXIMIZED) return FALSE; - + /* don't save off-screen positioning */ if (x + event->width < 0 || y + event->height < 0 || @@ -9069,7 +9070,7 @@ /* continue to handle event normally */ return FALSE; - + } static void @@ -9150,7 +9151,7 @@ /* Intercept keystrokes from the menu items */ g_signal_connect(G_OBJECT(win->window), "key_press_event", G_CALLBACK(window_keypress_cb), win); - + /* Create the notebook. */ win->notebook = gtk_notebook_new(); @@ -9312,7 +9313,7 @@ win->gtkconvs = g_list_append(win->gtkconvs, gtkconv); gtkconv->win = win; - if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL) + if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL) pidgin_conv_tab_pack(win, ((PidginConversation*)win->gtkconvs->data)); @@ -9471,11 +9472,11 @@ gtk_notebook_set_tab_label(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, ebox); } - gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, - !tabs_side && !angle, + gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, + !tabs_side && !angle, TRUE, GTK_PACK_START); - if (pidgin_conv_window_get_gtkconv_count(win) == 1) + if (pidgin_conv_window_get_gtkconv_count(win) == 1) gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs") && (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons") || @@ -9686,7 +9687,7 @@ if (win == NULL) { win = pidgin_conv_window_new(); - g_signal_connect(G_OBJECT(win->window), "configure_event", + g_signal_connect(G_OBJECT(win->window), "configure_event", G_CALLBACK(gtk_conv_configure_cb), NULL); pidgin_conv_window_add_gtkconv(win, conv); @@ -9701,7 +9702,7 @@ conv_placement_last_created_win_type_configured_cb(GtkWidget *w, GdkEventConfigure *event, PidginConversation *conv) { - int x, y; + int x, y; PurpleConversationType type = purple_conversation_get_type(conv->active_conv); GList *all; @@ -9714,7 +9715,7 @@ * when the window is being maximized */ if (gdk_window_get_state(w->window) & GDK_WINDOW_STATE_MAXIMIZED) return FALSE; - + /* don't save off-screen positioning */ if (x + event->width < 0 || y + event->height < 0 || @@ -9768,11 +9769,11 @@ purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/width"), purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/height")); } - + pidgin_conv_window_add_gtkconv(win, conv); pidgin_conv_window_show(win); - g_signal_connect(G_OBJECT(win->window), "configure_event", + g_signal_connect(G_OBJECT(win->window), "configure_event", G_CALLBACK(conv_placement_last_created_win_type_configured_cb), conv); } else pidgin_conv_window_add_gtkconv(win, conv); @@ -9786,7 +9787,7 @@ win = pidgin_conv_window_new(); - g_signal_connect(G_OBJECT(win->window), "configure_event", + g_signal_connect(G_OBJECT(win->window), "configure_event", G_CALLBACK(gtk_conv_configure_cb), NULL); pidgin_conv_window_add_gtkconv(win, conv); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkdebug.c --- a/pidgin/gtkdebug.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkdebug.c Mon Mar 02 22:07:59 2009 +0000 @@ -769,7 +769,7 @@ win->filter = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, _("Filter"), _("Filter"), + NULL, _("Filter"), _("Filter"), NULL, NULL, G_CALLBACK(regex_filter_toggled_cb), win); @@ -821,7 +821,7 @@ GTK_TOOLBAR_CHILD_WIDGET, gtk_label_new(_("Level ")), NULL, _("Select the debug filter level."), NULL, NULL, NULL, NULL); - + win->filterlevel = gtk_combo_box_new_text(); gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_WIDGET, win->filterlevel, diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkdialogs.c --- a/pidgin/gtkdialogs.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkdialogs.c Mon Mar 02 22:07:59 2009 +0000 @@ -100,7 +100,7 @@ /* Order: Alphabetical by Last Name */ static const struct developer patch_writers[] = { - {"Paul Aurich", NULL, NULL }, + {"Paul 'darkrain42' Aurich", NULL, NULL }, {"Marcus 'malu' Lundblad", NULL, NULL}, {"Dennis 'EvilDennisR' Ristuccia", N_("Senior Contributor/QA"), NULL}, {"Peter 'Fmoo' Ruibal", NULL, NULL}, @@ -188,6 +188,7 @@ {N_("Italian"), "it", "Claudio Satriano", "satriano@na.infn.it"}, {N_("Japanese"), "ja", "Takashi Aihana", "aihana@gnome.gr.jp"}, {N_("Georgian"), "ka", N_("Ubuntu Georgian Translators"), "alexander.didebulidze@stusta.mhn.de"}, + {"Khmer", "km", "Khoem Sokhem", "khoemsokhem@khmeros.info"}, {N_("Kannada"), "kn", N_("Kannada Translation team"), "translation@sampada.info"}, {N_("Korean"), "ko", "Sushizang", "sushizang@empal.com"}, {N_("Kurdish"), "ku", "Erdal Ronahi", "erdal.ronahi@gmail.com"}, @@ -349,7 +350,7 @@ } #if 0 -/* This function puts the version number onto the pixmap we use in the 'about' +/* This function puts the version number onto the pixmap we use in the 'about' * screen in Pidgin. */ static void pidgin_logo_versionize(GdkPixbuf **original, GtkWidget *widget) { @@ -492,7 +493,7 @@ _("Retired Crazy Patch Writers")); add_developers(str, retired_patch_writers); g_string_append(str, "
"); - + /* Current Translators */ g_string_append_printf(str, "%s:
", _("Current Translators")); @@ -1066,8 +1067,8 @@ g_return_if_fail(contact != NULL); g_return_if_fail(buddy != NULL); - if (((PurpleBlistNode*)contact)->child == (PurpleBlistNode*)buddy && - !((PurpleBlistNode*)buddy)->next) { + if (PURPLE_BLIST_NODE(contact)->child == PURPLE_BLIST_NODE(buddy) && + PURPLE_BLIST_NODE(buddy)->next == NULL) { pidgin_dialogs_remove_buddy(buddy); } else { gchar *text; @@ -1121,7 +1122,7 @@ ggp = g_new(struct _PidginGroupMergeObject, 1); ggp->parent = source; ggp->new_name = g_strdup(new_name); - + purple_request_action(source, NULL, _("Merge Groups"), text, 0, NULL, NULL, NULL, ggp, 2, diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkdnd-hints.c --- a/pidgin/gtkdnd-hints.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkdnd-hints.c Mon Mar 02 22:07:59 2009 +0000 @@ -46,7 +46,7 @@ /** * Info about each hint widget. See DndHintWindowId enum. */ -static HintWindowInfo hint_windows[] = { +static HintWindowInfo hint_windows[] = { { NULL, "arrow-up.xpm", -13/2, 0 }, { NULL, "arrow-down.xpm", -13/2, -16 }, { NULL, "arrow-left.xpm", 0, -13/2 }, @@ -139,7 +139,7 @@ dnd_hints_hide(i); } -void +void dnd_hints_hide(DndHintWindowId i) { GtkWidget *w = hint_windows[i].widget; @@ -148,7 +148,7 @@ gtk_widget_hide(w); } -void +void dnd_hints_show(DndHintWindowId id, gint x, gint y) { GtkWidget *w; @@ -165,7 +165,7 @@ } } -void +void dnd_hints_show_relative(DndHintWindowId id, GtkWidget *widget, DndHintPosition horiz, DndHintPosition vert) { diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkdocklet-x11.c --- a/pidgin/gtkdocklet-x11.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkdocklet-x11.c Mon Mar 02 22:07:59 2009 +0000 @@ -5,7 +5,7 @@ * Copyright (C) 2003 Herman Bloggs * Inspired by a similar plugin by: * John (J5) Palmieri - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the @@ -15,7 +15,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -59,7 +59,7 @@ docklet_x11_embedded_cb(GtkWidget *widget, void *data) { purple_debug(PURPLE_DEBUG_INFO, "docklet", "embedded\n"); - + g_source_remove(embed_timeout); embed_timeout = 0; pidgin_docklet_embedded(); @@ -211,9 +211,9 @@ if (embed_timeout) g_source_remove(embed_timeout); - + pidgin_docklet_remove(); - + g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_x11_destroyed_cb), NULL); gtk_widget_destroy(GTK_WIDGET(docklet)); @@ -239,7 +239,7 @@ */ purple_debug_info("docklet", "failed to embed within timeout\n"); pidgin_docklet_remove(); - + return FALSE; } diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkdocklet.h --- a/pidgin/gtkdocklet.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkdocklet.h Mon Mar 02 22:07:59 2009 +0000 @@ -1,11 +1,11 @@ -/* +/* * System tray icon (aka docklet) plugin for Purple - * + * * Copyright (C) 2002-3 Robert McQueen * Copyright (C) 2003 Herman Bloggs * Inspired by a similar plugin by: * John (J5) Palmieri - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the @@ -15,7 +15,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkexpander.c --- a/pidgin/gtkexpander.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkexpander.c Mon Mar 02 22:07:59 2009 +0000 @@ -63,7 +63,7 @@ guint expanded : 1; guint use_underline : 1; - guint use_markup : 1; + guint use_markup : 1; guint button_down : 1; guint prelight : 1; }; @@ -129,7 +129,7 @@ gtk_expander_get_type (void) { static GType expander_type = 0; - + if (!expander_type) { static const GTypeInfo expander_info = @@ -144,12 +144,12 @@ 0, /* n_preallocs */ (GInstanceInitFunc) gtk_expander_init, }; - + expander_type = g_type_register_static (GTK_TYPE_BIN, "GtkExpander", &expander_info, 0); } - + return expander_type; } @@ -314,7 +314,7 @@ GParamSpec *pspec) { GtkExpander *expander = GTK_EXPANDER (object); - + switch (prop_id) { case PROP_EXPANDED: @@ -382,7 +382,7 @@ gtk_expander_destroy (GtkObject *object) { GtkExpanderPrivate *priv = GTK_EXPANDER (object)->priv; - + if (priv->animation_timeout) { g_source_remove (priv->animation_timeout); @@ -407,7 +407,7 @@ border_width = GTK_CONTAINER (widget)->border_width; get_expander_bounds (GTK_EXPANDER (widget), &expander_rect); - + attributes.window_type = GDK_WINDOW_CHILD; attributes.x = widget->allocation.x + border_width; attributes.y = expander_rect.y; @@ -831,7 +831,7 @@ NULL); ltr = gtk_widget_get_direction (widget) != GTK_TEXT_DIR_RTL; - + x = widget->allocation.x + border_width; y = widget->allocation.y + border_width; @@ -853,7 +853,7 @@ width += expander_size + 2 * expander_spacing; height = MAX (height, expander_size + 2 * expander_spacing); } - + width += 2 * focus_pad + 2 * focus_width; height += 2 * focus_pad + 2 * focus_width; @@ -1115,16 +1115,16 @@ GtkDirectionType direction) { GtkExpander *expander = GTK_EXPANDER (widget); - + if (!focus_current_site (expander, direction)) { GtkWidget *old_focus_child; gboolean widget_is_focus; FocusSite site = FOCUS_NONE; - + widget_is_focus = gtk_widget_is_focus (widget); old_focus_child = GTK_CONTAINER (widget)->focus_child; - + if (old_focus_child && old_focus_child == expander->priv->label_widget) site = FOCUS_LABEL; else if (old_focus_child) @@ -1192,9 +1192,9 @@ /** * gtk_expander_new: * @label: the text of the label - * + * * Creates a new expander using @label as the text of the label. - * + * * Return value: a new #GtkExpander widget. * * Since: 2.4 @@ -1209,14 +1209,14 @@ * gtk_expander_new_with_mnemonic: * @label: the text of the label with an underscore in front of the * mnemonic character - * + * * Creates a new expander using @label as the text of the label. * If characters in @label are preceded by an underscore, they are underlined. - * If you need a literal underscore character in a label, use '__' (two - * underscores). The first underlined character represents a keyboard + * If you need a literal underscore character in a label, use '__' (two + * underscores). The first underlined character represents a keyboard * accelerator called a mnemonic. * Pressing Alt and that key activates the button. - * + * * Return value: a new #GtkExpander widget. * * Since: 2.4 @@ -1328,7 +1328,7 @@ { gtk_expander_start_animation (expander); } - else + else { priv->expander_style = expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED; @@ -1643,7 +1643,7 @@ * gtk_expander_set_label_widget(). * * Return value: the label widget, or %NULL if there is none. - * + * * Since: 2.4 **/ GtkWidget * diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkicon-theme-loader.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkicon-theme-loader.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,111 @@ +/* + * PidginIconThemeLoader for Pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "gtkicon-theme-loader.h" +#include "gtkstatus-icon-theme.h" + +#include "xmlnode.h" + +/***************************************************************************** + * Icon Theme Builder + *****************************************************************************/ + +static PurpleTheme * +pidgin_icon_loader_build(const gchar *dir) +{ + xmlnode *root_node = NULL, *sub_node; + gchar *filename_full, *data; + PidginIconTheme *theme = NULL; + + /* Find the theme file */ + g_return_val_if_fail(dir != NULL, NULL); + filename_full = g_build_filename(dir, "theme.xml", NULL); + + if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR)) + root_node = xmlnode_from_file(dir, "theme.xml", "sound themes", "sound-theme-loader"); + + g_free(filename_full); + g_return_val_if_fail(root_node != NULL, NULL); + + /* Parse the tree */ + sub_node = xmlnode_get_child(root_node, "description"); + data = xmlnode_get_data(sub_node); + + if (xmlnode_get_attrib(root_node, "name") != NULL) { + theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME, + "type", "status-icon", + "name", xmlnode_get_attrib(root_node, "name"), + "author", xmlnode_get_attrib(root_node, "author"), + "image", xmlnode_get_attrib(root_node, "image"), + "directory", dir, + "description", data, NULL); + + sub_node = xmlnode_get_child(root_node, "icon"); + + while (sub_node) { + pidgin_icon_theme_set_icon(theme, + xmlnode_get_attrib(sub_node, "id"), + xmlnode_get_attrib(sub_node, "file")); + sub_node = xmlnode_get_next_twin(sub_node); + } + } + + xmlnode_free(root_node); + g_free(data); + return PURPLE_THEME(theme); +} + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +pidgin_icon_theme_loader_class_init (PidginIconThemeLoaderClass *klass) +{ + PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass); + + loader_klass->purple_theme_loader_build = pidgin_icon_loader_build; +} + + +GType +pidgin_icon_theme_loader_get_type (void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PidginIconThemeLoaderClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)pidgin_icon_theme_loader_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (PidginIconThemeLoader), + 0, /* n_preallocs */ + NULL, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static (PURPLE_TYPE_THEME_LOADER, + "PidginIconThemeLoader", &info, 0); + } + return type; +} diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkicon-theme-loader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkicon-theme-loader.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,71 @@ +/** + * @file gtkicon-loader.h Pidgin Icon Theme Loader Class API + */ + +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PIDGIN_ICON_THEME_LOADER_H +#define PIDGIN_ICON_THEME_LOADER_H + +#include +#include +#include "theme-loader.h" + +/** + * A pidgin icon theme loader. Extends PurpleThemeLoader (theme-loader.h) + * This is a class designed to build icon themes + * + * PidginIconThemeLoader is a GObject. + */ +typedef struct _PidginIconThemeLoader PidginIconThemeLoader; +typedef struct _PidginIconThemeLoaderClass PidginIconThemeLoaderClass; + +#define PIDGIN_TYPE_ICON_THEME_LOADER (pidgin_icon_theme_loader_get_type ()) +#define PIDGIN_ICON_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoader)) +#define PIDGIN_ICON_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoaderClass)) +#define PIDGIN_IS_ICON_THEME_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_ICON_THEME_LOADER)) +#define PIDGIN_IS_ICON_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_ICON_THEME_LOADER)) +#define PIDGIN_ICON_THEME_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoaderClass)) + +struct _PidginIconThemeLoader +{ + PurpleThemeLoader parent; +}; + +struct _PidginIconThemeLoaderClass +{ + PurpleThemeLoaderClass parent_class; +}; + +/**************************************************************************/ +/** @name Pidgin Icon Theme-Loader API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType pidgin_icon_theme_loader_get_type(void); + +G_END_DECLS +#endif /* PIDGIN_ICON_THEME_LOADER_H */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkicon-theme.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkicon-theme.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,142 @@ +/* + * Icon Themes for Pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "gtkicon-theme.h" +#include "pidginstock.h" + +#include + +#define PIDGIN_ICON_THEME_GET_PRIVATE(Gobject) \ + ((PidginIconThemePrivate *) ((PIDGIN_ICON_THEME(Gobject))->priv)) + +/****************************************************************************** + * Structs + *****************************************************************************/ + +typedef struct { + /* used to store filenames of diffrent icons */ + GHashTable *icon_files; +} PidginIconThemePrivate; + +/****************************************************************************** + * Globals + *****************************************************************************/ + +static GObjectClass *parent_class = NULL; + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +pidgin_icon_theme_init(GTypeInstance *instance, + gpointer klass) +{ + PidginIconThemePrivate *priv; + + (PIDGIN_ICON_THEME(instance))->priv = g_new0(PidginIconThemePrivate, 1); + + priv = PIDGIN_ICON_THEME_GET_PRIVATE(instance); + + priv->icon_files = g_hash_table_new_full(g_str_hash, + g_str_equal, g_free, g_free); +} + +static void +pidgin_icon_theme_finalize(GObject *obj) +{ + PidginIconThemePrivate *priv; + + priv = PIDGIN_ICON_THEME_GET_PRIVATE(obj); + + g_hash_table_destroy(priv->icon_files); + g_free(priv); + + parent_class->finalize(obj); +} + +static void +pidgin_icon_theme_class_init(PidginIconThemeClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + + parent_class = g_type_class_peek_parent(klass); + + obj_class->finalize = pidgin_icon_theme_finalize; +} + +GType +pidgin_icon_theme_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof(PidginIconThemeClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)pidgin_icon_theme_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(PidginIconTheme), + 0, /* n_preallocs */ + pidgin_icon_theme_init, /* instance_init */ + NULL, /* value table */ + }; + type = g_type_register_static(PURPLE_TYPE_THEME, + "PidginIconTheme", &info, G_TYPE_FLAG_ABSTRACT); + } + return type; +} + +/***************************************************************************** + * Public API functions + *****************************************************************************/ + +const gchar * +pidgin_icon_theme_get_icon(PidginIconTheme *theme, + const gchar *id) +{ + PidginIconThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_ICON_THEME(theme), NULL); + + priv = PIDGIN_ICON_THEME_GET_PRIVATE(theme); + + return g_hash_table_lookup(priv->icon_files, id); +} + +void +pidgin_icon_theme_set_icon(PidginIconTheme *theme, + const gchar *id, + const gchar *filename) +{ + PidginIconThemePrivate *priv; + g_return_if_fail(PIDGIN_IS_ICON_THEME(theme)); + + priv = PIDGIN_ICON_THEME_GET_PRIVATE(theme); + + if (filename != NULL) + g_hash_table_replace(priv->icon_files, + g_strdup(id), g_strdup(filename)); + else + g_hash_table_remove(priv->icon_files, id); +} diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkicon-theme.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkicon-theme.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,93 @@ +/** + * @file icon-theme.h Pidgin Icon Theme Class API + */ + +/* pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PIDGIN_ICON_THEME_H +#define PIDGIN_ICON_THEME_H + +#include +#include +#include "theme.h" + +/** + * extends PurpleTheme (theme.h) + * A pidgin icon theme. + * This object represents a Pidgin icon theme. + * + * PidginIconTheme is a PurpleTheme Object. + */ +typedef struct _PidginIconTheme PidginIconTheme; +typedef struct _PidginIconThemeClass PidginIconThemeClass; + +#define PIDGIN_TYPE_ICON_THEME (pidgin_icon_theme_get_type ()) +#define PIDGIN_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_ICON_THEME, PidginIconTheme)) +#define PIDGIN_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_ICON_THEME, PidginIconThemeClass)) +#define PIDGIN_IS_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_ICON_THEME)) +#define PIDGIN_IS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_ICON_THEME)) +#define PIDGIN_ICON_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_ICON_THEME, PidginIconThemeClass)) + +struct _PidginIconTheme +{ + PurpleTheme parent; + gpointer priv; +}; + +struct _PidginIconThemeClass +{ + PurpleThemeClass parent_class; +}; + +/**************************************************************************/ +/** @name Pidgin Icon Theme API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType pidgin_icon_theme_get_type(void); + +/** + * Returns a copy of the filename for the icon event or NULL if it is not set + * + * @param event the pidgin icon event to look up + * + * @returns the filename of the icon event + */ +const gchar *pidgin_icon_theme_get_icon(PidginIconTheme *theme, + const gchar *event); + +/** + * Sets the filename for a given icon id, setting the icon to NULL will remove the icon from the theme + * + * @param icon_id a string representing what the icon is to be used for + * @param filename the name of the file to be used for the given id + */ +void pidgin_icon_theme_set_icon(PidginIconTheme *theme, + const gchar *icon_id, + const gchar *filename); + +G_END_DECLS +#endif /* PIDGIN_ICON_THEME_H */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkimhtml.c --- a/pidgin/gtkimhtml.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkimhtml.c Mon Mar 02 22:07:59 2009 +0000 @@ -88,6 +88,22 @@ GtkTextMark *mark; }; +struct _GtkIMHtmlLink +{ + GtkIMHtml *imhtml; + gchar *url; + GtkTextTag *tag; +}; + +typedef struct _GtkIMHtmlProtocol +{ + char *name; + int length; + + gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link); + gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu); +} GtkIMHtmlProtocol; + static gboolean gtk_text_view_drag_motion (GtkWidget *widget, GdkDragContext *context, @@ -115,6 +131,9 @@ static void imhtml_font_grow(GtkIMHtml *imhtml); static void imhtml_font_shrink(GtkIMHtml *imhtml); static void imhtml_clear_formatting(GtkIMHtml *imhtml); +static int gtk_imhtml_is_protocol(const char *text); +static void gtk_imhtml_activate_tag(GtkIMHtml *imhtml, GtkTextTag *tag); +static void gtk_imhtml_link_destroy(GtkIMHtmlLink *link); /* POINT_SIZE converts from AIM font sizes to a point size scale factor. */ #define MAX_FONT_SIZE 7 @@ -349,7 +368,7 @@ g_string_free (t->values, TRUE); g_free (t->children); } - + g_free (t); } } @@ -819,7 +838,7 @@ &tag_area.x, &tag_area.y); - + rect.height = tag_area.y + tag_area.height - rect.y + gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(widget)) + gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(widget)); @@ -1106,8 +1125,8 @@ GtkTextIter iter; GtkIMHtmlOptions flags = plaintext ? GTK_IMHTML_NO_SMILEY : (GTK_IMHTML_NO_NEWLINE | GTK_IMHTML_NO_COMMENTS); - if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL)) - gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE); + /* Delete any currently selected text */ + gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE); gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, gtk_text_buffer_get_insert(imhtml->text_buffer)); if (!imhtml->wbfo && !plaintext) @@ -1391,6 +1410,38 @@ } +static GtkIMHtmlProtocol * +imhtml_find_protocol(const char *url, gboolean reverse) +{ + GtkIMHtmlClass *klass; + GList *iter; + GtkIMHtmlProtocol *proto = NULL; + int length = reverse ? strlen(url) : -1; + + klass = g_type_class_ref(GTK_TYPE_IMHTML); + for (iter = klass->protocols; iter; iter = iter->next) { + proto = iter->data; + if (g_ascii_strncasecmp(url, proto->name, reverse ? MIN(length, proto->length) : proto->length) == 0) { + return proto; + } + } + return NULL; +} + +static void +imhtml_url_clicked(GtkIMHtml *imhtml, const char *url) +{ + GtkIMHtmlProtocol *proto = imhtml_find_protocol(url, FALSE); + GtkIMHtmlLink *link; + if (!proto) + return; + link = g_new0(GtkIMHtmlLink, 1); + link->imhtml = g_object_ref(imhtml); + link->url = g_strdup(url); + proto->activate(imhtml, link); /* XXX: Do something with the return value? */ + gtk_imhtml_link_destroy(link); +} + /* Boring GTK+ stuff */ static void gtk_imhtml_class_init (GtkIMHtmlClass *klass) { @@ -1475,6 +1526,7 @@ klass->toggle_format = imhtml_toggle_format; klass->message_send = imhtml_message_send; klass->clear_format = imhtml_clear_formatting; + klass->url_clicked = imhtml_url_clicked; klass->undo = gtk_imhtml_undo; klass->redo = gtk_imhtml_redo; @@ -1688,37 +1740,14 @@ return imhtml_type; } -struct url_data { - GObject *object; - gchar *url; - GtkTextTag *tag; -}; - -static void url_data_destroy(gpointer mydata) -{ - struct url_data *data = mydata; - g_object_unref(data->object); - g_object_unref(data->tag); - g_free(data->url); - g_free(data); -} - -static void url_open(GtkWidget *w, struct url_data *data) -{ - if(!data) return; - g_signal_emit(data->object, signals[URL_CLICKED], 0, data->url); - g_object_set_data(G_OBJECT(data->tag), "visited", GINT_TO_POINTER(TRUE)); - gtk_imhtml_set_link_color(GTK_IMHTML(data->object), data->tag); -} - -static void url_copy(GtkWidget *w, gchar *url) { - GtkClipboard *clipboard; - - clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY); - gtk_clipboard_set_text(clipboard, url, -1); - - clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD); - gtk_clipboard_set_text(clipboard, url, -1); +static void gtk_imhtml_link_destroy(GtkIMHtmlLink *link) +{ + if (link->imhtml) + g_object_unref(link->imhtml); + if (link->tag) + g_object_unref(link->tag); + g_free(link->url); + g_free(link); } /* The callback for an event on a link tag. */ @@ -1734,21 +1763,16 @@ if (gtk_text_buffer_get_selection_bounds( gtk_text_iter_get_buffer(arg2), &start, &end)) return FALSE; - - /* A link was clicked--we emit the "url_clicked" signal - * with the URL as the argument */ - g_object_ref(G_OBJECT(tag)); - g_signal_emit(imhtml, signals[URL_CLICKED], 0, g_object_get_data(G_OBJECT(tag), "link_url")); - g_object_unref(G_OBJECT(tag)); - g_object_set_data(G_OBJECT(tag), "visited", GINT_TO_POINTER(TRUE)); - gtk_imhtml_set_link_color(GTK_IMHTML(imhtml), tag); + gtk_imhtml_activate_tag(GTK_IMHTML(imhtml), tag); return FALSE; } else if(event_button->button == 3) { - GtkWidget *img, *item, *menu; - struct url_data *tempdata = g_new(struct url_data, 1); - tempdata->object = g_object_ref(imhtml); - tempdata->url = g_strdup(g_object_get_data(G_OBJECT(tag), "link_url")); - tempdata->tag = g_object_ref(tag); + GList *children; + GtkWidget *menu; + GtkIMHtmlProtocol *proto; + GtkIMHtmlLink *link = g_new(GtkIMHtmlLink, 1); + link->imhtml = g_object_ref(imhtml); + link->url = g_strdup(g_object_get_data(G_OBJECT(tag), "link_url")); + link->tag = g_object_ref(tag); /* Don't want the tooltip around if user right-clicked on link */ if (GTK_IMHTML(imhtml)->tip_window) { @@ -1764,43 +1788,23 @@ else gdk_window_set_cursor(event_button->window, GTK_IMHTML(imhtml)->arrow_cursor); menu = gtk_menu_new(); - g_object_set_data_full(G_OBJECT(menu), "x-imhtml-url-data", tempdata, url_data_destroy); - - /* buttons and such */ - - if (!strncmp(tempdata->url, "mailto:", 7)) - { - /* Copy Email Address */ - img = gtk_image_new_from_stock(GTK_STOCK_COPY, - GTK_ICON_SIZE_MENU); - item = gtk_image_menu_item_new_with_mnemonic( - _("_Copy Email Address")); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); - g_signal_connect(G_OBJECT(item), "activate", - G_CALLBACK(url_copy), tempdata->url + 7); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + g_object_set_data_full(G_OBJECT(menu), "x-imhtml-url-data", link, + (GDestroyNotify)gtk_imhtml_link_destroy); + + proto = imhtml_find_protocol(link->url, FALSE); + + if (proto && proto->context_menu) { + proto->context_menu(GTK_IMHTML(link->imhtml), link, menu); } - else - { - /* Open Link in Browser */ - img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, - GTK_ICON_SIZE_MENU); - item = gtk_image_menu_item_new_with_mnemonic( - _("_Open Link in Browser")); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); - g_signal_connect(G_OBJECT(item), "activate", - G_CALLBACK(url_open), tempdata); + + children = gtk_container_get_children(GTK_CONTAINER(menu)); + if (!children) { + GtkWidget *item = gtk_menu_item_new_with_label(_("No actions available")); + gtk_widget_show(item); + gtk_widget_set_sensitive(item, FALSE); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - - /* Copy Link Location */ - img = gtk_image_new_from_stock(GTK_STOCK_COPY, - GTK_ICON_SIZE_MENU); - item = gtk_image_menu_item_new_with_mnemonic( - _("_Copy Link Location")); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); - g_signal_connect(G_OBJECT(item), "activate", - G_CALLBACK(url_copy), tempdata->url); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + } else { + g_list_free(children); } @@ -1884,10 +1888,7 @@ links = g_strsplit((char *)sd->data, "\n", 0); while((link = links[i]) != NULL){ - if(purple_str_has_prefix(link, "http://") || - purple_str_has_prefix(link, "https://") || - purple_str_has_prefix(link, "ftp://")) - { + if (gtk_imhtml_is_protocol(link)) { gchar *label; if(links[i + 1]) @@ -1896,7 +1897,7 @@ label = links[i]; gtk_imhtml_insert_link(imhtml, mark, link, label); - } else if (link=='\0') { + } else if (*link == '\0') { /* Ignore blank lines */ } else { /* Special reasons, aka images being put in via other tag, etc. */ @@ -2067,7 +2068,7 @@ { if (smiley->imhtml) { gtk_smiley_tree_remove(smiley->imhtml->default_smilies, smiley); - g_hash_table_foreach(smiley->imhtml->smiley_data, + g_hash_table_foreach(smiley->imhtml->smiley_data, gtk_imhtml_disassociate_smiley_foreach, smiley); g_signal_handlers_disconnect_matched(smiley->imhtml, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, smiley); @@ -2096,13 +2097,13 @@ g_signal_handlers_disconnect_matched(smiley->imhtml, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, smiley); } - + smiley->imhtml = imhtml; gtk_smiley_tree_insert (tree, smiley); - + /* connect destroy signal for the imhtml */ - g_signal_connect(imhtml, "destroy", G_CALLBACK(gtk_imhtml_disconnect_smiley), + g_signal_connect(imhtml, "destroy", G_CALLBACK(gtk_imhtml_disconnect_smiley), smiley); } @@ -2198,14 +2199,17 @@ return gtk_smiley_get_image(smiley); } -#define VALID_TAG(x) if (!g_ascii_strncasecmp (string, x ">", strlen (x ">"))) { \ - *tag = g_strndup (string, strlen (x)); \ - *len = strlen (x) + 1; \ +#define VALID_TAG(x) do { \ + if (!g_ascii_strncasecmp (string, x ">", strlen (x ">"))) { \ + if (tag) *tag = g_strndup (string, strlen (x)); \ + if (len) *len = strlen (x) + 1; \ return TRUE; \ } \ - (*type)++ - -#define VALID_OPT_TAG(x) if (!g_ascii_strncasecmp (string, x " ", strlen (x " "))) { \ + if (type) (*type)++; \ + } while (0) + +#define VALID_OPT_TAG(x) do { \ + if (!g_ascii_strncasecmp (string, x " ", strlen (x " "))) { \ const gchar *c = string + strlen (x " "); \ gchar e = '"'; \ gboolean quote = FALSE; \ @@ -2222,12 +2226,13 @@ c++; \ } \ if (*c) { \ - *tag = g_strndup (string, c - string); \ - *len = c - string + 1; \ + if (tag) *tag = g_strndup (string, c - string); \ + if (len) *len = c - string + 1; \ return TRUE; \ } \ } \ - (*type)++ + if (type) (*type)++; \ + } while (0) static gboolean @@ -2237,8 +2242,8 @@ gint *type) { char *close; - *type = 1; - + if (type) + *type = 1; if (!(close = strchr (string, '>'))) return FALSE; @@ -2311,15 +2316,20 @@ if (!g_ascii_strncasecmp(string, "!--", strlen ("!--"))) { gchar *e = strstr (string + strlen("!--"), "-->"); if (e) { - *len = e - string + strlen ("-->"); - *tag = g_strndup (string + strlen ("!--"), *len - strlen ("!---->")); + if (len) + *len = e - string + strlen ("-->"); + if (tag) + *tag = g_strndup (string + strlen ("!--"), *len - strlen ("!---->")); return TRUE; } } - *type = -1; - *len = close - string + 1; - *tag = g_strndup(string, *len - 1); + if (type) + *type = -1; + if (len) + *len = close - string + 1; + if (tag) + *tag = g_strndup(string, *len - 1); return TRUE; } @@ -2382,26 +2392,12 @@ return g_string_free(ret, FALSE); } -static const char *accepted_protocols[] = { - "http://", - "https://", - "ftp://" -}; - -static const int accepted_protocols_size = 3; - /* returns if the beginning of the text is a protocol. If it is the protocol, returns the length so the caller knows how long the protocol string is. */ static int gtk_imhtml_is_protocol(const char *text) { - gint i; - - for(i=0; ilength : 0; } /* @@ -2606,7 +2602,7 @@ count++; } - + g_free(in_color); return g_strdup_printf("#%02X%02X%02X", rgbval[0], rgbval[1], rgbval[2]); } @@ -2655,7 +2651,7 @@ c = text; len = strlen(text); ws = g_malloc(len + 1); - ws[0] = 0; + ws[0] = '\0'; gtk_text_buffer_begin_user_action(imhtml->text_buffer); while (pos < len) { @@ -3307,8 +3303,7 @@ ws[wpos] = '\n'; wpos++; gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos); - ws[0] = '\0'; - wpos = 0; + ws[0] = '\0'; wpos = 0; /* NEW_BIT (NEW_TEXT_BIT); */ } else if (!br) { /* Don't insert a space immediately after an HTML break */ /* A newline is defined by HTML as whitespace, which means we have to replace it with a word boundary. @@ -3319,19 +3314,43 @@ ws[wpos] = ' '; wpos++; gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos); - ws[0] = '\0'; - wpos = 0; + ws[0] = '\0'; wpos = 0; } c++; pos++; - } else if ((len_protocol = gtk_imhtml_is_protocol(c)) > 0){ + } else if ((pos == 0 || wpos == 0 || isspace(*(c - 1))) && + (len_protocol = gtk_imhtml_is_protocol(c)) > 0 && + c[len_protocol] && !isspace(c[len_protocol])) { br = FALSE; - while(len_protocol--){ - /* Skip the next len_protocol characters, but make sure they're - copied into the ws array. - */ - ws [wpos++] = *c++; - pos++; + if (wpos > 0) { + gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos); + ws[0] = '\0'; wpos = 0; + } + while (len_protocol--) { + /* Skip the next len_protocol characters, but + * make sure they're copied into the ws array. + */ + ws [wpos++] = *c++; + pos++; + } + if (!imhtml->edit.link && (imhtml->format_functions & GTK_IMHTML_LINK)) { + while (*c && !isspace((int)*c) && + (*c != '<' || !gtk_imhtml_is_tag(c + 1, NULL, NULL, NULL))) { + if (*c == '&' && (amp = purple_markup_unescape_entity(c, &tlen))) { + while (*amp) + ws[wpos++] = *amp++; + c += tlen; + pos += tlen; + } else { + ws [wpos++] = *c++; + pos++; + } + } + ws[wpos] = '\0'; + gtk_imhtml_toggle_link(imhtml, ws); + gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos); + ws[0] = '\0'; wpos = 0; + gtk_imhtml_toggle_link(imhtml, NULL); } } else if (*c) { br = FALSE; @@ -3355,7 +3374,7 @@ ws[wpos++] = 0xE2; ws[wpos++] = 0x80; ws[wpos++] = 0x8F; - + if (!rtl_direction) { /* insert LRM character to set direction */ @@ -3368,8 +3387,7 @@ ws[wpos] = '\0'; gtk_text_buffer_insert(imhtml->text_buffer, &line_iter, ws, wpos); gtk_text_buffer_get_end_iter(gtk_text_iter_get_buffer(&line_iter), iter); - ws[0] = '\0'; - wpos = 0; + ws[0] = '\0'; wpos = 0; } while (fonts) { @@ -4885,8 +4903,8 @@ { GtkTextIter iter; - if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL)) - gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE); + /* Delete any currently selected text */ + gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE); gtk_imhtml_toggle_link(imhtml, url); gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, mark); @@ -4899,8 +4917,8 @@ GtkTextMark *mark; GtkTextIter iter; - if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL)) - gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE); + /* Delete any currently selected text */ + gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE); mark = gtk_text_buffer_get_insert(imhtml->text_buffer); @@ -5753,3 +5771,111 @@ g_free(smiley); } +gboolean gtk_imhtml_class_register_protocol(const char *name, + gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link), + gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)) +{ + GtkIMHtmlClass *klass; + GtkIMHtmlProtocol *proto; + + g_return_val_if_fail(name, FALSE); + + klass = g_type_class_ref(GTK_TYPE_IMHTML); + g_return_val_if_fail(klass, FALSE); + + if ((proto = imhtml_find_protocol(name, TRUE))) { + if (activate) { + return FALSE; + } + g_free(proto->name); + g_free(proto); + klass->protocols = g_list_remove(klass->protocols, proto); + return TRUE; + } else if (!activate) { + return FALSE; + } + + proto = g_new0(GtkIMHtmlProtocol, 1); + proto->name = g_strdup(name); + proto->length = strlen(name); + proto->activate = activate; + proto->context_menu = context_menu; + klass->protocols = g_list_prepend(klass->protocols, proto); + + return TRUE; +} + +static void +gtk_imhtml_activate_tag(GtkIMHtml *imhtml, GtkTextTag *tag) +{ + /* A link was clicked--we emit the "url_clicked" signal + * with the URL as the argument */ + g_object_ref(G_OBJECT(tag)); + g_signal_emit(imhtml, signals[URL_CLICKED], 0, g_object_get_data(G_OBJECT(tag), "link_url")); + g_object_unref(G_OBJECT(tag)); + g_object_set_data(G_OBJECT(tag), "visited", GINT_TO_POINTER(TRUE)); + gtk_imhtml_set_link_color(GTK_IMHTML(imhtml), tag); +} + +gboolean gtk_imhtml_link_activate(GtkIMHtmlLink *link) +{ + g_return_val_if_fail(link, FALSE); + + if (link->tag) { + gtk_imhtml_activate_tag(link->imhtml, link->tag); + } else if (link->url) { + g_signal_emit(link->imhtml, signals[URL_CLICKED], 0, link->url); + } else + return FALSE; + return TRUE; +} + +const char *gtk_imhtml_link_get_url(GtkIMHtmlLink *link) +{ + return link->url; +} + +const GtkTextTag * gtk_imhtml_link_get_text_tag(GtkIMHtmlLink *link) +{ + return link->tag; +} + +static gboolean return_add_newline_cb(GtkWidget *widget, gpointer data) +{ + GtkTextBuffer *buffer; + GtkTextMark *mark; + GtkTextIter iter; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)); + + /* Delete any currently selected text */ + gtk_text_buffer_delete_selection(buffer, TRUE, TRUE); + + /* Insert a newline at the current cursor position */ + mark = gtk_text_buffer_get_insert(buffer); + gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark); + gtk_imhtml_insert_html_at_iter(GTK_IMHTML(widget), "\n", 0, &iter); + + /* + * If we just newlined ourselves past the end of the visible area + * then scroll down so the cursor is in view. + */ + gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(widget), + gtk_text_buffer_get_insert(buffer), + 0, FALSE, 0.0, 0.0); + + return TRUE; +} + +/* + * It's kind of a pain that we need this function and the above just + * to reinstate the default GtkTextView behavior. It might be better + * if GtkIMHtml didn't intercept the enter key and just required the + * application to deal with it--it's really not much more work than it + * is to connect to the current "message_send" signal. + */ +void gtk_imhtml_set_return_inserts_newline(GtkIMHtml *imhtml) +{ + g_signal_connect(G_OBJECT(imhtml), "message_send", + G_CALLBACK(return_add_newline_cb), NULL); +} diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkimhtml.h --- a/pidgin/gtkimhtml.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkimhtml.h Mon Mar 02 22:07:59 2009 +0000 @@ -61,6 +61,11 @@ typedef struct _GtkIMHtmlHr GtkIMHtmlHr; typedef struct _GtkIMHtmlFuncs GtkIMHtmlFuncs; +/** + * @since 2.6.0 + */ +typedef struct _GtkIMHtmlLink GtkIMHtmlLink; + typedef enum { GTK_IMHTML_BOLD = 1 << 0, GTK_IMHTML_ITALIC = 1 << 1, @@ -156,6 +161,7 @@ gboolean (*message_send)(GtkIMHtml *); void (*undo)(GtkIMHtml *); void (*redo)(GtkIMHtml *); + GList *protocols; /* List of GtkIMHtmlProtocol's */ }; struct _GtkIMHtmlFontDetail { @@ -885,6 +891,74 @@ * @since 2.5.0 */ void gtk_imhtml_smiley_destroy(GtkIMHtmlSmiley *smiley); + +/** + * Register a protocol with the GtkIMHtml widget. Registering a protocol would + * allow certain text to be clickable. + * + * @param name The name of the protocol (e.g. http://) + * @param activate The callback to trigger when the protocol text is clicked. + * Removes any current protocol definition if @c NULL. The + * callback should return @c TRUE if the link was activated + * properly, @c FALSE otherwise. + * @param context_menu The callback to trigger when the context menu is popped + * up on the protocol text. The callback should return + * @c TRUE if the request for context menu was processed + * successfully, @c FALSE otherwise. + * + * @return @c TRUE if the protocol was successfully registered (or unregistered, when #activate is @c NULL) + * + * @since 2.6.0 + */ +gboolean gtk_imhtml_class_register_protocol(const char *name, + gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link), + gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)); + +/** + * Get the URL associated with a link. This should be used by the IMHtml protocol-callbacks. + * + * @param link The GtkIMHtmlLink object sent to the callback functions + * + * @return The URL + * + * @since 2.6.0 + */ +const char *gtk_imhtml_link_get_url(GtkIMHtmlLink *link); + +/** + * Get the GtkTextTag object (if any) associated with a particular link. + * + * @param link The GtkIMHtmlLink object sent to the callback functions + * + * @return The GtkTextTag object, or @c NULL + * + * @since 2.6.0 + */ +const GtkTextTag *gtk_imhtml_link_get_text_tag(GtkIMHtmlLink *link); + +/** + * Activates a GtkIMHtmlLink object. This triggers the 'url-clicked' signal, marks the + * link as visited (when possible). + * + * @param link The GtkIMHtmlLink object sent to the callback functions + * + * @return @c TRUE if 'url-clicked' signal was emitted, @c FALSE otherwise. + * + * @since 2.6.0 + */ +gboolean gtk_imhtml_link_activate(GtkIMHtmlLink *link); + +/** + * By default this widget intercepts presses of the "return" key and + * emits the "message_send" signal instead. If you don't want this + * behavior, and you want the standard GtkTextView behavior of + * inserting a newline into the buffer, then call this function. + * + * @param imhtml The GtkIMHtml where you want the "return" key to add + * newline and not emit the "message_send" signal. + */ +void gtk_imhtml_set_return_inserts_newline(GtkIMHtml *imhtml); + /*@}*/ #ifdef __cplusplus diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkimhtmltoolbar.c --- a/pidgin/gtkimhtmltoolbar.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkimhtmltoolbar.c Mon Mar 02 22:07:59 2009 +0000 @@ -681,7 +681,7 @@ is custom smiley-enabled */ if (supports_custom && psmiley && !(smiley->flags & GTK_IMHTML_SMILEY_CUSTOM)) { gchar tip[128]; - g_snprintf(tip, sizeof(tip), + g_snprintf(tip, sizeof(tip), _("This smiley is disabled because a custom smiley exists for this shortcut:\n %s"), face); gtk_tooltips_set_tip(toolbar->tooltips, button, tip, NULL); @@ -809,7 +809,7 @@ unique_smileys = g_slist_prepend(unique_smileys, smiley); } } - + /* we need to reverse the list to get the smileys in the correct order */ unique_smileys = g_slist_reverse(unique_smileys); @@ -1429,13 +1429,13 @@ menuitem = gtk_menu_item_new_with_mnemonic(_("_Horizontal rule")); g_signal_connect(G_OBJECT(menuitem), "activate" , G_CALLBACK(insert_hr_cb), toolbar); gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem); - toolbar->insert_hr = menuitem; + toolbar->insert_hr = menuitem; g_signal_connect_swapped(G_OBJECT(insert_button), "button-press-event", G_CALLBACK(gtk_widget_activate), insert_button); g_signal_connect(G_OBJECT(insert_button), "activate", G_CALLBACK(pidgin_menu_clicked), insert_menu); g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button); toolbar->sml = NULL; - + /* Sep */ sep = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtklog.c --- a/pidgin/gtklog.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtklog.c Mon Mar 02 22:07:59 2009 +0000 @@ -45,7 +45,7 @@ struct log_viewer_hash_t { PurpleLogType type; - char *screenname; + char *buddyname; PurpleAccount *account; PurpleContact *contact; }; @@ -57,7 +57,7 @@ if (viewer->contact != NULL) return g_direct_hash(viewer->contact); - return g_str_hash(viewer->screenname) + + return g_str_hash(viewer->buddyname) + g_str_hash(purple_account_get_username(viewer->account)); } @@ -80,9 +80,9 @@ return FALSE; } - normal = g_strdup(purple_normalize(a->account, a->screenname)); + normal = g_strdup(purple_normalize(a->account, a->buddyname)); ret = (a->account == b->account) && - !strcmp(normal, purple_normalize(b->account, b->screenname)); + !strcmp(normal, purple_normalize(b->account, b->buddyname)); g_free(normal); return ret; @@ -209,7 +209,7 @@ lv = g_hash_table_lookup(log_viewers, ht); g_hash_table_remove(log_viewers, ht); - g_free(ht->screenname); + g_free(ht->buddyname); g_free(ht); } else syslog_viewer = NULL; @@ -556,7 +556,7 @@ if (!purple_prefs_get_bool("/purple/logging/log_chats")) log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled."); } - g_free(ht->screenname); + g_free(ht->buddyname); g_free(ht); } @@ -681,27 +681,27 @@ return lv; } -void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) { +void pidgin_log_show(PurpleLogType type, const char *buddyname, PurpleAccount *account) { struct log_viewer_hash_t *ht; PidginLogViewer *lv = NULL; - const char *name = screenname; + const char *name = buddyname; char *title; GdkPixbuf *prpl_icon; g_return_if_fail(account != NULL); - g_return_if_fail(screenname != NULL); + g_return_if_fail(buddyname != NULL); ht = g_new0(struct log_viewer_hash_t, 1); ht->type = type; - ht->screenname = g_strdup(screenname); + ht->buddyname = g_strdup(buddyname); ht->account = account; if (log_viewers == NULL) { log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal); } else if ((lv = g_hash_table_lookup(log_viewers, ht))) { gtk_window_present(GTK_WINDOW(lv->window)); - g_free(ht->screenname); + g_free(ht->buddyname); g_free(ht); return; } @@ -709,7 +709,7 @@ if (type == PURPLE_LOG_CHAT) { PurpleChat *chat; - chat = purple_blist_find_chat(account, screenname); + chat = purple_blist_find_chat(account, buddyname); if (chat != NULL) name = purple_chat_get_name(chat); @@ -717,7 +717,7 @@ } else { PurpleBuddy *buddy; - buddy = purple_find_buddy(account, screenname); + buddy = purple_find_buddy(account, buddyname); if (buddy != NULL) name = purple_buddy_get_contact_alias(buddy); @@ -726,9 +726,9 @@ prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM); - display_log_viewer(ht, purple_log_get_logs(type, screenname, account), + display_log_viewer(ht, purple_log_get_logs(type, buddyname, account), title, gtk_image_new_from_pixbuf(prpl_icon), - purple_log_get_total_size(type, screenname, account)); + purple_log_get_total_size(type, buddyname, account)); if (prpl_icon) g_object_unref(prpl_icon); @@ -760,13 +760,19 @@ return; } - for (child = contact->node.child ; child ; child = child->next) { + for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact) ; + child != NULL ; + child = purple_blist_node_get_sibling_next(child)) { + const char *buddy_name; + PurpleAccount *account; + if (!PURPLE_BLIST_NODE_IS_BUDDY(child)) continue; - logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, - ((PurpleBuddy *)child)->account), logs); - total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account); + buddy_name = purple_buddy_get_name((PurpleBuddy *)child); + account = purple_buddy_get_account((PurpleBuddy *)child); + logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, buddy_name, account), logs); + total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, buddy_name, account); } logs = g_list_sort(logs, purple_log_compare); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtklog.h --- a/pidgin/gtklog.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtklog.h Mon Mar 02 22:07:59 2009 +0000 @@ -9,7 +9,7 @@ * Pidgin is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * source distribution. - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -53,7 +53,7 @@ -void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account); +void pidgin_log_show(PurpleLogType type, const char *buddyname, PurpleAccount *account); void pidgin_log_show_contact(PurpleContact *contact); void pidgin_syslog_show(void); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkmain.c --- a/pidgin/gtkmain.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkmain.c Mon Mar 02 22:07:59 2009 +0000 @@ -310,6 +310,7 @@ pidgin_log_init(); pidgin_docklet_init(); pidgin_smileys_init(); + pidgin_utils_init(); } static GHashTable *ui_info = NULL; @@ -323,6 +324,7 @@ #endif /* Uninit */ + pidgin_utils_uninit(); pidgin_smileys_uninit(); pidgin_conversations_uninit(); pidgin_status_uninit(); @@ -385,6 +387,7 @@ "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" @@ -398,6 +401,7 @@ "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" @@ -457,10 +461,10 @@ int main(int argc, char *argv[]) #endif { + gboolean opt_force_online = FALSE; gboolean opt_help = FALSE; gboolean opt_login = FALSE; gboolean opt_nologin = FALSE; - gboolean opt_nocrash = FALSE; gboolean opt_version = FALSE; gboolean opt_si = TRUE; /* Check for single instance? */ char *opt_config_dir_arg = NULL; @@ -485,17 +489,17 @@ GList *active_accounts; struct option long_options[] = { - {"config", required_argument, NULL, 'c'}, - {"debug", no_argument, NULL, 'd'}, - {"help", no_argument, NULL, 'h'}, - {"login", optional_argument, NULL, 'l'}, - {"multiple", no_argument, NULL, 'm'}, - {"nologin", no_argument, NULL, 'n'}, - {"nocrash", no_argument, NULL, 'x'}, - {"session", required_argument, NULL, 's'}, - {"version", no_argument, NULL, 'v'}, - {"display", required_argument, NULL, 'D'}, - {"sync", no_argument, NULL, 'S'}, + {"config", required_argument, NULL, 'c'}, + {"debug", no_argument, NULL, 'd'}, + {"force-online", no_argument, NULL, 'd'}, + {"help", no_argument, NULL, 'h'}, + {"login", optional_argument, NULL, 'l'}, + {"multiple", no_argument, NULL, 'm'}, + {"nologin", no_argument, NULL, 'n'}, + {"session", required_argument, NULL, 's'}, + {"version", no_argument, NULL, 'v'}, + {"display", required_argument, NULL, 'D'}, + {"sync", no_argument, NULL, 'S'}, {0, 0, 0, 0} }; @@ -602,9 +606,9 @@ opterr = 1; while ((opt = getopt_long(argc, argv, #ifndef _WIN32 - "c:dhmnl::s:v", + "c:dfhmnl::s:v", #else - "c:dhmnl::v", + "c:dfhmnl::v", #endif long_options, NULL)) != -1) { switch (opt) { @@ -615,6 +619,9 @@ case 'd': /* debug */ debug_enabled = TRUE; break; + case 'f': /* force-online */ + opt_force_online = TRUE; + break; case 'h': /* help */ opt_help = TRUE; break; @@ -637,9 +644,6 @@ case 'm': /* do not ensure single instance. */ opt_si = FALSE; break; - case 'x': /* --nocrash */ - opt_nocrash = TRUE; - break; case 'D': /* --display */ case 'S': /* --sync */ /* handled by gtk_init_check below */ @@ -816,6 +820,11 @@ opt_config_dir_arg = NULL; } + /* This needs to be before purple_blist_show() so the + * statusbox gets the forced online status. */ + if (opt_force_online) + purple_network_force_online(); + /* * We want to show the blist early in the init process so the * user feels warm and fuzzy (not cold and prickley). diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkpluginpref.c --- a/pidgin/gtkpluginpref.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkpluginpref.c Mon Mar 02 22:07:59 2009 +0000 @@ -93,7 +93,7 @@ case PURPLE_PLUGIN_PREF_NONE: default: if (format == PURPLE_STRING_FORMAT_TYPE_NONE) - { + { entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(entry), purple_prefs_get_string(pref_name)); gtk_entry_set_max_length(GTK_ENTRY(entry), diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkpounce.c --- a/pidgin/gtkpounce.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkpounce.c Mon Mar 02 22:07:59 2009 +0000 @@ -535,7 +535,7 @@ /* Create the window. */ dialog->window = window = gtk_dialog_new(); - gtk_window_set_title(GTK_WINDOW(window), (cur_pounce == NULL ? _("New Buddy Pounce") : _("Edit Buddy Pounce"))); + gtk_window_set_title(GTK_WINDOW(window), (cur_pounce == NULL ? _("Add Buddy Pounce") : _("Modify Buddy Pounce"))); gtk_window_set_role(GTK_WINDOW(window), "buddy_pounce"); gtk_container_set_border_width(GTK_CONTAINER(dialog->window), PIDGIN_HIG_BORDER); @@ -637,19 +637,19 @@ GTK_FILL, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), dialog->signoff, 0, 1, 2, 3, GTK_FILL, 0, 0, 0); - gtk_table_attach(GTK_TABLE(table), dialog->away, 0, 1, 3, 4, + gtk_table_attach(GTK_TABLE(table), dialog->away, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); - gtk_table_attach(GTK_TABLE(table), dialog->away_return, 0, 1, 4, 5, + gtk_table_attach(GTK_TABLE(table), dialog->away_return, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); - gtk_table_attach(GTK_TABLE(table), dialog->idle, 1, 2, 0, 1, + gtk_table_attach(GTK_TABLE(table), dialog->idle, 1, 2, 2, 3, GTK_FILL, 0, 0, 0); - gtk_table_attach(GTK_TABLE(table), dialog->idle_return, 1, 2, 1, 2, + gtk_table_attach(GTK_TABLE(table), dialog->idle_return, 2, 3, 0, 1, GTK_FILL, 0, 0, 0); - gtk_table_attach(GTK_TABLE(table), dialog->typing, 1, 2, 2, 3, + gtk_table_attach(GTK_TABLE(table), dialog->typing, 2, 3, 1, 2, GTK_FILL, 0, 0, 0); - gtk_table_attach(GTK_TABLE(table), dialog->typed, 1, 2, 3, 4, + gtk_table_attach(GTK_TABLE(table), dialog->typed, 2, 3, 2, 3, GTK_FILL, 0, 0, 0); - gtk_table_attach(GTK_TABLE(table), dialog->stop_typing, 1, 2, 4, 5, + gtk_table_attach(GTK_TABLE(table), dialog->stop_typing, 3, 4, 0, 1, GTK_FILL, 0, 0, 0); gtk_widget_show(dialog->signon); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkpounce.h --- a/pidgin/gtkpounce.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkpounce.h Mon Mar 02 22:07:59 2009 +0000 @@ -8,7 +8,7 @@ * Pidgin is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * source distribution. - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkprefs.c Mon Mar 02 22:07:59 2009 +0000 @@ -35,6 +35,8 @@ #include "request.h" #include "savedstatuses.h" #include "sound.h" +#include "sound-theme.h" +#include "theme-manager.h" #include "util.h" #include "network.h" @@ -47,6 +49,7 @@ #include "gtkprefs.h" #include "gtksavedstatuses.h" #include "gtksound.h" +#include "gtkstatus-icon-theme.h" #include "gtkthemes.h" #include "gtkutils.h" #include "pidginstock.h" @@ -56,6 +59,8 @@ #define PROXYUSER 2 #define PROXYPASS 3 +#define PREFS_OPTIMAL_ICON_SIZE 32 + static int sound_row_sel = 0; static GtkWidget *prefsnotebook; @@ -69,6 +74,12 @@ static int notebook_page = 0; static GtkTreeRowReference *previous_smiley_row = NULL; +static gboolean prefs_themes_unsorted = TRUE; +static GtkListStore *prefs_sound_themes; +static GtkListStore *prefs_blist_themes; +static GtkListStore *prefs_status_icon_themes; + + /* * PROTOTYPES */ @@ -546,6 +557,212 @@ gtk_drag_finish(dc, FALSE, FALSE, t); } +/* Rebuild the markup for the sound theme selection for "(Custom)" themes */ +static void +pref_sound_generate_markup() +{ + gboolean print_custom, customized; + const gchar *name, *author, *description, *current_theme; + gchar *markup; + PurpleSoundTheme *theme; + GtkTreeIter iter; + + customized = pidgin_sound_is_customized(); + current_theme = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme"); + + if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(prefs_sound_themes), &iter)) { + do { + gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &iter, 2, &name, -1); + + print_custom = customized && g_str_equal(current_theme, name); + + if (g_str_equal(name, "")) + markup = g_strdup_printf("(Default)%s%s - None\nThe default Pidgin sound theme", + print_custom ? " " : "", print_custom ? "(Custom)" : ""); + else { + theme = PURPLE_SOUND_THEME(purple_theme_manager_find_theme(name, "sound")); + author = purple_theme_get_author(PURPLE_THEME(theme)); + description = purple_theme_get_description(PURPLE_THEME(theme)); + + markup = g_strdup_printf("%s%s%s%s%s\n%s", + name, print_custom ? " " : "", print_custom ? "(Custom)" : "", + author != NULL ? " - " : "", author != NULL ? author : "", description != NULL ? description : ""); + } + + gtk_list_store_set(prefs_sound_themes, &iter, 1, markup, -1); + + g_free(markup); + + } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(prefs_sound_themes), &iter)); + } +} + +/* adds the themes to the theme list from the manager so they can be sisplayed in prefs */ +static void +prefs_themes_sort(PurpleTheme *theme) +{ + GdkPixbuf *pixbuf = NULL; + GtkTreeIter iter; + gchar *image_full = NULL, *markup; + const gchar *name, *author, *description; + + if (PURPLE_IS_SOUND_THEME(theme)){ + + image_full = purple_theme_get_image_full(theme); + if (image_full != NULL){ + pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL); + g_free(image_full); + } else pixbuf = NULL; + + gtk_list_store_append(prefs_sound_themes, &iter); + gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, purple_theme_get_name(theme), -1); + + if (pixbuf != NULL) + gdk_pixbuf_unref(pixbuf); + + } else if (PIDGIN_IS_BLIST_THEME(theme) || PIDGIN_IS_STATUS_ICON_THEME(theme)){ + GtkListStore *store; + + if (PIDGIN_IS_BLIST_THEME(theme)) + store = prefs_blist_themes; + else store = prefs_status_icon_themes; + + image_full = purple_theme_get_image_full(theme); + if (image_full != NULL){ + pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL); + g_free(image_full); + } else pixbuf = NULL; + + name = purple_theme_get_name(theme); + author = purple_theme_get_author(theme); + description = purple_theme_get_description(theme); + + markup = g_strdup_printf("%s%s%s\n%s", name, author != NULL ? " - " : "", + author != NULL ? author : "", description != NULL ? description : ""); + + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, pixbuf, 1, markup, 2, name, -1); + + g_free(markup); + if (pixbuf != NULL) + gdk_pixbuf_unref(pixbuf); + } + +} + +/* init all the theme variables so that the themes can be sorted later and used by pref pages */ +static void +prefs_themes_init() +{ + GdkPixbuf *pixbuf = NULL; + gchar *filename; + GtkTreeIter iter; + + filename = g_build_filename(DATADIR, "icons", "hicolor", "32x32", "apps", "pidgin.png", NULL); + pixbuf = gdk_pixbuf_new_from_file_at_scale(filename, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL); + g_free(filename); + + /* sound themes */ + prefs_sound_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); + + gtk_list_store_append(prefs_sound_themes, &iter); + gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, "", -1); + + /* blist themes */ + prefs_blist_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); + + gtk_list_store_append(prefs_blist_themes, &iter); + gtk_list_store_set(prefs_blist_themes, &iter, 0, pixbuf, 1, "(Default) - None\n" + "The default Pidgin buddy list theme", 2, "", -1); + + /* status icon themes */ + prefs_status_icon_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); + + gtk_list_store_append(prefs_status_icon_themes, &iter); + gtk_list_store_set(prefs_status_icon_themes, &iter, 0, pixbuf, 1, "(Default) - None\n" + "The default Pidgin status icon theme", 2, "", -1); + + gdk_pixbuf_unref(pixbuf); +} + +/* builds a theme combo box from a list store with colums: icon preview, markup, theme name */ +static GtkWidget * +prefs_build_theme_combo_box(GtkListStore *store, const gchar *current_theme) +{ + GtkWidget *combo_box; + GtkCellRenderer *cell_rend; + GtkTreeIter iter; + gchar *theme = NULL; + gboolean unset = TRUE; + + g_return_val_if_fail(store != NULL && current_theme != NULL, NULL); + + combo_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); + + cell_rend = gtk_cell_renderer_pixbuf_new(); + gtk_cell_renderer_set_fixed_size(cell_rend, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "pixbuf", 0, NULL); + + cell_rend = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "markup", 1, NULL); +/*#if GTK_CHECK_VERSION(2,6,0) + g_object_set(cell_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); +#endif*/ + + if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter)) { + do { + gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 2, &theme, -1); + + if (g_str_equal(current_theme, theme)) { + gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo_box), &iter); + unset = FALSE; + } + + g_free(theme); + } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter)); + } + + if (unset) + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), 0); + + return combo_box; +} + +/* sets the current sound theme */ +static void +prefs_set_sound_theme_cb(GtkComboBox *combo_box, gpointer user_data) +{ + gint i; + gchar *pref; + gchar *new_theme; + gboolean success; + GtkTreeIter new_iter; + + success = gtk_combo_box_get_active_iter(combo_box, &new_iter); + g_return_if_fail(success); + + gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &new_iter, 2, &new_theme, -1); + + purple_prefs_set_string(PIDGIN_PREFS_ROOT "/sound/theme", new_theme); + + /* New theme removes all customization */ + for(i=0; i < PURPLE_NUM_SOUNDS; i++){ + pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s", + pidgin_sound_get_event_option(i)); + purple_prefs_set_path(pref, ""); + g_free(pref); + } + + /* gets rid of the "(Custom)" from the last selection */ + pref_sound_generate_markup(); + + gtk_entry_set_text(GTK_ENTRY(sound_entry), _("(default)")); + + g_free(new_theme); +} + /* Does same as normal sort, except "none" is sorted first */ static gint pidgin_sort_smileys (GtkTreeModel *model, GtkTreeIter *a, @@ -922,6 +1139,40 @@ gtk_box_pack_start(GTK_BOX(vbox), checkbox, FALSE, FALSE, 0); } +/* sets the current buddy list theme */ +static void +prefs_set_blist_theme_cb(GtkComboBox *combo_box, gpointer user_data) +{ + PidginBlistTheme *theme; + GtkTreeIter iter; + gchar *name = NULL; + + g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter)); + gtk_tree_model_get(GTK_TREE_MODEL(prefs_blist_themes), &iter, 2, &name, -1); + + theme = PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(name, "blist")); + g_free(name); + + pidgin_blist_set_theme(theme); +} + +/* sets the current icon theme */ +static void +prefs_set_status_icon_theme_cb(GtkComboBox *combo_box, gpointer user_data) +{ + PidginStatusIconTheme *theme; + GtkTreeIter iter; + gchar *name = NULL; + + g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter)); + gtk_tree_model_get(GTK_TREE_MODEL(prefs_status_icon_themes), &iter, 2, &name, -1); + + theme = PIDGIN_STATUS_ICON_THEME(purple_theme_manager_find_theme(name, "status-icon")); + g_free(name); + + pidgin_stock_load_status_icon_theme(theme); +} + static GtkWidget * interface_page(void) { @@ -929,6 +1180,7 @@ GtkWidget *vbox; GtkWidget *vbox2; GtkWidget *label; + GtkWidget *combo_box; GtkSizeGroup *sg; GList *names = NULL; @@ -937,6 +1189,19 @@ sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + /* Buddy List Themes */ + vbox = pidgin_make_frame(ret, _("Buddy List Theme")); + + combo_box = prefs_build_theme_combo_box(prefs_blist_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme")); + gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_blist_theme_cb, NULL); + + /* Status Icon Themes */ + combo_box = prefs_build_theme_combo_box(prefs_status_icon_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/status/icon-theme")); + gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_status_icon_theme_cb, NULL); + + /* System Tray */ vbox = pidgin_make_frame(ret, _("System Tray Icon")); label = pidgin_prefs_dropdown(vbox, _("_Show system tray icon:"), PURPLE_PREF_STRING, PIDGIN_PREFS_ROOT "/docklet/show", @@ -1742,6 +2007,8 @@ g_free(pref); gtk_entry_set_text(GTK_ENTRY(sound_entry), _("(default)")); + + pref_sound_generate_markup(); } static void @@ -1764,6 +2031,8 @@ */ if (sound == sound_row_sel) gtk_entry_set_text(GTK_ENTRY(sound_entry), filename); + + pref_sound_generate_markup(); } static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun) @@ -1832,6 +2101,8 @@ if (sound_entry) gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : _("(default)")); g_value_unset (&val); + + pref_sound_generate_markup(); } @@ -1857,7 +2128,7 @@ sound_page(void) { GtkWidget *ret; - GtkWidget *vbox, *sw, *button; + GtkWidget *vbox, *sw, *button, *combo_box; GtkSizeGroup *sg; GtkTreeIter iter; GtkWidget *event_view; @@ -1951,7 +2222,6 @@ purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/method", sound_changed2_cb, vbox); #endif - vbox = pidgin_make_frame(ret, _("Sound Events")); /* The following is an ugly hack to make the frame expand so the @@ -1963,6 +2233,14 @@ gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent), vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START); + /* SOUND THEMES */ + combo_box = prefs_build_theme_combo_box(prefs_sound_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme")); + pref_sound_generate_markup(); + gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0); + + g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_sound_theme_cb, NULL); + + /* SOUND SELECTION */ sw = gtk_scrolled_window_new(NULL,NULL); gtk_widget_set_size_request(sw, -1, 100); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); @@ -2196,6 +2474,14 @@ return; } + /* Refresh the list of themes before showing the preferences window */ + purple_theme_manager_refresh(); + + /* add everything in the theme manager before the window is loaded */ + if (prefs_themes_unsorted) { + purple_theme_manager_for_each_theme(prefs_themes_sort); + prefs_themes_unsorted = FALSE; + } /* copy the preferences to tmp values... * I liked "take affect immediately" Oh well :-( */ /* (that should have been "effect," right?) */ @@ -2290,6 +2576,9 @@ purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", ""); purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", ""); + /* Themes */ + prefs_themes_init(); + /* Smiley Themes */ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/smileys"); purple_prefs_add_string(PIDGIN_PREFS_ROOT "/smileys/theme", "Default"); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkprefs.h --- a/pidgin/gtkprefs.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkprefs.h Mon Mar 02 22:07:59 2009 +0000 @@ -59,7 +59,7 @@ * @param max The maximum value of the spin button * @param sg If not NULL, the size group to which the spin button will be added * @return An hbox containing both the label and the spinner. Can be - * used to set the widgets to sensitive or insensitive based on the + * used to set the widgets to sensitive or insensitive based on the * value of a checkbox. */ GtkWidget *pidgin_prefs_labeled_spin_button(GtkWidget *page, diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkrequest.c --- a/pidgin/gtkrequest.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkrequest.c Mon Mar 02 22:07:59 2009 +0000 @@ -384,6 +384,8 @@ gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL); gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); gtk_widget_show(frame); + + gtk_imhtml_set_return_inserts_newline(GTK_IMHTML(entry)); } else { if (multiline) { @@ -682,15 +684,17 @@ static void req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field) { + PurpleRequestFieldGroup *group; PidginRequestData *req_data; const char *text = gtk_entry_get_text(GTK_ENTRY(entry)); purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text)); - req_data = (PidginRequestData *)field->group->fields_list->ui_data; + group = purple_request_field_get_group(field); + req_data = (PidginRequestData *)group->fields_list->ui_data; gtk_widget_set_sensitive(req_data->ok_button, - purple_request_fields_all_required_filled(field->group->fields_list)); + purple_request_fields_all_required_filled(group->fields_list)); } static void @@ -711,7 +715,8 @@ if (purple_str_has_prefix(type_hint, "screenname")) { GtkWidget *optmenu = NULL; - GList *fields = field->group->fields; + PurpleRequestFieldGroup *group = purple_request_field_get_group(field); + GList *fields = group->fields; while (fields) { PurpleRequestField *fld = fields->data; @@ -722,9 +727,11 @@ const char *type_hint = purple_request_field_get_type_hint(fld); if (type_hint != NULL && strcmp(type_hint, "account") == 0) { - if (fld->ui_data == NULL) - fld->ui_data = create_account_field(fld); - optmenu = GTK_WIDGET(fld->ui_data); + 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); + } break; } } @@ -1338,24 +1345,26 @@ gtk_widget_show(label); } - if (field->ui_data != NULL) - widget = GTK_WIDGET(field->ui_data); - else if (type == PURPLE_REQUEST_FIELD_STRING) - widget = create_string_field(field); - else if (type == PURPLE_REQUEST_FIELD_INTEGER) - widget = create_int_field(field); - else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) - widget = create_bool_field(field); - else if (type == PURPLE_REQUEST_FIELD_CHOICE) - widget = create_choice_field(field); - else if (type == PURPLE_REQUEST_FIELD_LIST) - widget = create_list_field(field); - else if (type == PURPLE_REQUEST_FIELD_IMAGE) - widget = create_image_field(field); - else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) - widget = create_account_field(field); - else - continue; + widget = GTK_WIDGET(purple_request_field_get_ui_data(field)); + if (widget == NULL) + { + if (type == PURPLE_REQUEST_FIELD_STRING) + widget = create_string_field(field); + else if (type == PURPLE_REQUEST_FIELD_INTEGER) + widget = create_int_field(field); + else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) + widget = create_bool_field(field); + else if (type == PURPLE_REQUEST_FIELD_CHOICE) + widget = create_choice_field(field); + else if (type == PURPLE_REQUEST_FIELD_LIST) + widget = create_list_field(field); + else if (type == PURPLE_REQUEST_FIELD_IMAGE) + widget = create_image_field(field); + else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) + widget = create_account_field(field); + else + continue; + } if (label) gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget); @@ -1400,7 +1409,7 @@ gtk_widget_show(widget); - field->ui_data = widget; + purple_request_field_set_ui_data(field, widget); } } } diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksavedstatuses.c --- a/pidgin/gtksavedstatuses.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksavedstatuses.c Mon Mar 02 22:07:59 2009 +0000 @@ -76,7 +76,7 @@ STATUS_EDITOR_COLUMN_WINDOW, STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, STATUS_EDITOR_COLUMN_ICON, - STATUS_EDITOR_COLUMN_SCREENNAME, + STATUS_EDITOR_COLUMN_USERNAME, /** A hidden column containing the ID of this PurpleStatusType. */ STATUS_EDITOR_COLUMN_STATUS_ID, STATUS_EDITOR_COLUMN_STATUS_NAME, @@ -1007,7 +1007,7 @@ g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(status_editor_substatus_cb), dialog); - /* Screen Name column */ + /* Username column */ column = gtk_tree_view_column_new(); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_title(column, _("Username")); @@ -1020,11 +1020,11 @@ gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", STATUS_EDITOR_COLUMN_ICON); - /* Screen Name */ + /* Username */ renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_add_attribute(column, renderer, "text", - STATUS_EDITOR_COLUMN_SCREENNAME); + STATUS_EDITOR_COLUMN_USERNAME); /* Status column */ column = gtk_tree_view_column_new(); @@ -1086,7 +1086,7 @@ STATUS_EDITOR_COLUMN_ACCOUNT, account, STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, (substatus != NULL), STATUS_EDITOR_COLUMN_ICON, pixbuf, - STATUS_EDITOR_COLUMN_SCREENNAME, purple_account_get_username(account), + STATUS_EDITOR_COLUMN_USERNAME, purple_account_get_username(account), STATUS_EDITOR_COLUMN_STATUS_ID, id, STATUS_EDITOR_COLUMN_STATUS_NAME, name, STATUS_EDITOR_COLUMN_STATUS_MESSAGE, message, @@ -1218,6 +1218,8 @@ gtk_container_set_focus_chain(GTK_CONTAINER(hbox), focus_chain); g_list_free(focus_chain); + gtk_imhtml_set_return_inserts_newline(dialog->message); + if ((saved_status != NULL) && (purple_savedstatus_get_message(saved_status) != NULL)) gtk_imhtml_append_text(GTK_IMHTML(text), purple_savedstatus_get_message(saved_status), 0); @@ -1547,7 +1549,7 @@ /* Seed the input widgets with the current values */ /* Only look at the saved status if we can't find it in the parent status dialog's substatuses model */ - gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter, + gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter, STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, &parent_dialog_has_substatus, -1); if (parent_dialog_has_substatus) { gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter, @@ -1656,7 +1658,7 @@ * And whether or not that emblem is visible */ SS_MENU_EMBLEM_VISIBLE_COLUMN, - + SS_MENU_NUM_COLUMNS }; diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkscrollbook.h --- a/pidgin/gtkscrollbook.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkscrollbook.h Mon Mar 02 22:07:59 2009 +0000 @@ -51,7 +51,7 @@ GtkWidget *left_arrow; GtkWidget *right_arrow; GList *children; - + /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksession.c --- a/pidgin/gtksession.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksession.c Mon Mar 02 22:07:59 2009 +0000 @@ -108,7 +108,7 @@ purple_debug(PURPLE_DEBUG_INFO, NULL, "done.\n"); } -/* We call any handler installed before (or after) ice_init but +/* We call any handler installed before (or after) ice_init but * avoid calling the default libICE handler which does an exit(). * * This means we do nothing by default, which is probably correct, diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksmiley.c --- a/pidgin/gtksmiley.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksmiley.c Mon Mar 02 22:07:59 2009 +0000 @@ -225,6 +225,12 @@ entry = gtk_entry_get_text(GTK_ENTRY(s->smile)); if (!entry || !*entry) { + /* + * TODO: We should enable/disable the add button based on + * whether the user has entered all required data. That + * would eliminate the need for this check and provide a + * better user experience. + */ purple_notify_error(s->parent, _("Custom Smiley"), _("More Data needed"), _("Please provide a shortcut to associate with the smiley.")); @@ -233,9 +239,12 @@ emoticon = purple_smileys_find_by_shortcut(entry); if (emoticon && emoticon != s->smiley) { + gchar *msg; + msg = g_strdup_printf(_("A custom smiley for '%s' already exists. " + "Please use a different shortcut."), entry); purple_notify_error(s->parent, _("Custom Smiley"), - _("Duplicate Shortcut"), - _("A custom smiley for the selected shortcut already exists. Please specify a different shortcut.")); + _("Duplicate Shortcut"), msg); + g_free(msg); return; } @@ -273,7 +282,7 @@ gsize size = 0; gchar *filename; const gchar *dirname = purple_smileys_get_storing_dir(); - + /* since this may be called before purple_smiley_new_* has ever been called, we create the storing dir, if it doesn't exist yet, to be able to save the pixbuf before adding the smiley */ @@ -286,7 +295,7 @@ dirname, g_strerror(errno)); } } - + gdk_pixbuf_save_to_buffer(s->custom_pixbuf, &buffer, &size, "png", NULL, "compression", "9", NULL, NULL); filename = purple_util_get_image_filename(buffer, size); @@ -385,7 +394,7 @@ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); gtk_container_add(GTK_CONTAINER(GTK_VBOX(vbox)), hbox); - label = gtk_label_new_with_mnemonic(_("Smiley _Image")); + label = gtk_label_new_with_mnemonic(_("_Image:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_widget_show(label); @@ -415,8 +424,8 @@ hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); gtk_container_add(GTK_CONTAINER(GTK_VBOX(vbox)),hbox); - /* Smiley shortcut */ - label = gtk_label_new_with_mnemonic(_("Smiley S_hortcut")); + /* Shortcut text */ + label = gtk_label_new_with_mnemonic(_("S_hortcut text:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_widget_show(label); @@ -520,9 +529,9 @@ gtk_tree_view_column_pack_start(column, rend, FALSE); gtk_tree_view_column_add_attribute(column, rend, "pixbuf", ICON); - /* Shortcut */ + /* Shortcut Text */ column = gtk_tree_view_column_new(); - gtk_tree_view_column_set_title(column, _("Shortcut")); + gtk_tree_view_column_set_title(column, _("Shortcut Text")); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); @@ -712,7 +721,7 @@ _("Custom Smiley Manager"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_ADD, GTK_RESPONSE_YES, + PIDGIN_STOCK_ADD, GTK_RESPONSE_YES, PIDGIN_STOCK_MODIFY, PIDGIN_RESPONSE_MODIFY, GTK_STOCK_DELETE, GTK_RESPONSE_NO, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, @@ -740,4 +749,3 @@ gtk_widget_show(win); } - diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksmiley.h --- a/pidgin/gtksmiley.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksmiley.h Mon Mar 02 22:07:59 2009 +0000 @@ -25,8 +25,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ -#ifndef _PIDGIN_GTKSMILEY_H_ -#define _PIDGIN_GTKSMILEY_H_ +#ifndef PIDGIN_GTKSMILEY_H +#define PIDGIN_GTKSMILEY_H #include "smiley.h" @@ -62,7 +62,7 @@ * * @constreturn A GtkIMHmlSmiley list */ -GSList* pidgin_smileys_get_all(void); +GSList *pidgin_smileys_get_all(void); /****************************************************************************** * Smiley Manager @@ -100,4 +100,4 @@ */ void pidgin_smiley_editor_set_image(PidginSmiley *editor, GdkPixbuf *image); -#endif /* _PIDGIN_GTKSMILEY_H_*/ +#endif /* PIDGIN_GTKSMILEY_H */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksound.c --- a/pidgin/gtksound.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksound.c Mon Mar 02 22:07:59 2009 +0000 @@ -40,6 +40,8 @@ #include "notify.h" #include "prefs.h" #include "sound.h" +#include "sound-theme.h" +#include "theme-manager.h" #include "util.h" #include "gtkconv.h" @@ -310,6 +312,7 @@ purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/nick_said", ""); purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/pounce_default", TRUE); purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/pounce_default", ""); + purple_prefs_add_string(PIDGIN_PREFS_ROOT "/sound/theme", ""); purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/sent_attention", TRUE); purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/sent_attention", ""); purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/got_attention", TRUE); @@ -583,6 +586,8 @@ { char *enable_pref; char *file_pref; + const char *theme_name; + PurpleSoundTheme *theme; if ((event == PURPLE_SOUND_BUDDY_ARRIVE) && mute_login_sounds) return; @@ -599,13 +604,31 @@ /* check NULL for sounds that don't have an option, ie buddy pounce */ if (purple_prefs_get_bool(enable_pref)) { char *filename = g_strdup(purple_prefs_get_path(file_pref)); - if(!filename || !strlen(filename)) { + theme_name = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme"); + + if (theme_name && *theme_name && (!filename || !*filename)) { + /* Use theme */ g_free(filename); + + theme = PURPLE_SOUND_THEME(purple_theme_manager_find_theme(theme_name, "sound")); + filename = purple_sound_theme_get_file_full(theme, sounds[event].pref); + + if(!g_file_test(filename, G_FILE_TEST_IS_REGULAR)){ /* Use Default sound in this case */ + purple_debug_error("sound", "The file: (%s) %s\n from theme: %s, was not found or wasn't readable\n", + sounds[event].pref, filename, theme_name); + g_free(filename); + } + } + + if (!filename || !strlen(filename)) { /* Use Default sounds */ + g_free(filename); + /* XXX Consider creating a constant for "sounds/purple" to be shared with Finch */ filename = g_build_filename(DATADIR, "sounds", "purple", sounds[event].def, NULL); } purple_sound_play_file(filename, NULL); + g_free(filename); } @@ -613,6 +636,29 @@ g_free(file_pref); } +gboolean +pidgin_sound_is_customized(void) +{ + gint i; + gchar *path, *file; + + for (i = 0; i < PURPLE_NUM_SOUNDS; i++) { + path = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s", sounds[i].pref); + file = g_strdup(purple_prefs_get_path(path)); + g_free(path); + + if (file && file[0] != '\0'){ + g_free(file); + return TRUE; + } + + g_free(file); + } + + return FALSE; + +} + static PurpleSoundUiOps sound_ui_ops = { pidgin_sound_init, diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksound.h --- a/pidgin/gtksound.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksound.h Mon Mar 02 22:07:59 2009 +0000 @@ -63,6 +63,15 @@ */ void *pidgin_sound_get_handle(void); +/** + * Returns true Pidgin is using customized sounds + * + * @return TRUE if non default sounds are used. + * + * @since 2.6.0 + */ +gboolean pidgin_sound_is_customized(void); + /*@}*/ #endif /* _PIDGINSOUND_H_ */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksourceiter.c --- a/pidgin/gtksourceiter.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksourceiter.c Mon Mar 02 22:07:59 2009 +0000 @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * gtksourceiter.c * * Pidgin is the legal property of its developers, whose names are too numerous @@ -7,7 +7,7 @@ * * The following copyright notice applies to this file: * - * Copyright (C) 2000 - 2005 Paolo Maggi + * Copyright (C) 2000 - 2005 Paolo Maggi * Copyright (C) 2002, 2003 Jeroen Zwartepoorte * * This program is free software; you can redistribute it and/or modify @@ -206,7 +206,7 @@ finally_2: g_free (normalized_s1); - g_free (normalized_s2); + g_free (normalized_s2); return ret; } @@ -247,7 +247,7 @@ { /* being UTF8 correct sucks; this accounts for extra offsets coming from canonical decompositions of - UTF8 characters (e.g. accented characters) which + UTF8 characters (e.g. accented characters) which g_utf8_normalize() performs */ gchar *normal; gchar buffer[6]; @@ -530,14 +530,14 @@ * @match_start: return location for start of match, or %%NULL. * @match_end: return location for end of match, or %%NULL. * @limit: bound for the search, or %%NULL for the end of the buffer. - * - * Searches forward for @str. Any match is returned by setting - * @match_start to the first character of the match and @match_end to the + * + * Searches forward for @str. Any match is returned by setting + * @match_start to the first character of the match and @match_end to the * first character after the match. The search will not continue past * @limit. Note that a search is a linear or O(n) operation, so you * may wish to use @limit to avoid locking up your UI on large * buffers. - * + * * If the #GTK_SOURCE_SEARCH_VISIBLE_ONLY flag is present, the match may * have invisible text interspersed in @str. i.e. @str will be a * possibly-noncontiguous subsequence of the matched range. similarly, @@ -550,7 +550,7 @@ * * Same as gtk_text_iter_forward_search(), but supports case insensitive * searching. - * + * * Return value: whether a match was found. **/ gboolean @@ -574,7 +574,7 @@ if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0) return gtk_text_iter_forward_search (iter, str, flags, match_start, match_end, - limit); + limit); if (limit && gtk_text_iter_compare (iter, limit) >= 0) return FALSE; @@ -650,10 +650,10 @@ * @match_start: return location for start of match, or %%NULL. * @match_end: return location for end of match, or %%NULL. * @limit: location of last possible @match_start, or %%NULL for start of buffer. - * + * * Same as gtk_text_iter_backward_search(), but supports case insensitive * searching. - * + * * Return value: whether a match was found. **/ gboolean @@ -677,7 +677,7 @@ if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0) return gtk_text_iter_backward_search (iter, str, flags, match_start, match_end, - limit); + limit); if (limit && gtk_text_iter_compare (iter, limit) <= 0) return FALSE; diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksourceiter.h --- a/pidgin/gtksourceiter.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksourceiter.h Mon Mar 02 22:07:59 2009 +0000 @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * gtksourceiter.h * * Pidgin is the legal property of its developers, whose names are too numerous @@ -7,7 +7,7 @@ * * The following copyright notice applies to this file: * - * Copyright (C) 2000 - 2005 Paolo Maggi + * Copyright (C) 2000 - 2005 Paolo Maggi * Copyright (C) 2002, 2003 Jeroen Zwartepoorte * * This program is free software; you can redistribute it and/or modify diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksourceundomanager.c --- a/pidgin/gtksourceundomanager.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksourceundomanager.c Mon Mar 02 22:07:59 2009 +0000 @@ -4,8 +4,8 @@ * This file is part of GtkSourceView * * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence - * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi - * Copyright (C) 2002-2005 Paolo Maggi + * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi + * Copyright (C) 2002-2005 Paolo Maggi * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02111-1301, USA. */ @@ -49,14 +49,14 @@ GTK_SOURCE_UNDO_ACTION_INSERT_ANCHOR, } GtkSourceUndoActionType; -/* +/* * We use offsets instead of GtkTextIters because the last ones * require to much memory in this context without giving us any advantage. - */ + */ struct _GtkSourceUndoInsertAction { - gint pos; + gint pos; gchar *text; gint length; gint chars; @@ -79,7 +79,7 @@ struct _GtkSourceUndoAction { GtkSourceUndoActionType action_type; - + union { GtkSourceUndoInsertAction insert; GtkSourceUndoDeleteAction delete; @@ -92,7 +92,7 @@ guint mergeable : 1; /* It is TRUE whether the action is marked as "modified". - * An action is marked as "modified" if it changed the + * An action is marked as "modified" if it changed the * state of the buffer from "not modified" to "modified". Only the first * action of a group can be marked as modified. * There can be a single action marked as "modified" in the actions list. @@ -106,29 +106,29 @@ struct _GtkSourceUndoManagerPrivate { GtkTextBuffer *document; - + GList* actions; - gint next_redo; + gint next_redo; gint actions_in_current_group; - + gint running_not_undoable_actions; gint num_of_groups; gint max_undo_levels; - + guint can_undo : 1; guint can_redo : 1; - + /* It is TRUE whether, while undoing an action of the current group (with order_in_group > 1), * the state of the buffer changed from "not modified" to "modified". */ - guint modified_undoing_group : 1; + guint modified_undoing_group : 1; /* Pointer to the action (in the action list) marked as "modified". - * It is NULL when no action is marked as "modified". - * It is INVALID when the action marked as "modified" has been removed + * It is NULL when no action is marked as "modified". + * It is INVALID when the action marked as "modified" has been removed * from the action list (freeing the list or resizing it) */ GtkSourceUndoAction *modified_action; }; @@ -143,33 +143,33 @@ static void gtk_source_undo_manager_init (GtkSourceUndoManager *um); static void gtk_source_undo_manager_finalize (GObject *object); -static void gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer, +static void gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer, GtkTextIter *pos, - const gchar *text, - gint length, + const gchar *text, + gint length, GtkSourceUndoManager *um); static void gtk_source_undo_manager_insert_anchor_handler (GtkTextBuffer *buffer, GtkTextIter *pos, GtkTextChildAnchor *anchor, GtkSourceUndoManager *um); -static void gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer, +static void gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer, GtkTextIter *start, GtkTextIter *end, GtkSourceUndoManager *um); -static void gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer, +static void gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer, GtkSourceUndoManager *um); static void gtk_source_undo_manager_modified_changed_handler (GtkTextBuffer *buffer, GtkSourceUndoManager *um); static void gtk_source_undo_manager_free_action_list (GtkSourceUndoManager *um); -static void gtk_source_undo_manager_add_action (GtkSourceUndoManager *um, +static void gtk_source_undo_manager_add_action (GtkSourceUndoManager *um, const GtkSourceUndoAction *undo_action); -static void gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um, +static void gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um, gint n); static void gtk_source_undo_manager_check_list_size (GtkSourceUndoManager *um); -static gboolean gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um, +static gboolean gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um, const GtkSourceUndoAction *undo_action); static GObjectClass *parent_class = NULL; @@ -216,7 +216,7 @@ klass->can_undo = NULL; klass->can_redo = NULL; - + undo_manager_signals[CAN_UNDO] = g_signal_new ("can_undo", G_OBJECT_CLASS_TYPE (object_class), @@ -269,7 +269,7 @@ g_return_if_fail (object != NULL); g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (object)); - + um = GTK_SOURCE_UNDO_MANAGER (object); g_return_if_fail (um->priv != NULL); @@ -280,19 +280,19 @@ } g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document), - G_CALLBACK (gtk_source_undo_manager_delete_range_handler), + G_CALLBACK (gtk_source_undo_manager_delete_range_handler), um); g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document), - G_CALLBACK (gtk_source_undo_manager_insert_text_handler), + G_CALLBACK (gtk_source_undo_manager_insert_text_handler), um); - + g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document), - G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler), + G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler), um); - + g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document), - G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler), + G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler), um); g_free (um->priv); @@ -311,19 +311,19 @@ um->priv->document = buffer; g_signal_connect (G_OBJECT (buffer), "insert_text", - G_CALLBACK (gtk_source_undo_manager_insert_text_handler), + G_CALLBACK (gtk_source_undo_manager_insert_text_handler), um); g_signal_connect (G_OBJECT (buffer), "insert_child_anchor", - G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler), + G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler), um); g_signal_connect (G_OBJECT (buffer), "delete_range", - G_CALLBACK (gtk_source_undo_manager_delete_range_handler), + G_CALLBACK (gtk_source_undo_manager_delete_range_handler), um); g_signal_connect (G_OBJECT (buffer), "begin_user_action", - G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler), + G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler), um); g_signal_connect (G_OBJECT (buffer), "modified_changed", @@ -332,7 +332,7 @@ return um; } -void +void gtk_source_undo_manager_begin_not_undoable_action (GtkSourceUndoManager *um) { g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); @@ -341,18 +341,18 @@ ++um->priv->running_not_undoable_actions; } -static void +static void gtk_source_undo_manager_end_not_undoable_action_internal (GtkSourceUndoManager *um) { g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); g_return_if_fail (um->priv != NULL); g_return_if_fail (um->priv->running_not_undoable_actions > 0); - + --um->priv->running_not_undoable_actions; } -void +void gtk_source_undo_manager_end_not_undoable_action (GtkSourceUndoManager *um) { g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); @@ -361,26 +361,26 @@ gtk_source_undo_manager_end_not_undoable_action_internal (um); if (um->priv->running_not_undoable_actions == 0) - { + { gtk_source_undo_manager_free_action_list (um); - - um->priv->next_redo = -1; + + um->priv->next_redo = -1; if (um->priv->can_undo) { um->priv->can_undo = FALSE; - g_signal_emit (G_OBJECT (um), - undo_manager_signals [CAN_UNDO], - 0, + g_signal_emit (G_OBJECT (um), + undo_manager_signals [CAN_UNDO], + 0, FALSE); } if (um->priv->can_redo) { um->priv->can_redo = FALSE; - g_signal_emit (G_OBJECT (um), - undo_manager_signals [CAN_REDO], - 0, + g_signal_emit (G_OBJECT (um), + undo_manager_signals [CAN_REDO], + 0, FALSE); } } @@ -395,7 +395,7 @@ return um->priv->can_undo; } -gboolean +gboolean gtk_source_undo_manager_can_redo (const GtkSourceUndoManager *um) { g_return_val_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um), FALSE); @@ -408,31 +408,31 @@ set_cursor (GtkTextBuffer *buffer, gint cursor) { GtkTextIter iter; - + /* Place the cursor at the requested position */ gtk_text_buffer_get_iter_at_offset (buffer, &iter, cursor); gtk_text_buffer_place_cursor (buffer, &iter); } -static void +static void insert_text (GtkTextBuffer *buffer, gint pos, const gchar *text, gint len) { GtkTextIter iter; - + gtk_text_buffer_get_iter_at_offset (buffer, &iter, pos); gtk_text_buffer_insert (buffer, &iter, text, len); } -static void +static void insert_anchor (GtkTextBuffer *buffer, gint pos, GtkTextChildAnchor *anchor) { GtkTextIter iter; - + gtk_text_buffer_get_iter_at_offset (buffer, &iter, pos); gtk_text_buffer_insert_child_anchor (buffer, &iter, anchor); } -static void +static void delete_text (GtkTextBuffer *buffer, gint start, gint end) { GtkTextIter start_iter; @@ -464,7 +464,7 @@ return gtk_text_buffer_get_slice (buffer, &start_iter, &end_iter, TRUE); } -void +void gtk_source_undo_manager_undo (GtkSourceUndoManager *um) { GtkSourceUndoAction *undo_action; @@ -473,13 +473,13 @@ g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); g_return_if_fail (um->priv != NULL); g_return_if_fail (um->priv->can_undo); - + um->priv->modified_undoing_group = FALSE; gtk_source_undo_manager_begin_not_undoable_action (um); do - { + { undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo + 1); g_return_if_fail (undo_action != NULL); @@ -490,7 +490,7 @@ if (undo_action->order_in_group <= 1) { /* Set modified to TRUE only if the buffer did not change its state from - * "not modified" to "modified" undoing an action (with order_in_group > 1) + * "not modified" to "modified" undoing an action (with order_in_group > 1) * in current group. */ modified = (undo_action->modified && !um->priv->modified_undoing_group); } @@ -499,31 +499,31 @@ { case GTK_SOURCE_UNDO_ACTION_DELETE: insert_text ( - um->priv->document, - undo_action->action.delete.start, + um->priv->document, + undo_action->action.delete.start, undo_action->action.delete.text, strlen (undo_action->action.delete.text)); if (undo_action->action.delete.forward) set_cursor ( - um->priv->document, + um->priv->document, undo_action->action.delete.start); else set_cursor ( - um->priv->document, + um->priv->document, undo_action->action.delete.end); break; - + case GTK_SOURCE_UNDO_ACTION_INSERT: delete_text ( - um->priv->document, - undo_action->action.insert.pos, - undo_action->action.insert.pos + - undo_action->action.insert.chars); + um->priv->document, + undo_action->action.insert.pos, + undo_action->action.insert.pos + + undo_action->action.insert.chars); set_cursor ( - um->priv->document, + um->priv->document, undo_action->action.insert.pos); break; @@ -551,29 +551,29 @@ } gtk_source_undo_manager_end_not_undoable_action_internal (um); - + um->priv->modified_undoing_group = FALSE; if (!um->priv->can_redo) { um->priv->can_redo = TRUE; - g_signal_emit (G_OBJECT (um), - undo_manager_signals [CAN_REDO], - 0, + g_signal_emit (G_OBJECT (um), + undo_manager_signals [CAN_REDO], + 0, TRUE); } if (um->priv->next_redo >= (gint)(g_list_length (um->priv->actions) - 1)) { um->priv->can_undo = FALSE; - g_signal_emit (G_OBJECT (um), - undo_manager_signals [CAN_UNDO], - 0, + g_signal_emit (G_OBJECT (um), + undo_manager_signals [CAN_UNDO], + 0, FALSE); } } -void +void gtk_source_undo_manager_redo (GtkSourceUndoManager *um) { GtkSourceUndoAction *undo_action; @@ -582,7 +582,7 @@ g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); g_return_if_fail (um->priv != NULL); g_return_if_fail (um->priv->can_redo); - + undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo); g_return_if_fail (undo_action != NULL); @@ -597,29 +597,29 @@ } --um->priv->next_redo; - + switch (undo_action->action_type) { case GTK_SOURCE_UNDO_ACTION_DELETE: delete_text ( - um->priv->document, - undo_action->action.delete.start, - undo_action->action.delete.end); + um->priv->document, + undo_action->action.delete.start, + undo_action->action.delete.end); set_cursor ( um->priv->document, undo_action->action.delete.start); break; - + case GTK_SOURCE_UNDO_ACTION_INSERT: set_cursor ( um->priv->document, undo_action->action.insert.pos); insert_text ( - um->priv->document, - undo_action->action.insert.pos, + um->priv->document, + undo_action->action.insert.pos, undo_action->action.insert.text, undo_action->action.insert.length); @@ -646,7 +646,7 @@ undo_action = NULL; else undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo); - + } while ((undo_action != NULL) && (undo_action->order_in_group > 1)); if (modified) @@ -689,7 +689,7 @@ g_free (action); } -static void +static void gtk_source_undo_manager_free_action_list (GtkSourceUndoManager *um) { GList *l; @@ -712,18 +712,18 @@ } g_list_free (um->priv->actions); - um->priv->actions = NULL; + um->priv->actions = NULL; } -static void -gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer, +static void +gtk_source_undo_manager_insert_text_handler (GtkTextBuffer *buffer, GtkTextIter *pos, - const gchar *text, - gint length, + const gchar *text, + gint length, GtkSourceUndoManager *um) { GtkSourceUndoAction undo_action; - + if (um->priv->running_not_undoable_actions > 0) return; @@ -766,15 +766,15 @@ gtk_source_undo_manager_add_action (um, &undo_action); } -static void -gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer, +static void +gtk_source_undo_manager_delete_range_handler (GtkTextBuffer *buffer, GtkTextIter *start, - GtkTextIter *end, + GtkTextIter *end, GtkSourceUndoManager *um) { GtkSourceUndoAction undo_action; GtkTextIter insert_iter; - + if (um->priv->running_not_undoable_actions > 0) return; @@ -805,14 +805,14 @@ undo_action.mergeable = TRUE; undo_action.modified = FALSE; - + gtk_source_undo_manager_add_action (um, &undo_action); g_free (undo_action.action.delete.text); } -static void +static void gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer, GtkSourceUndoManager *um) { g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); @@ -825,11 +825,11 @@ } static void -gtk_source_undo_manager_add_action (GtkSourceUndoManager *um, +gtk_source_undo_manager_add_action (GtkSourceUndoManager *um, const GtkSourceUndoAction *undo_action) { GtkSourceUndoAction* action; - + if (um->priv->next_redo >= 0) { gtk_source_undo_manager_free_first_n_actions (um, um->priv->next_redo + 1); @@ -845,7 +845,7 @@ if (action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT) action->action.insert.text = g_strndup (undo_action->action.insert.text, undo_action->action.insert.length); else if (action->action_type == GTK_SOURCE_UNDO_ACTION_DELETE) - action->action.delete.text = g_strdup (undo_action->action.delete.text); + action->action.delete.text = g_strdup (undo_action->action.delete.text); else if (action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT_ANCHOR) { /* Nothing needs to be done */ @@ -855,16 +855,16 @@ g_free (action); g_return_if_reached (); } - + ++um->priv->actions_in_current_group; action->order_in_group = um->priv->actions_in_current_group; if (action->order_in_group == 1) ++um->priv->num_of_groups; - + um->priv->actions = g_list_prepend (um->priv->actions, action); } - + gtk_source_undo_manager_check_list_size (um); if (!um->priv->can_undo) @@ -880,8 +880,8 @@ } } -static void -gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um, +static void +gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager *um, gint n) { gint i; @@ -904,21 +904,21 @@ um->priv->actions = g_list_delete_link (um->priv->actions, um->priv->actions); - if (um->priv->actions == NULL) + if (um->priv->actions == NULL) return; } } -static void +static void gtk_source_undo_manager_check_list_size (GtkSourceUndoManager *um) { gint undo_levels; - + g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); g_return_if_fail (um->priv != NULL); - + undo_levels = gtk_source_undo_manager_get_max_undo_levels (um); - + if (undo_levels < 1) return; @@ -926,14 +926,14 @@ { GtkSourceUndoAction *undo_action; GList *last; - + last = g_list_last (um->priv->actions); undo_action = (GtkSourceUndoAction*) last->data; - + do { GList *tmp; - + if (undo_action->order_in_group == 1) --um->priv->num_of_groups; @@ -945,32 +945,32 @@ tmp = g_list_previous (last); um->priv->actions = g_list_delete_link (um->priv->actions, last); last = tmp; - g_return_if_fail (last != NULL); + g_return_if_fail (last != NULL); undo_action = (GtkSourceUndoAction*) last->data; - } while ((undo_action->order_in_group > 1) || + } while ((undo_action->order_in_group > 1) || (um->priv->num_of_groups > undo_levels)); - } + } } /** * gtk_source_undo_manager_merge_action: - * @um: a #GtkSourceUndoManager. + * @um: a #GtkSourceUndoManager. * @undo_action: a #GtkSourceUndoAction. - * + * * This function tries to merge the undo action at the top of * the stack with a new undo action. So when we undo for example * typing, we can undo the whole word and not each letter by itself. - * - * Return Value: %TRUE is merge was sucessful, %FALSE otherwise. + * + * Return Value: %TRUE is merge was successful, %FALSE otherwise. **/ -static gboolean -gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um, +static gboolean +gtk_source_undo_manager_merge_action (GtkSourceUndoManager *um, const GtkSourceUndoAction *undo_action) { GtkSourceUndoAction *last_action; - + g_return_val_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um), FALSE); g_return_val_if_fail (um->priv != NULL, FALSE); @@ -990,7 +990,7 @@ } if (undo_action->action_type == GTK_SOURCE_UNDO_ACTION_DELETE) - { + { if ((last_action->action.delete.forward != undo_action->action.delete.forward) || ((last_action->action.delete.start != undo_action->action.delete.start) && (last_action->action.delete.start != undo_action->action.delete.end))) @@ -998,14 +998,14 @@ last_action->mergeable = FALSE; return FALSE; } - + if (last_action->action.delete.start == undo_action->action.delete.start) { gchar *str; - + #define L (last_action->action.delete.end - last_action->action.delete.start - 1) #define g_utf8_get_char_at(p,i) g_utf8_get_char(g_utf8_offset_to_pointer((p),(i))) - + /* Deleted with the delete key */ if ((g_utf8_get_char (undo_action->action.delete.text) != ' ') && (g_utf8_get_char (undo_action->action.delete.text) != '\t') && @@ -1015,19 +1015,19 @@ last_action->mergeable = FALSE; return FALSE; } - - str = g_strdup_printf ("%s%s", last_action->action.delete.text, + + str = g_strdup_printf ("%s%s", last_action->action.delete.text, undo_action->action.delete.text); - + g_free (last_action->action.delete.text); - last_action->action.delete.end += (undo_action->action.delete.end - + last_action->action.delete.end += (undo_action->action.delete.end - undo_action->action.delete.start); last_action->action.delete.text = str; } else { gchar *str; - + /* Deleted with the backspace key */ if ((g_utf8_get_char (undo_action->action.delete.text) != ' ') && (g_utf8_get_char (undo_action->action.delete.text) != '\t') && @@ -1038,9 +1038,9 @@ return FALSE; } - str = g_strdup_printf ("%s%s", undo_action->action.delete.text, + str = g_strdup_printf ("%s%s", undo_action->action.delete.text, last_action->action.delete.text); - + g_free (last_action->action.delete.text); last_action->action.delete.start = undo_action->action.delete.start; last_action->action.delete.text = str; @@ -1049,10 +1049,10 @@ else if (undo_action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT) { gchar* str; - + #define I (last_action->action.insert.chars - 1) - - if ((undo_action->action.insert.pos != + + if ((undo_action->action.insert.pos != (last_action->action.insert.pos + last_action->action.insert.chars)) || ((g_utf8_get_char (undo_action->action.insert.text) != ' ') && (g_utf8_get_char (undo_action->action.insert.text) != '\t') && @@ -1064,9 +1064,9 @@ return FALSE; } - str = g_strdup_printf ("%s%s", last_action->action.insert.text, + str = g_strdup_printf ("%s%s", last_action->action.insert.text, undo_action->action.insert.text); - + g_free (last_action->action.insert.text); last_action->action.insert.length += undo_action->action.insert.length; last_action->action.insert.text = str; @@ -1080,7 +1080,7 @@ else /* Unknown action inside undo merge encountered */ g_return_val_if_reached (TRUE); - + return TRUE; } @@ -1098,7 +1098,7 @@ gint max_undo_levels) { gint old_levels; - + g_return_if_fail (um != NULL); g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); @@ -1107,7 +1107,7 @@ if (max_undo_levels < 1) return; - + if (old_levels > max_undo_levels) { /* strip redo actions first */ @@ -1116,7 +1116,7 @@ gtk_source_undo_manager_free_first_n_actions (um, 1); um->priv->next_redo--; } - + /* now remove undo actions if necessary */ gtk_source_undo_manager_check_list_size (um); @@ -1142,7 +1142,7 @@ { GtkSourceUndoAction *action; GList *list; - + g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um)); g_return_if_fail (um->priv != NULL); @@ -1157,7 +1157,7 @@ action = NULL; if (gtk_text_buffer_get_modified (buffer) == FALSE) - { + { if (action != NULL) action->mergeable = FALSE; @@ -1178,7 +1178,7 @@ return; } - + /* gtk_text_buffer_get_modified (buffer) == TRUE */ g_return_if_fail (um->priv->modified_action == NULL); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtksourceundomanager.h --- a/pidgin/gtksourceundomanager.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtksourceundomanager.h Mon Mar 02 22:07:59 2009 +0000 @@ -4,8 +4,8 @@ * This file is part of GtkSourceView * * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence - * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi - * Copyright (C) 2002, 2003 Paolo Maggi + * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi + * Copyright (C) 2002, 2003 Paolo Maggi * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,10 +19,10 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02111-1301, USA. * * */ - + #ifndef __GTK_SOURCE_UNDO_MANAGER_H__ #define __GTK_SOURCE_UNDO_MANAGER_H__ @@ -44,7 +44,7 @@ struct _GtkSourceUndoManager { GObject base; - + GtkSourceUndoManagerPrivate *priv; }; @@ -67,14 +67,14 @@ void gtk_source_undo_manager_undo (GtkSourceUndoManager *um); void gtk_source_undo_manager_redo (GtkSourceUndoManager *um); -void gtk_source_undo_manager_begin_not_undoable_action +void gtk_source_undo_manager_begin_not_undoable_action (GtkSourceUndoManager *um); -void gtk_source_undo_manager_end_not_undoable_action +void gtk_source_undo_manager_end_not_undoable_action (GtkSourceUndoManager *um); -gint gtk_source_undo_manager_get_max_undo_levels +gint gtk_source_undo_manager_get_max_undo_levels (GtkSourceUndoManager *um); -void gtk_source_undo_manager_set_max_undo_levels +void gtk_source_undo_manager_set_max_undo_levels (GtkSourceUndoManager *um, gint undo_levels); diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkstatus-icon-theme.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkstatus-icon-theme.c Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,72 @@ +/* + * Status Icon Themes for Pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "gtkstatus-icon-theme.h" + +/****************************************************************************** + * Globals + *****************************************************************************/ + +static GObjectClass *parent_class = NULL; + +/****************************************************************************** + * GObject Stuff + *****************************************************************************/ + +static void +pidgin_status_icon_theme_finalize(GObject *obj) +{ + parent_class->finalize(obj); +} + +static void +pidgin_status_icon_theme_class_init(PidginStatusIconThemeClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + + parent_class = g_type_class_peek_parent(klass); + + obj_class->finalize = pidgin_status_icon_theme_finalize; +} + +GType +pidgin_status_icon_theme_get_type(void) +{ + static GType type = 0; + if (type == 0) { + static const GTypeInfo info = { + sizeof (PidginStatusIconThemeClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)pidgin_status_icon_theme_class_init, /* class_init */ + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (PidginStatusIconTheme), + 0, /* n_preallocs */ + NULL, + NULL, /* value table */ + }; + type = g_type_register_static(PIDGIN_TYPE_ICON_THEME, + "PidginStatusIconTheme", &info, 0); + } + return type; +} diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkstatus-icon-theme.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/gtkstatus-icon-theme.h Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,71 @@ +/** + * @file status_icon-theme.h Pidgin Icon Theme Class API + */ + +/* pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef PIDGIN_STATUS_ICON_THEME_H +#define PIDGIN_STATUS_ICON_THEME_H + +#include +#include "gtkicon-theme.h" + +/** + * extends PidginIconTheme (gtkicon-theme.h) + * A pidgin status icon theme. + * This object represents a Pidgin status icon theme. + * + * PidginStatusIconTheme is a PidginIconTheme Object. + */ +typedef struct _PidginStatusIconTheme PidginStatusIconTheme; +typedef struct _PidginStatusIconThemeClass PidginStatusIconThemeClass; + +#define PIDGIN_TYPE_STATUS_ICON_THEME (pidgin_status_icon_theme_get_type ()) +#define PIDGIN_STATUS_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconTheme)) +#define PIDGIN_STATUS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconThemeClass)) +#define PIDGIN_IS_STATUS_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_STATUS_ICON_THEME)) +#define PIDGIN_IS_STATUS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_STATUS_ICON_THEME)) +#define PIDGIN_STATUS_ICON_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconThemeClass)) + +struct _PidginStatusIconTheme +{ + PidginIconTheme parent; +}; + +struct _PidginStatusIconThemeClass +{ + PidginIconThemeClass parent_class; +}; + +/**************************************************************************/ +/** @name Pidgin Status Icon Theme API */ +/**************************************************************************/ +G_BEGIN_DECLS + +/** + * GObject foo. + * @internal. + */ +GType pidgin_status_icon_theme_get_type(void); + +G_END_DECLS +#endif /* PIDGIN_STATUS_ICON_THEME_H */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkstatusbox.c --- a/pidgin/gtkstatusbox.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkstatusbox.c Mon Mar 02 22:07:59 2009 +0000 @@ -1646,7 +1646,7 @@ pidgin_status_box_popdown (status_box); return TRUE; } else if (ewidget == status_box->toggle_button) { - status_box->popup_in_progress = TRUE; + status_box->popup_in_progress = TRUE; } /* released outside treeview */ @@ -1698,7 +1698,7 @@ gtk_tree_path_free (path); return ret; } - } + } } return FALSE; } @@ -1777,9 +1777,9 @@ status_box->vsep = gtk_vseparator_new(); status_box->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE); - status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, + status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN); - status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, + status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN); gtk_cell_view_set_model(GTK_CELL_VIEW(status_box->cell_view), GTK_TREE_MODEL(status_box->store)); @@ -2529,7 +2529,7 @@ { GtkTextBuffer *buffer; GtkTextIter iter; - int wrapped_lines; + int display_lines; int lines; GdkRectangle oneline; int height; @@ -2545,28 +2545,44 @@ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml)); height = 0; - wrapped_lines = 1; + display_lines = 1; gtk_text_buffer_get_start_iter(buffer, &iter); do { gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline); height += oneline.height; - wrapped_lines++; - if (wrapped_lines > 4) - break; - } while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(status_box->imhtml), &iter)); + display_lines++; + } while (display_lines <= 4 && + gtk_text_view_forward_display_line(GTK_TEXT_VIEW(status_box->imhtml), &iter)); + + /* + * This check fixes the case where the last character entered is a + * newline (shift+return). For some reason the + * gtk_text_view_forward_display_line() function doesn't treat this + * like a new line, and so we think the input box only needs to be + * two lines instead of three, for example. So we check if the + * last character was a newline and add some extra height if so. + */ + if (display_lines <= 4 + && gtk_text_iter_backward_char(&iter) + && gtk_text_iter_get_char(&iter) == '\n') + { + gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline); + height += oneline.height; + display_lines++; + } lines = gtk_text_buffer_get_line_count(buffer); /* Show a maximum of 4 lines */ lines = MIN(lines, 4); - wrapped_lines = MIN(wrapped_lines, 4); + display_lines = MIN(display_lines, 4); pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(status_box->imhtml)); pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(status_box->imhtml)); pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(status_box->imhtml)); height += (pad_top + pad_bottom) * lines; - height += (pad_inside) * (wrapped_lines - lines); + height += (pad_inside) * (display_lines - lines); gtk_widget_set_size_request(status_box->vbox, -1, height + PIDGIN_HIG_BOX_SPACE); } diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkthemes.c --- a/pidgin/gtkthemes.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkthemes.c Mon Mar 02 22:07:59 2009 +0000 @@ -83,7 +83,7 @@ { char *theme_dir = NULL, *last_slash = NULL; g_return_if_fail(NULL != file); - + if (!g_file_test(file, G_FILE_TEST_EXISTS)) return; if ((theme_dir = g_strdup(file)) == NULL) return ; @@ -169,12 +169,12 @@ for (wer = theme->list; wer != NULL; wer = theme->list) { while (wer->smileys) { GtkIMHtmlSmiley *uio = wer->smileys->data; - + if (uio->imhtml) { g_signal_handlers_disconnect_matched(uio->imhtml, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, uio); } - + if (uio->icon) g_object_unref(uio->icon); if (g_hash_table_lookup(already_freed, uio->file) == NULL) { diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkutils.c --- a/pidgin/gtkutils.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkutils.c Mon Mar 02 22:07:59 2009 +0000 @@ -56,6 +56,9 @@ #include "signals.h" #include "util.h" +#include "gtkaccount.h" +#include "gtkprefs.h" + #include "gtkconv.h" #include "gtkdialogs.h" #include "gtkimhtml.h" @@ -71,6 +74,7 @@ } AopMenu; static guint accels_save_timer = 0; +static GList *gnome_url_handlers = NULL; static gboolean url_clicked_idle_cb(gpointer data) @@ -80,10 +84,12 @@ return FALSE; } -static void -url_clicked_cb(GtkWidget *w, const char *uri) +static gboolean +url_clicked_cb(GtkIMHtml *unused, GtkIMHtmlLink *link) { + const char *uri = gtk_imhtml_link_get_url(link); g_idle_add(url_clicked_idle_cb, g_strdup(uri)); + return TRUE; } static GtkIMHtmlFuncs gtkimhtml_cbs = { @@ -102,9 +108,6 @@ g_return_if_fail(imhtml != NULL); g_return_if_fail(GTK_IS_IMHTML(imhtml)); - g_signal_connect(G_OBJECT(imhtml), "url_clicked", - G_CALLBACK(url_clicked_cb), NULL); - pidgin_themes_smiley_themeize(imhtml); gtk_imhtml_set_funcs(GTK_IMHTML(imhtml), >kimhtml_cbs); @@ -567,7 +570,7 @@ gtk_widget_show (label); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - + gtk_container_add(GTK_CONTAINER(item), hbox); gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); @@ -1924,7 +1927,7 @@ #endif /* !NEW_STYLE_COMPLETION */ #ifdef NEW_STYLE_COMPLETION -static gboolean screenname_completion_match_func(GtkEntryCompletion *completion, +static gboolean buddyname_completion_match_func(GtkEntryCompletion *completion, const gchar *key, GtkTreeIter *iter, gpointer user_data) { GtkTreeModel *model; @@ -1957,7 +1960,7 @@ return FALSE; } -static gboolean screenname_completion_match_selected_cb(GtkEntryCompletion *completion, +static gboolean buddyname_completion_match_selected_cb(GtkEntryCompletion *completion, GtkTreeModel *model, GtkTreeIter *iter, PidginCompletionData *data) { GValue val; @@ -1983,22 +1986,22 @@ } static void -add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias, - const PurpleAccount *account, const char *screenname) +add_buddyname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias, + const PurpleAccount *account, const char *buddyname) { GtkTreeIter iter; gboolean completion_added = FALSE; - gchar *normalized_screenname; + gchar *normalized_buddyname; gchar *tmp; - tmp = g_utf8_normalize(screenname, -1, G_NORMALIZE_DEFAULT); - normalized_screenname = g_utf8_casefold(tmp, -1); + tmp = g_utf8_normalize(buddyname, -1, G_NORMALIZE_DEFAULT); + normalized_buddyname = g_utf8_casefold(tmp, -1); g_free(tmp); /* There's no sense listing things like: 'xxx "xxx"' - when the screenname and buddy alias match. */ - if (buddy_alias && strcmp(buddy_alias, screenname)) { - char *completion_entry = g_strdup_printf("%s \"%s\"", screenname, buddy_alias); + when the name and buddy alias match. */ + if (buddy_alias && strcmp(buddy_alias, buddyname)) { + char *completion_entry = g_strdup_printf("%s \"%s\"", buddyname, buddy_alias); char *tmp2 = g_utf8_normalize(buddy_alias, -1, G_NORMALIZE_DEFAULT); tmp = g_utf8_casefold(tmp2, -1); @@ -2007,8 +2010,8 @@ gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, completion_entry, - 1, screenname, - 2, normalized_screenname, + 1, buddyname, + 2, normalized_buddyname, 3, tmp, 4, account, -1); @@ -2018,12 +2021,12 @@ } /* There's no sense listing things like: 'xxx "xxx"' - when the screenname and contact alias match. */ - if (contact_alias && strcmp(contact_alias, screenname)) { + when the name and contact alias match. */ + if (contact_alias && strcmp(contact_alias, buddyname)) { /* We don't want duplicates when the contact and buddy alias match. */ if (!buddy_alias || strcmp(contact_alias, buddy_alias)) { char *completion_entry = g_strdup_printf("%s \"%s\"", - screenname, contact_alias); + buddyname, contact_alias); char *tmp2 = g_utf8_normalize(contact_alias, -1, G_NORMALIZE_DEFAULT); tmp = g_utf8_casefold(tmp2, -1); @@ -2032,8 +2035,8 @@ gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, completion_entry, - 1, screenname, - 2, normalized_screenname, + 1, buddyname, + 2, normalized_buddyname, 3, tmp, 4, account, -1); @@ -2044,18 +2047,18 @@ } if (completion_added == FALSE) { - /* Add the buddy's screenname. */ + /* Add the buddy's name. */ gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, - 0, screenname, - 1, screenname, - 2, normalized_screenname, + 0, buddyname, + 1, buddyname, + 2, normalized_buddyname, 3, NULL, 4, account, -1); } - g_free(normalized_screenname); + g_free(normalized_buddyname); } #endif /* NEW_STYLE_COMPLETION */ @@ -2064,8 +2067,8 @@ PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func; gpointer user_data = data->filter_func_user_data; - /* 1. Don't show buddies because we will have gotten them already. - * 2. The boxes that use this autocomplete code handle only IMs. */ + /* 1. Don't show buddies because we will have gotten them already. + * 2. The boxes that use this autocomplete code handle only IMs. */ if (!set->buddy && set->type == PURPLE_LOG_IM) { PidginBuddyCompletionEntry entry; entry.is_buddy = FALSE; @@ -2073,7 +2076,7 @@ if (filter_func(&entry, user_data)) { #ifdef NEW_STYLE_COMPLETION - add_screenname_autocomplete_entry(data->store, + add_buddyname_autocomplete_entry(data->store, NULL, NULL, set->account, set->name); #else /* Steal the name for the GCompletion. */ @@ -2119,7 +2122,7 @@ if (filter_func(&entry, user_data)) { #ifdef NEW_STYLE_COMPLETION - add_screenname_autocomplete_entry(data->store, + add_buddyname_autocomplete_entry(data->store, ((PurpleContact *)cnode)->alias, purple_buddy_get_contact_alias(entry.entry.buddy), entry.entry.buddy->account, @@ -2150,7 +2153,7 @@ } static void -screenname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data) +buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data) { g_free(data); purple_signals_disconnect_by_handle(widget); @@ -2162,15 +2165,17 @@ add_completion_list(data); } - void pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *accountopt, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data) { PidginCompletionData *data; #ifdef NEW_STYLE_COMPLETION - /* Store the displayed completion value, the screenname, the UTF-8 normalized & casefolded screenname, - * the UTF-8 normalized & casefolded value for comparison, and the account. */ + /* + * Store the displayed completion value, the buddy name, the UTF-8 + * normalized & casefolded buddy name, the UTF-8 normalized & + * casefolded value for comparison, and the account. + */ GtkListStore *store; GtkEntryCompletion *completion; @@ -2191,15 +2196,15 @@ add_completion_list(data); - /* Sort the completion list by screenname. */ + /* Sort the completion list by buddy name */ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), 1, GTK_SORT_ASCENDING); completion = gtk_entry_completion_new(); - gtk_entry_completion_set_match_func(completion, screenname_completion_match_func, NULL, NULL); + gtk_entry_completion_set_match_func(completion, buddyname_completion_match_func, NULL, NULL); g_signal_connect(G_OBJECT(completion), "match-selected", - G_CALLBACK(screenname_completion_match_selected_cb), data); + G_CALLBACK(buddyname_completion_match_selected_cb), data); gtk_entry_set_completion(GTK_ENTRY(entry), completion); g_object_unref(completion); @@ -2246,7 +2251,7 @@ purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry, PURPLE_CALLBACK(repopulate_autocomplete), data); - g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(screenname_autocomplete_destroyed_cb), data); + g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data); } gboolean @@ -3240,7 +3245,7 @@ style = gtk_widget_get_style(widget); if (!style) return "dim grey"; - + snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x", style->text_aa[GTK_STATE_NORMAL].red >> 8, style->text_aa[GTK_STATE_NORMAL].green >> 8, @@ -3480,3 +3485,198 @@ return pixbuf; } +static void url_copy(GtkWidget *w, gchar *url) +{ + GtkClipboard *clipboard; + + clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY); + gtk_clipboard_set_text(clipboard, url, -1); + + clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD); + gtk_clipboard_set_text(clipboard, url, -1); +} + +static gboolean +link_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu) +{ + GtkWidget *img, *item; + const char *url; + + url = gtk_imhtml_link_get_url(link); + + /* Open Link */ + img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU); + item = gtk_image_menu_item_new_with_mnemonic(_("_Open Link")); + 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); + + /* Copy Link Location */ + img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU); + item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Link Location")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); + g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(url_copy), (gpointer)url); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + + return TRUE; +} + +static gboolean +copy_email_address(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu) +{ + GtkWidget *img, *item; + const char *text; + char *address; +#define MAILTOSIZE (sizeof("mailto:") - 1) + + text = gtk_imhtml_link_get_url(link); + g_return_val_if_fail(text && strlen(text) > MAILTOSIZE, FALSE); + address = (char*)text + MAILTOSIZE; + + /* Copy Email Address */ + img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU); + item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Email Address")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img); + g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(url_copy), address); + 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) +{ + const char *url; + const char *str; + + url = gtk_imhtml_link_get_url(link); + if (!url || strlen(url) < sizeof("open://")) + return FALSE; + + str = url + sizeof("open://") - 1; + + if (strcmp(str, "accounts") == 0) + pidgin_accounts_window_show(); + else if (strcmp(str, "prefs") == 0) + pidgin_prefs_show(); + else + return FALSE; + return TRUE; +} + +static gboolean +dummy(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu) +{ + return TRUE; +} + +static gboolean +register_gnome_url_handlers(void) +{ + char *tmp; + char *err; + char *c; + char *start; + + tmp = g_find_program_in_path("gconftool-2"); + if (tmp == NULL) + return FALSE; + + tmp = NULL; + if (!g_spawn_command_line_sync("gconftool-2 --all-dirs /desktop/gnome/url-handlers", + &tmp, &err, NULL, NULL)) + { + g_free(tmp); + g_free(err); + g_return_val_if_reached(FALSE); + } + g_free(err); + err = NULL; + + for (c = start = tmp ; *c ; c++) + { + /* Skip leading spaces. */ + if (c == start && *c == ' ') + start = c + 1; + else if (*c == '\n') + { + *c = '\0'; + if (g_str_has_prefix(start, "/desktop/gnome/url-handlers/")) + { + char *cmd; + char *tmp2 = NULL; + char *protocol; + + /* If there is an enabled boolean, honor it. */ + cmd = g_strdup_printf("gconftool-2 -g %s/enabled", start); + if (g_spawn_command_line_sync(cmd, &tmp2, &err, NULL, NULL)) + { + g_free(err); + err = NULL; + if (!strcmp(tmp2, "false\n")) + { + g_free(tmp2); + g_free(cmd); + start = c + 1; + continue; + } + } + g_free(cmd); + g_free(tmp2); + + start += sizeof("/desktop/gnome/url-handlers/") - 1; + + protocol = g_strdup_printf("%s:", start); + gnome_url_handlers = g_list_prepend(gnome_url_handlers, protocol); + gtk_imhtml_class_register_protocol(protocol, url_clicked_cb, link_context_menu); + } + start = c + 1; + } + } + g_free(tmp); + + return (gnome_url_handlers != NULL); +} + +void pidgin_utils_init(void) +{ + gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu); + gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu); + gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu); + gtk_imhtml_class_register_protocol("gopher://", url_clicked_cb, link_context_menu); + gtk_imhtml_class_register_protocol("mailto:", url_clicked_cb, copy_email_address); + + /* Example custom URL handler. */ + gtk_imhtml_class_register_protocol("open://", open_dialog, dummy); + + /* If we're under GNOME, try registering the system URL handlers. */ + if (purple_running_gnome()) + register_gnome_url_handlers(); +} + +void pidgin_utils_uninit(void) +{ + gtk_imhtml_class_register_protocol("open://", NULL, NULL); + + /* If we have GNOME handlers registered, unregister them. */ + if (gnome_url_handlers) + { + GList *l; + for (l = gnome_url_handlers ; l ; l = l->next) + { + gtk_imhtml_class_register_protocol((char *)l->data, NULL, NULL); + g_free(l->data); + } + g_list_free(gnome_url_handlers); + gnome_url_handlers = NULL; + return; + } + + gtk_imhtml_class_register_protocol("http://", NULL, NULL); + gtk_imhtml_class_register_protocol("https://", NULL, NULL); + gtk_imhtml_class_register_protocol("ftp://", NULL, NULL); + gtk_imhtml_class_register_protocol("mailto:", NULL, NULL); + gtk_imhtml_class_register_protocol("gopher://", NULL, NULL); +} + diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkutils.h --- a/pidgin/gtkutils.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkutils.h Mon Mar 02 22:07:59 2009 +0000 @@ -136,7 +136,7 @@ * Retrieves the main content box (vbox) from a pidgin dialog window * * @param dialog The dialog window - * @param homogeneous TRUE if all children are to be given equal space allotments. + * @param homogeneous TRUE if all children are to be given equal space allotments. * @param spacing the number of pixels to place by default between children * * @since 2.4.0 @@ -184,8 +184,8 @@ void pidgin_toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle); /** - * Checks if text has been entered into a GtkTextEntry widget. If - * so, the GTK_RESPONSE_OK on the given dialog is set to TRUE. + * Checks if text has been entered into a GtkTextEntry widget. If + * so, the GTK_RESPONSE_OK on the given dialog is set to TRUE. * Otherwise GTK_RESPONSE_OK is set to FALSE. * * @param entry The text entry widget. @@ -355,7 +355,7 @@ * * @param entry The GtkEntry on which to setup autocomplete. * @param optmenu A menu for accounts, returned by gaim_gtk_account_option_menu_new(). - * If @a optmenu is not @c NULL, it'll be updated when a screenname is chosen + * If @a optmenu is not @c NULL, it'll be updated when a username is chosen * from the autocomplete list. * @param filter_func A function for checking if an autocomplete entry * should be shown. This can be @c NULL. @@ -364,7 +364,7 @@ void pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *optmenu, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data); /** - * The default filter function for screenname autocomplete. + * The default filter function for username autocomplete. * * @param completion_entry The completion entry to filter. * @param all_accounts If this is @c FALSE, only the autocompletion entries @@ -385,9 +385,9 @@ * @param entry The GtkEntry on which to setup autocomplete. * @param optmenu A menu for accounts, returned by * pidgin_account_option_menu_new(). If @a optmenu is not @c - * NULL, it'll be updated when a screenname is chosen from the + * NULL, it'll be updated when a username is chosen from the * autocomplete list. - * @param all Whether to include screennames from disconnected accounts. + * @param all Whether to include usernames from disconnected accounts. */ void pidgin_setup_screenname_autocomplete(GtkWidget *entry, GtkWidget *optmenu, gboolean all); @@ -473,7 +473,7 @@ char **ret_alias); /** - * Sets an ATK name for a given widget. Also sets the labelled-by + * Sets an ATK name for a given widget. Also sets the labelled-by * and label-for ATK relationships. * * @param w The widget that we want to name. @@ -509,10 +509,10 @@ gboolean *push_in, gpointer data); /** - * A valid GtkMenuPositionFunc. This is used to determine where - * to draw context menus when the menu is activated with the - * keyboard (shift+F10). If the menu is activated with the mouse, - * then you should just use GTK's built-in position function, + * A valid GtkMenuPositionFunc. This is used to determine where + * to draw context menus when the menu is activated with the + * keyboard (shift+F10). If the menu is activated with the mouse, + * then you should just use GTK's built-in position function, * because it does a better job of positioning the menu. * * @param menu The menu we are positioning. @@ -612,13 +612,13 @@ * @param parent The parent window * @param callback The callback to call when the window is closed. If the user chose an icon, the char* argument will point to its path * @param data Data to pass to @a callback - * @return The file dialog + * @return The file dialog */ GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char*,gpointer), gpointer data); /** * Converts a buddy icon to the required size and format - * + * * @param plugin The prpl to convert the icon * @param path The path of a file to convert * @param len If not @c NULL, the length of the returned data will be set here. @@ -706,7 +706,7 @@ const gchar *key, GtkTreeIter *iter, gpointer data); /** - * Sets or resets a window to 'urgent,' by setting the URGENT hint in X + * Sets or resets a window to 'urgent,' by setting the URGENT hint in X * or blinking in the win32 taskbar * * @param window The window to draw attention to @@ -792,7 +792,8 @@ * * @param window The window to make transient. * - * @return Whether the window was made transient or not. + * @return Whether the window was made transient or not. + * * @since 2.4.0 */ gboolean pidgin_auto_parent_window(GtkWidget *window); @@ -818,9 +819,24 @@ * @param image A PurpleStoredImage. * * @return A GdkPixbuf created from the stored image. + * * @since 2.5.0 */ -GdkPixbuf * pidgin_pixbuf_from_imgstore(PurpleStoredImage *image); +GdkPixbuf *pidgin_pixbuf_from_imgstore(PurpleStoredImage *image); + +/** + * Initialize some utility functions. + * + * @since 2.6.0 + */ +void pidgin_utils_init(void); + +/** + * Uninitialize some utility functions. + * + * @since 2.6.0 + */ +void pidgin_utils_uninit(void); #endif /* _PIDGINUTILS_H_ */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/gtkwhiteboard.c --- a/pidgin/gtkwhiteboard.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/gtkwhiteboard.c Mon Mar 02 22:07:59 2009 +0000 @@ -857,7 +857,7 @@ { GdkColor color; GtkColorSelectionDialog *dialog; - + dialog = (GtkColorSelectionDialog *)gtk_color_selection_dialog_new(_("Select color")); g_signal_connect(G_OBJECT(dialog->colorsel), "color-changed", diff -r a0668fbf2483 -r b98519a42e53 pidgin/pidgincombobox.c --- a/pidgin/pidgincombobox.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/pidgincombobox.c Mon Mar 02 22:07:59 2009 +0000 @@ -112,7 +112,7 @@ /* While debugging this evil code, I have learned that * there are actually 4 modes to this widget, which can * be characterized as follows - * + * * 1) menu mode, no child added * * tree_view -> NULL @@ -127,9 +127,9 @@ * popup_frame -> NULL * * 2) menu mode, child added - * + * * tree_view -> NULL - * cell_view -> NULL + * cell_view -> NULL * cell_view_frame -> NULL * button -> GtkToggleButton set_parent to combo * box -> NULL @@ -140,7 +140,7 @@ * popup_frame -> NULL * * 3) list mode, no child added - * + * * tree_view -> GtkTreeView, child of popup_frame * cell_view -> GtkCellView, regular child * cell_view_frame -> GtkFrame, set parent to combo @@ -164,7 +164,7 @@ * popup_widget -> tree_view * popup_window -> GtkWindow * popup_frame -> GtkFrame, child of popup_window - * + * */ enum { @@ -285,9 +285,9 @@ gpointer data); /* list */ -static void gtk_combo_box_list_position (GtkComboBox *combo_box, - gint *x, - gint *y, +static void gtk_combo_box_list_position (GtkComboBox *combo_box, + gint *x, + gint *y, gint *width, gint *height); @@ -641,7 +641,7 @@ if (GTK_WIDGET_REALIZED (widget)) { if (combo_box->priv->tree_view && combo_box->priv->cell_view) - gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), + gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), &widget->style->base[GTK_WIDGET_STATE (widget)]); } @@ -694,7 +694,7 @@ gtk_combo_box_check_appearance (combo_box); if (combo_box->priv->tree_view && combo_box->priv->cell_view) - gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), + gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), &widget->style->base[GTK_WIDGET_STATE (widget)]); } @@ -725,7 +725,7 @@ GTK_BIN (container)->child = NULL; gtk_widget_queue_resize (GTK_WIDGET (container)); } - + gtk_widget_set_parent (widget, GTK_WIDGET (container)); GTK_BIN (container)->child = widget; @@ -770,7 +770,7 @@ appears_as_list = FALSE; else appears_as_list = TRUE; - + if (appears_as_list) gtk_combo_box_list_destroy (combo_box); else if (GTK_IS_MENU (combo_box->priv->popup_widget)) @@ -785,7 +785,7 @@ combo_box->priv->cell_view = gtk_cell_view_new (); gtk_widget_set_parent (combo_box->priv->cell_view, GTK_WIDGET (container)); GTK_BIN (container)->child = combo_box->priv->cell_view; - + gtk_widget_show (combo_box->priv->cell_view); gtk_cell_view_set_model (GTK_CELL_VIEW (combo_box->priv->cell_view), combo_box->priv->model); @@ -856,7 +856,7 @@ g_signal_handlers_disconnect_by_func (menu, gtk_combo_box_menu_hide, combo_box); - + combo_box->priv->popup_widget = NULL; } @@ -940,12 +940,12 @@ GdkScreen *screen; gint monitor_num; GdkRectangle monitor; - + /* FIXME: is using the size request here broken? */ child = GTK_BIN (combo_box)->child; - + gdk_window_get_origin (child->window, &sx, &sy); - + if (GTK_WIDGET_NO_WINDOW (child)) { sx += child->allocation.x; @@ -961,20 +961,20 @@ *y = sy; screen = gtk_widget_get_screen (GTK_WIDGET (combo_box)); - monitor_num = gdk_screen_get_monitor_at_window (screen, + monitor_num = gdk_screen_get_monitor_at_window (screen, GTK_WIDGET (combo_box)->window); gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); - + if (*x < monitor.x) *x = monitor.x; else if (*x + req.width > monitor.x + monitor.width) *x = monitor.x + monitor.width - req.width; - + if (monitor.y + monitor.height - *y - child->allocation.height >= req.height) *y += child->allocation.height; else if (*y - monitor.y >= req.height) *y -= req.height; - else if (monitor.y + monitor.height - *y - child->allocation.height > *y - monitor.y) + else if (monitor.y + monitor.height - *y - child->allocation.height > *y - monitor.y) *y += child->allocation.height; else *y -= req.height; @@ -1001,7 +1001,7 @@ gint menu_width; g_return_if_fail (GTK_IS_COMBO_BOX (user_data)); - + combo_box = GTK_COMBO_BOX (user_data); widget = GTK_WIDGET (combo_box); @@ -1042,7 +1042,7 @@ /* Clamp the position on screen */ screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget)); - + if (menu_xpos < 0) menu_xpos = 0; else if ((menu_xpos + menu_width) > screen_width) @@ -1066,13 +1066,13 @@ combo_box = GTK_COMBO_BOX (user_data); - if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL) + if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL) gtk_combo_box_menu_position_below (menu, x, y, push_in, user_data); else { menu_item = gtk_menu_get_active (GTK_MENU (combo_box->priv->popup_widget)); if (menu_item) - gtk_menu_shell_select_item (GTK_MENU_SHELL (combo_box->priv->popup_widget), + gtk_menu_shell_select_item (GTK_MENU_SHELL (combo_box->priv->popup_widget), menu_item); gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data); @@ -1082,9 +1082,9 @@ #endif /* Gtk 2.2 */ static void -gtk_combo_box_list_position (GtkComboBox *combo_box, - gint *x, - gint *y, +gtk_combo_box_list_position (GtkComboBox *combo_box, + gint *x, + gint *y, gint *width, gint *height) { @@ -1095,7 +1095,7 @@ gint monitor_num; GdkRectangle monitor; #endif - + sample = GTK_BIN (combo_box)->child; *width = sample->allocation.width; @@ -1117,30 +1117,30 @@ *x += sample->allocation.x; *y += sample->allocation.y; } - + #if GTK_CHECK_VERSION(2,2,0) screen = gtk_widget_get_screen (GTK_WIDGET (combo_box)); - monitor_num = gdk_screen_get_monitor_at_window (screen, + monitor_num = gdk_screen_get_monitor_at_window (screen, GTK_WIDGET (combo_box)->window); gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); - + if (*x < monitor.x) *x = monitor.x; else if (*x + *width > monitor.x + monitor.width) *x = monitor.x + monitor.width - *width; - + if (*y + sample->allocation.height + *height <= monitor.y + monitor.height) *y += sample->allocation.height; else *y -= *height; #endif /* Gtk 2.2 */ -} +} /** * gtk_combo_box_popup: * @combo_box: a #GtkComboBox - * - * Pops up the menu or dropdown list of @combo_box. + * + * Pops up the menu or dropdown list of @combo_box. * * This function is mostly intended for use by accessibility technologies; * applications should have little use for it. @@ -1151,7 +1151,7 @@ gtk_combo_box_popup (GtkComboBox *combo_box) { gint x, y, width, height; - + g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); if (GTK_WIDGET_MAPPED (combo_box->priv->popup_widget)) @@ -1172,7 +1172,7 @@ gtk_widget_set_size_request (combo_box->priv->popup_widget, MAX (width, requisition.width), -1); } - + gtk_menu_popup (GTK_MENU (combo_box->priv->popup_widget), NULL, NULL, #if GTK_CHECK_VERSION(2,2,0) @@ -1187,7 +1187,7 @@ gtk_widget_show_all (combo_box->priv->popup_frame); gtk_combo_box_list_position (combo_box, &x, &y, &width, &height); - gtk_widget_set_size_request (combo_box->priv->popup_window, width, -1); + gtk_widget_set_size_request (combo_box->priv->popup_window, width, -1); gtk_window_move (GTK_WINDOW (combo_box->priv->popup_window), x, y); /* popup */ @@ -1217,7 +1217,7 @@ /** * gtk_combo_box_popdown: * @combo_box: a #GtkComboBox - * + * * Hides the menu or dropdown list of @combo_box. * * This function is mostly intended for use by accessibility technologies; @@ -1305,7 +1305,7 @@ GtkRequisition req; if (combo_box->priv->cell_view) - gtk_cell_view_get_size_of_row (GTK_CELL_VIEW (combo_box->priv->cell_view), + gtk_cell_view_get_size_of_row (GTK_CELL_VIEW (combo_box->priv->cell_view), path, &req); else req.width = 0; @@ -1335,7 +1335,7 @@ bin_req.width = MAX (bin_req.width, combo_box->priv->width); gtk_combo_box_check_appearance (combo_box); - + if (!combo_box->priv->tree_view) { /* menu mode */ @@ -1454,10 +1454,10 @@ if (is_rtl) { child.x += req.width; - child.width = MAX(1, allocation->x + allocation->width + child.width = MAX(1, allocation->x + allocation->width - (border_width + 1 + xthickness + 2) - child.x); } - else + else { child.width = child.x; child.x = allocation->x + border_width + 1 + xthickness + 2; @@ -1623,16 +1623,16 @@ GtkComboBox *combo_box = GTK_COMBO_BOX (widget); gint index; gint items; - + index = gtk_combo_box_get_active (combo_box); if (index != -1) { items = gtk_tree_model_iter_n_children (combo_box->priv->model, NULL); - + if (event->direction == GDK_SCROLL_UP) index--; - else + else index++; gtk_combo_box_set_active (combo_box, CLAMP (index, 0, items - 1)); @@ -1694,15 +1694,15 @@ GTK_BIN (combo_box)->child->parent); combo_box->priv->box = gtk_hbox_new (FALSE, 0); - gtk_container_add (GTK_CONTAINER (combo_box->priv->button), + gtk_container_add (GTK_CONTAINER (combo_box->priv->button), combo_box->priv->box); combo_box->priv->separator = gtk_vseparator_new (); - gtk_container_add (GTK_CONTAINER (combo_box->priv->box), + gtk_container_add (GTK_CONTAINER (combo_box->priv->box), combo_box->priv->separator); combo_box->priv->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE); - gtk_container_add (GTK_CONTAINER (combo_box->priv->box), + gtk_container_add (GTK_CONTAINER (combo_box->priv->box), combo_box->priv->arrow); gtk_widget_show_all (combo_box->priv->button); @@ -1792,7 +1792,7 @@ /* unparent will remove our latest ref */ gtk_widget_unparent (combo_box->priv->button); - + combo_box->priv->box = NULL; combo_box->priv->button = NULL; combo_box->priv->arrow = NULL; @@ -1895,17 +1895,17 @@ item = nth->data; if (nth->prev) last = nth->prev->data; - else + else last = NULL; g_list_free (list); gtk_combo_box_item_get_size (combo_box, index, &cols, &rows); - + if (combo_box->priv->col_column == -1 && combo_box->priv->row_column == -1 && last) { - gtk_container_child_get (GTK_CONTAINER (menu), + gtk_container_child_get (GTK_CONTAINER (menu), last, "right_attach", ¤t_col, "top_attach", ¤t_row, @@ -1926,12 +1926,12 @@ current_col = 0; current_row++; } - + if (!menu_occupied (GTK_MENU (menu), current_col, current_col + cols, current_row, current_row + rows)) break; - + current_col++; } } @@ -1949,19 +1949,19 @@ GtkWidget *menu; menu = combo_box->priv->popup_widget; - + /* do nothing unless we are in menu style and realized */ if (combo_box->priv->tree_view || !GTK_IS_MENU_SHELL (menu)) return; - + /* get rid of all children */ list = gtk_container_get_children (GTK_CONTAINER (menu)); - + for (j = g_list_last (list); j; j = j->prev) gtk_container_remove (GTK_CONTAINER (menu), j->data); - + g_list_free (list); - + /* and relayout */ gtk_combo_box_menu_fill (combo_box); } @@ -1980,7 +1980,7 @@ if (event->type == GDK_BUTTON_PRESS && event->button == 1) { combo_box->priv->popup_in_progress = TRUE; - + gtk_menu_set_active (GTK_MENU (combo_box->priv->popup_widget), combo_box->priv->active_item); @@ -2053,7 +2053,7 @@ if (!combo_box->priv->tree_view) gtk_combo_box_menu_row_deleted (model, path, user_data); - + if (index == combo_box->priv->active_item) { gint items = gtk_tree_model_iter_n_children (model, NULL); @@ -2090,7 +2090,7 @@ if (!combo_box->priv->tree_view) gtk_combo_box_menu_rows_reordered (model, path, iter, new_order, user_data); } - + static void gtk_combo_box_model_row_changed (GtkTreeModel *model, GtkTreePath *path, @@ -2103,7 +2103,7 @@ if (index == combo_box->priv->active_item && combo_box->priv->cell_view) gtk_widget_queue_resize (GTK_WIDGET (combo_box->priv->cell_view)); - + if (combo_box->priv->tree_view) gtk_combo_box_list_row_changed (model, path, iter, user_data); else @@ -2174,7 +2174,7 @@ gtk_combo_box_relayout (combo_box); } - + static void gtk_combo_box_menu_row_changed (GtkTreeModel *model, GtkTreePath *path, @@ -2238,12 +2238,12 @@ gtk_frame_set_shadow_type (GTK_FRAME (combo_box->priv->cell_view_frame), GTK_SHADOW_IN); - gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), + gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), >K_WIDGET (combo_box)->style->base[GTK_WIDGET_STATE (combo_box)]); combo_box->priv->box = gtk_event_box_new (); /* - gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->box), + gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->box), FALSE); */ @@ -2253,7 +2253,7 @@ gtk_widget_show_all (combo_box->priv->cell_view_frame); g_signal_connect (combo_box->priv->box, "button_press_event", - G_CALLBACK (gtk_combo_box_list_button_pressed), + G_CALLBACK (gtk_combo_box_list_button_pressed), combo_box); } @@ -2269,7 +2269,7 @@ if (combo_box->priv->model) gtk_tree_view_set_model (GTK_TREE_VIEW (combo_box->priv->tree_view), combo_box->priv->model); - + g_signal_connect (combo_box->priv->tree_view, "button_press_event", G_CALLBACK (gtk_combo_box_list_button_pressed), combo_box); @@ -2494,7 +2494,7 @@ if (combo_box->priv->model) items = gtk_tree_model_iter_n_children (combo_box->priv->model, NULL); - if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) && + if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) && state == GDK_MOD1_MASK) { gtk_combo_box_popup (combo_box); @@ -2502,7 +2502,7 @@ return TRUE; } - switch (event->keyval) + switch (event->keyval) { case GDK_Down: case GDK_KP_Down: @@ -2514,20 +2514,20 @@ break; case GDK_Page_Up: case GDK_KP_Page_Up: - case GDK_Home: + case GDK_Home: case GDK_KP_Home: new_index = 0; break; case GDK_Page_Down: case GDK_KP_Page_Down: - case GDK_End: + case GDK_End: case GDK_KP_End: new_index = items - 1; break; default: return FALSE; } - + if (items > 0) gtk_combo_box_set_active (combo_box, CLAMP (new_index, 0, items - 1)); @@ -2542,14 +2542,14 @@ GtkComboBox *combo_box = GTK_COMBO_BOX (data); guint state = event->state & gtk_accelerator_get_default_mod_mask (); - if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && + if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && state == GDK_MOD1_MASK) { gtk_combo_box_popdown (combo_box); return TRUE; } - + return FALSE; } @@ -2562,35 +2562,35 @@ guint state = event->state & gtk_accelerator_get_default_mod_mask (); if (event->keyval == GDK_Escape || - ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && + ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && state == GDK_MOD1_MASK)) { /* reset active item -- this is incredibly lame and ugly */ gtk_combo_box_set_active (combo_box, gtk_combo_box_get_active (combo_box)); - + gtk_combo_box_popdown (combo_box); - + return TRUE; } - + if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter || - event->keyval == GDK_space || event->keyval == GDK_KP_Space) + event->keyval == GDK_space || event->keyval == GDK_KP_Space) { gboolean ret = FALSE; GtkTreeIter iter; GtkTreeModel *model = NULL; - + if (combo_box->priv->model) { GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (combo_box->priv->tree_view)); - + ret = gtk_tree_selection_get_selected (sel, &model, &iter); } if (ret) { GtkTreePath *path; - + path = gtk_tree_model_get_path (model, &iter); if (path) { @@ -2600,7 +2600,7 @@ } gtk_combo_box_popdown (combo_box); - + return TRUE; } @@ -2620,7 +2620,7 @@ if (width > combo_box->priv->width) { - if (combo_box->priv->cell_view) + if (combo_box->priv->cell_view) { gtk_widget_set_size_request (combo_box->priv->cell_view, width, -1); gtk_widget_queue_resize (combo_box->priv->cell_view); @@ -2742,11 +2742,11 @@ GtkWidget *menu; GtkComboBox *combo_box; GSList *i; - + g_return_if_fail (GTK_IS_COMBO_BOX (layout)); combo_box = GTK_COMBO_BOX (layout); - + if (combo_box->priv->cell_view) gtk_cell_layout_clear (GTK_CELL_LAYOUT (combo_box->priv->cell_view)); @@ -3082,7 +3082,7 @@ gtk_combo_box_check_appearance (combo_box); gtk_combo_box_relayout (combo_box); - + g_object_notify (G_OBJECT (combo_box), "wrap_width"); } } @@ -3112,9 +3112,9 @@ if (row_span != combo_box->priv->row_column) { combo_box->priv->row_column = row_span; - + gtk_combo_box_relayout (combo_box); - + g_object_notify (G_OBJECT (combo_box), "row_span_column"); } } @@ -3144,7 +3144,7 @@ if (column_span != combo_box->priv->col_column) { combo_box->priv->col_column = column_span; - + gtk_combo_box_relayout (combo_box); g_object_notify (G_OBJECT (combo_box), "column_span_column"); @@ -3191,7 +3191,7 @@ if (combo_box->priv->active_item == index_) return; - + gtk_combo_box_set_active_internal (combo_box, index_); } @@ -3252,9 +3252,9 @@ * gtk_combo_box_get_active_iter: * @combo_box: A #GtkComboBox * @iter: The uninitialized #GtkTreeIter. - * + * * Sets @iter to point to the current active item, if it exists. - * + * * Return value: %TRUE, if @iter was set * * Since: 2.4 @@ -3293,10 +3293,10 @@ * gtk_combo_box_set_active_iter: * @combo_box: A #GtkComboBox * @iter: The #GtkTreeIter. - * - * Sets the current active item to be the one referenced by @iter. + * + * Sets the current active item to be the one referenced by @iter. * @iter must correspond to a path of depth one. - * + * * Since: 2.4 **/ void @@ -3310,7 +3310,7 @@ path = gtk_tree_model_get_path (gtk_combo_box_get_model (combo_box), iter); g_return_if_fail (path != NULL); g_return_if_fail (gtk_tree_path_get_depth (path) == 1); - + gtk_combo_box_set_active (combo_box, gtk_tree_path_get_indices (path)[0]); gtk_tree_path_free (path); } @@ -3320,11 +3320,11 @@ * @combo_box: A #GtkComboBox. * @model: A #GtkTreeModel. * - * Sets the model used by @combo_box to be @model. Will unset a previously set + * Sets the model used by @combo_box to be @model. Will unset a previously set * model (if applicable). If @model is %NULL, then it will unset the model. - * - * Note that this function does not clear the cell renderers, you have to - * call gtk_combo_box_cell_layout_clear() yourself if you need to set up + * + * Note that this function does not clear the cell renderers, you have to + * call gtk_combo_box_cell_layout_clear() yourself if you need to set up * different cell renderers for the new model. * * Since: 2.4 @@ -3345,7 +3345,7 @@ if (model == combo_box->priv->model) return; - + if (combo_box->priv->model) gtk_combo_box_unset_model (combo_box); @@ -3368,7 +3368,7 @@ g_signal_connect (combo_box->priv->model, "row_changed", G_CALLBACK (gtk_combo_box_model_row_changed), combo_box); - + if (combo_box->priv->tree_view) { /* list mode */ @@ -3574,7 +3574,7 @@ { GtkComboBox *combo_box = GTK_COMBO_BOX (object); - gtk_combo_box_popdown (combo_box); + gtk_combo_box_popdown (combo_box); combo_box->priv->destroying = 1; @@ -3589,14 +3589,14 @@ { GtkComboBox *combo_box = GTK_COMBO_BOX (object); GSList *i; - + if (GTK_IS_MENU (combo_box->priv->popup_widget)) { gtk_combo_box_menu_destroy (combo_box); gtk_menu_detach (GTK_MENU (combo_box->priv->popup_widget)); combo_box->priv->popup_widget = NULL; } - + if (GTK_IS_TREE_VIEW (combo_box->priv->tree_view)) gtk_combo_box_list_destroy (combo_box); @@ -3655,13 +3655,13 @@ { GObject *object = G_OBJECT (child); AttachInfo *ai = g_object_get_data (object, ATTACH_INFO_KEY); - + if (!ai) { ai = g_new0 (AttachInfo, 1); g_object_set_data_full (object, ATTACH_INFO_KEY, ai, g_free); } - + return ai; } @@ -3693,25 +3693,25 @@ guint bottom_attach) { GtkMenuShell *menu_shell; - + g_return_if_fail (GTK_IS_MENU (menu)); g_return_if_fail (GTK_IS_MENU_ITEM (child)); - g_return_if_fail (child->parent == NULL || + g_return_if_fail (child->parent == NULL || child->parent == GTK_WIDGET (menu)); g_return_if_fail (left_attach < right_attach); g_return_if_fail (top_attach < bottom_attach); menu_shell = GTK_MENU_SHELL (menu); - + if (!child->parent) { AttachInfo *ai = get_attach_info (child); - + ai->left_attach = left_attach; ai->right_attach = right_attach; ai->top_attach = top_attach; ai->bottom_attach = bottom_attach; - + menu_shell->children = g_list_append (menu_shell->children, child); gtk_widget_set_parent (child, GTK_WIDGET (menu)); @@ -3741,7 +3741,7 @@ /* g_return_val_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model), NULL); */ if (gtk_combo_box_get_active_iter (combo_box, &iter)) - gtk_tree_model_get (gtk_combo_box_get_model(combo_box), &iter, + gtk_tree_model_get (gtk_combo_box_get_model(combo_box), &iter, 0, &text, -1); return text; } diff -r a0668fbf2483 -r b98519a42e53 pidgin/pidginstock.c --- a/pidgin/pidginstock.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/pidginstock.c Mon Mar 02 22:07:59 2009 +0000 @@ -26,17 +26,32 @@ */ #include "internal.h" #include "pidgin.h" +#include "prefs.h" + +#include "gtkicon-theme-loader.h" +#include "theme-manager.h" #include "pidginstock.h" +/************************************************************************** + * Globals + **************************************************************************/ + +static gboolean stock_initted = FALSE; +static GtkIconSize microscopic, extra_small, small, medium, large, huge; + +/************************************************************************** + * Structures + **************************************************************************/ + static struct StockIcon { const char *name; const char *dir; const char *filename; -} const stock_icons[] = -{ +} const stock_icons[] = { + { PIDGIN_STOCK_ACTION, NULL, GTK_STOCK_EXECUTE }, #if GTK_CHECK_VERSION(2,6,0) { PIDGIN_STOCK_ALIAS, NULL, GTK_STOCK_EDIT }, @@ -98,7 +113,7 @@ { PIDGIN_STOCK_EDIT, N_("_Edit"), 0, 0, NULL } }; -static struct SizedStockIcon { +typedef struct { const char *name; const char *dir; const char *filename; @@ -110,19 +125,10 @@ gboolean huge; gboolean rtl; const char *translucent_name; -} const sized_stock_icons [] = { - { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I }, - { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I }, - { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I }, - { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I }, - { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, - { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, - { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I }, - { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - +} SizedStockIcon; + +const SizedStockIcon sized_stock_icons [] = { + { PIDGIN_STOCK_STATUS_IGNORED, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, { PIDGIN_STOCK_STATUS_FOUNDER, "emblems", "founder.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, { PIDGIN_STOCK_STATUS_OPERATOR, "emblems", "operator.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, @@ -175,40 +181,53 @@ { PIDGIN_STOCK_ANIMATION_TYPING4, "animations", "typing4.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, { PIDGIN_STOCK_ANIMATION_TYPING5, "animations", "typing5.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_INSERT, "toolbar", "insert.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, - { 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 }, - { PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION, "toolbar", "get-attention.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, - - { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, - { PIDGIN_STOCK_TRAY_EMAIL, "tray", "tray-message.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL } + { PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_INSERT, "toolbar", "insert.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_PENDING, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, + { 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 } }; -static void -add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, - gboolean rtl, const char *size, const char *file, - gboolean translucent); +const SizedStockIcon sized_status_icons [] = { + + { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I }, + { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I }, + { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I }, + { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_STATUS_INVISIBLE, "status", "invisible.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I }, + { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, + { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, + { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I }, + { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + + { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_TRAY_EMAIL, "tray", "tray-message.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL } +}; + +/***************************************************************************** + * Private functions + *****************************************************************************/ static gchar * find_file_common(const char *name) @@ -259,15 +278,54 @@ } static void -add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, +add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, gboolean rtl, const char *size, const char *file) { - add_sized_icon_common(iconset, sizeid, dir, rtl, size, file, FALSE); + char *filename; + GtkIconSource *source; + + filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, file, NULL); + source = gtk_icon_source_new(); + gtk_icon_source_set_filename(source, filename); + gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR); + gtk_icon_source_set_direction_wildcarded(source, !rtl); + gtk_icon_source_set_size(source, sizeid); + gtk_icon_source_set_size_wildcarded(source, FALSE); + gtk_icon_source_set_state_wildcarded(source, TRUE); + gtk_icon_set_add_source(iconset, source); + gtk_icon_source_free(source); + + if (sizeid == gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)) { + source = gtk_icon_source_new(); + gtk_icon_source_set_filename(source, filename); + gtk_icon_source_set_direction_wildcarded(source, TRUE); + gtk_icon_source_set_size(source, GTK_ICON_SIZE_MENU); + gtk_icon_source_set_size_wildcarded(source, FALSE); + gtk_icon_source_set_state_wildcarded(source, TRUE); + gtk_icon_set_add_source(iconset, source); + gtk_icon_source_free(source); + } + g_free(filename); + + if (rtl) { + filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, "rtl", file, NULL); + source = gtk_icon_source_new(); + gtk_icon_source_set_filename(source, filename); + gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL); + gtk_icon_source_set_size(source, sizeid); + gtk_icon_source_set_size_wildcarded(source, FALSE); + gtk_icon_source_set_state_wildcarded(source, TRUE); + gtk_icon_set_add_source(iconset, source); + g_free(filename); + gtk_icon_source_free(source); + } + + } /* Altered from do_colorshift in gnome-panel */ static void -do_alphashift (GdkPixbuf *dest, GdkPixbuf *src) +do_alphashift(GdkPixbuf *dest, GdkPixbuf *src) { gint i, j; gint width, height, has_alpha, srcrowstride, destrowstride; @@ -301,28 +359,48 @@ } } -static void -add_translucent_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, - gboolean rtl, const char *size, const char *file) +static gchar * +find_icon_file(PidginStatusIconTheme *theme, const gchar *size, SizedStockIcon sized_icon, gboolean rtl) { - add_sized_icon_common(iconset, sizeid, dir, rtl, size, file, TRUE); + const gchar *file, *dir; + gchar *file_full = NULL; + gchar *tmp; + + if (theme != NULL) { + file = pidgin_icon_theme_get_icon(PIDGIN_ICON_THEME(theme), sized_icon.name); + dir = purple_theme_get_dir(PURPLE_THEME(theme)); + + if (rtl) + file_full = g_build_filename(dir, size, "rtl", file, NULL); + else + file_full = g_build_filename(dir, size, file, NULL); + + if (g_file_test(file_full, G_FILE_TEST_IS_REGULAR)) + return file_full; + + g_free(file_full); + } + + if (rtl) + tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, "rtl", sized_icon.filename, NULL); + else + tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, sized_icon.filename, NULL); + + file_full = find_file_common(tmp); + g_free(tmp); + return file_full; } static void -add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, - gboolean rtl, const char *size, const char *file, - gboolean translucent) +add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, PidginStatusIconTheme *theme, + const char *size, SizedStockIcon sized_icon, gboolean translucent) { - char *filename, *subpath; + char *filename; GtkIconSource *source; GdkPixbuf *pixbuf; - subpath = g_build_filename("pixmaps", "pidgin", dir, size, file, NULL); - filename = find_file_common(subpath); - g_free(subpath); - if (!filename) - return; - + filename = find_icon_file(theme, size, sized_icon, FALSE); + g_return_if_fail(filename != NULL); pixbuf = gdk_pixbuf_new_from_file(filename, NULL); if (translucent) do_alphashift(pixbuf, pixbuf); @@ -330,7 +408,7 @@ source = gtk_icon_source_new(); gtk_icon_source_set_pixbuf(source, pixbuf); gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR); - gtk_icon_source_set_direction_wildcarded(source, !rtl); + gtk_icon_source_set_direction_wildcarded(source, !sized_icon.rtl); gtk_icon_source_set_size(source, sizeid); gtk_icon_source_set_size_wildcarded(source, FALSE); gtk_icon_source_set_state_wildcarded(source, TRUE); @@ -350,17 +428,16 @@ g_free(filename); g_object_unref(pixbuf); - if (rtl) { - subpath = g_build_filename("pixmaps", "pidgin", dir, size, "rtl", file, NULL); - filename = find_file_common(subpath); - g_free(subpath); - if (!filename) - return; + if (sized_icon.rtl) { + filename = find_icon_file(theme, size, sized_icon, TRUE); + g_return_if_fail(filename != NULL); pixbuf = gdk_pixbuf_new_from_file(filename, NULL); if (translucent) do_alphashift(pixbuf, pixbuf); + source = gtk_icon_source_new(); gtk_icon_source_set_pixbuf(source, pixbuf); + gtk_icon_source_set_filename(source, filename); gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL); gtk_icon_source_set_size(source, sizeid); gtk_icon_source_set_size_wildcarded(source, FALSE); @@ -372,20 +449,90 @@ } } +/***************************************************************************** + * Public API functions + *****************************************************************************/ + +void +pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme) +{ + GtkIconFactory *icon_factory; + gint i; + GtkIconSet *normal; + GtkIconSet *translucent = NULL; + GtkWidget *win; + + if (theme != NULL) { + purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme", + purple_theme_get_name(PURPLE_THEME(theme))); + purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", + purple_theme_get_dir(PURPLE_THEME(theme))); + } + else { + purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme", ""); + purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", ""); + } + + icon_factory = gtk_icon_factory_new(); + + gtk_icon_factory_add_default(icon_factory); + + win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_widget_realize(win); + + for (i = 0; i < G_N_ELEMENTS(sized_status_icons); i++) + { + normal = gtk_icon_set_new(); + if (sized_status_icons[i].translucent_name) + translucent = gtk_icon_set_new(); + +#define ADD_SIZED_ICON(name, size) if (sized_status_icons[i].name) { \ + add_sized_icon(normal, name, theme, size, sized_status_icons[i], FALSE); \ + if (sized_status_icons[i].translucent_name) \ + add_sized_icon(translucent, name, theme, size, sized_status_icons[i], TRUE); \ + } + ADD_SIZED_ICON(microscopic, "11"); + ADD_SIZED_ICON(extra_small, "16"); + ADD_SIZED_ICON(small, "22"); + ADD_SIZED_ICON(medium, "32"); + ADD_SIZED_ICON(large, "48"); + ADD_SIZED_ICON(huge, "64"); +#undef ADD_SIZED_ICON + + gtk_icon_factory_add(icon_factory, sized_status_icons[i].name, normal); + gtk_icon_set_unref(normal); + + if (sized_status_icons[i].translucent_name) { + gtk_icon_factory_add(icon_factory, sized_status_icons[i].translucent_name, translucent); + gtk_icon_set_unref(translucent); + } + } + + + gtk_widget_destroy(win); + g_object_unref(G_OBJECT(icon_factory)); +} + void pidgin_stock_init(void) { - static gboolean stock_initted = FALSE; GtkIconFactory *icon_factory; size_t i; GtkWidget *win; - GtkIconSize microscopic, extra_small, small, medium, large, huge; + PidginIconThemeLoader *loader; + const gchar *path = NULL; if (stock_initted) return; stock_initted = TRUE; + /* Setup the status icon theme */ + loader = g_object_new(PIDGIN_TYPE_ICON_THEME_LOADER, "type", "status-icon", NULL); + purple_theme_manager_register_type(PURPLE_THEME_LOADER(loader)); + purple_prefs_add_string(PIDGIN_PREFS_ROOT "/status/icon-theme", ""); + purple_prefs_add_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", ""); + /* Setup the icon factory. */ icon_factory = gtk_icon_factory_new(); @@ -395,6 +542,7 @@ win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_realize(win); + /* All non-sized icons */ for (i = 0; i < G_N_ELEMENTS(stock_icons); i++) { GtkIconSource *source; @@ -433,7 +581,6 @@ } /* register custom icon sizes */ - microscopic = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC, 11, 11); extra_small = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL, 16, 16); small = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_SMALL, 22, 22); @@ -441,18 +588,13 @@ large = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_LARGE, 48, 48); huge = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_HUGE, 64, 64); + /* All non-status sized icons */ for (i = 0; i < G_N_ELEMENTS(sized_stock_icons); i++) { - GtkIconSet *iconset; - - iconset = gtk_icon_set_new(); + GtkIconSet *iconset = gtk_icon_set_new(); -#define ADD_SIZED_ICON(name, size) do { \ - if (sized_stock_icons[i].name) \ - add_sized_icon(iconset, name, \ - sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \ - size, sized_stock_icons[i].filename); \ - } while (0) +#define ADD_SIZED_ICON(name, size) if (sized_stock_icons[i].name) \ + add_sized_icon(iconset, name, NULL, size, sized_stock_icons[i], FALSE); ADD_SIZED_ICON(microscopic, "11"); ADD_SIZED_ICON(extra_small, "16"); ADD_SIZED_ICON(small, "22"); @@ -463,32 +605,21 @@ gtk_icon_factory_add(icon_factory, sized_stock_icons[i].name, iconset); gtk_icon_set_unref(iconset); - - if (sized_stock_icons[i].translucent_name) { - iconset = gtk_icon_set_new(); - -#define ADD_TRANS_ICON(name, size) do { \ - if (sized_stock_icons[i].name) \ - add_translucent_sized_icon(iconset, name, \ - sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \ - size, sized_stock_icons[i].filename); \ - } while (0) - ADD_TRANS_ICON(microscopic, "11"); - ADD_TRANS_ICON(extra_small, "16"); - ADD_TRANS_ICON(small, "22"); - ADD_TRANS_ICON(medium, "32"); - ADD_TRANS_ICON(large, "48"); - ADD_TRANS_ICON(huge, "64"); -#undef ADD_TRANS_ICON - - gtk_icon_factory_add(icon_factory, sized_stock_icons[i].translucent_name, iconset); - gtk_icon_set_unref(iconset); - } } gtk_widget_destroy(win); g_object_unref(G_OBJECT(icon_factory)); + /* Pre-load Status icon theme - this avoids a bug with displaying the correct icon in the tray, theme is destroyed after*/ + if (purple_prefs_get_string(PIDGIN_PREFS_ROOT "/icon/status/theme") && + (path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir"))) { + + PidginStatusIconTheme *theme = PIDGIN_STATUS_ICON_THEME(purple_theme_loader_build(PURPLE_THEME_LOADER(loader), path)); + pidgin_stock_load_status_icon_theme(theme); + g_object_unref(G_OBJECT(theme)); + + } else pidgin_stock_load_status_icon_theme(NULL); + /* Register the stock items. */ gtk_stock_add_static(stock_items, G_N_ELEMENTS(stock_items)); } diff -r a0668fbf2483 -r b98519a42e53 pidgin/pidginstock.h --- a/pidgin/pidginstock.h Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/pidginstock.h Mon Mar 02 22:07:59 2009 +0000 @@ -8,7 +8,7 @@ * Pidgin is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * source distribution. - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -24,6 +24,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include +#include "gtkstatus-icon-theme.h" #ifndef _PIDGIN_STOCK_H_ #define _PIDGIN_STOCK_H_ @@ -178,6 +179,14 @@ #define PIDGIN_ICON_SIZE_TANGO_MEDIUM "pidgin-icon-size-tango-medium" #define PIDGIN_ICON_SIZE_TANGO_LARGE "pidgin-icon-size-tango-large" #define PIDGIN_ICON_SIZE_TANGO_HUGE "pidgin-icon-size-tango-huge" + +/** + * Loades all of the icons from the status icon theme into Pidgin stock + * + * @param theme the theme to load, or null to load all the default icons + */ +void pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme); + /** * Sets up the purple stock repository. */ diff -r a0668fbf2483 -r b98519a42e53 pidgin/pixmaps/Makefile.am --- a/pidgin/pixmaps/Makefile.am Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/pixmaps/Makefile.am Mon Mar 02 22:07:59 2009 +0000 @@ -489,6 +489,7 @@ tray/32/tray-connecting.png \ tray/32/tray-extended-away.png \ tray/32/tray-invisible.png \ + tray/32/tray-message.png \ tray/32/tray-new-im.png \ tray/32/tray-offline.png \ tray/32/tray-online.png @@ -499,6 +500,7 @@ tray/48/tray-connecting.png \ tray/48/tray-extended-away.png \ tray/48/tray-invisible.png \ + tray/48/tray-message.png \ tray/48/tray-new-im.png \ tray/48/tray-offline.png \ tray/48/tray-online.png @@ -526,7 +528,6 @@ $(PROTOCOLS_16_SCALABLE) \ $(PROTOCOLS_22_SCALABLE) \ $(PROTOCOLS_48_SCALABLE) \ - $(TOOLBAR_11) \ $(TOOLBAR_16_SCALABLE) \ $(TOOLBAR_22_SCALABLE) @@ -554,6 +555,7 @@ $(STATUS_32_RTL) \ $(STATUS_48) \ $(STATUS_48_RTL) \ + $(TOOLBAR_11) \ $(TOOLBAR_16) \ $(TOOLBAR_22) \ $(TRAY_16) \ diff -r a0668fbf2483 -r b98519a42e53 pidgin/pixmaps/art-tools/clean-svg-definitions.sh diff -r a0668fbf2483 -r b98519a42e53 pidgin/plugins/gevolution/gevo-util.c --- a/pidgin/plugins/gevolution/gevo-util.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/plugins/gevolution/gevo-util.c Mon Mar 02 22:07:59 2009 +0000 @@ -27,13 +27,13 @@ void gevo_add_buddy(PurpleAccount *account, const char *group_name, - const char *screenname, const char *alias) + const char *buddy_name, const char *alias) { PurpleConversation *conv = NULL; PurpleBuddy *buddy; PurpleGroup *group; - conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, screenname, account); + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, buddy_name, account); if ((group = purple_find_group(group_name)) == NULL) { @@ -41,7 +41,7 @@ purple_blist_add_group(group, NULL); } - buddy = purple_buddy_new(account, screenname, alias); + buddy = purple_buddy_new(account, buddy_name, alias); purple_blist_add_buddy(buddy, NULL, group, NULL); purple_account_add_buddy(account, buddy); diff -r a0668fbf2483 -r b98519a42e53 pidgin/plugins/gevolution/gevolution.c --- a/pidgin/plugins/gevolution/gevolution.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/plugins/gevolution/gevolution.c Mon Mar 02 22:07:59 2009 +0000 @@ -52,7 +52,7 @@ { COLUMN_AUTOADD, COLUMN_ICON, - COLUMN_SCREENNAME, + COLUMN_USERNAME, COLUMN_DATA, NUM_COLUMNS }; @@ -463,11 +463,11 @@ gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", COLUMN_ICON); - /* Screenname */ + /* Username */ renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_add_attribute(column, renderer, - "text", COLUMN_SCREENNAME); + "text", COLUMN_USERNAME); /* Populate */ @@ -489,7 +489,7 @@ purple_account_get_bool(account, "gevo-autoadd", FALSE), COLUMN_ICON, pixbuf, - COLUMN_SCREENNAME, + COLUMN_USERNAME, purple_account_get_username(account), COLUMN_DATA, account, -1); diff -r a0668fbf2483 -r b98519a42e53 pidgin/plugins/gevolution/new_person_dialog.c --- a/pidgin/plugins/gevolution/new_person_dialog.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/plugins/gevolution/new_person_dialog.c Mon Mar 02 22:07:59 2009 +0000 @@ -67,7 +67,7 @@ } static void -screenname_changed_cb(GtkEntry *entry, GevoNewPersonDialog *dialog) +username_changed_cb(GtkEntry *entry, GevoNewPersonDialog *dialog) { gtk_widget_set_sensitive(dialog->add_button, *gtk_entry_get_text(entry) != '\0'); @@ -85,7 +85,7 @@ add_cb(GtkWidget *w, GevoNewPersonDialog *dialog) { EContact *contact = NULL; - const char *screenname; + const char *username; const char *firstname; const char *lastname; const char *email; @@ -96,9 +96,9 @@ char *full_name = NULL; if (dialog->person_only) - screenname = dialog->buddy->name; + username = dialog->buddy->name; else - screenname = gtk_entry_get_text(GTK_ENTRY(dialog->screenname)); + username = gtk_entry_get_text(GTK_ENTRY(dialog->username)); firstname = gtk_entry_get_text(GTK_ENTRY(dialog->firstname)); lastname = gtk_entry_get_text(GTK_ENTRY(dialog->lastname)); @@ -143,7 +143,7 @@ if (!strcmp(im_service, "prpl-oscar")) { - if (isdigit(*screenname)) + if (isdigit(*username)) field = E_CONTACT_IM_ICQ; else field = E_CONTACT_IM_AIM; @@ -163,7 +163,7 @@ if (field > 0) { - GList *list = g_list_append(NULL, g_strdup(screenname)); + GList *list = g_list_append(NULL, g_strdup(username)); e_contact_set(contact, field, list); @@ -203,7 +203,7 @@ group_name = pidgin_text_combo_box_entry_get_text(dialog->group_combo); - gevo_add_buddy(dialog->account, group_name, screenname, full_name); + gevo_add_buddy(dialog->account, group_name, username, full_name); } if (name != NULL) @@ -289,15 +289,15 @@ NULL, dialog); add_pref_box(sg, vbox, _("Account type:"), dialog->accounts_menu); - /* Screen Name */ - dialog->screenname = gtk_entry_new(); - add_pref_box(sg, vbox, _("Username:"), dialog->screenname); + /* Username */ + dialog->username = gtk_entry_new(); + add_pref_box(sg, vbox, _("Username:"), dialog->username); if (username != NULL) - gtk_entry_set_text(GTK_ENTRY(dialog->screenname), username); + gtk_entry_set_text(GTK_ENTRY(dialog->username), username); - g_signal_connect(G_OBJECT(dialog->screenname), "changed", - G_CALLBACK(screenname_changed_cb), dialog); + g_signal_connect(G_OBJECT(dialog->username), "changed", + G_CALLBACK(username_changed_cb), dialog); /* Group */ dialog->group_combo = pidgin_text_combo_box_entry_new(NULL, diff -r a0668fbf2483 -r b98519a42e53 pidgin/plugins/history.c --- a/pidgin/plugins/history.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/plugins/history.c Mon Mar 02 22:07:59 2009 +0000 @@ -62,36 +62,39 @@ return; /* Find buddies for this conversation. */ - buddies = purple_find_buddies(account, name); + buddies = purple_find_buddies(account, name); /* If we found at least one buddy, save the first buddy's alias. */ if (buddies != NULL) alias = purple_buddy_get_contact_alias((PurpleBuddy *)buddies->data); - for (cur = buddies; cur != NULL; cur = cur->next) - { - PurpleBlistNode *node = cur->data; - if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL))) - { + for (cur = buddies; cur != NULL; cur = cur->next) + { + PurpleBlistNode *node = cur->data; + PurpleBlistNode *prev = purple_blist_node_get_sibling_prev(node); + PurpleBlistNode *next = purple_blist_node_get_sibling_next(node); + if ((node != NULL) && ((prev != NULL) || (next != NULL))) + { PurpleBlistNode *node2; + PurpleBlistNode *parent = purple_blist_node_get_parent(node); + PurpleBlistNode *child = purple_blist_node_get_first_child(parent); alias = purple_buddy_get_contact_alias((PurpleBuddy *)node); /* We've found a buddy that matches this conversation. It's part of a * PurpleContact with more than one PurpleBuddy. Loop through the PurpleBuddies * in the contact and get all the logs. */ - for (node2 = node->parent->child ; node2 != NULL ; node2 = node2->next) + for (node2 = child ; node2 != NULL ; node2 = purple_blist_node_get_sibling_next(node2)) { - logs = g_list_concat( - purple_log_get_logs(PURPLE_LOG_IM, + logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, purple_buddy_get_name((PurpleBuddy *)node2), purple_buddy_get_account((PurpleBuddy *)node2)), - logs); + logs); } break; - } - } - g_slist_free(buddies); + } + } + g_slist_free(buddies); if (logs == NULL) logs = purple_log_get_logs(PURPLE_LOG_IM, name, account); @@ -118,7 +121,7 @@ protocol = g_strdup(gtk_imhtml_get_protocol_name(GTK_IMHTML(gtkconv->imhtml))); gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->imhtml), - purple_account_get_protocol_name(((PurpleLog*)logs->data)->account)); + purple_account_get_protocol_name(((PurpleLog*)logs->data)->account)); if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml)))) gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "
", options); diff -r a0668fbf2483 -r b98519a42e53 pidgin/plugins/perl/common/GtkLog.xs --- a/pidgin/plugins/perl/common/GtkLog.xs Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/plugins/perl/common/GtkLog.xs Mon Mar 02 22:07:59 2009 +0000 @@ -7,9 +7,9 @@ pidgin_log_get_handle() void -pidgin_log_show(type, screenname, account) +pidgin_log_show(type, buddyname, account) Purple::LogType type - const char * screenname + const char * buddyname Purple::Account account void diff -r a0668fbf2483 -r b98519a42e53 pidgin/plugins/ticker/ticker.c --- a/pidgin/plugins/ticker/ticker.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/plugins/ticker/ticker.c Mon Mar 02 22:07:59 2009 +0000 @@ -91,7 +91,9 @@ PurpleContact *contact = user_data; PurpleBuddy *b = purple_contact_get_priority_buddy(contact); - purple_conversation_new(PURPLE_CONV_TYPE_IM, b->account, b->name); + purple_conversation_new(PURPLE_CONV_TYPE_IM, + purple_buddy_get_account(b), + purple_buddy_get_name(b)); return TRUE; } @@ -217,20 +219,25 @@ static void buddy_ticker_show(void) { - PurpleBuddyList *list = purple_get_blist(); PurpleBlistNode *gnode, *cnode, *bnode; PurpleBuddy *b; - if(!list) - return; - - for(gnode = list->root; gnode; gnode = gnode->next) { + for(gnode = purple_blist_get_root(); + gnode; + gnode = purple_blist_node_get_sibling_next(gnode)) + { if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; - for(cnode = gnode->child; cnode; cnode = cnode->next) { + for(cnode = purple_blist_node_get_first_child(gnode); + cnode; + cnode = purple_blist_node_get_sibling_next(cnode)) + { if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for(bnode = cnode->child; bnode; bnode = bnode->next) { + for(bnode = purple_blist_node_get_first_child(cnode); + bnode; + bnode = purple_blist_node_get_sibling_next(bnode)) + { if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; b = (PurpleBuddy *)bnode; diff -r a0668fbf2483 -r b98519a42e53 pidgin/plugins/win32/winprefs/gtkappbar.c --- a/pidgin/plugins/win32/winprefs/gtkappbar.c Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/plugins/win32/winprefs/gtkappbar.c Mon Mar 02 22:07:59 2009 +0000 @@ -376,7 +376,7 @@ APPBARDATA abd; MSG *msg = (MSG*)xevent; - purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n"); + purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "wnd_poschanged\n"); abd.hWnd = msg->hwnd; abd.cbSize = sizeof(APPBARDATA); @@ -391,7 +391,7 @@ MSG *msg = (MSG*)xevent; WINDOWPOS *wpos = (WINDOWPOS*)msg->lParam; - purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanging\n"); + purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "wnd_poschanging\n"); if(ab->docked || ab->docking) { wpos->x = ab->docked_rect.left; @@ -526,7 +526,7 @@ break; case ABN_FULLSCREENAPP: - purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "gtk_appbar_callback: ABN_FULLSCREENAPP: %d\n", (BOOL)msg->lParam); + purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "gtk_appbar_callback: ABN_FULLSCREENAPP: %d\n", (BOOL)msg->lParam); if (!ab->iconized && ab->docked) { if ((BOOL)msg->lParam) { SetWindowPos(msg->hwnd, HWND_BOTTOM, 0, 0, 0, 0, diff -r a0668fbf2483 -r b98519a42e53 pidgin/win32/nsis/pidgin-installer.nsi --- a/pidgin/win32/nsis/pidgin-installer.nsi Mon Mar 02 21:53:53 2009 +0000 +++ b/pidgin/win32/nsis/pidgin-installer.nsi Mon Mar 02 22:07:59 2009 +0000 @@ -709,6 +709,8 @@ Push "ymsgr" Call un.UnregisterURIHandler + Delete "$INSTDIR\ca-certs\America_Online_Root_Certification_Authority_1.pem" + Delete "$INSTDIR\ca-certs\AOL_Member_CA.pem" Delete "$INSTDIR\ca-certs\CAcert_Class3.pem" Delete "$INSTDIR\ca-certs\CAcert_Root.pem" Delete "$INSTDIR\ca-certs\Equifax_Secure_CA.pem" diff -r a0668fbf2483 -r b98519a42e53 po/ChangeLog --- a/po/ChangeLog Mon Mar 02 21:53:53 2009 +0000 +++ b/po/ChangeLog Mon Mar 02 22:07:59 2009 +0000 @@ -1,16 +1,31 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +version 2.6.0 + version 2.5.5 + * Afrikaans translation updated (Friedel Wolff) * Bengali translation updated (Israt Jahan) + * Catalan translation updated (Josep Puigdemont) + * Chinese (Hong Kong) translation updated (Ambrose C. Li) + * Chinese (Traditional) translation updated (Ambrose C. Li) * Czech translation updated (David Vachulka) * Danish translation updated (Peter Bach) + * French translation updated (Éric Boumaour) + * German translation updated (Jochen Kemnade and Björn Voigt) + * Hungarian translation updated (Gabor Kelemen) + * Khmer translation added (Khoem Sokhem) + * Lithuanian translation updated (Laurynas Biveinis) * Norwegian Bokmål translation updated (Hans Fredrik Nordhaug) * Norwegian Nynorsk translation updated (Yngve Spjeld Landro) + * Portuguese (Brazilian) translation updated (Rodrigo Luiz + Marques Flores) + * Punjabi translation updated (Amanpreet Singh Alam) * Russian translation updated (Антон Самохвалов) * Serbian translation updated (Miloš Popović) * Serbian Latin translation updated (Miloš Popović) * Slovak translation updated (loptosko) * Slovenian translation updated (Martin Srebotnjak) + * Swedish translation updated (Peter Hjalmarsson) version 2.5.4 * Czech translation updated (David Vachulka) diff -r a0668fbf2483 -r b98519a42e53 po/POTFILES.in --- a/po/POTFILES.in Mon Mar 02 21:53:53 2009 +0000 +++ b/po/POTFILES.in Mon Mar 02 22:07:59 2009 +0000 @@ -133,6 +133,7 @@ libpurple/protocols/oscar/peer.c libpurple/protocols/qq/buddy_info.c libpurple/protocols/qq/buddy_list.c +libpurple/protocols/qq/buddy_memo.c libpurple/protocols/qq/buddy_opt.c libpurple/protocols/qq/group.c libpurple/protocols/qq/group_im.c @@ -183,6 +184,7 @@ libpurple/status.c libpurple/util.c libpurple/win32/libc_interface.c +libpurple/xmlnode.c pidgin.desktop.in pidgin/eggtrayicon.c pidgin/gtkaccount.c diff -r a0668fbf2483 -r b98519a42e53 po/README --- a/po/README Mon Mar 02 21:53:53 2009 +0000 +++ b/po/README Mon Mar 02 22:07:59 2009 +0000 @@ -1,2 +1,2 @@ -For information on translating Pidgin, Libpurple, and Finch, please see +For information on translating Pidgin, libpurple, and Finch, please see our wiki page at http://developer.pidgin.im/wiki/TipsForTranslators. diff -r a0668fbf2483 -r b98519a42e53 po/af.po --- a/po/af.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/af.po Mon Mar 02 22:07:59 2009 +0000 @@ -3,19 +3,21 @@ # This file is distributed under the same license as the pidgin package. # Friedel Wolff , 2006-2008. # Samuel Murray , 2007 +# F Wolff , 2009 msgid "" msgstr "" "Project-Id-Version: 2.3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-18 01:17-0800\n" -"PO-Revision-Date: 2008-12-18 00:13+0200\n" +"POT-Creation-Date: 2009-02-27 10:14-0800\n" +"PO-Revision-Date: 2009-02-23 19:54+0200\n" "Last-Translator: F Wolff \n" -"Language-Team: translate-discuss-swedish@lists.kde.org\n" +"Language-Team: translate-discuss-af@lists.sourceforge.net\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: af\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Virtaal 0.2\n" +"X-Generator: Virtaal 0.3.1\n" #. Translators may want to transliterate the name. #. It is not to be translated. @@ -32,7 +34,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -41,7 +43,7 @@ "Gebruik: %s [OPSIE]...\n" "\n" " -c, --config=GIDS gebruik GIDS vir konfigurasielêers\n" -" -d, --debug skryf ontfoutboodskappe na stdout\n" +" -d, --debug skryf ontfoutboodskappe na stderr\n" " -h, --help wys hierdie hulp en sluit af\n" " -n, --nologin moenie outomaties aanmeld nie\n" " -v, --version wys die huidige weergawe en sluit af\n" @@ -1163,7 +1165,6 @@ msgid "Change status to" msgstr "Verander status na:" -#. Conversations msgid "Conversations" msgstr "Gesprekke" @@ -1486,7 +1487,6 @@ "Wanneer 'n nuwe gesprek geopen word, sal hierdie inprop die laaste gesprek " "in die huidige een invoeg." -#, c-format msgid "Online" msgstr "Aanlyn" @@ -1922,7 +1922,6 @@ msgid "Transfer of file %s complete" msgstr "Oordrag van lêer %s voltooi" -#, c-format msgid "File transfer complete" msgstr "Lêeroordrag voltooi" @@ -1930,7 +1929,6 @@ msgid "You canceled the transfer of %s" msgstr "U het die oordrag van %s gekanselleer" -#, c-format msgid "File transfer cancelled" msgstr "Lêeroordrag gekanselleer" @@ -2145,7 +2143,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "U gebruik tans %s, maar hierdie inprop vereis %s." -#, c-format msgid "This plugin has not defined an ID." msgstr "Hierdie inprop is nie as 'n ID gedefinieer nie." @@ -2838,7 +2835,6 @@ "Kon nie verbinding met plaaslike mDNS-bediener bewerkstellig nie. Loop dit " "tans?" -#. Creating the options for the protocol msgid "First name" msgstr "Naam" @@ -2870,6 +2866,11 @@ msgid "Purple Person" msgstr "Pers persoon" +#. Creating the options for the protocol +#, fuzzy +msgid "Local Port" +msgstr "Plaaslike poort" + msgid "Bonjour" msgstr "Bonjour" @@ -3033,7 +3034,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "Weg" @@ -3917,7 +3917,6 @@ msgid "Extended Away" msgstr "Vir lank weg" -#, c-format msgid "Do Not Disturb" msgstr "Moenie pla nie" @@ -4153,6 +4152,9 @@ msgid "Re-initializing Stream" msgstr "Herinisialiseer stroom" +msgid "Server doesn't support blocking" +msgstr "Bediener ondersteun nie blokkering nie" + msgid "Not Authorized" msgstr "Nie gemagtig nie" @@ -4663,9 +4665,6 @@ msgid "Select an action" msgstr "Stel 'n aksie op" -msgid "Unable to retrieve MSN Address Book" -msgstr "Kan nie MSN-adresboek haal nie" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it @@ -4907,7 +4906,6 @@ msgid "Passport account not yet verified" msgstr "Paspoortrekening nog nie geverifieer nie" -#, c-format msgid "Passport account suspended" msgstr "Paspoortrekening opgeskort" @@ -4926,9 +4924,8 @@ msgid "Other Contacts" msgstr "Ander kontakte" -#, fuzzy msgid "Non-IM Contacts" -msgstr "Verwyder kontak" +msgstr "" msgid "Nudge" msgstr "Stootjie" @@ -6112,7 +6109,6 @@ msgid "Error. SSL support is not installed." msgstr "Fout. SSL-steun nie geïnstalleer nie." -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "" "Hierdie konferensie is gesluit. Geen verdere boodskappe kan gestuur word nie." @@ -6377,23 +6373,18 @@ msgid "Screen Sharing" msgstr "Skermdeling" -#, c-format msgid "Free For Chat" msgstr "Beskikbaar vir geselsies" -#, c-format msgid "Not Available" msgstr "Nie beskikbaar nie" -#, c-format msgid "Occupied" msgstr "Beset" -#, c-format msgid "Web Aware" msgstr "Web Aware" -#, c-format msgid "Invisible" msgstr "Onsigbaar" @@ -6492,13 +6483,11 @@ msgid "_OK" msgstr "_Regso" -#, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"U kan dalk binnekort ontkoppel word. U moet dalk TOC gebruik tot dit " -"reggemaak is. Kontroleer %s vir bywerkings." +#, fuzzy, c-format +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"U kan dalk binnekort ontkoppel word. As dit gebeur, kontroleer %s vir " +"bywerkings." msgid "Unable to get a valid AIM login hash." msgstr "Kan nie 'n geldige AIM-aanmeldhutswaarde kry nie." @@ -6960,6 +6949,7 @@ msgid "Get AIM Info" msgstr "Kry AIM-inligting" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "Wysig vriendkommentaar" @@ -7067,7 +7057,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "Probeer tans om aan %s:%hu te koppel." -#, c-format msgid "Attempting to connect via proxy server." msgstr "Probeer tans om via instaanbediener te koppel." @@ -7295,7 +7284,6 @@ msgid "Failed removing me from %d's buddy list" msgstr "%s het u van sy of haar vriendelys verwyder." -#, fuzzy msgid "No reason given" msgstr "Geen rede gegee nie" @@ -7331,32 +7319,26 @@ msgid "You can only search for permanent Qun\n" msgstr "U kan net vir permanente QQ-groepe soek\n" -#, fuzzy msgid "(Invalid UTF-8 string)" -msgstr "Ongeldige instaaninstellings" - -#, fuzzy +msgstr "(Ongeldige UTF-8-string)" + msgid "Not member" -msgstr "Ek is nie 'n lid nie" +msgstr "Nie 'n lid nie" msgid "Member" msgstr "Lid" -#, fuzzy msgid "Requesting" -msgstr "Versoek-dialoog" - -#, fuzzy +msgstr "Versoek tans" + msgid "Admin" -msgstr "Adium" - -#, fuzzy +msgstr "Admin" + msgid "Notice" -msgstr "Kennisgewing:" - -#, fuzzy +msgstr "Kennisgewing" + msgid "Detail" -msgstr "Verstek" +msgstr "Detail" msgid "Creator" msgstr "Skepper" @@ -7365,17 +7347,14 @@ msgid "About me" msgstr "Omtrent %s" -#, fuzzy msgid "Category" -msgstr "Geselsiefout" - -#, fuzzy +msgstr "Kategorie" + msgid "The Qun does not allow others to join" -msgstr "Hierdie groep laat nie ander toe om aan te sluit nie" - -#, fuzzy +msgstr "De Qun laat nie ander toe om aan te sluit nie" + msgid "Join QQ Qun" -msgstr "Sluit by geselsie aan" +msgstr "Sluit by QQ Qun aan" msgid "Input request here" msgstr "Gee versoek hier" @@ -7401,9 +7380,8 @@ msgid "Join Qun, Unknown Reply" msgstr "" -#, fuzzy msgid "Quit Qun" -msgstr "QQ-qun" +msgstr "" msgid "" "Note, if you are the creator, \n" @@ -7412,9 +7390,8 @@ "Let wel, as u die skepper is, \n" "sal hierdie bewerking eindelik hierdie qun verwyder." -#, fuzzy msgid "Sorry, you are not our style" -msgstr "Jammer, u's nie my tipe nie..." +msgstr "Jammer, u's nie my tipe nie" #, fuzzy msgid "Successfully changed Qun members" @@ -7494,21 +7471,20 @@ msgid "Invalid name" msgstr "Ongeldige naam" -#, fuzzy msgid "Select icon..." -msgstr "Kies vouer..." - -#, fuzzy, c-format +msgstr "Kies ikoon..." + +#, c-format msgid "Login time: %d-%d-%d, %d:%d:%d
\n" -msgstr "Aanmeldtyd: %s
\n" - -#, fuzzy, c-format +msgstr "Aanmeldtyd: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "Total Online Buddies: %d
\n" -msgstr "Tans aanlyn: %d
\n" - -#, fuzzy, c-format +msgstr "Totale aantal vriende aanlyn: %d
\n" + +#, c-format msgid "Last Refresh: %d-%d-%d, %d:%d:%d
\n" -msgstr "Vorige verfrissing: %s
\n" +msgstr "Vorige verfrissing: %d-%d-%d, %d:%d:%d
\n" #, c-format msgid "Server: %s
\n" @@ -7522,9 +7498,9 @@ msgid "Connection Mode: %s
\n" msgstr "Verbindingmodus: %s
\n" -#, fuzzy, c-format +#, c-format msgid "My Internet IP: %s:%d
\n" -msgstr "My internetadres: %s
\n" +msgstr "My internetadres: %s:%d
\n" #, c-format msgid "Sent: %lu
\n" @@ -7546,13 +7522,13 @@ msgid "Received Duplicate: %lu
\n" msgstr "Duplikaat ontvang: %lu
\n" -#, fuzzy, c-format +#, c-format msgid "Time: %d-%d-%d, %d:%d:%d
\n" -msgstr "Aanmeldtyd: %s
\n" - -#, fuzzy, c-format +msgstr "Tyd: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "IP: %s
\n" -msgstr "Bediener: %s
\n" +msgstr "IP: %s
\n" msgid "Login Information" msgstr "Aanmeldinligting" @@ -7571,6 +7547,10 @@ msgid "

Acknowledgement:
\n" msgstr "Gestuur: %lu
\n" +#, fuzzy +msgid "

Scrupulous Testers:
\n" +msgstr "Vorige verfrissing: %s
\n" + msgid "

And, all the boys in the backroom...
\n" msgstr "" @@ -7581,9 +7561,8 @@ msgid "About OpenQ %s" msgstr "Omtrent %s" -#, fuzzy msgid "Change Icon" -msgstr "Stoor ikoon" +msgstr "Verander ikoon" msgid "Change Password" msgstr "Verander wagwoord" @@ -7598,6 +7577,10 @@ msgid "About OpenQ" msgstr "Omtrent %s" +#, fuzzy +msgid "Modify Buddy Memo" +msgstr "Wysig adres" + #. *< type #. *< ui_requirement #. *< flags @@ -7617,7 +7600,7 @@ #, fuzzy msgid "Select Server" -msgstr "Kies gebruiker" +msgstr "Kies bediener" msgid "QQ2005" msgstr "" @@ -7637,6 +7620,9 @@ msgid "Show server news" msgstr "Wys bedienernuus" +msgid "Show chat room when msg comes" +msgstr "" + #, fuzzy msgid "Keep alive interval (seconds)" msgstr "Wakkerhou-interval(le)" @@ -9284,6 +9270,9 @@ msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP-gebruikername mag nie spasies of @-simbole bevat nie" +msgid "SIP connect server not specified" +msgstr "" + #. *< type #. *< ui_requirement #. *< flags @@ -11369,6 +11358,10 @@ msgid "Macedonian" msgstr "Masedonies" +#, fuzzy +msgid "Mongolian" +msgstr "Mongools" + msgid "Bokmål Norwegian" msgstr "Bokmål-Noorweegs" @@ -11483,8 +11476,30 @@ "program nie.

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

" -msgstr "IRC: #pidgin op irc.freenode.net

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

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

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

" +msgstr "" +"Hulp d.m.v. e-pos: support@pidgin.im

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

" +msgstr "" +"IRC-kanaal: #pidgin op irc.freenode.net

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

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

" msgid "Current Developers" msgstr "Huidige programmeerders" @@ -12139,6 +12154,10 @@ msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "Sluit af omdat 'n ander libpurple-kliënt reeds loop.\n" + msgid "Open All Messages" msgstr "Open alle boodskappe" @@ -12478,6 +12497,10 @@ msgid "No proxy" msgstr "Geen instaanbediener" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "Gebruik afgeleë DNS met SOCKS4-instaanbedieners" + msgid "_User:" msgstr "_Gebruiker:" @@ -13918,9 +13941,6 @@ msgid "Only when docked" msgstr "Net indien gedok" -msgid "_Flash window when chat messages are received" -msgstr "_Flits venster wanneer geselsieboodskappe ontvang word" - msgid "Windows Pidgin Options" msgstr "Windows Pidgin-opsies" @@ -13969,6 +13989,19 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Hierdie inprop is nuttig om XMPP-bedieners of -kliënte te ontfout." +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "Kan nie MSN-adresboek haal nie" + +#~ msgid "" +#~ "You may be disconnected shortly. You may want to use TOC until this is " +#~ "fixed. Check %s for updates." +#~ msgstr "" +#~ "U kan dalk binnekort ontkoppel word. U moet dalk TOC gebruik tot dit " +#~ "reggemaak is. Kontroleer %s vir bywerkings." + +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "_Flits venster wanneer geselsieboodskappe ontvang word" + #~ msgid "Connection to server lost (no data received within %d second)" #~ msgid_plural "" #~ "Connection to server lost (no data received within %d seconds)" diff -r a0668fbf2483 -r b98519a42e53 po/bn.po --- a/po/bn.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/bn.po Mon Mar 02 22:07:59 2009 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: Pidgin 2.5.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-13 09:58-0500\n" +"POT-Creation-Date: 2009-02-27 10:17-0800\n" "PO-Revision-Date: 2008-11-13 17:07+0600\n" "Last-Translator: Israt Jahan \n" "Language-Team: Bengali \n" @@ -21,24 +21,20 @@ #. Translators may want to transliterate the name. #. It is not to be translated. -#: ../finch/finch.c:64 ../finch/finch.c:296 ../finch/finch.c:325 -#: ../finch/finch.c:413 msgid "Finch" msgstr "Finch" -#: ../finch/finch.c:208 #, c-format msgid "%s. Try `%s -h' for more information.\n" msgstr "%s। আরও তথ্য জানাতে `%s -h' দ্বারা চেষ্টা করুন।\n" -#: ../finch/finch.c:210 -#, c-format +#, fuzzy, c-format msgid "" "%s\n" "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -53,7 +49,6 @@ " -v, --version বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n" # tithi -#: ../finch/finch.c:323 ../pidgin/gtkmain.c:732 #, c-format msgid "" "%s encountered errors migrating your settings from %s to %s. Please " @@ -64,263 +59,108 @@ "করে তদন্ত করুন এবং নিজের হাতে পরিবর্তন শেষ করুন। অনুগ্রহ করে http://developer." "pidgin.im এ এই ত্রুটিটির প্রতিবেদন পাঠান" -#: ../finch/gntaccount.c:126 ../finch/gntaccount.c:505 ../finch/gntblist.c:635 -#: ../finch/gntblist.c:798 ../finch/gntplugin.c:196 ../finch/gntplugin.c:244 -#: ../finch/gntrequest.c:380 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310 -#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121 -#: ../finch/plugins/gntclipboard.c:128 -#: ../libpurple/protocols/jabber/buddy.c:2058 -#: ../libpurple/protocols/jabber/chat.c:704 -#: ../libpurple/protocols/jabber/chat.c:715 -#: ../libpurple/protocols/jabber/jabber.c:1779 -#: ../libpurple/protocols/qq/qq_process.c:90 -#: ../libpurple/protocols/silc/ops.c:76 ../libpurple/protocols/silc/ops.c:1473 -#: ../libpurple/protocols/silc10/ops.c:1451 msgid "Error" msgstr "ত্রুটি" -#: ../finch/gntaccount.c:126 msgid "Account was not added" msgstr "একাউন্ট যুক্ত করা হয়নি" # তিথি -#: ../finch/gntaccount.c:127 msgid "Username of an account must be non-empty." msgstr "একটি একাউন্টের ব্যবহারকারীর নাম ফাঁকা থাকতে পারবে না।" -#: ../finch/gntaccount.c:458 msgid "New mail notifications" msgstr "নতুন মেইলের প্রজ্ঞাপণ" -#: ../finch/gntaccount.c:468 msgid "Remember password" msgstr "গুপ্তসংকেত স্মরণ রাখুন" # তিথি -#: ../finch/gntaccount.c:506 msgid "There are no protocol plugins installed." msgstr "এখানে কোনো প্রটোকল প্লাগইন সংস্থাপিত করা নেই।" # তিথি -#: ../finch/gntaccount.c:507 msgid "(You probably forgot to 'make install'.)" msgstr "(আপনি সম্ভবত 'সংস্থাপন করতে' ভুলে গেছেন।)" -#: ../finch/gntaccount.c:517 ../finch/gntconn.c:138 -#: ../pidgin/gtkaccount.c:1498 ../pidgin/gtkblist.c:4796 msgid "Modify Account" msgstr "একাউন্ট পরিবর্তন করুন" -#: ../finch/gntaccount.c:517 msgid "New Account" msgstr "নতুন একাউন্ট" -#: ../finch/gntaccount.c:542 ../pidgin/gtkft.c:698 msgid "Protocol:" msgstr "প্রটোকল:" -#: ../finch/gntaccount.c:550 -#: ../pidgin/plugins/gevolution/new_person_dialog.c:294 msgid "Username:" msgstr "ব্যবহারকারীর নাম:" -#: ../finch/gntaccount.c:563 msgid "Password:" msgstr "গুপ্তসংকেত:" -#: ../finch/gntaccount.c:573 msgid "Alias:" msgstr "উপনাম:" #. Register checkbox -#: ../finch/gntaccount.c:584 msgid "Create this account on the server" msgstr "সার্ভারে এই একাউন্টটি তৈরী করুন।" #. Cancel button #. Cancel -#: ../finch/gntaccount.c:600 ../finch/gntaccount.c:664 -#: ../finch/gntaccount.c:955 ../finch/gntblist.c:681 ../finch/gntblist.c:787 -#: ../finch/gntblist.c:835 ../finch/gntblist.c:1187 ../finch/gntblist.c:1424 -#: ../finch/gntblist.c:1558 ../finch/gntblist.c:2734 ../finch/gntblist.c:2785 -#: ../finch/gntblist.c:2859 ../finch/gntblist.c:2921 ../finch/gntcertmgr.c:90 -#: ../finch/gntconv.c:596 ../finch/gntplugin.c:532 ../finch/gntpounce.c:471 -#: ../finch/gntpounce.c:679 ../finch/gntprefs.c:265 ../finch/gntsound.c:1064 -#: ../finch/gntstatus.c:145 ../finch/gntstatus.c:485 ../finch/gntstatus.c:610 -#: ../finch/plugins/gnthistory.c:178 ../libpurple/account.c:1119 -#: ../libpurple/account.c:1451 ../libpurple/account.c:1486 -#: ../libpurple/conversation.c:1233 ../libpurple/plugins/buddynote.c:51 -#: ../libpurple/protocols/gg/gg.c:471 ../libpurple/protocols/gg/gg.c:613 -#: ../libpurple/protocols/gg/gg.c:742 ../libpurple/protocols/gg/gg.c:812 -#: ../libpurple/protocols/jabber/buddy.c:745 -#: ../libpurple/protocols/jabber/buddy.c:2452 -#: ../libpurple/protocols/jabber/buddy.c:2488 -#: ../libpurple/protocols/jabber/chat.c:813 -#: ../libpurple/protocols/jabber/jabber.c:1144 -#: ../libpurple/protocols/jabber/jabber.c:1153 -#: ../libpurple/protocols/jabber/jabber.c:1972 -#: ../libpurple/protocols/jabber/si.c:1103 -#: ../libpurple/protocols/jabber/usermood.c:199 -#: ../libpurple/protocols/jabber/usernick.c:78 -#: ../libpurple/protocols/jabber/xdata.c:401 -#: ../libpurple/protocols/msn/msn.c:320 ../libpurple/protocols/msn/msn.c:337 -#: ../libpurple/protocols/msn/msn.c:354 ../libpurple/protocols/msn/msn.c:371 -#: ../libpurple/protocols/msn/msn.c:392 ../libpurple/protocols/msnp9/msn.c:303 -#: ../libpurple/protocols/msnp9/msn.c:320 -#: ../libpurple/protocols/msnp9/msn.c:337 -#: ../libpurple/protocols/msnp9/msn.c:354 -#: ../libpurple/protocols/msnp9/msn.c:375 -#: ../libpurple/protocols/myspace/user.c:833 -#: ../libpurple/protocols/myspace/user.c:896 -#: ../libpurple/protocols/oscar/oscar.c:6320 -#: ../libpurple/protocols/oscar/peer.c:1052 -#: ../libpurple/protocols/qq/buddy_info.c:441 -#: ../libpurple/protocols/qq/buddy_opt.c:326 -#: ../libpurple/protocols/qq/buddy_opt.c:621 -#: ../libpurple/protocols/qq/buddy_opt.c:670 -#: ../libpurple/protocols/qq/buddy_opt.c:1137 -#: ../libpurple/protocols/qq/group.c:112 -#: ../libpurple/protocols/qq/group_join.c:151 -#: ../libpurple/protocols/qq/group_join.c:336 -#: ../libpurple/protocols/qq/group_opt.c:127 -#: ../libpurple/protocols/qq/group_opt.c:355 -#: ../libpurple/protocols/qq/qq_base.c:882 -#: ../libpurple/protocols/sametime/sametime.c:3445 -#: ../libpurple/protocols/sametime/sametime.c:3531 -#: ../libpurple/protocols/sametime/sametime.c:3705 -#: ../libpurple/protocols/sametime/sametime.c:5457 -#: ../libpurple/protocols/sametime/sametime.c:5547 -#: ../libpurple/protocols/sametime/sametime.c:5672 -#: ../libpurple/protocols/silc/buddy.c:455 -#: ../libpurple/protocols/silc/buddy.c:1079 -#: ../libpurple/protocols/silc/buddy.c:1194 -#: ../libpurple/protocols/silc/chat.c:619 -#: ../libpurple/protocols/silc/chat.c:753 -#: ../libpurple/protocols/silc/ops.c:1833 -#: ../libpurple/protocols/silc/silc.c:1058 -#: ../libpurple/protocols/silc/silc.c:1266 -#: ../libpurple/protocols/silc10/buddy.c:468 -#: ../libpurple/protocols/silc10/buddy.c:1087 -#: ../libpurple/protocols/silc10/buddy.c:1192 -#: ../libpurple/protocols/silc10/chat.c:600 -#: ../libpurple/protocols/silc10/chat.c:730 -#: ../libpurple/protocols/silc10/ops.c:1910 -#: ../libpurple/protocols/silc10/silc.c:761 -#: ../libpurple/protocols/silc10/silc.c:967 -#: ../libpurple/protocols/yahoo/yahoo.c:1000 -#: ../libpurple/protocols/yahoo/yahoo.c:3583 -#: ../libpurple/protocols/yahoo/yahoo.c:3594 ../pidgin/gtkaccount.c:1865 -#: ../pidgin/gtkaccount.c:2417 ../pidgin/gtkblist.c:686 -#: ../pidgin/gtkblist.c:7013 ../pidgin/gtkcertmgr.c:197 -#: ../pidgin/gtkdialogs.c:738 ../pidgin/gtkdialogs.c:877 -#: ../pidgin/gtkdialogs.c:969 ../pidgin/gtkdialogs.c:989 -#: ../pidgin/gtkdialogs.c:1013 ../pidgin/gtkdialogs.c:1035 -#: ../pidgin/gtkdialogs.c:1083 ../pidgin/gtkdialogs.c:1124 -#: ../pidgin/gtkdialogs.c:1180 ../pidgin/gtkdialogs.c:1219 -#: ../pidgin/gtkdialogs.c:1246 ../pidgin/gtkimhtmltoolbar.c:439 -#: ../pidgin/gtklog.c:327 ../pidgin/gtkplugin.c:302 ../pidgin/gtkpounce.c:1139 -#: ../pidgin/gtkprivacy.c:509 ../pidgin/gtkprivacy.c:525 -#: ../pidgin/gtkprivacy.c:550 ../pidgin/gtkprivacy.c:564 -#: ../pidgin/gtkrequest.c:273 ../pidgin/gtksavedstatuses.c:348 -#: ../pidgin/gtkstatusbox.c:1628 msgid "Cancel" msgstr "বাতিল" #. Save button #. Save -#: ../finch/gntaccount.c:604 ../finch/gntcertmgr.c:310 ../finch/gntdebug.c:335 -#: ../finch/gntplugin.c:532 ../finch/gntpounce.c:477 ../finch/gntprefs.c:265 -#: ../finch/gntsound.c:1061 ../finch/gntstatus.c:488 ../finch/gntstatus.c:598 -#: ../libpurple/account.c:1485 ../libpurple/plugins/buddynote.c:50 -#: ../libpurple/protocols/jabber/buddy.c:744 ../pidgin/gtkblist.c:686 -#: ../pidgin/gtkdebug.c:746 ../pidgin/gtkrequest.c:279 msgid "Save" msgstr "সংরক্ষণ" -#: ../finch/gntaccount.c:657 ../pidgin/gtkaccount.c:1856 -#: ../pidgin/gtksavedstatuses.c:336 ../pidgin/gtkstatusbox.c:1622 #, c-format msgid "Are you sure you want to delete %s?" msgstr "আপনি কি নিশ্চিত আপনি %s মুছে ফেলতে চান?" -#: ../finch/gntaccount.c:660 msgid "Delete Account" msgstr "একাউন্ট মুছে ফেলুন" #. Delete button -#: ../finch/gntaccount.c:663 ../finch/gntaccount.c:773 -#: ../finch/gntcertmgr.c:318 ../finch/gntpounce.c:678 ../finch/gntpounce.c:741 -#: ../finch/gntstatus.c:144 ../finch/gntstatus.c:210 -#: ../pidgin/gtkaccount.c:1864 ../pidgin/gtklog.c:326 -#: ../pidgin/gtkpounce.c:1138 ../pidgin/gtkrequest.c:276 -#: ../pidgin/gtksavedstatuses.c:347 ../pidgin/gtkstatusbox.c:1627 msgid "Delete" msgstr "মুছুন" -#: ../finch/gntaccount.c:734 ../finch/gntblist.c:2601 ../finch/gntui.c:94 -#: ../pidgin/gtkaccount.c:2278 msgid "Accounts" msgstr "একাউন্টসমূহ" -#: ../finch/gntaccount.c:740 msgid "You can enable/disable accounts from the following list." msgstr "আপনি নিম্নোক্ত তালিকা হতে একাউন্টসমূহকে সক্রিয়/নিষ্ক্রিয় করতে পারেন।" #. Add button -#: ../finch/gntaccount.c:764 ../finch/gntaccount.c:954 ../finch/gntblist.c:680 -#: ../finch/gntblist.c:787 ../finch/gntblist.c:835 ../finch/gntblist.c:3041 -#: ../finch/gntcertmgr.c:305 ../finch/gntnotify.c:443 ../finch/gntpounce.c:725 -#: ../finch/gntroomlist.c:275 ../finch/gntstatus.c:199 -#: ../libpurple/protocols/gg/gg.c:811 -#: ../libpurple/protocols/qq/buddy_opt.c:1136 -#: ../libpurple/protocols/sametime/sametime.c:5546 -#: ../libpurple/protocols/silc/chat.c:618 -#: ../libpurple/protocols/silc10/chat.c:599 ../pidgin/gtkaccount.c:2416 -#: ../pidgin/gtkblist.c:7012 ../pidgin/gtkconv.c:1745 -#: ../pidgin/gtkrequest.c:277 msgid "Add" msgstr "যুক্ত" #. Modify button -#: ../finch/gntaccount.c:769 ../finch/gntpounce.c:733 msgid "Modify" msgstr "পরিবর্তন" -#: ../finch/gntaccount.c:877 ../pidgin/gtkaccount.c:2363 #, c-format msgid "%s%s%s%s has made %s his or her buddy%s%s" msgstr "%1s%2s%3s%4s, %5s-কে তার বন্ধু করেছেন%6s%7s" -#: ../finch/gntaccount.c:950 ../pidgin/gtkaccount.c:2415 msgid "Add buddy to your list?" msgstr "আপনার তালিকায় বন্ধু যোগ করতে চান কি?" -#: ../finch/gntaccount.c:1010 ../pidgin/gtkaccount.c:2473 #, c-format msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s" msgstr "%1s%2s%3s%4s তার বন্ধু তালিকা %s6%7s তে %5s কে যুক্ত করতে চায়" -#: ../finch/gntaccount.c:1035 ../finch/gntaccount.c:1038 -#: ../finch/gntaccount.c:1065 ../pidgin/gtkaccount.c:2496 -#: ../pidgin/gtkaccount.c:2503 msgid "Authorize buddy?" msgstr "বন্ধুকে কি প্রাধিকার দিতে চান?" # তিথি -#: ../finch/gntaccount.c:1042 ../finch/gntaccount.c:1069 -#: ../libpurple/protocols/qq/group_info.c:160 -#: ../libpurple/protocols/qq/group_opt.c:451 ../pidgin/gtkaccount.c:2497 -#: ../pidgin/gtkaccount.c:2504 msgid "Authorize" msgstr "অনুমোদিত" -#: ../finch/gntaccount.c:1043 ../finch/gntaccount.c:1070 -#: ../libpurple/protocols/qq/group_opt.c:450 ../pidgin/gtkaccount.c:2498 -#: ../pidgin/gtkaccount.c:2505 msgid "Deny" msgstr "প্রত্যাখ্যান করুন" -#: ../finch/gntblist.c:277 #, c-format msgid "" "Online: %d\n" @@ -329,12 +169,10 @@ "অনলাইন: %d\n" "মোট: %d" -#: ../finch/gntblist.c:286 #, c-format msgid "Account: %s (%s)" msgstr "একাউন্ট: %1s (%2s)" -#: ../finch/gntblist.c:298 #, c-format msgid "" "\n" @@ -343,353 +181,190 @@ "\n" "শেষ দেখা: %s আগে" -#: ../finch/gntblist.c:318 ../pidgin/gtkprefs.c:327 -#: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:1 msgid "Default" msgstr "পূর্বনির্ধারিত" -#: ../finch/gntblist.c:624 msgid "You must provide a username for the buddy." msgstr "আপনাকে অবশ্যই বন্ধুর জন্য একটি নাম দিতে হবে।" # tithi -#: ../finch/gntblist.c:626 msgid "You must provide a group." msgstr "আপনাকে অবশ্যই একটি গ্রুপ প্রদান করতে হবে।" -#: ../finch/gntblist.c:628 msgid "You must select an account." msgstr "আপনাকে অবশ্যই একটি একাউন্ট নির্বাচন করতে হবে।" # tithi -#: ../finch/gntblist.c:630 msgid "The selected account is not online." msgstr "নির্বাচিত একাউন্টটি অনলাইনে নেই।" -#: ../finch/gntblist.c:635 msgid "Error adding buddy" msgstr "বন্ধুকে যুক্ত করতে ত্রুটি" -#: ../finch/gntblist.c:662 ../libpurple/protocols/irc/irc.c:990 -#: ../libpurple/protocols/irc/msgs.c:370 -#: ../libpurple/protocols/jabber/jabber.c:1055 -#: ../libpurple/protocols/jabber/jabber.c:1057 -#: ../libpurple/protocols/oscar/oscar.c:4103 -#: ../libpurple/protocols/silc/buddy.c:1554 -#: ../libpurple/protocols/silc/ops.c:1210 -#: ../libpurple/protocols/silc/ops.c:1213 -#: ../libpurple/protocols/silc/ops.c:1349 -#: ../libpurple/protocols/silc/ops.c:1352 -#: ../libpurple/protocols/silc/silc.c:1240 -#: ../libpurple/protocols/silc10/buddy.c:1554 -#: ../libpurple/protocols/silc10/ops.c:1191 -#: ../libpurple/protocols/silc10/ops.c:1194 -#: ../libpurple/protocols/silc10/ops.c:1340 -#: ../libpurple/protocols/silc10/ops.c:1343 -#: ../libpurple/protocols/silc10/silc.c:941 ../pidgin/gtkaccount.c:1938 -#: ../pidgin/gtksavedstatuses.c:1013 msgid "Username" msgstr "ব্যবহারকারীর নাম" -#: ../finch/gntblist.c:665 msgid "Alias (optional)" msgstr "উপনাম (ঐচ্ছিক)" -#: ../finch/gntblist.c:668 msgid "Add in group" msgstr "গ্রুপে যোগ দিন" -#: ../finch/gntblist.c:672 ../finch/gntblist.c:766 ../finch/gntblist.c:1769 -#: ../finch/gntblist.c:2715 ../finch/gntblist.c:2771 ../finch/gntblist.c:2846 -#: ../finch/gntblist.c:2906 ../finch/gntnotify.c:186 ../finch/gntstatus.c:576 -#: ../libpurple/plugins/idle.c:153 ../libpurple/plugins/idle.c:190 -#: ../pidgin/gtkblist.c:3432 ../pidgin/gtknotify.c:532 -#: ../pidgin/gtkpounce.c:1306 ../pidgin/plugins/gevolution/gevolution.c:447 msgid "Account" msgstr "একাউন্ট" -#: ../finch/gntblist.c:678 ../finch/gntblist.c:1236 -#: ../libpurple/protocols/qq/buddy_opt.c:446 -#: ../libpurple/protocols/qq/qq.c:819 ../libpurple/protocols/silc/buddy.c:725 -#: ../libpurple/protocols/silc/buddy.c:1030 -#: ../libpurple/protocols/silc/buddy.c:1075 -#: ../libpurple/protocols/silc/buddy.c:1185 -#: ../libpurple/protocols/silc10/buddy.c:737 -#: ../libpurple/protocols/silc10/buddy.c:1036 -#: ../libpurple/protocols/silc10/buddy.c:1083 -#: ../libpurple/protocols/silc10/buddy.c:1183 -#: ../libpurple/protocols/yahoo/yahoo.c:3421 ../pidgin/gtkblist.c:6561 -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:449 msgid "Add Buddy" msgstr "বন্ধু যোগ করুন" -#: ../finch/gntblist.c:678 msgid "Please enter buddy information." msgstr "অনুগ্রহ করে বন্ধুর তথ্য প্রবেশ করান।" -#: ../finch/gntblist.c:734 ../libpurple/blist.c:1245 msgid "Chats" msgstr "আড্ডা" #. Extract their Name and put it in -#: ../finch/gntblist.c:772 ../finch/gntblist.c:2710 ../finch/gntblist.c:2766 -#: ../finch/gntblist.c:2901 ../finch/gntconv.c:584 ../finch/gntroomlist.c:299 -#: ../libpurple/protocols/jabber/jabber.c:1072 -#: ../libpurple/protocols/jabber/jabber.c:1075 -#: ../libpurple/protocols/msn/msn.c:2018 ../libpurple/protocols/msn/msn.c:2083 -#: ../libpurple/protocols/msn/msn.c:2110 -#: ../libpurple/protocols/msnp9/msn.c:1724 -#: ../libpurple/protocols/msnp9/msn.c:1789 -#: ../libpurple/protocols/msnp9/msn.c:1816 -#: ../libpurple/protocols/qq/buddy_info.c:120 ../pidgin/gtkplugin.c:770 -#: ../pidgin/gtkroomlist.c:739 -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:132 -#: ../pidgin/plugins/gevolution/assoc-buddy.c:123 msgid "Name" msgstr "নাম" -#: ../finch/gntblist.c:775 ../finch/gntblist.c:1710 -#: ../libpurple/protocols/gg/gg.c:1636 ../libpurple/protocols/msn/msn.c:1837 -#: ../libpurple/protocols/msnp9/msn.c:1542 -#: ../libpurple/protocols/silc/chat.c:609 -#: ../libpurple/protocols/silc10/chat.c:590 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:704 -#: ../libpurple/protocols/zephyr/zephyr.c:791 -#: ../libpurple/protocols/zephyr/zephyr.c:1170 ../pidgin/gtkdialogs.c:988 -#: ../pidgin/gtkdialogs.c:1012 ../pidgin/gtkdialogs.c:1034 -#: ../pidgin/gtkrequest.c:280 msgid "Alias" msgstr "উপনাম" -#: ../finch/gntblist.c:778 ../finch/gntblist.c:3057 msgid "Group" msgstr "গ্রুপ" -#: ../finch/gntblist.c:782 ../finch/gntblist.c:1203 msgid "Auto-join" msgstr "স্বয়ং-যোগদান" -#: ../finch/gntblist.c:785 ../finch/gntblist.c:1238 ../pidgin/gtkblist.c:6926 msgid "Add Chat" msgstr "আড্ডায় যোগ দিন" # tihi -#: ../finch/gntblist.c:786 msgid "You can edit more information from the context menu later." msgstr "আপনি পরবর্তীতে প্রসঙ্গ তালিকা হতে আরও তথ্য সম্পাদনা করতে পারেন।" -#: ../finch/gntblist.c:798 msgid "Error adding group" msgstr "গ্রুপ যুক্ত করতে ত্রুটি" -#: ../finch/gntblist.c:799 msgid "You must give a name for the group to add." msgstr "আপনাকে অবশ্যই গ্রুপটি যোগ করার জন্য একটি নাম দিতে হবে।" -#: ../finch/gntblist.c:833 ../finch/gntblist.c:1240 -#: ../libpurple/protocols/sametime/sametime.c:5456 -#: ../libpurple/protocols/sametime/sametime.c:5544 ../pidgin/gtkblist.c:7009 msgid "Add Group" msgstr "গ্রুপ যুক্ত করুন" -#: ../finch/gntblist.c:833 msgid "Enter the name of the group" msgstr "গ্রুপের নাম প্রবেশ করান" -#: ../finch/gntblist.c:1186 ../pidgin/gtkblist.c:685 msgid "Edit Chat" msgstr "আড্ডা সম্পাদনা করা" # tihi -#: ../finch/gntblist.c:1186 msgid "Please Update the necessary fields." msgstr "অনুগ্রহ করে প্রয়োজনীয় ক্ষেত্রগুলো হালনাগাদ করুন।" -#: ../finch/gntblist.c:1187 ../finch/gntstatus.c:205 msgid "Edit" msgstr "সম্পাদন" -#: ../finch/gntblist.c:1212 msgid "Edit Settings" msgstr "বিন্যাসনসমূহ সম্পাদন করুন" -#: ../finch/gntblist.c:1248 ../pidgin/gtkutils.c:984 msgid "Information" msgstr "তথ্য" -#: ../finch/gntblist.c:1248 ../pidgin/gtkutils.c:984 msgid "Retrieving..." msgstr "উদ্ধার করছে..." -#: ../finch/gntblist.c:1313 ../finch/gntconv.c:633 -#: ../libpurple/protocols/qq/qq.c:845 ../libpurple/protocols/silc/chat.c:906 -#: ../libpurple/protocols/silc10/chat.c:883 msgid "Get Info" msgstr "তথ্য গ্রহণ করুন" -#: ../finch/gntblist.c:1317 msgid "Add Buddy Pounce" msgstr "বন্ধু পাউন্স যুক্ত করুন" -#: ../finch/gntblist.c:1324 ../finch/gntconv.c:645 -#: ../libpurple/protocols/jabber/si.c:1103 -#: ../libpurple/protocols/oscar/oscar.c:668 ../libpurple/protocols/qq/qq.c:831 -#: ../pidgin/gtkconv.c:1684 msgid "Send File" msgstr "ফাইল পাঠান" -#: ../finch/gntblist.c:1331 ../libpurple/protocols/gg/gg.c:1685 -#: ../libpurple/protocols/msn/msn.c:798 ../libpurple/protocols/msnp9/msn.c:581 msgid "Blocked" msgstr "আবদ্ধ" -#: ../finch/gntblist.c:1336 ../pidgin/gtkblist.c:1465 -#: ../pidgin/gtkblist.c:1594 msgid "Show when offline" msgstr "অফলাইনে থাকলে প্রদর্শন করুন" -#: ../finch/gntblist.c:1419 #, c-format msgid "Please enter the new name for %s" msgstr "অনুগ্রহ করে %s এর জন্য নতুন নাম প্রবেশ করান" -#: ../finch/gntblist.c:1421 ../finch/gntblist.c:1710 msgid "Rename" msgstr "পুনঃ নামকরণ করুন" -#: ../finch/gntblist.c:1421 msgid "Set Alias" msgstr "উপনাম নির্ধারন করুন" # tithi -#: ../finch/gntblist.c:1422 msgid "Enter empty string to reset the name." msgstr "নামটি পুনঃনির্ধারণ করতে খালি স্ট্রিং প্রবেশ করান।" # tithi -#: ../finch/gntblist.c:1536 msgid "Removing this contact will also remove all the buddies in the contact" msgstr "এই যোগাযোগটি অপসারণ করার কারণে যোগাযোগের সকল বন্ধুও অপসারিত হবে।" # tihi -#: ../finch/gntblist.c:1544 msgid "Removing this group will also remove all the buddies in the group" msgstr "এই গ্রুপটি অপসারণ করার কারণে গ্রুপের সকল বন্ধুও অপসারিত হবে।" -#: ../finch/gntblist.c:1549 #, c-format msgid "Are you sure you want to remove %s?" msgstr "আপনি কি নিশ্চিত আপনি %s অপসারণ করতে চান?" #. XXX: anything to do with the returned ui-handle? -#: ../finch/gntblist.c:1552 msgid "Confirm Remove" msgstr "অপসারণ নিশ্চিত করুন" -#: ../finch/gntblist.c:1557 ../finch/gntblist.c:1712 ../finch/gntft.c:245 -#: ../pidgin/gtkconv.c:1742 ../pidgin/gtkrequest.c:278 -#: ../pidgin/gtkstatusbox.c:269 msgid "Remove" msgstr "অপসারণ" #. Buddy List -#: ../finch/gntblist.c:1686 ../finch/gntblist.c:3098 ../finch/gntprefs.c:258 -#: ../finch/gntui.c:95 ../pidgin/gtkblist.c:5292 -#: ../pidgin/plugins/win32/winprefs/winprefs.c:326 msgid "Buddy List" msgstr "Buddy List" -#: ../finch/gntblist.c:1717 msgid "Place tagged" msgstr "স্থান চিহ্নিত করা হয়েছে" # tithi -#: ../finch/gntblist.c:1722 msgid "Toggle Tag" msgstr "টোগল ট্যাগ" -#: ../finch/gntblist.c:1726 ../finch/gntblist.c:2915 msgid "View Log" msgstr "লগ প্রদর্শন" #. General -#: ../finch/gntblist.c:1762 ../libpurple/protocols/gg/gg.c:584 -#: ../libpurple/protocols/gg/gg.c:965 ../libpurple/protocols/gg/gg.c:1034 -#: ../libpurple/protocols/gg/gg.c:2353 -#: ../libpurple/protocols/jabber/buddy.c:314 -#: ../libpurple/protocols/jabber/buddy.c:1267 -#: ../libpurple/protocols/jabber/buddy.c:2243 -#: ../libpurple/protocols/jabber/buddy.c:2435 -#: ../libpurple/protocols/jabber/jabber.c:1083 -#: ../libpurple/protocols/jabber/jabber.c:1799 -#: ../libpurple/protocols/jabber/jabber.c:1813 -#: ../libpurple/protocols/jabber/jabber.c:1827 -#: ../libpurple/protocols/jabber/jabber.c:1841 -#: ../libpurple/protocols/jabber/jabber.c:1855 -#: ../libpurple/protocols/msn/msn.c:1845 ../libpurple/protocols/msn/msn.c:2021 -#: ../libpurple/protocols/msnp9/msn.c:1550 -#: ../libpurple/protocols/msnp9/msn.c:1727 -#: ../libpurple/protocols/qq/buddy_info.c:112 -#: ../libpurple/protocols/silc/buddy.c:1550 -#: ../libpurple/protocols/silc/ops.c:1016 -#: ../libpurple/protocols/silc/ops.c:1199 -#: ../libpurple/protocols/silc/ops.c:1337 -#: ../libpurple/protocols/silc10/buddy.c:1550 -#: ../libpurple/protocols/silc10/ops.c:1036 -#: ../libpurple/protocols/silc10/ops.c:1179 -#: ../libpurple/protocols/silc10/ops.c:1328 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 ../pidgin/gtkblist.c:3456 msgid "Nickname" msgstr "ডাকনাম" #. Never know what those translations might end up like... #. Idle stuff -#: ../finch/gntblist.c:1784 ../finch/gntprefs.c:261 -#: ../libpurple/protocols/bonjour/bonjour.c:365 -#: ../libpurple/protocols/jabber/buddy.c:807 -#: ../libpurple/protocols/jabber/buddy.c:977 -#: ../libpurple/protocols/msn/msn.c:740 ../libpurple/protocols/msn/msn.c:760 -#: ../libpurple/protocols/msn/msn.c:768 ../libpurple/protocols/msn/state.c:32 -#: ../libpurple/protocols/msnp9/msn.c:560 -#: ../libpurple/protocols/msnp9/state.c:32 -#: ../libpurple/protocols/novell/novell.c:2843 -#: ../libpurple/protocols/oscar/oscar.c:3152 -#: ../libpurple/protocols/yahoo/yahoo.c:3175 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3484 -#: ../pidgin/gtkblist.c:3958 ../pidgin/gtkprefs.c:2076 msgid "Idle" msgstr "অলস" -#: ../finch/gntblist.c:1798 msgid "On Mobile" msgstr "মোবাইলে" -#: ../finch/gntblist.c:2105 ../pidgin/gtkdocklet.c:582 msgid "New..." msgstr "নতুন..." -#: ../finch/gntblist.c:2112 ../pidgin/gtkdocklet.c:583 msgid "Saved..." msgstr "সংরক্ষিত..." -#: ../finch/gntblist.c:2569 ../finch/gntplugin.c:352 ../finch/gntui.c:100 -#: ../pidgin/gtkplugin.c:719 msgid "Plugins" msgstr "প্লাগইন" -#: ../finch/gntblist.c:2723 ../finch/gntblist.c:2728 msgid "Block/Unblock" msgstr "ব্লক/ব্লক সরান" -#: ../finch/gntblist.c:2724 ../libpurple/protocols/gg/gg.c:1719 msgid "Block" msgstr "ব্লক" -#: ../finch/gntblist.c:2725 ../libpurple/protocols/gg/gg.c:1715 msgid "Unblock" msgstr "ব্লক সরান" -#: ../finch/gntblist.c:2730 msgid "" "Please enter the username or alias of the person you would like to Block/" "Unblock." @@ -700,77 +375,29 @@ #. Not multiline #. Not masked? #. No hints? -#: ../finch/gntblist.c:2733 ../finch/gntblist.c:2784 ../finch/gntblist.c:2920 -#: ../finch/gntcertmgr.c:89 ../finch/gntconn.c:137 ../finch/gntconv.c:595 -#: ../finch/gntnotify.c:81 ../finch/plugins/gnthistory.c:177 -#: ../libpurple/account.c:1118 ../libpurple/account.c:1450 -#: ../libpurple/protocols/gg/gg.c:470 ../libpurple/protocols/gg/gg.c:612 -#: ../libpurple/protocols/gg/gg.c:741 -#: ../libpurple/protocols/jabber/jabber.c:1971 -#: ../libpurple/protocols/jabber/xdata.c:400 -#: ../libpurple/protocols/msn/msn.c:319 ../libpurple/protocols/msn/msn.c:336 -#: ../libpurple/protocols/msn/msn.c:353 ../libpurple/protocols/msn/msn.c:370 -#: ../libpurple/protocols/msnp9/msn.c:302 -#: ../libpurple/protocols/msnp9/msn.c:319 -#: ../libpurple/protocols/msnp9/msn.c:336 -#: ../libpurple/protocols/msnp9/msn.c:353 -#: ../libpurple/protocols/myspace/user.c:832 -#: ../libpurple/protocols/myspace/user.c:895 -#: ../libpurple/protocols/oscar/oscar.c:6319 -#: ../libpurple/protocols/qq/buddy_opt.c:620 -#: ../libpurple/protocols/qq/group_opt.c:126 -#: ../libpurple/protocols/qq/qq_base.c:881 -#: ../libpurple/protocols/silc/buddy.c:454 -#: ../libpurple/protocols/silc/buddy.c:1193 -#: ../libpurple/protocols/silc/chat.c:448 -#: ../libpurple/protocols/silc/chat.c:485 -#: ../libpurple/protocols/silc/chat.c:752 -#: ../libpurple/protocols/silc/ops.c:1306 -#: ../libpurple/protocols/silc/ops.c:1832 -#: ../libpurple/protocols/silc/silc.c:1057 -#: ../libpurple/protocols/silc10/buddy.c:467 -#: ../libpurple/protocols/silc10/buddy.c:1191 -#: ../libpurple/protocols/silc10/chat.c:425 -#: ../libpurple/protocols/silc10/chat.c:464 -#: ../libpurple/protocols/silc10/chat.c:729 -#: ../libpurple/protocols/silc10/ops.c:1297 -#: ../libpurple/protocols/silc10/ops.c:1909 -#: ../libpurple/protocols/silc10/silc.c:760 -#: ../libpurple/protocols/yahoo/yahoo.c:999 -#: ../libpurple/protocols/yahoo/yahoo.c:3582 -#: ../libpurple/protocols/yahoo/yahoo.c:3593 ../pidgin/gtkcertmgr.c:195 -#: ../pidgin/gtkdialogs.c:737 ../pidgin/gtkdialogs.c:876 -#: ../pidgin/gtkdialogs.c:968 ../pidgin/gtkrequest.c:272 msgid "OK" msgstr "ঠিক আছে" -#: ../finch/gntblist.c:2779 ../pidgin/gtkdialogs.c:732 msgid "New Instant Message" msgstr "নতুন তাৎক্ষণিক বার্তা" -#: ../finch/gntblist.c:2781 ../pidgin/gtkdialogs.c:734 msgid "Please enter the username or alias of the person you would like to IM." msgstr "" "অনুগ্রহ করে আপনি যে ব্যাক্তিকে তাৎক্ষণিক বার্তা পাঠাতে চান তার ব্যবহারকারী-নাম বা " "ডাকনাম প্রবেশ করান।" -#: ../finch/gntblist.c:2842 msgid "Channel" msgstr "চ্যানেল" -#: ../finch/gntblist.c:2854 ../pidgin/gtkblist.c:1038 msgid "Join a Chat" msgstr "আড্ডায় যোগ দিন" -#: ../finch/gntblist.c:2856 msgid "Please enter the name of the chat you want to join." msgstr "অনুগ্রহ করে আপনি যে আড্ডায় যোগ দিতে চান তার নাম প্রবেশ করান।" -#: ../finch/gntblist.c:2858 ../finch/gntnotify.c:452 msgid "Join" msgstr "যোগ দিন" -#: ../finch/gntblist.c:2917 ../pidgin/gtkdialogs.c:965 msgid "" "Please enter the username or alias of the person whose log you would like to " "view." @@ -779,91 +406,67 @@ "করান।" #. Create the "Options" frame. -#: ../finch/gntblist.c:2971 ../finch/gntpounce.c:459 ../pidgin/gtkpounce.c:826 msgid "Options" msgstr "পছন্দসমূহ" -#: ../finch/gntblist.c:2977 msgid "Send IM..." msgstr "তাৎক্ষনিক বার্তা প্রেরণ..." -#: ../finch/gntblist.c:2982 msgid "Block/Unblock..." msgstr "ব্লক করুন/ব্লক সরান..." -#: ../finch/gntblist.c:2987 ../pidgin/gtkdocklet.c:711 msgid "Join Chat..." msgstr "আড্ডায় যোগ দিন..." -#: ../finch/gntblist.c:2992 ../finch/gntconv.c:657 msgid "View Log..." msgstr "লগ প্রদর্শন..." -#: ../finch/gntblist.c:2997 msgid "View All Logs" msgstr "সব লগ প্রদর্শন করুন" # tithi -#: ../finch/gntblist.c:3002 msgid "Show" msgstr "প্রদর্শন করুন" -#: ../finch/gntblist.c:3007 msgid "Empty groups" msgstr "ফাঁকা গ্রুপগুলো" -#: ../finch/gntblist.c:3014 msgid "Offline buddies" msgstr "অফলাইন বন্ধুরা" -#: ../finch/gntblist.c:3021 msgid "Sort" msgstr "সাজান" -#: ../finch/gntblist.c:3026 msgid "By Status" msgstr "অবস্থা অনুসারে" -#: ../finch/gntblist.c:3031 ../pidgin/gtkblist.c:4449 msgid "Alphabetically" msgstr "বর্ণানুক্রমিকভাবে" -#: ../finch/gntblist.c:3036 msgid "By Log Size" msgstr "লগের আকার অনুসারে" -#: ../finch/gntblist.c:3047 msgid "Buddy" msgstr "বন্ধু" -#: ../finch/gntblist.c:3052 ../libpurple/protocols/oscar/oscar.c:662 -#: ../libpurple/protocols/silc/silc.c:1003 -#: ../libpurple/protocols/silc/util.c:559 -#: ../libpurple/protocols/silc10/silc.c:704 -#: ../libpurple/protocols/silc10/util.c:553 msgid "Chat" msgstr "আড্ডা" -#: ../finch/gntblist.c:3062 ../finch/plugins/grouping.c:365 msgid "Grouping" msgstr "দলগতকরণ" -#: ../finch/gntcertmgr.c:85 ../pidgin/gtkcertmgr.c:188 msgid "Certificate Import" msgstr "প্রত্যয়নপত্র আমদানি করুন" # তিথি -#: ../finch/gntcertmgr.c:86 ../pidgin/gtkcertmgr.c:189 msgid "Specify a hostname" msgstr "হোস্টনাম উল্লেখ করুন।" # tithi -#: ../finch/gntcertmgr.c:87 ../pidgin/gtkcertmgr.c:190 msgid "Type the host name this certificate is for." msgstr "এই প্রত্যয়ণপত্রের হোস্ট নাম টাইপ করুন।" # tithi -#: ../finch/gntcertmgr.c:96 ../pidgin/gtkcertmgr.c:210 #, c-format msgid "" "File %s could not be imported.\n" @@ -873,21 +476,17 @@ "নিশ্চিত করুন যে ফাইলটি পঠনযোগ্য এবং PEM বিন্যাসের।\n" # tithi -#: ../finch/gntcertmgr.c:98 ../pidgin/gtkcertmgr.c:212 msgid "Certificate Import Error" msgstr "প্রত্যয়ণপত্র আমদানি করার ত্রুটি" # tithi -#: ../finch/gntcertmgr.c:99 ../pidgin/gtkcertmgr.c:213 msgid "X.509 certificate import failed" msgstr "X.৫০৯ প্রত্যয়ণপত্র আমদানি করতে ব্যর্থ" -#: ../finch/gntcertmgr.c:109 ../pidgin/gtkcertmgr.c:224 msgid "Select a PEM certificate" msgstr "একটি PEM প্রত্যয়ণপত্র নির্বাচন করুন" # tithi -#: ../finch/gntcertmgr.c:126 ../pidgin/gtkcertmgr.c:245 #, c-format msgid "" "Export to file %s failed.\n" @@ -897,27 +496,22 @@ "পরীক্ষা করুন যে আপনার উদ্দিষ্ট পথে লিখন অনুমতি আছে\n" # tithi -#: ../finch/gntcertmgr.c:128 ../pidgin/gtkcertmgr.c:247 msgid "Certificate Export Error" msgstr "প্রত্যয়ণপত্র রপ্তানি করার ত্রুটি" # tithi -#: ../finch/gntcertmgr.c:129 ../pidgin/gtkcertmgr.c:248 msgid "X.509 certificate export failed" msgstr "X.৫০৯ প্রত্যয়ণপত্র রপ্তানি করতে ব্যর্থ" # tithi -#: ../finch/gntcertmgr.c:158 ../pidgin/gtkcertmgr.c:298 msgid "PEM X.509 Certificate Export" msgstr "PEM X.৫০৯ প্রত্যয়ণপত্র রপ্তানি করুন" -#: ../finch/gntcertmgr.c:187 #, c-format msgid "Certificate for %s" msgstr "%s-এর প্রত্যয়ণপত্র" # tithi -#: ../finch/gntcertmgr.c:194 #, c-format msgid "" "Common name: %s\n" @@ -931,60 +525,41 @@ "%s" # tithi -#: ../finch/gntcertmgr.c:197 msgid "SSL Host Certificate" msgstr "SSL হোস্ট প্রত্যয়ণপত্র" # tithi -#: ../finch/gntcertmgr.c:232 ../pidgin/gtkcertmgr.c:371 #, c-format msgid "Really delete certificate for %s?" msgstr "%s এর জন্য প্রত্যায়নপত্র কি সত্যিই মুছে ফেলতে চান?" # tithi -#: ../finch/gntcertmgr.c:235 ../pidgin/gtkcertmgr.c:373 msgid "Confirm certificate delete" msgstr "প্রত্যায়নপত্র মুছে ফেলা নিশ্চিত করুন" # tithi -#: ../finch/gntcertmgr.c:292 ../pidgin/gtkcertmgr.c:613 msgid "Certificate Manager" msgstr "প্রত্যায়নপত্র ব্যবস্থাপক" #. Creating the user splits -#: ../finch/gntcertmgr.c:297 ../libpurple/protocols/bonjour/bonjour.c:705 -#: ../libpurple/protocols/silc/silc.c:1242 -#: ../libpurple/protocols/silc10/silc.c:943 ../pidgin/gtkcertmgr.c:446 msgid "Hostname" msgstr "হোস্ট-নাম" -#: ../finch/gntcertmgr.c:314 ../finch/gntnotify.c:446 ../pidgin/gtkconv.c:1721 -#: ../pidgin/gtkdebug.c:832 msgid "Info" msgstr "তথ্য" #. Close button -#: ../finch/gntcertmgr.c:323 ../finch/gntft.c:255 ../finch/gntnotify.c:194 -#: ../finch/gntplugin.c:220 ../finch/gntplugin.c:413 ../finch/gntpounce.c:750 -#: ../finch/gntroomlist.c:276 ../finch/gntstatus.c:216 -#: ../libpurple/protocols/msn/msn.c:475 ../libpurple/protocols/msnp9/msn.c:419 -#: ../libpurple/protocols/silc/util.c:385 -#: ../libpurple/protocols/silc10/util.c:377 ../pidgin/gtkaccount.c:2390 -#: ../pidgin/gtkrequest.c:275 msgid "Close" msgstr "বন্ধ" -#: ../finch/gntconn.c:126 #, c-format msgid "%s (%s)" msgstr "%1s (%2s)" -#: ../finch/gntconn.c:129 #, c-format msgid "%s disconnected." msgstr "%s বিচ্ছিন্ন।" -#: ../finch/gntconn.c:130 #, c-format msgid "" "%s\n" @@ -997,12 +572,10 @@ "যতক্ষন পর্যন্ত না আপনি অ্যাকাউন্টটি ত্রুটিমুক্ত এবং পুনরায় সক্রিয় না করছেন ততক্ষন পর্যন্ত " "ফিঞ্চ পুনঃ সংযোগ করার চেষ্টা করবে না।" -#: ../finch/gntconn.c:139 msgid "Re-enable Account" msgstr "একাউন্ট পুনঃ সক্রিয় করুন" # tithi -#: ../finch/gntconn.c:156 msgid "" "The account has disconnected and you are no longer in this chat. You will be " "automatically rejoined in the chat when the account reconnects." @@ -1010,45 +583,35 @@ "এই একাউন্টটি বিচ্ছিন্ন হয়েছে এবং আপনি আর আড্ডায় নেই। একাউন্টটি পুনরায় সংযোজিত হলে " "আপনি স্বয়ংক্রিয় ভাবে পুনরায় আড্ডায় যুক্ত হবেন।" -#: ../finch/gntconv.c:160 msgid "No such command." msgstr "এমন কোনো নির্দেশ নেই।" -#: ../finch/gntconv.c:164 ../pidgin/gtkconv.c:496 msgid "Syntax Error: You typed the wrong number of arguments to that command." msgstr "বাক্যরীতি ত্রুটি: আপনি ঐ নির্দেশে ভূল সংখ্যক যুক্তি টাইপ করেছেন।" -#: ../finch/gntconv.c:169 ../pidgin/gtkconv.c:502 msgid "Your command failed for an unknown reason." msgstr "একটি অজানা কারণে আপনার নির্দেশ ব্যর্থ হয়েছে।" -#: ../finch/gntconv.c:174 ../pidgin/gtkconv.c:509 msgid "That command only works in chats, not IMs." msgstr "ঐ নির্দেশ শুধুমাত্র আড্ডাতেই প্রযোজ্য, তাৎক্ষণিক বার্তায় নয়।" -#: ../finch/gntconv.c:177 ../pidgin/gtkconv.c:512 msgid "That command only works in IMs, not chats." msgstr "ঐ নির্দেশটি শুধুমাত্র তাৎক্ষণিক বার্তাতেই প্রযোজ্য, আড্ডার ক্ষেত্রে নয়।" -#: ../finch/gntconv.c:181 ../pidgin/gtkconv.c:517 msgid "That command doesn't work on this protocol." msgstr "ঐ নির্দেশটি এই প্রোটোকলে কাজ করে না।" -#: ../finch/gntconv.c:189 msgid "Message was not sent, because you are not signed on." msgstr "বার্তা পাঠানো হয়নি, কারণ আপনি স্বাক্ষরিত নন।" -#: ../finch/gntconv.c:269 #, c-format msgid "%s (%s -- %s)" msgstr "%1s (%2s -- %3s)" -#: ../finch/gntconv.c:292 #, c-format msgid "%s [%s]" msgstr "%1s [%2s]" -#: ../finch/gntconv.c:297 ../finch/gntconv.c:974 ../pidgin/gtkconv.c:3647 #, c-format msgid "" "\n" @@ -1057,33 +620,25 @@ "\n" "%s টাইপ করছে..." -#: ../finch/gntconv.c:316 msgid "You have left this chat." msgstr "আপনি এই আড্ডা ত্যাগ করেছেন।" -#: ../finch/gntconv.c:434 ../pidgin/gtkconv.c:1407 msgid "Logging started. Future messages in this conversation will be logged." msgstr "লগ করা শুরু হয়েছে। এই কথোপকথনের ভবিষৎ বার্তাসমূহ লগ করা হবে।" -#: ../finch/gntconv.c:438 ../pidgin/gtkconv.c:1415 msgid "" "Logging stopped. Future messages in this conversation will not be logged." msgstr "লগ করা বন্ধ করা হয়েছে। এই কথোপকথনের ভবিষৎ বার্তাসমূহ লগ করা হবে।" -#: ../finch/gntconv.c:524 msgid "Send To" msgstr "এখানে প্রেরণ করুন" -#: ../finch/gntconv.c:588 msgid "Invite message" msgstr "আমন্ত্রণ বার্তা" -#: ../finch/gntconv.c:590 ../finch/gntnotify.c:455 -#: ../libpurple/protocols/sametime/sametime.c:3530 msgid "Invite" msgstr "আমন্ত্রণ" -#: ../finch/gntconv.c:592 msgid "" "Please enter the name of the user you wish to invite,\n" "along with an optional invite message." @@ -1091,54 +646,42 @@ "একটি ঐচ্ছিক আমন্ত্রণ বার্তার সাথে,\n" "অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ করতে চান তার নামটি প্রবেশ করান।" -#: ../finch/gntconv.c:610 msgid "Conversation" msgstr "কথোপকথন" -#: ../finch/gntconv.c:616 msgid "Clear Scrollback" msgstr "স্ক্রলবেক পরিস্কার করুন" -#: ../finch/gntconv.c:620 ../finch/gntprefs.c:191 msgid "Show Timestamps" msgstr "সময়ছাপ প্রদর্শন করুন" -#: ../finch/gntconv.c:638 msgid "Add Buddy Pounce..." msgstr "বন্ধু পাউন্স যুক্ত করুন..." -#: ../finch/gntconv.c:652 msgid "Invite..." msgstr "আমন্ত্রণ..." -#: ../finch/gntconv.c:661 msgid "Enable Logging" msgstr "লগকরণ সক্রিয় করুন" -#: ../finch/gntconv.c:667 msgid "Enable Sounds" msgstr "শব্দ সক্রিয় করুন" -#: ../finch/gntconv.c:927 msgid " " msgstr "" -#: ../finch/gntconv.c:1067 #, c-format msgid "List of %d user:\n" msgid_plural "List of %d users:\n" msgstr[0] "%d ব্যবহারকারীর তালিকা:...\n" msgstr[1] "%d ব্যবহারকারীগণের তালিকা:\n" -#: ../finch/gntconv.c:1227 ../pidgin/gtkconv.c:341 msgid "Supported debug options are: version" msgstr "সমর্থিত ডিবাগ পছন্দসমূহ হল: সংস্করণ" -#: ../finch/gntconv.c:1263 ../pidgin/gtkconv.c:393 msgid "No such command (in this context)." msgstr "এমন কোনো নির্দেশ নেই (এই প্রসঙ্গে)।" -#: ../finch/gntconv.c:1266 ../pidgin/gtkconv.c:396 msgid "" "Use \"/help <command>\" for help on a specific command.\n" "The following commands are available in this context:\n" @@ -1148,7 +691,6 @@ "এই ক্ষেত্রে নিম্নোক্ত নির্দেশসমূহ সহজলভ্য:\n" # tithi -#: ../finch/gntconv.c:1311 #, c-format msgid "" "%s is not a valid message class. See '/help msgcolor' for valid message " @@ -1156,12 +698,10 @@ msgstr "%s বার্তার বৈধ শ্রেণী নয়। বার্তাসমূহের বৈধ শ্রেণীর '/সহায়ক বার্তা-রং' দেখুন।" # tithi -#: ../finch/gntconv.c:1318 ../finch/gntconv.c:1325 #, c-format msgid "%s is not a valid color. See '/help msgcolor' for valid colors." msgstr "%s বৈধ রং নয়। বৈধ রং এর জন্য '/সহায়ক বার্তা-রং' দেখুন।" -#: ../finch/gntconv.c:1382 ../pidgin/gtkconv.c:7877 msgid "" "say <message>: Send a message normally as if you weren't using a " "command." @@ -1169,55 +709,43 @@ "বলুন <বার্তা>: একটি বার্তা সাধারণত এমন ভাবে পাঠান যেন আপনি নির্দেশ ব্যবহার " "করেন নি।" -#: ../finch/gntconv.c:1385 ../pidgin/gtkconv.c:7880 msgid "me <action>: Send an IRC style action to a buddy or chat." msgstr "আমি <কার্য>: কোনো বন্ধুকে বা আড্ডায় আইআরসি শৈলীর কার্য পাঠান।" -#: ../finch/gntconv.c:1388 ../pidgin/gtkconv.c:7883 msgid "" "debug <option>: Send various debug information to the current " "conversation." msgstr "ডিবাগ <পছন্দ>: বর্তমান কথোপকথনে বিভিন্ন ডিবাগ তথ্য পাঠান।" -#: ../finch/gntconv.c:1391 ../pidgin/gtkconv.c:7886 msgid "clear: Clears the conversation scrollback." msgstr "পরিস্কার: কথোপকথনের স্ক্রলবেক পরিস্কার করে।" -#: ../finch/gntconv.c:1394 ../pidgin/gtkconv.c:7892 msgid "help <command>: Help on a specific command." msgstr "সহায়তা <নির্দেশ>: একটি সুনির্দিষ্ট নির্দেশের সহায়িকা।" # tithi -#: ../finch/gntconv.c:1397 msgid "users: Show the list of users in the chat." msgstr "ব্যবহারকারীগণ: আড্ডায় ব্যবহারকারীদের তালিকা দেখান।" -#: ../finch/gntconv.c:1402 msgid "plugins: Show the plugins window." msgstr "প্লাগইন: প্লাগইনের উইন্ডো দেখান।" -#: ../finch/gntconv.c:1405 msgid "buddylist: Show the buddylist." msgstr "বন্ধু-তালিকা: বন্ধু-তালিকা দেখান।" -#: ../finch/gntconv.c:1408 msgid "accounts: Show the accounts window." msgstr "অ্যাকাউন্ট: অ্যাকাউন্টের উইন্ডো দেখান।" -#: ../finch/gntconv.c:1411 msgid "debugwin: Show the debug window." msgstr "ত্রুটিমুক্তকরণ উইন্ডো: ডিবাগ উইন্ডো দেখান।" -#: ../finch/gntconv.c:1414 msgid "prefs: Show the preference window." msgstr "পছন্দ: পছন্দের উইন্ডো দেখান।" -#: ../finch/gntconv.c:1417 msgid "statuses: Show the savedstatuses window." msgstr "অবস্থাসমূহ: সংরক্ষিত-অবস্থাসমূহের উইন্ডো দেখান।" # fix me tithi -#: ../finch/gntconv.c:1423 msgid "" "msgcolor <class> <foreground> <background>: Set the color " "for different classes of messages in the conversation window.
<" @@ -1231,12 +759,9 @@ "প্রেক্ষাপট&10gt;: কালো, লাল, সবুজ, নীল, সাদা, ধূসর, গাঢ় ধূসর, ম্যাজেন্ডা, সায়ান, " "পূর্বনির্ধারিত

উদাহরণ:
বার্তা-রং পূর্বনির্ধারিতভাবে সায়ান প্রেরণ করে" -#: ../finch/gntdebug.c:269 ../pidgin/gtkconv.c:969 ../pidgin/gtkdebug.c:219 -#: ../pidgin/gtkft.c:545 msgid "Unable to open file." msgstr "ফাইল খুলতে সমর্থ নয়।" -#: ../finch/gntdebug.c:309 ../finch/gntui.c:98 ../pidgin/gtkdebug.c:689 msgid "Debug Window" msgstr "ডিবাগ উইন্ডো" @@ -1244,20 +769,16 @@ #. * it's necessary to make the width of the debug window resizable ... like I said, #. * it doesn't make sense. The bug is likely in the packing in gntbox.c. #. -#: ../finch/gntdebug.c:330 ../pidgin/gtkdebug.c:751 msgid "Clear" msgstr "মুছে ফেলো" -#: ../finch/gntdebug.c:341 msgid "Filter:" msgstr "পরিশ্রুতক:" -#: ../finch/gntdebug.c:347 ../pidgin/gtkdebug.c:760 msgid "Pause" msgstr "বিরতি" # fix me tithi -#: ../finch/gntft.c:120 ../pidgin/gtkft.c:229 #, c-format msgid "File Transfers - %d%% of %d file" msgid_plural "File Transfers - %d%% of %d files" @@ -1265,123 +786,80 @@ msgstr[1] "ফাইল স্থানান্তর করে - %d ফাইলসমূহের %d%%" #. Create the window. -#: ../finch/gntft.c:127 ../finch/gntft.c:214 ../finch/gntui.c:99 -#: ../pidgin/gtkft.c:236 ../pidgin/gtkft.c:763 msgid "File Transfers" msgstr "ফাইল স্থানান্তর করে" -#: ../finch/gntft.c:219 ../pidgin/gtkft.c:647 msgid "Progress" msgstr "অগ্রগতি" -#: ../finch/gntft.c:219 ../pidgin/gtkft.c:654 msgid "Filename" msgstr "ফাইল-নাম" -#: ../finch/gntft.c:219 ../pidgin/gtkft.c:661 msgid "Size" msgstr "আকার" -#: ../finch/gntft.c:219 msgid "Speed" msgstr "গতি" -#: ../finch/gntft.c:219 ../pidgin/gtkft.c:668 msgid "Remaining" msgstr "অবশিষ্ট" #. XXX: Use of ggp_str_to_uin() is an ugly hack! -#: ../finch/gntft.c:219 ../finch/gntstatus.c:547 ../finch/gntstatus.c:576 -#: ../libpurple/protocols/bonjour/bonjour.c:369 -#: ../libpurple/protocols/gg/gg.c:954 ../libpurple/protocols/gg/gg.c:1642 -#: ../libpurple/protocols/gg/gg.c:1650 -#: ../libpurple/protocols/jabber/buddy.c:822 -#: ../libpurple/protocols/jabber/buddy.c:826 -#: ../libpurple/protocols/jabber/buddy.c:991 -#: ../libpurple/protocols/jabber/jabber.c:1764 -#: ../libpurple/protocols/msn/msn.c:752 ../libpurple/protocols/msn/msn.c:762 -#: ../libpurple/protocols/msn/msn.c:767 ../libpurple/protocols/msn/msn.c:770 -#: ../libpurple/protocols/msnp9/msn.c:559 -#: ../libpurple/protocols/novell/novell.c:2853 -#: ../libpurple/protocols/oscar/oscar.c:921 -#: ../libpurple/protocols/oscar/oscar.c:2959 -#: ../libpurple/protocols/sametime/sametime.c:3320 -#: ../libpurple/protocols/sametime/sametime.c:4212 -#: ../libpurple/protocols/yahoo/yahoo.c:3326 ../pidgin/gtkblist.c:3528 -#: ../pidgin/gtkblist.c:3542 ../pidgin/gtkblist.c:3544 -#: ../pidgin/gtksavedstatuses.c:1032 ../pidgin/gtksavedstatuses.c:1183 msgid "Status" msgstr "অবস্থা" -#: ../finch/gntft.c:229 msgid "Close this window when all transfers finish" msgstr "সব স্থানান্তর শেষ হলে এই উইন্ডোটি বন্ধ করুন" -#: ../finch/gntft.c:236 msgid "Clear finished transfers" msgstr "সমাপ্তকৃত স্থানান্তরসমূহ পরিস্কার করুন" -#: ../finch/gntft.c:250 ../finch/gntroomlist.c:273 msgid "Stop" msgstr "থামুন" -#: ../finch/gntft.c:323 ../pidgin/gtkft.c:169 ../pidgin/gtkft.c:936 msgid "Waiting for transfer to begin" msgstr "স্থানান্তর শুরু করার জন্য অপেক্ষা করছে" -#: ../finch/gntft.c:390 ../pidgin/gtkft.c:163 ../pidgin/gtkft.c:1017 msgid "Canceled" msgstr "বাতিল করা হয়েছে" -#: ../finch/gntft.c:392 ../pidgin/gtkft.c:1019 msgid "Failed" msgstr "ব্যর্থ হয়েছে" -#: ../finch/gntft.c:438 ../pidgin/gtkft.c:134 #, c-format msgid "%.2f KiB/s" msgstr "%.2f কিলোবাইট/সেকেন্ডে" -#: ../finch/gntft.c:449 msgid "Sent" msgstr "প্রেরিত" -#: ../finch/gntft.c:449 msgid "Received" msgstr "গৃহীত" -#: ../finch/gntft.c:450 ../pidgin/gtkft.c:160 ../pidgin/gtkft.c:1082 msgid "Finished" msgstr "শেষ" -#: ../finch/gntft.c:452 #, c-format msgid "The file was saved as %s." msgstr "ফাইলটি %s হিসেবে সংরক্ষণ করা হয়েছিল।" -#: ../finch/gntft.c:459 msgid "Sending" msgstr "পাঠাচ্ছে" -#: ../finch/gntft.c:459 msgid "Receiving" msgstr "গ্রহণ করছে" -#: ../finch/gntlog.c:192 #, c-format msgid "Conversation in %s on %s" msgstr "%1s এ %2s এর উপর কথোপকথন" -#: ../finch/gntlog.c:195 #, c-format msgid "Conversation with %s on %s" msgstr "%2s এর উপর %1s-এর সঙ্গে কথোপকথন" -#: ../finch/gntlog.c:238 ../pidgin/gtklog.c:503 msgid "%B %Y" msgstr "%B %Y" -#: ../finch/gntlog.c:278 ../pidgin/gtklog.c:550 msgid "" "System events will only be logged if the \"Log all status changes to system " "log\" preference is enabled." @@ -1389,7 +867,6 @@ "\"সকল অবস্থার পরিবর্তনসমূহ সিস্টেমের লগে লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে " "শুধুমাত্র সিস্টেমের ইভেন্টগুলো লগ করা হবে।" -#: ../finch/gntlog.c:282 ../pidgin/gtklog.c:554 msgid "" "Instant messages will only be logged if the \"Log all instant messages\" " "preference is enabled." @@ -1397,114 +874,88 @@ "\"সব তাৎক্ষণিক বার্তা লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে শুধুমাত্র তাৎক্ষণিক " "বার্তাগুলো লগ করা হবে।" -#: ../finch/gntlog.c:285 ../pidgin/gtklog.c:557 msgid "" "Chats will only be logged if the \"Log all chats\" preference is enabled." msgstr "" "\"সব আড্ডা লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে শুধুমাত্র আড্ডাগুলো লগ করা হবে।" -#: ../finch/gntlog.c:291 ../pidgin/gtklog.c:566 msgid "No logs were found" msgstr "কোনো লগ খুঁজে পাওয়া যায়নি।" -#: ../finch/gntlog.c:338 ../pidgin/gtklog.c:646 msgid "Total log size:" msgstr "মোট লগ আকার:" # fix me tithi #. Search box ********* -#: ../finch/gntlog.c:346 msgid "Scroll/Search: " msgstr "স্ক্রল করুন/খুঁজুন:" -#: ../finch/gntlog.c:404 ../pidgin/gtklog.c:716 #, c-format msgid "Conversations in %s" msgstr "%s-এ কথোপকথন" -#: ../finch/gntlog.c:412 ../finch/gntlog.c:485 ../pidgin/gtklog.c:724 -#: ../pidgin/gtklog.c:799 #, c-format msgid "Conversations with %s" msgstr "%s-এর সঙ্গে কথোপকথন" -#: ../finch/gntlog.c:414 msgid "All Conversations" msgstr "সকল কথোপকথন" -#: ../finch/gntlog.c:510 ../pidgin/gtklog.c:824 msgid "System Log" msgstr "সিস্টেম লগ" -#: ../finch/gntnotify.c:177 msgid "Emails" msgstr "ই-মেইলসমূহ" -#: ../finch/gntnotify.c:183 ../finch/gntnotify.c:243 msgid "You have mail!" msgstr "আপনার মেইল আছে!" -#: ../finch/gntnotify.c:186 ../pidgin/gtknotify.c:539 msgid "Sender" msgstr "প্রেরক" -#: ../finch/gntnotify.c:186 ../pidgin/gtknotify.c:546 msgid "Subject" msgstr "বিষয়" -#: ../finch/gntnotify.c:214 #, c-format msgid "%s (%s) has %d new message." msgid_plural "%s (%s) has %d new messages." msgstr[0] "%1s (%2s) এর %3dটি নতুন বার্তা আছে।" msgstr[1] "%1s (%2s)-এর %3dগুলো নতুন বার্তা আছে।" -#: ../finch/gntnotify.c:243 ../pidgin/gtknotify.c:354 msgid "New Mail" msgstr "নতুন মেইল" -#: ../finch/gntnotify.c:349 ../pidgin/gtknotify.c:983 #, c-format msgid "Info for %s" msgstr "%s এর জন্য তথ্য" -#: ../finch/gntnotify.c:350 ../libpurple/protocols/toc/toc.c:476 -#: ../pidgin/gtknotify.c:984 msgid "Buddy Information" msgstr "বন্ধুর তথ্য" -#: ../finch/gntnotify.c:440 ../libpurple/protocols/qq/group_join.c:338 msgid "Continue" msgstr "অব্যাহত" -#: ../finch/gntnotify.c:449 ../pidgin/gtkconv.c:1671 msgid "IM" msgstr "তাৎক্ষণিক বার্তা" -#: ../finch/gntnotify.c:458 msgid "(none)" msgstr "(কোনটি না)" -#: ../finch/gntnotify.c:484 msgid "URI" msgstr "URI" # tithi -#: ../finch/gntplugin.c:84 ../finch/gntplugin.c:93 msgid "ERROR" msgstr "ত্রুটি" -#: ../finch/gntplugin.c:84 msgid "loading plugin failed" msgstr "প্লাগইন লোড করতে ব্যর্থ" # tithi -#: ../finch/gntplugin.c:93 msgid "unloading plugin failed" msgstr "প্লাগইন লোডহীন করতে ব্যর্থ।" # tithi -#: ../finch/gntplugin.c:139 #, c-format msgid "" "Name: %s\n" @@ -1522,46 +973,37 @@ "ফাইলের নাম: %6s\n" # tithi -#: ../finch/gntplugin.c:197 msgid "Plugin need to be loaded before you can configure it." msgstr "প্লাগইন বিন্যাস করার পূর্বে আপনার এটা লোড করা প্রয়োজন।" # tithi -#: ../finch/gntplugin.c:245 msgid "No configuration options for this plugin." msgstr "এই প্লাগইনের জন্য কোনো বিন্যাসন পছন্দ নেই।" -#: ../finch/gntplugin.c:266 msgid "Error loading plugin" msgstr "প্লাগইনটি লোডে ত্রুটি" # tithi -#: ../finch/gntplugin.c:267 msgid "The selected file is not a valid plugin." msgstr "নির্বাচিত ফাইলটি বৈধ প্লাগইন নয়।" # tithi -#: ../finch/gntplugin.c:268 msgid "" "Please open the debug window and try again to see the exact error message." msgstr "" "অনুগ্রহপূর্বক ত্রুটিমুক্তকরণ উইন্ডো খুলুন এবং সঠিক ত্রুটি বার্তাটি দেখতে পুনরায় চেষ্টা করুন।" -#: ../finch/gntplugin.c:331 msgid "Select plugin to install" msgstr "সংস্থাপনে জন্য প্লাগইন নির্বাচন করুন" # tithi -#: ../finch/gntplugin.c:357 msgid "You can (un)load plugins from the following list." msgstr "আপনি নিম্নোক্ত তালিকা হতে প্লাগইনগুলোকে লোড(মুক্ত) করতে পারেন।" # tithi -#: ../finch/gntplugin.c:408 msgid "Install Plugin..." msgstr "প্লাগইন সংস্থাপন করুন..." -#: ../finch/gntplugin.c:418 msgid "Configure Plugin" msgstr "প্লাগইন পছন্দসই বিন্যাস করুন" @@ -1570,397 +1012,296 @@ #. (that should have been "effect," right?) #. Back to instant-apply! I win! BU-HAHAHA! #. Create the window -#: ../finch/gntplugin.c:524 ../finch/gntplugin.c:531 ../finch/gntprefs.c:264 -#: ../finch/gntui.c:103 ../pidgin/gtkprefs.c:2200 msgid "Preferences" msgstr "প্রাধিকারসমূহ" -#: ../finch/gntpounce.c:193 ../pidgin/gtkpounce.c:270 msgid "Please enter a buddy to pounce." msgstr "অনুগ্রহ করে পাউন্স করার জন্য একজন বন্ধু প্রবেশ করান।" -#: ../finch/gntpounce.c:338 ../pidgin/gtkpounce.c:538 msgid "New Buddy Pounce" msgstr "নতুন বন্ধু পাউন্স করুন" -#: ../finch/gntpounce.c:338 ../pidgin/gtkpounce.c:538 msgid "Edit Buddy Pounce" msgstr "বন্ধু পাউন্স সম্পাদন করুন" -#: ../finch/gntpounce.c:343 msgid "Pounce Who" msgstr "কাকে পাউন্স" #. Account: -#: ../finch/gntpounce.c:346 ../finch/gntstatus.c:456 msgid "Account:" msgstr "একাউন্ট:" -#: ../finch/gntpounce.c:368 msgid "Buddy name:" msgstr "বন্ধুর নাম:" #. Create the "Pounce When Buddy..." frame. -#: ../finch/gntpounce.c:386 ../pidgin/gtkpounce.c:606 msgid "Pounce When Buddy..." msgstr "পাউন্স করুন যখন বন্ধু..." -#: ../finch/gntpounce.c:388 msgid "Signs on" msgstr "সাইন অন" -#: ../finch/gntpounce.c:389 msgid "Signs off" msgstr "সাইন অফ" -#: ../finch/gntpounce.c:390 msgid "Goes away" msgstr "অনুপস্থিত" -#: ../finch/gntpounce.c:391 msgid "Returns from away" msgstr "দূর হতে ফিরে আসে" -#: ../finch/gntpounce.c:392 msgid "Becomes idle" msgstr "অলস হয়ে যায়" -#: ../finch/gntpounce.c:393 msgid "Is no longer idle" msgstr "আর অলস থাকবে না" -#: ../finch/gntpounce.c:394 msgid "Starts typing" msgstr "টাইপ শুরু করছে" -#: ../finch/gntpounce.c:395 msgid "Pauses while typing" msgstr "টাইপ করার সময় বিরতি দিন" -#: ../finch/gntpounce.c:396 msgid "Stops typing" msgstr "টাইপ বন্ধ করে" -#: ../finch/gntpounce.c:397 msgid "Sends a message" msgstr "বার্তা পাঠায়" #. Create the "Action" frame. -#: ../finch/gntpounce.c:426 ../pidgin/gtkpounce.c:667 msgid "Action" msgstr "কার্য" -#: ../finch/gntpounce.c:428 msgid "Open an IM window" msgstr "তাৎক্ষনিক বার্তার উইন্ডো খুলুন" -#: ../finch/gntpounce.c:429 msgid "Pop up a notification" msgstr "একটি ঘোষণা পপআপ করুন" -#: ../finch/gntpounce.c:430 msgid "Send a message" msgstr "একটি বার্তা পাঠান" -#: ../finch/gntpounce.c:431 msgid "Execute a command" msgstr "একটি নির্দেশ কার্যকর করুন" -#: ../finch/gntpounce.c:432 msgid "Play a sound" msgstr "শব্দ বাজান" -#: ../finch/gntpounce.c:460 msgid "Pounce only when my status is not Available" msgstr "আমার অবস্থা সহজলভ্য না থাকলে শুধুমাত্র পাউন্স করুন" # tithi -#: ../finch/gntpounce.c:462 ../pidgin/gtkpounce.c:1319 msgid "Recurring" msgstr "পুনরাবৃত্তি" -#: ../finch/gntpounce.c:630 msgid "Cannot create pounce" msgstr "পাউন্স তৈরী করতে পারে না" -#: ../finch/gntpounce.c:631 msgid "You do not have any accounts." msgstr "আপনার কোনো একাউন্ট নেই।" # tithi -#: ../finch/gntpounce.c:632 msgid "You must create an account first before you can create a pounce." msgstr "আপনি একটি পাউন্স তৈরি করার পূর্বে আপনাকে অবশ্যই একটি একাউন্ট তৈরি করতে হবে।" -#: ../finch/gntpounce.c:674 ../pidgin/gtkpounce.c:1134 #, c-format msgid "Are you sure you want to delete the pounce on %s for %s?" msgstr "আপনি কি নিশ্চিত আপনি %2s এর জন্য %1s এর পাউন্স মুছে ফেলতে চান?" -#: ../finch/gntpounce.c:708 ../finch/gntui.c:96 ../pidgin/gtkpounce.c:1362 msgid "Buddy Pounces" msgstr "বন্ধু পাউন্স করে" -#: ../finch/gntpounce.c:817 ../pidgin/gtkpounce.c:1461 #, c-format msgid "%s has started typing to you (%s)" msgstr "%1s আপনার কাছে টাইপ করা শুরু করেছে (%2s)" -#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1463 #, c-format msgid "%s has paused while typing to you (%s)" msgstr "%1s আপনার কাছে টাইপ করার সময় বিরতি নিয়েছে (%2s)" -#: ../finch/gntpounce.c:819 ../pidgin/gtkpounce.c:1465 #, c-format msgid "%s has signed on (%s)" msgstr "%1s সাইন অন করেছে (%2s)" -#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1467 #, c-format msgid "%s has returned from being idle (%s)" msgstr "%1s অলস অবস্থা থেকে ফিরে এসেছে (%2s)" -#: ../finch/gntpounce.c:821 ../pidgin/gtkpounce.c:1469 #, c-format msgid "%s has returned from being away (%s)" msgstr "%1s দূর হতে ফিরে এসেছে (%2s)" -#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1471 #, c-format msgid "%s has stopped typing to you (%s)" msgstr "%1s আপনার কাছে টাইপ করা বন্ধ করে দিয়েছে (%2s)" -#: ../finch/gntpounce.c:823 ../pidgin/gtkpounce.c:1473 #, c-format msgid "%s has signed off (%s)" msgstr "%1s অখলাইনে আছে (%2s)" -#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1475 #, c-format msgid "%s has become idle (%s)" msgstr "%1s অলস আছে (%2s)" -#: ../finch/gntpounce.c:825 ../pidgin/gtkpounce.c:1477 #, c-format msgid "%s has gone away. (%s)" msgstr "%1s এখন অনুপস্থিত। (%2s)" -#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1479 #, c-format msgid "%s has sent you a message. (%s)" msgstr "%1s আপনাকে একটি বার্তা পাঠিয়েছে। (%2s)" -#: ../finch/gntpounce.c:845 ../pidgin/gtkpounce.c:1480 +#, c-format msgid "Unknown pounce event. Please report this!" msgstr "অজানা পাউন্স ইভেন্ট। অনুগ্রহ করে এটি রিপোর্ট করুন!" # tithi -#: ../finch/gntprefs.c:92 msgid "Based on keyboard use" msgstr "কী-বোর্ডের ব্যবহারের উপর নির্ভর করে" -#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:2081 msgid "From last sent message" msgstr "সর্বশেষ পাঠানো বার্তা থেকে" -#: ../finch/gntprefs.c:96 ../pidgin/gtkprefs.c:945 ../pidgin/gtkprefs.c:953 -#: ../pidgin/gtkprefs.c:2080 ../pidgin/gtkprefs.c:2094 -#: ../pidgin/plugins/win32/winprefs/winprefs.c:333 msgid "Never" msgstr "কখনো নয়" -#: ../finch/gntprefs.c:184 msgid "Show Idle Time" msgstr "অলস সময় প্রদর্শন করুন" -#: ../finch/gntprefs.c:185 msgid "Show Offline Buddies" msgstr "অফলাইন বন্ধুগণদের প্রদর্শন করুন" -#: ../finch/gntprefs.c:192 msgid "Notify buddies when you are typing" msgstr "আপনার টাইপ করার সময় বন্ধুদের অবগত করুন" -#: ../finch/gntprefs.c:198 ../finch/plugins/gnthistory.c:153 msgid "Log format" msgstr "লগ বিন্যাস" -#: ../finch/gntprefs.c:199 ../finch/plugins/gnthistory.c:143 msgid "Log IMs" msgstr "তাৎক্ষণিক বার্তাগুলো লগ করুন" -#: ../finch/gntprefs.c:200 ../finch/plugins/gnthistory.c:144 msgid "Log chats" msgstr "আড্ডাসমূহ লগ করুন" -#: ../finch/gntprefs.c:201 msgid "Log status change events" msgstr "লগ অবস্থা ইভেন্ট পরিবর্তন করে" -#: ../finch/gntprefs.c:207 msgid "Report Idle time" msgstr "অলস সময় রিপোর্ট করুন" -#: ../finch/gntprefs.c:208 msgid "Change status when idle" msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন" -#: ../finch/gntprefs.c:209 msgid "Minutes before changing status" msgstr "অবস্থা পরিবর্তন করার পূর্বের মিনিট" -#: ../finch/gntprefs.c:210 msgid "Change status to" msgstr "অবস্থা পরিবর্তন করুন" -#. Conversations -#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:1043 ../pidgin/gtkprefs.c:2167 -#: ../pidgin/plugins/win32/winprefs/winprefs.c:340 msgid "Conversations" msgstr "কথোপকথন" -#: ../finch/gntprefs.c:260 ../finch/plugins/gnthistory.c:151 -#: ../pidgin/gtkprefs.c:1614 ../pidgin/gtkprefs.c:2178 msgid "Logging" msgstr "লগ করছে" -#: ../finch/gntrequest.c:381 msgid "You must fill all the required fields." msgstr "আপনাকে অবশ্যই প্রয়োজনীয় ক্ষেত্রসমূহ পূরণ করতে হবে।" -#: ../finch/gntrequest.c:382 msgid "The required fields are underlined." msgstr "প্রয়োজনীয় ক্ষেত্রসমূহকে নিম্নরেখাঙ্কিত করা হয়েছে।" # tithi -#: ../finch/gntrequest.c:640 msgid "Not implemented yet." msgstr "এখনও বাস্তবায়িত হয়নি।" -#: ../finch/gntrequest.c:745 ../pidgin/gtkrequest.c:1552 -#: ../pidgin/gtkrequest.c:1598 msgid "Save File..." msgstr "ফাইল সংরক্ষণ করুন..." -#: ../finch/gntrequest.c:745 ../pidgin/gtkrequest.c:1553 -#: ../pidgin/gtkrequest.c:1599 msgid "Open File..." msgstr "ফাইল খুলুন..." -#: ../finch/gntrequest.c:762 msgid "Choose Location..." msgstr "স্থান পছন্দ করুন..." # tithi -#: ../finch/gntroomlist.c:208 msgid "Hit 'Enter' to find more rooms of this category." msgstr "এই শ্রেণীবিভাগের আরও কিছু কক্ষ খুঁজে পেতে 'Enter' চাপুন।" -#: ../finch/gntroomlist.c:274 msgid "Get" msgstr "গ্রহণ করুন" #. Create the window. -#: ../finch/gntroomlist.c:286 ../finch/gntui.c:101 ../pidgin/gtkroomlist.c:523 msgid "Room List" msgstr "কক্ষের তালিকা" -#: ../finch/gntsound.c:96 ../pidgin/gtksound.c:62 msgid "Buddy logs in" msgstr "বন্ধু লগইন করে" -#: ../finch/gntsound.c:97 ../pidgin/gtksound.c:63 msgid "Buddy logs out" msgstr "বন্ধু লগআউট করে" -#: ../finch/gntsound.c:98 ../pidgin/gtksound.c:64 msgid "Message received" msgstr "বার্তা গ্রহণ করা হয়েছে" -#: ../finch/gntsound.c:99 ../pidgin/gtksound.c:65 msgid "Message received begins conversation" msgstr "বার্তা গ্রহন করায় কথাবার্তা শুরু হয়েছে" -#: ../finch/gntsound.c:100 ../pidgin/gtksound.c:66 msgid "Message sent" msgstr "বার্তা পাঠানো হয়েছে" -#: ../finch/gntsound.c:101 ../pidgin/gtksound.c:67 msgid "Person enters chat" msgstr "ব্যক্তি আড্ডায় প্রবেশ করেছে" -#: ../finch/gntsound.c:102 ../pidgin/gtksound.c:68 msgid "Person leaves chat" msgstr "ব্যক্তি আড্ডা ত্যাগ করেছে" -#: ../finch/gntsound.c:103 ../pidgin/gtksound.c:69 msgid "You talk in chat" msgstr "আপনি আড্ডায় কথা বলছেন" -#: ../finch/gntsound.c:104 ../pidgin/gtksound.c:70 msgid "Others talk in chat" msgstr "অন্যান্যরা আড্ডায় কথা বলছে" -#: ../finch/gntsound.c:106 ../pidgin/gtksound.c:73 msgid "Someone says your username in chat" msgstr "কেউ একজন আড্ডায় আপনার ব্যবহারকারীর নাম বলছে" # tithi -#: ../finch/gntsound.c:367 ../pidgin/gtksound.c:309 msgid "GStreamer Failure" msgstr "GStreamer ব্যর্থতা" -#: ../finch/gntsound.c:368 ../pidgin/gtksound.c:310 msgid "GStreamer failed to initialize." msgstr "GStreamer আরম্ভ হতে ব্যর্থ।" # tithi -#: ../finch/gntsound.c:722 ../finch/gntsound.c:808 ../pidgin/gtkpounce.c:178 -#: ../pidgin/gtkpounce.c:189 ../pidgin/gtkpounce.c:321 -#: ../pidgin/gtkpounce.c:691 ../pidgin/gtkpounce.c:953 -#: ../pidgin/gtkprefs.c:1738 ../pidgin/gtkprefs.c:1827 -#: ../pidgin/gtkprefs.c:2023 msgid "(default)" msgstr "(পূর্বনির্ধারিত)" -#: ../finch/gntsound.c:735 msgid "Select Sound File ..." msgstr "সাউন্ড ফাইল নির্বাচন করুন..." -#: ../finch/gntsound.c:910 msgid "Sound Preferences" msgstr "সাউন্ডের অগ্রাধিকারসমুহ" -#: ../finch/gntsound.c:921 msgid "Profiles" msgstr "ব্যাক্তিগত বিবরণীসমূহ" -#: ../finch/gntsound.c:960 ../pidgin/gtkprefs.c:1884 msgid "Automatic" msgstr "স্বয়ংক্রিয়" -#: ../finch/gntsound.c:963 msgid "Console Beep" msgstr "কনসোল বীপ করছে" -#: ../finch/gntsound.c:964 ../pidgin/gtkprefs.c:1888 msgid "Command" msgstr "নির্দেশ" -#: ../finch/gntsound.c:965 msgid "No Sound" msgstr "কোনো শব্দ নাই" -#: ../finch/gntsound.c:967 ../pidgin/gtkprefs.c:1879 msgid "Sound Method" msgstr "শব্দের প্রক্রিয়া" -#: ../finch/gntsound.c:972 msgid "Method: " msgstr "প্রক্রিয়া:" -#: ../finch/gntsound.c:979 #, c-format msgid "" "Sound Command\n" @@ -1970,82 +1311,56 @@ "(ফাইলের নামের জন্য %s)" #. Sound options -#: ../finch/gntsound.c:987 ../pidgin/gtkprefs.c:1910 msgid "Sound Options" msgstr "শব্দের পছন্দসমূহ" -#: ../finch/gntsound.c:988 msgid "Sounds when conversation has focus" msgstr "কথোপকথন ফোকাস করলে শব্দ করে" -#: ../finch/gntsound.c:996 ../pidgin/gtkprefs.c:943 ../pidgin/gtkprefs.c:955 -#: ../pidgin/gtkprefs.c:1921 ../pidgin/plugins/timestamp_format.c:42 -#: ../pidgin/plugins/timestamp_format.c:51 -#: ../pidgin/plugins/win32/winprefs/winprefs.c:334 msgid "Always" msgstr "সর্বদা" -#: ../finch/gntsound.c:997 ../pidgin/gtkprefs.c:1919 msgid "Only when available" msgstr "শুধুমাত্র যখন সহজলভ্য" -#: ../finch/gntsound.c:998 ../pidgin/gtkprefs.c:1920 msgid "Only when not available" msgstr "শুধুমাত্র যখন সহজলভ্য নয়" -#: ../finch/gntsound.c:1005 msgid "Volume(0-100):" msgstr "ভলিউম(০-১০০):" #. Sound events -#: ../finch/gntsound.c:1024 ../pidgin/gtkprefs.c:1949 msgid "Sound Events" msgstr "শব্দ ইভেন্টসমূহ" -#: ../finch/gntsound.c:1026 ../pidgin/gtkprefs.c:2008 msgid "Event" msgstr "ইভেন্ট" -#: ../finch/gntsound.c:1026 msgid "File" msgstr "ফাইল" -#: ../finch/gntsound.c:1045 msgid "Test" msgstr "পরীক্ষা" -#: ../finch/gntsound.c:1048 ../pidgin/gtkpounce.c:695 msgid "Reset" msgstr "পুনঃ বিন্যাস করুন" -#: ../finch/gntsound.c:1051 msgid "Choose..." msgstr "পছন্দ করুন..." -#: ../finch/gntstatus.c:138 #, c-format msgid "Are you sure you want to delete \"%s\"" msgstr "আপনি কি নিশ্চিত আপনি \"%s\" মুছে ফেলতে চান" -#: ../finch/gntstatus.c:141 msgid "Delete Status" msgstr "অবস্থা মুছুন" -#: ../finch/gntstatus.c:176 ../pidgin/gtksavedstatuses.c:631 msgid "Saved Statuses" msgstr "সংরক্ষিত অবস্থাসমূহ" -#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:539 -#: ../libpurple/protocols/jabber/buddy.c:326 -#: ../libpurple/protocols/jabber/buddy.c:1375 -#: ../libpurple/protocols/msn/msn.c:871 -#: ../libpurple/protocols/myspace/myspace.c:507 -#: ../libpurple/protocols/novell/novell.c:1493 -#: ../libpurple/protocols/qq/group_info.c:141 ../pidgin/gtksavedstatuses.c:530 msgid "Title" msgstr "শিরোনাম" -#: ../finch/gntstatus.c:183 ../pidgin/gtksavedstatuses.c:545 msgid "Type" msgstr "ধরন" @@ -2057,136 +1372,76 @@ #. user_settable #. not independent #. Attributes - each status can have a message. -#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:564 ../finch/gntstatus.c:576 -#: ../libpurple/protocols/bonjour/bonjour.c:281 -#: ../libpurple/protocols/bonjour/bonjour.c:288 -#: ../libpurple/protocols/bonjour/bonjour.c:371 -#: ../libpurple/protocols/gg/gg.c:992 ../libpurple/protocols/gg/gg.c:1645 -#: ../libpurple/protocols/gg/gg.c:1661 ../libpurple/protocols/gg/gg.c:1671 -#: ../libpurple/protocols/gg/gg.c:1677 ../libpurple/protocols/gg/gg.c:1686 -#: ../libpurple/protocols/gg/gg.c:1691 ../libpurple/protocols/irc/irc.c:243 -#: ../libpurple/protocols/jabber/jabber.c:1796 -#: ../libpurple/protocols/jabber/jabber.c:1810 -#: ../libpurple/protocols/jabber/jabber.c:1824 -#: ../libpurple/protocols/jabber/jabber.c:1838 -#: ../libpurple/protocols/jabber/jabber.c:1852 -#: ../libpurple/protocols/jabber/jabber.c:1868 -#: ../libpurple/protocols/msn/msn.c:823 ../libpurple/protocols/msn/msn.c:829 -#: ../libpurple/protocols/msn/msn.c:835 ../libpurple/protocols/msn/msn.c:841 -#: ../libpurple/protocols/msn/msn.c:846 ../libpurple/protocols/msn/msn.c:851 -#: ../libpurple/protocols/myspace/myspace.c:484 -#: ../libpurple/protocols/novell/novell.c:2856 -#: ../libpurple/protocols/novell/novell.c:2959 -#: ../libpurple/protocols/novell/novell.c:2965 -#: ../libpurple/protocols/novell/novell.c:2971 -#: ../libpurple/protocols/oscar/oscar.c:5993 -#: ../libpurple/protocols/oscar/oscar.c:6007 -#: ../libpurple/protocols/oscar/oscar.c:6023 -#: ../libpurple/protocols/oscar/oscar.c:6030 -#: ../libpurple/protocols/oscar/oscar.c:6037 -#: ../libpurple/protocols/sametime/sametime.c:3343 -#: ../libpurple/protocols/sametime/sametime.c:3349 -#: ../libpurple/protocols/sametime/sametime.c:3355 -#: ../libpurple/protocols/sametime/sametime.c:3434 -#: ../libpurple/protocols/silc/buddy.c:1566 -#: ../libpurple/protocols/silc10/buddy.c:1566 -#: ../libpurple/protocols/simple/simple.c:247 -#: ../libpurple/protocols/yahoo/yahoo.c:3854 -#: ../libpurple/protocols/yahoo/yahoo.c:3860 -#: ../libpurple/protocols/zephyr/zephyr.c:2358 -#: ../pidgin/gtksavedstatuses.c:560 ../pidgin/gtksavedstatuses.c:1047 msgid "Message" msgstr "বার্তা" #. Use -#: ../finch/gntstatus.c:194 ../finch/gntstatus.c:593 msgid "Use" msgstr "ব্যবহার করুন" -#: ../finch/gntstatus.c:301 msgid "Invalid title" msgstr "অবৈধ শিরোনাম" # tithi -#: ../finch/gntstatus.c:302 msgid "Please enter a non-empty title for the status." msgstr "অনুগ্রহ করে অবস্থার জন্য খালি নয় এমন শিরোনাম প্রবেশ করান।" -#: ../finch/gntstatus.c:310 msgid "Duplicate title" msgstr "অনুরুপ শিরোনাম" -#: ../finch/gntstatus.c:311 msgid "Please enter a different title for the status." msgstr "অনুগ্রহ করে অবস্থাটির জন্য একটি ভিন্ন শিরোনাম প্রবেশ করান।" -#: ../finch/gntstatus.c:452 msgid "Substatus" msgstr "উপঅবস্থা" -#: ../finch/gntstatus.c:464 ../pidgin/gtkft.c:701 msgid "Status:" msgstr "অবস্থা:" -#: ../finch/gntstatus.c:479 msgid "Message:" msgstr "বার্তা:" -#: ../finch/gntstatus.c:528 msgid "Edit Status" msgstr "অবস্থা সম্পাদন করুন" -#: ../finch/gntstatus.c:570 msgid "Use different status for following accounts" msgstr "নিম্নোক্ত একাউন্টসমুহের জন্য ভিন্ন অবস্থা ব্যবহার করুন" #. Save & Use -#: ../finch/gntstatus.c:604 msgid "Save & Use" msgstr "সংরক্ষণ এবং ব্যবহার করুন" # tithi -#: ../finch/gntui.c:97 msgid "Certificates" msgstr "প্রত্যয়ন পত্র" -#: ../finch/gntui.c:102 ../pidgin/gtkprefs.c:2169 msgid "Sounds" msgstr "শব্দসমূহ" -#: ../finch/gntui.c:104 msgid "Statuses" msgstr "অবস্থাসমূহ" -#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121 -#: ../finch/plugins/gntclipboard.c:128 msgid "Error loading the plugin." msgstr "প্লাগইন লোড করার ত্রুটি।" -#: ../finch/plugins/gntclipboard.c:116 msgid "Couldn't find X display" msgstr "X প্রদর্শন খুঁজে পাবে না" -#: ../finch/plugins/gntclipboard.c:122 msgid "Couldn't find window" msgstr "উইন্ডো খুঁজে পাবে না" # tithi -#: ../finch/plugins/gntclipboard.c:129 msgid "This plugin cannot be loaded because it was not built with X11 support." msgstr "এই প্লাগইনটি লোড করা যায় না কারণ এটি X11 সমর্থনে তৈরী হয়নি।" # tithi -#: ../finch/plugins/gntclipboard.c:158 msgid "GntClipboard" msgstr "GntClipboard" -#: ../finch/plugins/gntclipboard.c:160 msgid "Clipboard plugin" msgstr "ক্লিপবোর্ড প্লাগইন" # tithi -#: ../finch/plugins/gntclipboard.c:161 msgid "" "When the gnt clipboard contents change, the contents are made available to " "X, if possible." @@ -2194,83 +1449,66 @@ "যদি সম্ভব হয় , যখন gnt ক্লিপবোর্ডের বিষয়বস্তুসমূহ পরিবর্তন হয়, তখন X এ বিষয়বস্তুসমূহ " "সহজলভ্য করুন।" -#: ../finch/plugins/gntgf.c:231 #, c-format msgid "%s just signed on" msgstr "%s অনলাইনে" -#: ../finch/plugins/gntgf.c:238 #, c-format msgid "%s just signed off" msgstr "%s অফলাইনে" -#: ../finch/plugins/gntgf.c:246 #, c-format msgid "%s sent you a message" msgstr "%s আপনাকে একটি বার্তা পাঠিয়েছে" # tithi -#: ../finch/plugins/gntgf.c:265 #, c-format msgid "%s said your nick in %s" msgstr "%1s আপনার ডাক নাম %2s এ বলছে" -#: ../finch/plugins/gntgf.c:267 #, c-format msgid "%s sent a message in %s" msgstr "%1s %2s এ একটি বার্তা পাঠিয়েছে" -#: ../finch/plugins/gntgf.c:305 msgid "Buddy signs on/off" msgstr "বন্ধু সাইন চালু/বন্ধ" -#: ../finch/plugins/gntgf.c:306 msgid "You receive an IM" msgstr "আপনার একটি তাৎক্ষনিক বার্তা গ্রহণ করেছেন" -#: ../finch/plugins/gntgf.c:307 msgid "Someone speaks in a chat" msgstr "কেউ একজন আড্ডায় কথা বলছে" -#: ../finch/plugins/gntgf.c:308 msgid "Someone says your name in a chat" msgstr "কেউ একজন আড্ডায় আপনার নাম ধরে ডাকছে" # tithi -#: ../finch/plugins/gntgf.c:336 msgid "Notify with a toaster when" msgstr "টোস্টার দ্বারা অবগতি করুন যখন" # tithi -#: ../finch/plugins/gntgf.c:351 msgid "Beep too!" msgstr "শব্দও করবে!" # tithi -#: ../finch/plugins/gntgf.c:357 msgid "Set URGENT for the terminal window." msgstr "টারমিনাল উইন্ডোর জন্য জরুরী নির্ধারণ করুন।" # tithi -#: ../finch/plugins/gntgf.c:377 msgid "GntGf" msgstr "GntGf" # tithi -#: ../finch/plugins/gntgf.c:379 ../finch/plugins/gntgf.c:380 msgid "Toaster plugin" msgstr "টোস্টার প্লাগইন" -#: ../finch/plugins/gnthistory.c:114 ../pidgin/plugins/history.c:133 #, c-format msgid "Conversation with %s on %s:
" msgstr "%2s এ %2s এর সাথে কথোপকথন:
" -#: ../finch/plugins/gnthistory.c:172 ../pidgin/plugins/history.c:160 msgid "History Plugin Requires Logging" msgstr "ইতিহাস প্লাগইনের লগ করা প্রয়োজন" -#: ../finch/plugins/gnthistory.c:173 ../pidgin/plugins/history.c:161 msgid "" "Logging can be enabled from Tools -> Preferences -> Logging.\n" "\n" @@ -2282,15 +1520,12 @@ "তাৎক্ষণিক বার্তার জন্য কার্যবিবরণীসমূহ সক্রিয় করছে এবং/বা একই ধরনের কথাবার্তার জন্য " "আড্ডা ইতিহাস সক্রিয় করবে।" -#: ../finch/plugins/gnthistory.c:217 msgid "GntHistory" msgstr "GntHistory" -#: ../finch/plugins/gnthistory.c:219 ../pidgin/plugins/history.c:204 msgid "Shows recently logged conversations in new conversations." msgstr "নতুন কথোপকথনসমূহে সাম্প্রতিক লগকৃত কথোপকথনসমূহ প্রদর্শন করে।" -#: ../finch/plugins/gnthistory.c:220 ../pidgin/plugins/history.c:205 msgid "" "When a new conversation is opened this plugin will insert the last " "conversation into the current conversation." @@ -2298,189 +1533,128 @@ "যখন একটি নতুন কথোপকথন খোলা হয় তখন এই প্লাগ-ইনটি নতুন কথোপকথনে সর্বশেষ কথোপকথন " "প্রবেশ করবে।" -#: ../finch/plugins/grouping.c:44 ../libpurple/protocols/oscar/oscar.c:756 -#: ../libpurple/protocols/qq/qq.c:260 msgid "Online" msgstr "অনলাইন" -#: ../finch/plugins/grouping.c:46 ../finch/plugins/grouping.c:143 -#: ../libpurple/protocols/gg/gg.c:927 -#: ../libpurple/protocols/jabber/buddy.c:2060 -#: ../libpurple/protocols/novell/novell.c:2846 -#: ../libpurple/protocols/oscar/oscar.c:915 -#: ../libpurple/protocols/oscar/oscar.c:5825 -#: ../libpurple/protocols/qq/qq.c:257 ../libpurple/protocols/qq/qq.c:264 -#: ../libpurple/protocols/qq/qq.c:425 -#: ../libpurple/protocols/yahoo/yahoo.c:3177 ../libpurple/status.c:159 -#: ../pidgin/gtkblist.c:3528 ../pidgin/gtkblist.c:3934 -#: ../pidgin/gtkdocklet.c:561 ../pidgin/gtkstatusbox.c:1099 msgid "Offline" msgstr "অফলাইন " -#: ../finch/plugins/grouping.c:115 ../pidgin/gtkblist.c:3564 msgid "Online Buddies" msgstr "অফলাইন বন্ধু" -#: ../finch/plugins/grouping.c:115 msgid "Offline Buddies" msgstr "অফলাইন বন্ধু" -#: ../finch/plugins/grouping.c:125 msgid "Online/Offline" msgstr "অনলাইন/অফলাইন" # tithi -#: ../finch/plugins/grouping.c:162 msgid "Meebo" msgstr "Meebo" -#: ../finch/plugins/grouping.c:211 msgid "No Grouping" msgstr "দলগত নয়" # tithi -#: ../finch/plugins/grouping.c:292 msgid "Nested Subgroup" msgstr "নেস্টেড উপদল" # tithi -#: ../finch/plugins/grouping.c:324 msgid "Nested Grouping (experimental)" msgstr "নেস্টেড দলগতকরণ (পরীক্ষামূলক)" -#: ../finch/plugins/grouping.c:367 ../finch/plugins/grouping.c:368 msgid "Provides alternate buddylist grouping options." msgstr "পর্যাক্রমিক বন্ধু-তালিকার দলগতকরণ পছন্দসমূহ প্রদান করে।" # tithi -#: ../finch/plugins/lastlog.c:69 msgid "Lastlog" msgstr "সর্বশেষ-লগ" # tithi #. Translator Note: The "backlog" is the conversation buffer/history. -#: ../finch/plugins/lastlog.c:100 msgid "lastlog: Searches for a substring in the backlog." msgstr "সর্বশেষ-লগ: ব্যাকলগে উপস্ট্রিং খুঁজছে।" # tithi -#: ../finch/plugins/lastlog.c:122 msgid "GntLastlog" msgstr "GntLastlog" # tithi -#: ../finch/plugins/lastlog.c:124 ../finch/plugins/lastlog.c:125 msgid "Lastlog plugin." msgstr "সর্বশেষ-লগ প্লাগইন।" -#: ../libpurple/account.c:888 msgid "accounts" msgstr "একাউন্টসমূহ" -#: ../libpurple/account.c:1064 ../libpurple/protocols/jabber/auth.c:204 -#: ../libpurple/protocols/silc/silc.c:474 msgid "Password is required to sign on." msgstr "যোগদানের জন্য গুপ্তসংকেত আবশ্যক।" -#: ../libpurple/account.c:1098 #, c-format msgid "Enter password for %s (%s)" msgstr "%1s (%2s) এর জন্য গুপ্তসংকেত প্রবেশ করান" -#: ../libpurple/account.c:1105 msgid "Enter Password" msgstr "গুপ্তসংকেত প্রবেশ করান" -#: ../libpurple/account.c:1110 msgid "Save password" msgstr "গুপ্তসংকেত সংরক্ষণ করুন" -#: ../libpurple/account.c:1145 ../libpurple/connection.c:126 -#: ../libpurple/connection.c:204 #, c-format msgid "Missing protocol plugin for %s" msgstr "%s এর জন্য নিরুদ্দিষ্ট প্রটোকল প্লাগইন" -#: ../libpurple/account.c:1147 ../libpurple/connection.c:129 msgid "Connection Error" msgstr "সংযোগ ত্রুটি" -#: ../libpurple/account.c:1371 ../libpurple/protocols/gg/gg.c:650 -#: ../libpurple/protocols/jabber/jabber.c:1924 msgid "New passwords do not match." msgstr "নতুন গুপ্তসংকেতসমূহ মিলছে না।" -#: ../libpurple/account.c:1384 msgid "Fill out all fields completely." msgstr "সব ক্ষেত্র সম্পূর্ণরুপে পূরণ করুন।" -#: ../libpurple/account.c:1416 msgid "Original password" msgstr "মূল গুপ্তসংকেত" -#: ../libpurple/account.c:1424 msgid "New password" msgstr "নতুন গুপ্তসংকেত" -#: ../libpurple/account.c:1432 msgid "New password (again)" msgstr "নতুন গুপ্তসংকেত (আবার)" -#: ../libpurple/account.c:1439 #, c-format msgid "Change password for %s" msgstr "%s এর জন্য গুপ্তসংকেত পরিবর্তন করুন" -#: ../libpurple/account.c:1447 msgid "Please enter your current password and your new password." msgstr "অনুগ্রহ করে আপনার বর্তমান গুপ্তসংকেত এবং নতুন গুপ্তসংকেত প্রবেশ করান।" -#: ../libpurple/account.c:1478 #, c-format msgid "Change user information for %s" msgstr "%s এর জন্য ব্যবহাকারীর তথ্য পরিবর্তন করুন" -#: ../libpurple/account.c:1481 ../libpurple/protocols/toc/toc.c:1670 msgid "Set User Info" msgstr "ব্যবহারকারীর তথ্য নির্ধারণ করুন" -#: ../libpurple/account.c:1952 ../libpurple/protocols/gg/gg.c:936 -#: ../libpurple/protocols/jabber/buddy.c:826 -#: ../libpurple/protocols/jabber/buddy.c:2056 -#: ../libpurple/protocols/jabber/buddy.c:2073 -#: ../libpurple/protocols/novell/novell.c:2849 -#: ../libpurple/protocols/qq/group_info.c:126 -#: ../libpurple/protocols/qq/qq.c:320 ../pidgin/gtkft.c:166 msgid "Unknown" msgstr "অজানা" -#: ../libpurple/blist.c:522 ../libpurple/blist.c:1346 -#: ../libpurple/blist.c:1558 ../libpurple/blist.c:1560 -#: ../libpurple/protocols/jabber/roster.c:68 -#: ../libpurple/protocols/myspace/myspace.c:3481 ../pidgin/gtkblist.c:6447 -#: ../pidgin/plugins/gevolution/gevo-util.c:67 -#: ../pidgin/plugins/gevolution/gevolution.c:96 msgid "Buddies" msgstr "বন্ধুগণ" -#: ../libpurple/blist.c:549 msgid "buddy list" msgstr "বন্ধু তালিকা" # tithi -#: ../libpurple/certificate.c:558 msgid "(DOES NOT MATCH)" msgstr "(মিলে না)" # tithi #. Make messages -#: ../libpurple/certificate.c:562 #, c-format msgid "%s has presented the following certificate for just-this-once use:" msgstr "শুধুমাত্র-এটি-একবার ব্যবহারের জন্য %s নিম্নলিখিত প্রত্যয়ন পত্র উপস্থাপন করেছে:" # tithi -#: ../libpurple/certificate.c:563 #, c-format msgid "" "Common name: %s %s\n" @@ -2491,54 +1665,45 @@ # tithi #. TODO: Find what the handle ought to be -#: ../libpurple/certificate.c:568 msgid "Single-use Certificate Verification" msgstr "একক-ব্যবহারের প্রত্যয়ন পত্রের সত্যতা যাচাই" # tithi #. Scheme name #. Pool name -#: ../libpurple/certificate.c:897 msgid "Certificate Authorities" msgstr "প্রত্যয়ন পত্রের কর্তৃপক্ষ" # tithi #. Scheme name #. Pool name -#: ../libpurple/certificate.c:1065 msgid "SSL Peers Cache" msgstr "SSL পিয়ার্স ক্যাশে" #. Make messages -#: ../libpurple/certificate.c:1196 #, c-format msgid "Accept certificate for %s?" msgstr "%s এর জন্য কি প্রত্যয়ন পত্র গ্রহণ করবেন?" # tithi #. TODO: Find what the handle ought to be -#: ../libpurple/certificate.c:1202 msgid "SSL Certificate Verification" msgstr "SSL প্রত্যয়ন পত্রের সত্যতা যাচাই" #. Number of actions -#: ../libpurple/certificate.c:1211 msgid "Accept" msgstr "গ্রহণ করুন" -#: ../libpurple/certificate.c:1212 msgid "Reject" msgstr "প্রত্যাখান করুন" # tithi -#: ../libpurple/certificate.c:1213 msgid "_View Certificate..." msgstr "প্রত্যয়ন পত্র দেখুন...(_V)" # tithi #. Prompt the user to authenticate the certificate #. vrq will be completed by user_auth -#: ../libpurple/certificate.c:1315 #, c-format msgid "" "The certificate presented by \"%s\" is self-signed. It cannot be " @@ -2548,7 +1713,6 @@ "যাবে না।" # tithi -#: ../libpurple/certificate.c:1333 #, c-format msgid "The certificate chain presented for %s is not valid." msgstr "%s এর জন্য উপস্থাপিত প্রত্যয়ন পত্রের শৃঙ্খল বৈধ নয়।" @@ -2558,17 +1722,14 @@ #. stifle it. #. TODO: Probably wrong. #. TODO: Probably wrong -#: ../libpurple/certificate.c:1341 ../libpurple/certificate.c:1411 msgid "SSL Certificate Error" msgstr "SSL প্রত্যয়ন পত্রের ত্রুটি" -#: ../libpurple/certificate.c:1342 msgid "Invalid certificate chain" msgstr "অবৈধ প্রত্যয়ন পত্রের শৃঙ্খল" # tithi #. vrq will be completed by user_auth -#: ../libpurple/certificate.c:1363 msgid "" "You have no database of root certificates, so this certificate cannot be " "validated." @@ -2578,13 +1739,11 @@ # tithi #. vrq will be completed by user_auth -#: ../libpurple/certificate.c:1386 msgid "" "The root certificate this one claims to be issued by is unknown to Pidgin." msgstr "মূল প্রত্যয়ন পত্রটি যার দ্বারা প্রদান করা হয়েছে তা পিজিনের কাছে অপরিচিত।" # tithi -#: ../libpurple/certificate.c:1403 #, c-format msgid "" "The certificate chain presented by %s does not have a valid digital " @@ -2594,7 +1753,6 @@ "%s দ্বারা উপস্থাপিত প্রত্যয়ন পত্র শৃঙ্খলের প্রত্যয়ন পত্রের কর্তৃপক্ষ হতে প্রাপ্ত বৈধ " "ডিজিটাল স্বাক্ষর নেই যা দ্বারা এটি দাবী করে যে এর স্বাক্ষর আছে।" -#: ../libpurple/certificate.c:1412 msgid "Invalid certificate authority signature" msgstr "অবৈধ প্রত্যয়ন পত্র কতৃপক্ষের স্বাক্ষর" @@ -2603,7 +1761,6 @@ #. TODO: Provide the user with more guidance about why he is #. being prompted #. vrq will be completed by user_auth -#: ../libpurple/certificate.c:1438 #, c-format msgid "" "The certificate presented by \"%s\" claims to be from \"%s\" instead. This " @@ -2615,7 +1772,6 @@ # tithi #. Make messages -#: ../libpurple/certificate.c:1900 #, c-format msgid "" "Common name: %s\n" @@ -2633,128 +1789,94 @@ "মেয়াদ উত্তীর্ণের তারিখ: %s\n" #. TODO: Find what the handle ought to be -#: ../libpurple/certificate.c:1912 msgid "Certificate Information" msgstr "প্রত্যদন পত্রের তথ্য" -#: ../libpurple/connection.c:128 msgid "Registration Error" msgstr "নিবন্ধন ত্রুটি" -#: ../libpurple/connection.c:206 msgid "Unregistration Error" msgstr "নিবন্ধনহীন ত্রুটি" -#: ../libpurple/connection.c:366 #, c-format msgid "+++ %s signed on" msgstr "+++ %s এখন অনলাইন " -#: ../libpurple/connection.c:396 #, c-format msgid "+++ %s signed off" msgstr "+++ %s এখন অফলাইন" -#: ../libpurple/connection.c:549 ../libpurple/plugin.c:279 -#: ../libpurple/protocols/jabber/buddy.c:2376 -#: ../libpurple/protocols/msn/servconn.c:140 -#: ../libpurple/protocols/msn/session.c:381 -#: ../libpurple/protocols/msnp9/servconn.c:139 -#: ../libpurple/protocols/msnp9/session.c:343 -#: ../libpurple/protocols/oscar/family_chatnav.c:63 msgid "Unknown error" msgstr "অজানা ত্রুটি" -#: ../libpurple/conversation.c:168 msgid "Unable to send message: The message is too large." msgstr "বার্তা পাঠাতে সমর্থ নয়: বার্তাটি খুবই বড়।" -#: ../libpurple/conversation.c:171 ../libpurple/conversation.c:184 #, c-format msgid "Unable to send message to %s." msgstr "%s-এ বার্তাটি পাঠাতে সমর্থ নয়।" -#: ../libpurple/conversation.c:172 msgid "The message is too large." msgstr "বার্তাটি খুবই বড়।" -#: ../libpurple/conversation.c:181 ../libpurple/protocols/bonjour/jabber.c:297 -#: ../libpurple/protocols/bonjour/jabber.c:340 -#: ../libpurple/protocols/qq/qq_process.c:90 msgid "Unable to send message." msgstr "বার্তা পাঠাতে সমর্থ নয়।" -#: ../libpurple/conversation.c:1229 msgid "Send Message" msgstr "বার্তা প্রেরণ করুন" -#: ../libpurple/conversation.c:1232 msgid "_Send Message" msgstr "বার্তা প্রেরণ করুন (_S)" -#: ../libpurple/conversation.c:1638 #, c-format msgid "%s entered the room." msgstr "%s এই কক্ষে প্রবেশ করেছে।" -#: ../libpurple/conversation.c:1641 #, c-format msgid "%s [%s] entered the room." msgstr "%1s [%2s] এই কক্ষে প্রবেশ করেছে।" -#: ../libpurple/conversation.c:1751 #, c-format msgid "You are now known as %s" msgstr "আপনি এখন %s নামে পরিচিত" -#: ../libpurple/conversation.c:1771 #, c-format msgid "%s is now known as %s" msgstr "%1s এখন %2s নামে পরিচিত" -#: ../libpurple/conversation.c:1846 #, c-format msgid "%s left the room." msgstr "%s এই কক্ষে ত্যাগ করেছে।" -#: ../libpurple/conversation.c:1849 #, c-format msgid "%s left the room (%s)." msgstr "%1s (%2s) এই কক্ষে ত্যাগ করেছে।" -#: ../libpurple/dbus-server.c:591 #, c-format msgid "Failed to get connection: %s" msgstr "সংযোগ পেতে ব্যর্থ: %s" -#: ../libpurple/dbus-server.c:603 #, c-format msgid "Failed to get name: %s" msgstr "নাম পেতে ব্যর্থ: %s" -#: ../libpurple/dbus-server.c:617 #, c-format msgid "Failed to get serv name: %s" msgstr "সার্ভার নাম পেতে ব্যর্থ: %s" # tithi -#: ../libpurple/dbus-server.h:86 msgid "Purple's D-BUS server is not running for the reason listed below" msgstr "Purple-এর D-BUS সার্ভার নিচের তালিকাভুক্ত কারণের জন্য চলছে না" -#: ../libpurple/desktopitem.c:287 ../libpurple/desktopitem.c:878 msgid "No name" msgstr "কোনো নাম নেই" -#: ../libpurple/dnsquery.c:527 msgid "Unable to create new resolver process\n" msgstr "নতুন সমাধান পদ্ধতি তৈরী করতে অক্ষম\n" -#: ../libpurple/dnsquery.c:532 msgid "Unable to send request to resolver process\n" msgstr "সমাধানকারীর পদ্ধতিতে অনুরোধ পাঠাতে অক্ষম\n" -#: ../libpurple/dnsquery.c:565 ../libpurple/dnsquery.c:720 #, c-format msgid "" "Error resolving %s:\n" @@ -2763,13 +1885,10 @@ "%1s সমাধানে ত্রুটি: \n" "%2s" -#: ../libpurple/dnsquery.c:568 ../libpurple/dnsquery.c:734 -#: ../libpurple/dnsquery.c:852 #, c-format msgid "Error resolving %s: %d" msgstr "%1s সমাধানে ত্রুটি: %2d" -#: ../libpurple/dnsquery.c:590 #, c-format msgid "" "Error reading from resolver process:\n" @@ -2779,22 +1898,18 @@ "%s" # tithi -#: ../libpurple/dnsquery.c:594 +#, c-format msgid "Resolver process exited without answering our request" msgstr "সমাধানকারী পদ্ধতি আমাদের অনুরোধের উত্তর না দিয়ে প্রস্থান করেছে" # tithi -#: ../libpurple/dnsquery.c:784 #, c-format msgid "Thread creation failure: %s" msgstr "থ্রেড সৃষ্টি ব্যর্থ: %s" -#: ../libpurple/dnsquery.c:785 ../libpurple/protocols/qq/buddy_opt.c:988 -#: ../libpurple/protocols/qq/buddy_opt.c:1241 msgid "Unknown reason" msgstr "অজানা কারণ" -#: ../libpurple/ft.c:210 #, c-format msgid "" "Error reading %s: \n" @@ -2803,7 +1918,6 @@ "%1s পড়ায় ত্রুটি: \n" "%2s।\n" -#: ../libpurple/ft.c:214 #, c-format msgid "" "Error writing %s: \n" @@ -2812,7 +1926,6 @@ "%1s লেখায় ত্রুটি: \n" "%2s।\n" -#: ../libpurple/ft.c:218 #, c-format msgid "" "Error accessing %s: \n" @@ -2822,39 +1935,31 @@ "%s।\n" # tithi -#: ../libpurple/ft.c:254 msgid "Directory is not writable." msgstr "নির্দেশিকা লিখনযোগ্য নয়।" -#: ../libpurple/ft.c:269 msgid "Cannot send a file of 0 bytes." msgstr "০ বাইটের কোনো ফাইল পাঠাতে পারে না।" -#: ../libpurple/ft.c:279 msgid "Cannot send a directory." msgstr "নির্দেশিকা পাঠাতে পারে না।" -#: ../libpurple/ft.c:288 #, c-format msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n" msgstr "%s নিয়মিত কোনো ফাইল নয়। কাপুরুষোচিত ভাবে উপরিলেখ করতে প্রত্যাখ্যান করছে।\n" -#: ../libpurple/ft.c:348 #, c-format msgid "%s wants to send you %s (%s)" msgstr "%1s আপনাকে %2s (%3s) পাঠাতে চায়" -#: ../libpurple/ft.c:355 #, c-format msgid "%s wants to send you a file" msgstr "%s আপনাকে একটি ফাইল পাঠাতে চায়" -#: ../libpurple/ft.c:398 #, c-format msgid "Accept file transfer request from %s?" msgstr "%s এর ফাইল স্থানান্তর করার অনুরোধ গ্রহন করবেন কি?" -#: ../libpurple/ft.c:402 #, c-format msgid "" "A file is available for download from:\n" @@ -2865,181 +1970,147 @@ "দূরবর্তী হোস্ট: %s\n" "দূরবর্তী পোর্ট: %d" -#: ../libpurple/ft.c:437 #, c-format msgid "%s is offering to send file %s" msgstr "%1s %2s ফাইলটি পাঠানোর প্রস্তাব দিচ্ছে" -#: ../libpurple/ft.c:490 #, c-format msgid "%s is not a valid filename.\n" msgstr "%s বৈধ ফাইল নাম নয়।\n" -#: ../libpurple/ft.c:511 #, c-format msgid "Offering to send %s to %s" msgstr "%2s এ %1s পাঠানোর প্রস্তাব দিচ্ছে" -#: ../libpurple/ft.c:523 #, c-format msgid "Starting transfer of %s from %s" msgstr "%2s হতে %1s-এর স্থানান্তর শুরু হচ্ছে" -#: ../libpurple/ft.c:700 #, c-format msgid "Transfer of file %s complete" msgstr "%s ফাইলের স্থানান্তর সম্পূর্ণ" -#: ../libpurple/ft.c:703 msgid "File transfer complete" msgstr "ফাইল স্থানান্তর সম্পূর্ণ" -#: ../libpurple/ft.c:1138 #, c-format msgid "You canceled the transfer of %s" msgstr "আপনি %s এর স্থানান্তর বাতিল করেছেন" -#: ../libpurple/ft.c:1143 msgid "File transfer cancelled" msgstr "ফাইল স্থানান্তর বাতিল করা হয়েছে" -#: ../libpurple/ft.c:1201 #, c-format msgid "%s canceled the transfer of %s" msgstr "%1s %2s-এর স্থানান্তর বাতিল করেছে" -#: ../libpurple/ft.c:1206 #, c-format msgid "%s canceled the file transfer" msgstr "%s ফাইল স্থানান্তর বাতিল করেছে" -#: ../libpurple/ft.c:1263 #, c-format msgid "File transfer to %s failed." msgstr "%s এ ফাইলের স্থানান্তর ব্যর্থ হয়েছে।" -#: ../libpurple/ft.c:1265 #, c-format msgid "File transfer from %s failed." msgstr "%s থেকে ফাইলের স্থানান্তর ব্যর্থ হয়েছে।" -#: ../libpurple/gconf/purple.schemas.in.h:1 msgid "Run the command in a terminal" msgstr "নির্দেশটি টার্মিনালে চালান" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:2 msgid "The command used to handle \"aim\" URLs, if enabled." msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"aim\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:3 msgid "The command used to handle \"gg\" URLs, if enabled." msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"gg\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:4 msgid "The command used to handle \"icq\" URLs, if enabled." msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"icq\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:5 msgid "The command used to handle \"irc\" URLs, if enabled." msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"irc\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:6 msgid "The command used to handle \"msnim\" URLs, if enabled." msgstr "" "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"msnim\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:7 msgid "The command used to handle \"sip\" URLs, if enabled." msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"sip\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:8 msgid "The command used to handle \"xmpp\" URLs, if enabled." msgstr "" "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"xmpp\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:9 msgid "The command used to handle \"ymsgr\" URLs, if enabled." msgstr "" "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"ymsgr\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:10 msgid "The handler for \"aim\" URLs" msgstr "‌‌‌\"aim\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:11 msgid "The handler for \"gg\" URLs" msgstr "‌‌‌\"gg\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:12 msgid "The handler for \"icq\" URLs" msgstr "‌‌‌\"icq\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:13 msgid "The handler for \"irc\" URLs" msgstr "‌‌‌\"irc\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:14 msgid "The handler for \"msnim\" URLs" msgstr "‌‌‌\"msnim\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:15 msgid "The handler for \"sip\" URLs" msgstr "‌‌‌\"sip\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:16 msgid "The handler for \"xmpp\" URLs" msgstr "‌‌‌\"xmpp\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:17 msgid "The handler for \"ymsgr\" URLs" msgstr "\"ymsgr\" এর URL-এর জন্য নিয়ন্ত্রণকারী" # fix me tithi -#: ../libpurple/gconf/purple.schemas.in.h:18 msgid "" "True if the command specified in the \"command\" key should handle \"aim\" " "URLs." msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"aim\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:19 msgid "" "True if the command specified in the \"command\" key should handle \"gg\" " "URLs." msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"gg\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:20 msgid "" "True if the command specified in the \"command\" key should handle \"icq\" " "URLs." msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"icq\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:21 msgid "" "True if the command specified in the \"command\" key should handle \"irc\" " "URLs." msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"irc\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:22 msgid "" "True if the command specified in the \"command\" key should handle \"msnim\" " "URLs." @@ -3047,21 +2118,18 @@ "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"msnim\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:23 msgid "" "True if the command specified in the \"command\" key should handle \"sip\" " "URLs." msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"sip\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:24 msgid "" "True if the command specified in the \"command\" key should handle \"xmpp\" " "URLs." msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"xmpp\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:25 msgid "" "True if the command specified in the \"command\" key should handle \"ymsgr\" " "URLs." @@ -3069,78 +2137,62 @@ "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"ymsgr\" এর URL নিয়ন্ত্রণ করে।" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:26 msgid "" "True if the command used to handle this type of URL should be run in a " "terminal." msgstr "সত্য হবে যদি এই ধরনের URL নিয়ন্ত্রণ করতে ব্যবহৃত নির্দেশটি টার্মিনালে চলে। " # tithi -#: ../libpurple/gconf/purple.schemas.in.h:27 msgid "Whether the specified command should handle \"aim\" URLs" msgstr "উল্লেখিত নির্দেশটি \"aim\" এর URL নিয়ন্ত্রণ করবে কিনা" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:28 msgid "Whether the specified command should handle \"gg\" URLs" msgstr "উল্লেখিত নির্দেশটি \"gg\" এর URL নিয়ন্ত্রণ করবে কিনা" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:29 msgid "Whether the specified command should handle \"icq\" URLs" msgstr "উল্লেখিত নির্দেশটি \"icq\" এর URL নিয়ন্ত্রণ করবে কিনা" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:30 msgid "Whether the specified command should handle \"irc\" URLs" msgstr "উল্লেখিত নির্দেশটি \"irc\" এর URL নিয়ন্ত্রণ করবে কিনা" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:31 msgid "Whether the specified command should handle \"msnim\" URLs" msgstr "উল্লেখিত নির্দেশটি \"msnim\" এর URL নিয়ন্ত্রণ করবে কিনা" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:32 msgid "Whether the specified command should handle \"sip\" URLs" msgstr "উল্লেখিত নির্দেশটি \"sip\" এর URL নিয়ন্ত্রণ করবে কিনা" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:33 msgid "Whether the specified command should handle \"xmpp\" URLs" msgstr "উল্লেখিত নির্দেশটি \"xmpp\" এর URL নিয়ন্ত্রণ করবে কিনা" # tithi -#: ../libpurple/gconf/purple.schemas.in.h:34 msgid "Whether the specified command should handle \"ymsgr\" URLs" msgstr "উল্লেখিত নির্দেশটি \"ymsgr\" এর URL নিয়ন্ত্রণ করবে কিনা" -#: ../libpurple/log.c:183 msgid "The logger has no read function" msgstr "এই লগাকারীর পাঠ করার কোনো ফাংশন নেই" -#: ../libpurple/log.c:597 msgid "HTML" msgstr "এইচটিএমএল" -#: ../libpurple/log.c:611 msgid "Plain text" msgstr "সরল পাঠ" # tithi -#: ../libpurple/log.c:625 msgid "Old flat format" msgstr "পুরাতন সম্পূর্ণ বিন্যাস" -#: ../libpurple/log.c:850 msgid "Logging of this conversation failed." msgstr "এই কথোপকথোনে সংযুক্তকরণ ব্যর্থ।" -#: ../libpurple/log.c:1292 msgid "XML" msgstr "এক্সএমএল" -#: ../libpurple/log.c:1376 #, c-format msgid "" "(%s) %s <AUTO-" @@ -3149,7 +2201,6 @@ "(%1s) %2s &3lt;স্বয়ংক্রিয়-" "উত্তর&4gt;: %5s
\n" -#: ../libpurple/log.c:1378 #, c-format msgid "" "(%s) %s <AUTO-" @@ -3158,51 +2209,42 @@ "(%1s) %2s &3lt;স্বয়ংক্রিয়-" "উত্তর&4gt;: %5s
\n" -#: ../libpurple/log.c:1436 ../libpurple/log.c:1569 msgid "Unable to find log path!" msgstr "লগ পথ খুঁজতে অক্ষম" -#: ../libpurple/log.c:1448 ../libpurple/log.c:1578 #, c-format msgid "Could not read file: %s" msgstr "ফাইল পড়তে পারেনি: %s" -#: ../libpurple/log.c:1510 #, c-format msgid "(%s) %s : %s\n" msgstr "(%1s) %2s : %3s\n" # tithi -#: ../libpurple/plugin.c:362 #, c-format msgid "You are using %s, but this plugin requires %s." msgstr "আপনি %1s ব্যবহার করছেন, কিন্তু এই প্লাগইনের %2s প্রয়োজন।" # tithi -#: ../libpurple/plugin.c:377 msgid "This plugin has not defined an ID." msgstr "এই প্লাগইন একটি আইডি নির্ধারণ করেনি।" # tithi -#: ../libpurple/plugin.c:445 #, c-format msgid "Plugin magic mismatch %d (need %d)" msgstr "প্লাগইন ম্যাজিক %1d এর সাথে মিলে না (%2d প্রয়োজন)" # tithi -#: ../libpurple/plugin.c:462 #, c-format msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" msgstr "ABI সংস্করণ %1d এর সাথে মিলে না।%2d.x (%3d.%4d.x প্রয়োজন)" # tithi -#: ../libpurple/plugin.c:479 msgid "" "Plugin does not implement all required functions (list_icon, login and close)" msgstr "" "প্লাগইন সকল প্রয়োজনীয় ফাংশন বাস্তবায়ন করে না (লিস্ট-আইকন (_i), লগইন এবং বন্ধ করুন)" -#: ../libpurple/plugin.c:544 #, c-format msgid "" "The required plugin %s was not found. Please install this plugin and try " @@ -3211,88 +2253,62 @@ "প্রয়োজনীয় প্লাগইন %s খুঁজে পাওয়া যায়নি। অনুগ্রহ করে এই প্লাগইনটি সংস্থাপন করুন এবং " "পুনরায় চেষ্টা করুন।" -#: ../libpurple/plugin.c:549 msgid "Unable to load the plugin" msgstr "প্লাগইনটি লোড করতে অক্ষম" -#: ../libpurple/plugin.c:571 #, c-format msgid "The required plugin %s was unable to load." msgstr "প্রয়োজনীয় প্লাগইন %s লোড করতে অক্ষম।" -#: ../libpurple/plugin.c:575 msgid "Unable to load your plugin." msgstr "আপনার প্লাগইনটি লোড করতে অক্ষম।" -#: ../libpurple/plugin.c:665 #, c-format msgid "%s requires %s, but it failed to unload." msgstr "%1s এর %2s প্রয়োজন, কিন্তু এটি লোডহীন করতে ব্যর্থ।" -#: ../libpurple/plugins/autoaccept.c:23 msgid "Autoaccept" msgstr "স্বয়ংক্রিয়-গ্রহণ" -#: ../libpurple/plugins/autoaccept.c:25 ../libpurple/plugins/autoaccept.c:26 msgid "Auto-accept file transfer requests from selected users." msgstr "নির্বাচিত ব্যবহারকারীর কাছ থেকে স্বয়ং-গ্রহণ ফাইলের স্থানান্তর অনুরোধ করছে।" -#: ../libpurple/plugins/autoaccept.c:81 #, c-format msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed." msgstr "\"%1s\" হতে \"%2s\" স্বয়ং-গৃহীত ফাইল স্থানান্তর সম্পূর্ণ হয়েছে।" -#: ../libpurple/plugins/autoaccept.c:83 msgid "Autoaccept complete" msgstr "স্বয়ং-গ্রহণ সম্পন্ন" -#: ../libpurple/plugins/autoaccept.c:196 #, c-format msgid "When a file-transfer request arrives from %s" msgstr "যখন %s থেকে ফাইল-স্থানান্তর অনুরোধ পৌছায়" # tithi -#: ../libpurple/plugins/autoaccept.c:198 msgid "Set Autoaccept Setting" msgstr "স্বয়ং-গ্রহণ বিন্যাসন নির্ধারণ করুন" -#: ../libpurple/plugins/autoaccept.c:200 msgid "_Save" msgstr "সংরক্ষণ (_S)" -#: ../libpurple/plugins/autoaccept.c:201 ../libpurple/plugins/idle.c:170 -#: ../libpurple/plugins/idle.c:204 ../libpurple/plugins/idle.c:230 -#: ../libpurple/protocols/oscar/oscar.c:1617 -#: ../libpurple/protocols/oscar/oscar.c:2493 -#: ../libpurple/protocols/oscar/oscar.c:2541 -#: ../libpurple/protocols/oscar/oscar.c:6108 -#: ../libpurple/protocols/oscar/oscar.c:6163 -#: ../libpurple/protocols/oscar/oscar.c:6394 -#: ../libpurple/protocols/oscar/oscar.c:6464 ../libpurple/request.h:1401 -#: ../libpurple/request.h:1411 msgid "_Cancel" msgstr "বাতিল (_C)" # tithi -#: ../libpurple/plugins/autoaccept.c:204 msgid "Ask" msgstr "জিজ্ঞাসা করুন" -#: ../libpurple/plugins/autoaccept.c:205 msgid "Auto Accept" msgstr "স্বয়ং গ্রহণ করুন" -#: ../libpurple/plugins/autoaccept.c:206 msgid "Auto Reject" msgstr "স্বয়ং প্রত্যাখ্যান করুন" -#: ../libpurple/plugins/autoaccept.c:221 msgid "Autoaccept File Transfers..." msgstr "স্বয়ংক্রিয়-গ্রহণ ফাইল স্থানান্তর করে..." # tithi #. XXX: Is there a better way than this? There really should be. -#: ../libpurple/plugins/autoaccept.c:251 msgid "" "Path to save the files in\n" "(Please provide the full path)" @@ -3300,12 +2316,10 @@ "ফাইলটি সংরক্ষণ করার পথ\n" "(অনুগ্রহ করে সম্পূর্ণ পথ প্রদান করুন)" -#: ../libpurple/plugins/autoaccept.c:256 msgid "Automatically reject from users not in buddy list" msgstr "বন্ধু তালিকার বহির্ভুত ব্যবহারকারীগণ হতে স্বয়ংক্রিয় ভাবে বাতিল করুন" # tithi -#: ../libpurple/plugins/autoaccept.c:260 msgid "" "Notify with a popup when an autoaccepted file transfer is complete\n" "(only when there's no conversation with the sender)" @@ -3313,22 +2327,15 @@ "একটি স্বয়ং-গৃহীত ফাইল স্থানান্তর সম্পূর্ণ হলে পপ-আপ দ্বারা অবগত করুন\n" "(শুধুমাত্র যখন প্রেরকের সঙ্গে কোনো কথোপকথন হয় না)" -#: ../libpurple/plugins/autoaccept.c:265 msgid "Create a new directory for each user" msgstr "প্রত্যেক ব্যবহারকারীর জন্য একটি নির্দেশিকা তৈরী করুন" -#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:2094 -#: ../libpurple/protocols/msn/msn.c:2124 -#: ../libpurple/protocols/msnp9/msn.c:1800 -#: ../libpurple/protocols/msnp9/msn.c:1830 msgid "Notes" msgstr "নোট" -#: ../libpurple/plugins/buddynote.c:47 msgid "Enter your notes below..." msgstr "আপনার নোটগুলো নীচে প্রবেশ করান..." -#: ../libpurple/plugins/buddynote.c:65 msgid "Edit Notes..." msgstr "নোট সম্পাদন করুন..." @@ -3340,20 +2347,17 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/buddynote.c:90 ../pidgin/plugins/gtkbuddynote.c:74 msgid "Buddy Notes" msgstr "বন্ধু নোট" # tithi #. *< name #. *< version -#: ../libpurple/plugins/buddynote.c:92 ../pidgin/plugins/gtkbuddynote.c:76 msgid "Store notes on particular buddies." msgstr "নির্দিষ্ট বন্ধুদের কাছে নোট সলরক্ষণ করুন" # tithi #. *< summary -#: ../libpurple/plugins/buddynote.c:93 ../pidgin/plugins/gtkbuddynote.c:77 msgid "Adds the option to store notes for buddies on your buddy list." msgstr "আপনার বন্ধু তালিকায় বন্ধুদের জন্য নোট সংরক্ষণ করতে পছন্দ যোগ করে।" @@ -3363,7 +2367,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ciphertest.c:264 msgid "Cipher Test" msgstr "সাইফার পরীক্ষা" @@ -3372,7 +2375,6 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ciphertest.c:267 ../libpurple/plugins/ciphertest.c:269 msgid "Tests the ciphers that ship with libpurple." msgstr "লিবপার্পল সহ সিপ করে এমন সাইফারগুলো পরীক্ষা করে।" @@ -3382,7 +2384,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/dbus-example.c:155 msgid "DBus Example" msgstr "DBus উদাহরণ" @@ -3390,8 +2391,6 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/dbus-example.c:158 -#: ../libpurple/plugins/dbus-example.c:160 msgid "DBus Plugin Example" msgstr "DBus প্লাগইন এর উদাহরণ" @@ -3401,7 +2400,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/filectl.c:248 msgid "File Control" msgstr "ফাইল নিয়ন্ত্রণ করুন" @@ -3409,50 +2407,38 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/filectl.c:251 ../libpurple/plugins/filectl.c:253 msgid "Allows control by entering commands in a file." msgstr "ফাইলে নির্দেশসমূহ প্রবেশ করার মাধ্যমে নিয়ন্ত্রণ অনুমোদন করুন।" -#: ../libpurple/plugins/idle.c:158 ../libpurple/plugins/idle.c:218 msgid "Minutes" msgstr "মিনিট" #. 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. -#: ../libpurple/plugins/idle.c:165 ../libpurple/plugins/idle.c:199 -#: ../libpurple/plugins/idle.c:225 ../libpurple/plugins/idle.c:318 msgid "I'dle Mak'er" msgstr "অ'লস তৈরীকার'ক" -#: ../libpurple/plugins/idle.c:166 ../libpurple/plugins/idle.c:258 msgid "Set Account Idle Time" msgstr "একাউন্টের অলস সময় নির্ধারণ করুন" -#: ../libpurple/plugins/idle.c:169 ../libpurple/plugins/idle.c:229 msgid "_Set" msgstr "নির্ধারণ (_S)" -#: ../libpurple/plugins/idle.c:184 msgid "None of your accounts are idle." msgstr "আপনার কোনো একাউন্ট অলস নেই।" -#: ../libpurple/plugins/idle.c:200 ../libpurple/plugins/idle.c:262 msgid "Unset Account Idle Time" msgstr "একাউন্টের অলস সময় অপসারণ করুন" -#: ../libpurple/plugins/idle.c:203 msgid "_Unset" msgstr "অনির্ধারণ করুন (_U)" -#: ../libpurple/plugins/idle.c:226 ../libpurple/plugins/idle.c:266 msgid "Set Idle Time for All Accounts" msgstr "সব একাউন্টের জন্য অলস সময় নির্ধারণ করুন" -#: ../libpurple/plugins/idle.c:271 msgid "Unset Idle Time for All Idled Accounts" msgstr "সব অলস একাউন্টের জন্য অলস সময় অপসারণ করুন" -#: ../libpurple/plugins/idle.c:320 ../libpurple/plugins/idle.c:321 msgid "Allows you to hand-configure how long you've been idle" msgstr "আপনি কতক্ষণ অলস থাকবেন তা আপনাকে নিজ হাতে-বিন্যাস করতে অনুমোদন করে" @@ -3462,19 +2448,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ipc-test-client.c:87 msgid "IPC Test Client" msgstr "IPC পরীক্ষণ ক্লায়েন্ট" #. *< name #. *< version #. * summary -#: ../libpurple/plugins/ipc-test-client.c:90 msgid "Test plugin IPC support, as a client." msgstr "ক্লায়েন্ট হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন।" #. * description -#: ../libpurple/plugins/ipc-test-client.c:92 msgid "" "Test plugin IPC support, as a client. This locates the server plugin and " "calls the commands registered." @@ -3488,39 +2471,32 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ipc-test-server.c:74 msgid "IPC Test Server" msgstr "IPC পরীক্ষণ সার্ভার" #. *< name #. *< version #. * summary -#: ../libpurple/plugins/ipc-test-server.c:77 msgid "Test plugin IPC support, as a server." msgstr "সার্ভার হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন।" #. * description -#: ../libpurple/plugins/ipc-test-server.c:79 msgid "Test plugin IPC support, as a server. This registers the IPC commands." msgstr "" "সার্ভার হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন। এটি IPC নির্দেশগুলো নিবন্ধন করে।" -#: ../libpurple/plugins/joinpart.c:232 msgid "Join/Part Hiding Configuration" msgstr "লুকানো বিন্যাসকরণ যুক্ত/বিভক্ত করুন" # tithi -#: ../libpurple/plugins/joinpart.c:236 msgid "Minimum Room Size" msgstr "নূন্যতম কক্ষের আকার" # tithi -#: ../libpurple/plugins/joinpart.c:241 msgid "User Inactivity Timeout (in minutes)" msgstr "ব্যবহারকারীর নিষ্ক্রয়তার সময়সীমা উত্তীর্ণ (মিনিটে)" # tithi -#: ../libpurple/plugins/joinpart.c:246 msgid "Apply hiding rules to buddies" msgstr "বন্ধুদের উপর লুকানোর নিয়ম প্রয়োগ করুন" @@ -3531,7 +2507,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/joinpart.c:276 msgid "Join/Part Hiding" msgstr "যুক্ত/বিভক্ত গোপনকরণ" @@ -3539,13 +2514,11 @@ #. *< name #. *< version #. * summary -#: ../libpurple/plugins/joinpart.c:279 msgid "Hides extraneous join/part messages." msgstr "অসংশ্লিষ্ট যুক্ত/বিভক্ত বার্তাগুলো গোপন করে।" # tithi #. * description -#: ../libpurple/plugins/joinpart.c:281 msgid "" "This plugin hides join/part messages in large rooms, except for those users " "actively taking part in a conversation." @@ -3557,69 +2530,52 @@ #. * offset is way off. The user should never really see it, but #. * it's here just in case. The parens are to make it clear it's #. * not a real timezone. -#: ../libpurple/plugins/log_reader.c:499 msgid "(UTC)" msgstr "(UTC)" -#: ../libpurple/plugins/log_reader.c:1558 msgid "User is offline." msgstr "ব্যবহারকারী অফলাইনে।" -#: ../libpurple/plugins/log_reader.c:1564 msgid "Auto-response sent:" msgstr "স্বয়ং-জবাব পাঠানো হয়েছে:" -#: ../libpurple/plugins/log_reader.c:1579 -#: ../libpurple/plugins/log_reader.c:1582 -#: ../libpurple/plugins/statenotify.c:93 #, c-format msgid "%s has signed off." msgstr "%s অফলাইনে।" -#: ../libpurple/plugins/log_reader.c:1603 msgid "One or more messages may have been undeliverable." msgstr "এক বা একাধিক বার্তা পাঠানো যাচ্ছে না।" -#: ../libpurple/plugins/log_reader.c:1613 msgid "You were disconnected from the server." msgstr "আপনি সার্ভার থেকে বিচ্ছিন্ন ছিলেন।" -#: ../libpurple/plugins/log_reader.c:1621 msgid "" "You are currently disconnected. Messages will not be received unless you are " "logged in." msgstr "" "আপনি বর্তমানে বিচ্ছিন্ন। আপনি লগ ইন না করা পর্যন্ত বার্তাসমূহ গ্রহণ করা হবে না।" -#: ../libpurple/plugins/log_reader.c:1636 msgid "Message could not be sent because the maximum length was exceeded." msgstr "সর্বোচ্চ সীমা অতিক্রান্ত হওয়ায় বার্তা পাঠানো যাচ্ছে না।" -#: ../libpurple/plugins/log_reader.c:1641 msgid "Message could not be sent." msgstr "বার্তা পাঠানো সম্ভব হয়নি।" #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators #. choose to leave them alone. Choose what's best for your language. -#: ../libpurple/plugins/log_reader.c:2723 -#: ../libpurple/plugins/log_reader.c:2879 msgid "Adium" msgstr "অডিয়াম" #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators #. choose to leave them alone. Choose what's best for your language. -#: ../libpurple/plugins/log_reader.c:2736 -#: ../libpurple/plugins/log_reader.c:2884 msgid "Fire" msgstr "আগুন" #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators #. choose to leave them alone. Choose what's best for your language. -#: ../libpurple/plugins/log_reader.c:2748 -#: ../libpurple/plugins/log_reader.c:2888 msgid "Messenger Plus!" msgstr "বার্তাবাহক প্লাস!" @@ -3627,24 +2583,18 @@ #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators #. choose to leave them alone. Choose what's best for your language. -#: ../libpurple/plugins/log_reader.c:2762 -#: ../libpurple/plugins/log_reader.c:2893 msgid "QIP" msgstr "QIP" #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators #. choose to leave them alone. Choose what's best for your language. -#: ../libpurple/plugins/log_reader.c:2774 -#: ../libpurple/plugins/log_reader.c:2897 msgid "MSN Messenger" msgstr "এমএসএন বার্তাবাহক" #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators #. choose to leave them alone. Choose what's best for your language. -#: ../libpurple/plugins/log_reader.c:2786 -#: ../libpurple/plugins/log_reader.c:2901 msgid "Trillian" msgstr "ট্রিলিয়ান" @@ -3652,27 +2602,21 @@ #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators #. choose to leave them alone. Choose what's best for your language. -#: ../libpurple/plugins/log_reader.c:2798 -#: ../libpurple/plugins/log_reader.c:2905 msgid "aMSN" msgstr "aMSN" #. Add general preferences. -#: ../libpurple/plugins/log_reader.c:2861 msgid "General Log Reading Configuration" msgstr "সাধারণ লগ পড়ার বিন্যাসন" -#: ../libpurple/plugins/log_reader.c:2865 msgid "Fast size calculations" msgstr "দ্রুত আকার গণনাসমূহ" # fix me- tithi -#: ../libpurple/plugins/log_reader.c:2869 msgid "Use name heuristics" msgstr "নাম হিউরিস্টিক ব্যবহার করুন" #. Add Log Directory preferences. -#: ../libpurple/plugins/log_reader.c:2875 msgid "Log Directory" msgstr "লগ নির্দেশিকা" @@ -3682,19 +2626,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/log_reader.c:2934 msgid "Log Reader" msgstr "লগ পাঠক" #. *< name #. *< version #. * summary -#: ../libpurple/plugins/log_reader.c:2938 msgid "Includes other IM clients' logs in the log viewer." msgstr "লগ প্রদর্শকে অন্যান্য আইএম ক্লায়েন্টদের লগসমূহ অন্তর্ভুক্ত করে।" #. * description -#: ../libpurple/plugins/log_reader.c:2942 msgid "" "When viewing logs, this plugin will include logs from other IM clients. " "Currently, this includes Adium, MSN Messenger, and Trillian.\n" @@ -3708,22 +2649,17 @@ "সতর্কতা: এই প্লাগইনটি এখনও আলফা কোড এবং প্রায়সই নষ্ট হতে পারে। আপনার নিজ " "দ্বায়িত্বে ব্যবহার করুন!" -#: ../libpurple/plugins/mono/loader/mono.c:217 msgid "Mono Plugin Loader" msgstr "মোনো প্লাগইন লোডকারী" # sam: mono? -#: ../libpurple/plugins/mono/loader/mono.c:219 -#: ../libpurple/plugins/mono/loader/mono.c:220 msgid "Loads .NET plugins with Mono." msgstr "মোনো এর সাথে .NET প্লাগইন লোড করে" # tithi -#: ../libpurple/plugins/newline.c:57 msgid "Add new line in IMs" msgstr "আইএম এ নতুন লাইন যোগ করুন" -#: ../libpurple/plugins/newline.c:61 msgid "Add new line in Chats" msgstr "আড্ডায় নতুন লাইন যোগ করুন" @@ -3736,19 +2672,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/newline.c:104 msgid "New Line" msgstr "নতুন লাইন" #. *< name #. *< version -#: ../libpurple/plugins/newline.c:106 msgid "Prepends a newline to displayed message." msgstr "প্রদর্শিত বার্তায় নতুন-লাইন যোগ করে।" # tithi #. *< summary -#: ../libpurple/plugins/newline.c:107 msgid "" "Prepends a newline to messages so that the rest of the message appears below " "the username in the conversation window." @@ -3757,17 +2690,14 @@ "অবশিষ্ট বার্তাসমূহ উপস্থিত হয়।" # tithi -#: ../libpurple/plugins/offlinemsg.c:23 msgid "Offline Message Emulation" msgstr "অফলাইন বার্তা অনুকরন করুন" # tithi -#: ../libpurple/plugins/offlinemsg.c:25 ../libpurple/plugins/offlinemsg.c:26 msgid "Save messages sent to an offline user as pounce." msgstr "অফলাইন ব্যবহারকারীকে পাঠানো বার্তা পাউন্স হিসেবে সংরক্ষণ করুন।" # tithi -#: ../libpurple/plugins/offlinemsg.c:95 msgid "" "The rest of the messages will be saved as pounce. You can edit/delete the " "pounce from the `Buddy Pounce' dialog." @@ -3775,7 +2705,6 @@ "অবশিষ্ট বার্তাগুলো পাউন্স হিসেবে সংরক্ষিত হবে। আপনি 'বন্ধু পাউন্স' সংলাপ হতে পাউন্স " "সম্পাদনা/মুছে ফেলতে পারেন।" -#: ../libpurple/plugins/offlinemsg.c:156 #, c-format msgid "" "\"%s\" is currently offline. Do you want to save the rest of the messages in " @@ -3784,52 +2713,24 @@ "\"%s\" বর্তমানে অফলাইনে আছেন। আপনি কি অবশিষ্ট বার্তাগুলো পাউন্সে সংরক্ষণ করতে চান " "এবং \"%s\" যখন পুনরায় লগইন করে তখন তাদেরকে স্বয়ংক্রিয় ভাবে পাঠাতে চান?" -#: ../libpurple/plugins/offlinemsg.c:160 msgid "Offline Message" msgstr "অফলাইন বার্তা" # tithi -#: ../libpurple/plugins/offlinemsg.c:161 msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog" msgstr "আপনি 'বন্ধু পাউন্স' সংলাপ হতে পাউন্স সম্পাদনা/মুছে ফেলতে পারেন।" -#: ../libpurple/plugins/offlinemsg.c:165 -#: ../libpurple/protocols/msn/dialog.c:141 -#: ../libpurple/protocols/msn/msn.c:796 ../libpurple/protocols/msn/msn.c:799 -#: ../libpurple/protocols/msnp9/dialog.c:133 -#: ../libpurple/protocols/msnp9/msn.c:566 -#: ../libpurple/protocols/msnp9/msn.c:582 -#: ../libpurple/protocols/novell/novell.c:1929 -#: ../libpurple/protocols/silc/buddy.c:317 -#: ../libpurple/protocols/silc/pk.c:113 ../libpurple/protocols/silc/wb.c:308 -#: ../libpurple/protocols/silc10/buddy.c:314 -#: ../libpurple/protocols/silc10/pk.c:119 -#: ../libpurple/protocols/silc10/wb.c:307 ../pidgin/gtkrequest.c:270 msgid "Yes" msgstr "হ্যাঁ" -#: ../libpurple/plugins/offlinemsg.c:166 -#: ../libpurple/protocols/msn/dialog.c:142 -#: ../libpurple/protocols/msn/msn.c:796 ../libpurple/protocols/msn/msn.c:799 -#: ../libpurple/protocols/msnp9/dialog.c:134 -#: ../libpurple/protocols/msnp9/msn.c:566 -#: ../libpurple/protocols/msnp9/msn.c:582 -#: ../libpurple/protocols/novell/novell.c:1930 -#: ../libpurple/protocols/silc/buddy.c:318 -#: ../libpurple/protocols/silc/pk.c:114 ../libpurple/protocols/silc/wb.c:309 -#: ../libpurple/protocols/silc10/buddy.c:315 -#: ../libpurple/protocols/silc10/pk.c:120 -#: ../libpurple/protocols/silc10/wb.c:308 ../pidgin/gtkrequest.c:271 msgid "No" msgstr "না" # tithi -#: ../libpurple/plugins/offlinemsg.c:193 msgid "Save offline messages in pounce" msgstr "অফলাইন বার্তা পাউন্সে সংরক্ষণ করুন" # tithi -#: ../libpurple/plugins/offlinemsg.c:197 msgid "Do not ask. Always save in pounce." msgstr "জিজ্ঞাসা করবেন না। সবসময় পাউন্সে সংরক্ষণ করুন।" @@ -3839,28 +2740,23 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/perl/perl.c:656 msgid "Perl Plugin Loader" msgstr "পার্ল প্লাগইন লোডকারী" #. *< name #. *< version #. *< summary -#: ../libpurple/plugins/perl/perl.c:658 ../libpurple/plugins/perl/perl.c:659 msgid "Provides support for loading perl plugins." msgstr "পার্ল প্লাগইন লোড করার জন্য সমর্থন করে।" # tithi -#: ../libpurple/plugins/psychic.c:20 msgid "Psychic Mode" msgstr "সাইকিক পরিমন্ডল" # fix me tithi -#: ../libpurple/plugins/psychic.c:21 msgid "Psychic mode for incoming conversation" msgstr "আগত কথোপকথোনের জন্য সাইকিক পরিমন্ডল" -#: ../libpurple/plugins/psychic.c:22 msgid "" "Causes conversation windows to appear as other users begin to message you. " "This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" @@ -3869,24 +2765,19 @@ "হয়। এটি AIM, ICQ, XMPP, Sametime, এবং Yahoo এর জন্য কাজ করে!" # tithi -#: ../libpurple/plugins/psychic.c:72 msgid "You feel a disturbance in the force..." msgstr "আপনি গতিতে একটি অসুবিধা অনুভব করছেন..." -#: ../libpurple/plugins/psychic.c:91 msgid "Only enable for users on the buddy list" msgstr "শুধুমাত্র বন্ধু তালিকার ব্যবহারকারীর জন্য সক্রিয় করুন" -#: ../libpurple/plugins/psychic.c:96 msgid "Disable when away" msgstr "দূরে থাকার সময় নিষ্ক্রিয় করুন" # tithi -#: ../libpurple/plugins/psychic.c:100 msgid "Display notification message in conversations" msgstr "কথোপকথনে বিজ্ঞপ্তি বার্তা প্রদর্শন করুন" -#: ../libpurple/plugins/psychic.c:105 msgid "Raise psychic conversations" msgstr "সাইকিক কথাবার্তা হচ্ছে" @@ -3896,7 +2787,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/signals-test.c:778 msgid "Signals Test" msgstr "সংকেতসমূহের পরীক্ষা" @@ -3904,8 +2794,6 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/signals-test.c:781 -#: ../libpurple/plugins/signals-test.c:783 msgid "Test to see that all signals are working properly." msgstr "সকল সংকেত সঠিকভাবে কাজ করছে কিনা তা দেখতে পরীক্ষা করুন।" @@ -3915,7 +2803,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/simple.c:37 msgid "Simple Plugin" msgstr "সহজ প্লাগইন" @@ -3923,14 +2810,11 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/simple.c:40 ../libpurple/plugins/simple.c:42 msgid "Tests to see that most things are working." msgstr "অধিকাংশ জিনিস সঠিকভাবে কাজ করছে কিনা তা দেখতে পরীক্ষা করুন।" # tithi #. Scheme name -#: ../libpurple/plugins/ssl/ssl-gnutls.c:908 -#: ../libpurple/plugins/ssl/ssl-nss.c:857 msgid "X.509 Certificates" msgstr "X.৫০৯ প্রত্যয়ন পত্র" @@ -3940,7 +2824,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ssl/ssl-gnutls.c:984 msgid "GNUTLS" msgstr "GNUTLS" @@ -3948,8 +2831,6 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ssl/ssl-gnutls.c:987 -#: ../libpurple/plugins/ssl/ssl-gnutls.c:989 msgid "Provides SSL support through GNUTLS." msgstr "GNUTLS এর মাধ্যমে এসএসএল সমর্থন প্রদান করে।" @@ -3959,7 +2840,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ssl/ssl-nss.c:934 msgid "NSS" msgstr "NSS" @@ -3967,8 +2847,6 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ssl/ssl-nss.c:937 -#: ../libpurple/plugins/ssl/ssl-nss.c:939 msgid "Provides SSL support through Mozilla NSS." msgstr "মজিলা NSS এর মাধ্যমে SSL সমর্থন প্রদান করে।" @@ -3978,7 +2856,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ssl/ssl.c:94 msgid "SSL" msgstr "SSL" @@ -3986,48 +2863,38 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ssl/ssl.c:97 ../libpurple/plugins/ssl/ssl.c:99 msgid "Provides a wrapper around SSL support libraries." msgstr "এসএসএল সমর্থন লাইব্রেরিসমূহের চারদিকে মোড়ক প্রদান করে।" -#: ../libpurple/plugins/statenotify.c:63 #, c-format msgid "%s is no longer away." msgstr "%s আর দূরে থাকবে না।" -#: ../libpurple/plugins/statenotify.c:65 #, c-format msgid "%s has gone away." msgstr "%s দূরে চলে গেছে।" -#: ../libpurple/plugins/statenotify.c:75 #, c-format msgid "%s has become idle." msgstr "%s এখন অলস।" -#: ../libpurple/plugins/statenotify.c:77 #, c-format msgid "%s is no longer idle." msgstr "%s আর অলস থাকবে না।" -#: ../libpurple/plugins/statenotify.c:86 #, c-format msgid "%s has signed on." msgstr "%s এখন অনলাইন।" -#: ../libpurple/plugins/statenotify.c:104 msgid "Notify When" msgstr "জানাবে যখন" -#: ../libpurple/plugins/statenotify.c:107 msgid "Buddy Goes _Away" msgstr "বন্ধু অনুপস্থিত (_A)" -#: ../libpurple/plugins/statenotify.c:110 msgid "Buddy Goes _Idle" msgstr "বন্ধু অলস (_I)" -#: ../libpurple/plugins/statenotify.c:113 msgid "Buddy _Signs On/Off" msgstr "বন্ধু সাইন অন/অফ (_S)" @@ -4037,7 +2904,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/statenotify.c:161 msgid "Buddy State Notification" msgstr "বন্ধুর অবস্থার প্রজ্ঞাপন" @@ -4045,8 +2911,6 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/statenotify.c:164 -#: ../libpurple/plugins/statenotify.c:167 msgid "" "Notifies in a conversation window when a buddy goes or returns from away or " "idle." @@ -4054,16 +2918,13 @@ "যখন বন্ধু অনুপস্থিত বা অলস থাকে বা এইসব থেকে ফিরে আসে তখন কথোপকথন উইন্ডোতে " "প্রজ্ঞাপন পাঠায়।" -#: ../libpurple/plugins/tcl/tcl.c:423 msgid "Tcl Plugin Loader" msgstr "টিসিএল প্লাগইন লোডকারী" -#: ../libpurple/plugins/tcl/tcl.c:425 ../libpurple/plugins/tcl/tcl.c:426 msgid "Provides support for loading Tcl plugins" msgstr "টিসিএল প্লাগইন লোড করার জন্য সমর্থন প্রদান করে" # tithi -#: ../libpurple/plugins/tcl/tcl.c:509 msgid "" "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, " "install ActiveTCL from http://www.activestate.com\n" @@ -4072,7 +2933,6 @@ "http://www.activestate.com থেকে সক্রিয় TCL সংস্থাপন করুন\n" # tithi -#: ../libpurple/protocols/bonjour/bonjour.c:93 msgid "" "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d." "pidgin.im/BonjourWindows for more information." @@ -4080,58 +2940,25 @@ "উইন্ডোজ টুলকিটের জন্য অ্যাপল বোনজুর খুঁজে পাওয়া যায়নি, আরও তথ্যের জন্য http://d." "pidgin.im/BonjourWindows এর FAQ দেখুন।" -#: ../libpurple/protocols/bonjour/bonjour.c:112 msgid "Unable to listen for incoming IM connections\n" msgstr "আগত আইএম সংযোগসূমহের জন্য শুনতে অক্ষম\n" -#: ../libpurple/protocols/bonjour/bonjour.c:139 msgid "" "Unable to establish connection with the local mDNS server. Is it running?" msgstr "স্থানীয় এমডিএনএস সার্ভারের সাথে সংযোগ স্থাপনে ব্যর্থ। এটা কি চলছে?" -#. Creating the options for the protocol -#: ../libpurple/protocols/bonjour/bonjour.c:381 -#: ../libpurple/protocols/bonjour/bonjour.c:709 -#: ../libpurple/protocols/gg/gg.c:579 -#: ../libpurple/protocols/jabber/jabber.c:1087 msgid "First name" msgstr "প্রথম নাম" -#: ../libpurple/protocols/bonjour/bonjour.c:383 -#: ../libpurple/protocols/bonjour/bonjour.c:712 -#: ../libpurple/protocols/gg/gg.c:574 -#: ../libpurple/protocols/jabber/jabber.c:1091 msgid "Last name" msgstr "শেষ নাম" -#: ../libpurple/protocols/bonjour/bonjour.c:387 -#: ../libpurple/protocols/bonjour/bonjour.c:715 -#: ../libpurple/protocols/gg/gg.c:441 -#: ../libpurple/protocols/jabber/buddy.c:323 -#: ../libpurple/protocols/jabber/buddy.c:1339 -#: ../libpurple/protocols/jabber/buddy.c:1352 -#: ../libpurple/protocols/jabber/buddy.c:2245 -#: ../libpurple/protocols/jabber/jabber.c:1079 -#: ../libpurple/protocols/qq/buddy_info.c:121 -#: ../libpurple/protocols/silc/ops.c:1055 -#: ../libpurple/protocols/silc/silc.c:1005 -#: ../libpurple/protocols/silc/silc.c:1246 -#: ../libpurple/protocols/silc/util.c:561 -#: ../libpurple/protocols/silc10/ops.c:1075 -#: ../libpurple/protocols/silc10/silc.c:706 -#: ../libpurple/protocols/silc10/silc.c:947 -#: ../libpurple/protocols/silc10/util.c:555 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1061 msgid "Email" msgstr "ই-মেইল" -#: ../libpurple/protocols/bonjour/bonjour.c:390 -#: ../libpurple/protocols/bonjour/bonjour.c:718 msgid "AIM Account" msgstr "এআইএম একাউন্ট" -#: ../libpurple/protocols/bonjour/bonjour.c:393 -#: ../libpurple/protocols/bonjour/bonjour.c:721 msgid "XMPP Account" msgstr "XMPP একাউন্ট" @@ -4145,389 +2972,256 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/bonjour/bonjour.c:526 -#: ../libpurple/protocols/bonjour/bonjour.c:528 msgid "Bonjour Protocol Plugin" msgstr "Bonjour প্রটোকল প্লাগইন" -#: ../libpurple/protocols/bonjour/bonjour.c:668 msgid "Purple Person" msgstr "পার্পেল ব্যক্তি" -#: ../libpurple/protocols/bonjour/bonjour.h:33 +#. Creating the options for the protocol +#, fuzzy +msgid "Local Port" +msgstr "এলাকা" + msgid "Bonjour" msgstr "Bonjour" -#: ../libpurple/protocols/bonjour/jabber.c:386 #, c-format msgid "%s has closed the conversation." msgstr "%s কথোপকথন বন্ধ করে দিয়েছে।" -#: ../libpurple/protocols/bonjour/jabber.c:478 -#: ../libpurple/protocols/bonjour/jabber.c:543 -#: ../libpurple/protocols/bonjour/jabber.c:588 -#: ../libpurple/protocols/bonjour/jabber.c:759 -#: ../libpurple/protocols/bonjour/jabber.c:777 msgid "Unable to send the message, the conversation couldn't be started." msgstr "বার্তা পাঠাতে অক্ষম, কথোপকথন শুরু হতে পারে নি।" -#: ../libpurple/protocols/bonjour/jabber.c:684 msgid "Cannot open socket" msgstr "সকেট খোলা যাচ্ছে না" -#: ../libpurple/protocols/bonjour/jabber.c:712 msgid "Could not bind socket to port" msgstr "পোর্টের সাথে সকেটকে সংযুক্ত করা যায়নি" -#: ../libpurple/protocols/bonjour/jabber.c:722 msgid "Could not listen on socket" msgstr "সকেট এ শোনা যাচ্ছে না" # tithi -#: ../libpurple/protocols/bonjour/mdns_win32.c:110 msgid "Error communicating with local mDNSResponder." msgstr "স্থানীয় mDNSResponder এর সঙ্গে যোগাযোগে ত্রুটি।" -#: ../libpurple/protocols/gg/gg.c:75 ../libpurple/proxy.c:2139 msgid "Invalid proxy settings" msgstr "অবৈধ প্রক্সি বিন্যাসনসমূহ" -#: ../libpurple/protocols/gg/gg.c:76 ../libpurple/proxy.c:2139 msgid "" "Either the host name or port number specified for your given proxy type is " "invalid." msgstr "আপনার প্রদত্ত প্রক্সির ধরনের জন্য উল্লেখিত হোস্ট নাম বা পোর্ট নম্বর অবৈধ।" -#: ../libpurple/protocols/gg/gg.c:110 ../libpurple/protocols/gg/gg.c:132 -#: ../libpurple/protocols/gg/gg.c:171 msgid "Token Error" msgstr "টোকেন ত্রুটি" -#: ../libpurple/protocols/gg/gg.c:111 ../libpurple/protocols/gg/gg.c:133 -#: ../libpurple/protocols/gg/gg.c:172 msgid "Unable to fetch the token.\n" msgstr "টোকেন আনতে অক্ষম।\n" -#: ../libpurple/protocols/gg/gg.c:249 ../libpurple/protocols/gg/gg.c:256 -#: ../libpurple/protocols/gg/gg.c:262 msgid "Save Buddylist..." msgstr "বন্ধুর তালিকা সংরক্ষণ করুন..." -#: ../libpurple/protocols/gg/gg.c:250 msgid "Your buddylist is empty, nothing was written to the file." msgstr "আপনার বন্ধু তালিকাটি ফাঁকা, ফাইলে কিছুই লেখা ছিল না।" -#: ../libpurple/protocols/gg/gg.c:257 msgid "Buddylist saved successfully!" msgstr "বন্ধু তালিকা সফলভাবে সংরক্ষিত হয়েছে!" -#: ../libpurple/protocols/gg/gg.c:260 #, c-format msgid "Couldn't write buddy list for %s to %s" msgstr "%1s এর জন্য %2s এ বন্ধুর তালিকা লিখতে পারেনি।" -#: ../libpurple/protocols/gg/gg.c:281 ../libpurple/protocols/gg/gg.c:282 msgid "Couldn't load buddylist" msgstr "বন্ধু-তালিকা লোড করা যায়নি।" -#: ../libpurple/protocols/gg/gg.c:298 msgid "Load Buddylist..." msgstr "বন্ধুর-তালিকা লোড করুন..." -#: ../libpurple/protocols/gg/gg.c:299 msgid "Buddylist loaded successfully!" msgstr "বন্ধু-তালিকা সফলভাবে লোড করা হয়েছে।" -#: ../libpurple/protocols/gg/gg.c:310 msgid "Save buddylist..." msgstr "বন্ধু-তালিকা সংরক্ষণ করুন..." -#: ../libpurple/protocols/gg/gg.c:320 ../libpurple/protocols/gg/gg.c:2206 msgid "Load buddylist from file..." msgstr "ফাইল থেকে বন্ধু-তালিকা লোড করুন..." -#: ../libpurple/protocols/gg/gg.c:353 msgid "Fill in the registration fields." msgstr "নিবন্ধন ক্ষেত্রে পূরণ করুন।" -#: ../libpurple/protocols/gg/gg.c:360 msgid "Passwords do not match." msgstr "গুপ্তসংকেত মিলে না।" -#: ../libpurple/protocols/gg/gg.c:370 msgid "Unable to register new account. Error occurred.\n" msgstr "নতুন একাউন্ট নিবন্ধন করতে ব্যর্থ। ত্রুটি দেখা দিয়েছে।\n" -#: ../libpurple/protocols/gg/gg.c:383 msgid "New Gadu-Gadu Account Registered" msgstr "নতুন গাদু-গাদু একাউন্ট নিবন্ধন করা হয়েছে" -#: ../libpurple/protocols/gg/gg.c:384 msgid "Registration completed successfully!" msgstr "নিবন্ধন সফলভাবে শেষ হয়েছে!" -#: ../libpurple/protocols/gg/gg.c:446 ../libpurple/protocols/gg/gg.c:714 -#: ../libpurple/protocols/jabber/jabber.c:1062 -#: ../libpurple/protocols/jabber/jabber.c:1065 -#: ../libpurple/protocols/jabber/jabber.c:1957 msgid "Password" msgstr "গুপ্তসংকেত" -#: ../libpurple/protocols/gg/gg.c:451 ../libpurple/protocols/gg/gg.c:719 msgid "Password (retype)" msgstr "গুপ্তসংকেত (পুনরায় টাইপ করুন)" -#: ../libpurple/protocols/gg/gg.c:456 ../libpurple/protocols/gg/gg.c:724 msgid "Enter current token" msgstr "বর্তমান টোকেন প্রবেশ করান" -#: ../libpurple/protocols/gg/gg.c:462 ../libpurple/protocols/gg/gg.c:730 msgid "Current token" msgstr "বর্তমান টোকেন" -#: ../libpurple/protocols/gg/gg.c:466 ../libpurple/protocols/gg/gg.c:467 msgid "Register New Gadu-Gadu Account" msgstr "নতুন গাদু-গাদু একাউন্ট নিবন্ধন করুন" -#: ../libpurple/protocols/gg/gg.c:468 msgid "Please, fill in the following fields" msgstr "অনুগ্রহ করে, নিচের ক্ষেত্রসমূহে পূরণ করুন" -#: ../libpurple/protocols/gg/gg.c:589 ../libpurple/protocols/gg/gg.c:969 -#: ../libpurple/protocols/gg/gg.c:1037 -#: ../libpurple/protocols/jabber/jabber.c:1099 -#: ../libpurple/protocols/oscar/oscar.c:3979 -#: ../libpurple/protocols/oscar/oscar.c:3987 msgid "City" msgstr "শহর" -#: ../libpurple/protocols/gg/gg.c:594 msgid "Year of birth" msgstr "জন্ম সন" -#: ../libpurple/protocols/gg/gg.c:597 ../libpurple/protocols/msn/msn.c:2023 -#: ../libpurple/protocols/msnp9/msn.c:1729 -#: ../libpurple/protocols/myspace/user.c:130 -#: ../libpurple/protocols/oscar/oscar.c:3938 -#: ../libpurple/protocols/qq/buddy_info.c:119 -#: ../libpurple/protocols/qq/qq.c:314 ../libpurple/protocols/qq/qq.c:317 -#: ../libpurple/protocols/qq/qq.c:320 ../libpurple/protocols/qq/qq.c:324 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1091 msgid "Gender" msgstr "লিঙ্গ" -#: ../libpurple/protocols/gg/gg.c:598 msgid "Male or female" msgstr "পুরুষ অথবা মহিলা" -#: ../libpurple/protocols/gg/gg.c:599 -#: ../libpurple/protocols/oscar/oscar.c:3938 -#: ../libpurple/protocols/qq/buddy_info.c:67 -#: ../libpurple/protocols/qq/qq.c:314 msgid "Male" msgstr "পুরুষ" -#: ../libpurple/protocols/gg/gg.c:600 -#: ../libpurple/protocols/oscar/oscar.c:3938 -#: ../libpurple/protocols/qq/buddy_info.c:68 -#: ../libpurple/protocols/qq/qq.c:317 msgid "Female" msgstr "মহিলা" -#: ../libpurple/protocols/gg/gg.c:604 msgid "Only online" msgstr "শুধুমাত্র অনলাইন" -#: ../libpurple/protocols/gg/gg.c:608 ../libpurple/protocols/gg/gg.c:609 msgid "Find buddies" msgstr "বন্ধু খোঁজ করুন" -#: ../libpurple/protocols/gg/gg.c:610 msgid "Please, enter your search criteria below" msgstr "অনুগ্রহ করে, আপনার অনুসন্ধান শর্তাবলী নীচে প্রবেশ করান" -#: ../libpurple/protocols/gg/gg.c:644 msgid "Fill in the fields." msgstr "ক্ষেত্রসমূহে পূরণ করুন।" -#: ../libpurple/protocols/gg/gg.c:656 msgid "Your current password is different from the one that you specified." msgstr "আপনার বর্তমান গুপ্তসংকেতটি আপনার উল্লেখিত একটি গুপ্তসংকেত থেকে পৃথক" -#: ../libpurple/protocols/gg/gg.c:670 msgid "Unable to change password. Error occurred.\n" msgstr "গুপ্তসংকেত পরিবর্তনে অক্ষম। ত্রুটি দেখা দিয়েছে।\n" -#: ../libpurple/protocols/gg/gg.c:679 msgid "Change password for the Gadu-Gadu account" msgstr "গাদু-গাদু একাউন্টের জন্য গুপ্তসংকেত পরিবর্তন করুন" -#: ../libpurple/protocols/gg/gg.c:680 msgid "Password was changed successfully!" msgstr "গুপ্তসংকেত সফলভাবে পরিবর্তিত হয়েছিল!" -#: ../libpurple/protocols/gg/gg.c:709 msgid "Current password" msgstr "বর্তমান গুপ্তসংকেত" -#: ../libpurple/protocols/gg/gg.c:734 msgid "Please, enter your current password and your new password for UIN: " msgstr "" "অনুগ্রহ করে, UIN-এর জন্য আপনার বর্তমান গুপ্তসংকেত এবং আপনার নতুন গুপ্তসংকেত প্রবেশ " "করান:" -#: ../libpurple/protocols/gg/gg.c:738 ../libpurple/protocols/gg/gg.c:739 msgid "Change Gadu-Gadu Password" msgstr "গাদু-গাদু গুপ্তসংকেত পরিবর্তন করুন" -#: ../libpurple/protocols/gg/gg.c:804 #, c-format msgid "Select a chat for buddy: %s" msgstr "বন্ধুর জন্য আড্ডা নির্বাচন করুন: %s" -#: ../libpurple/protocols/gg/gg.c:807 ../libpurple/protocols/gg/gg.c:808 msgid "Add to chat..." msgstr "আড্ডায় যোগ দিন..." -#: ../libpurple/protocols/gg/gg.c:930 -#: ../libpurple/protocols/jabber/buddy.c:2062 -#: ../libpurple/protocols/msn/state.c:29 ../libpurple/protocols/msn/state.c:30 -#: ../libpurple/protocols/msn/state.c:37 ../libpurple/protocols/msn/state.c:38 -#: ../libpurple/protocols/msnp9/state.c:29 -#: ../libpurple/protocols/msnp9/state.c:30 -#: ../libpurple/protocols/msnp9/state.c:37 -#: ../libpurple/protocols/msnp9/state.c:38 -#: ../libpurple/protocols/novell/novell.c:2834 -#: ../libpurple/protocols/qq/qq.c:409 -#: ../libpurple/protocols/yahoo/yahoo.c:3179 ../libpurple/status.c:160 -#: ../pidgin/gtkdocklet.c:545 ../pidgin/gtkstatusbox.c:1095 msgid "Available" msgstr "সহজলভ্য" #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#: ../libpurple/protocols/gg/gg.c:933 ../libpurple/protocols/irc/irc.c:556 -#: ../libpurple/protocols/irc/msgs.c:364 -#: ../libpurple/protocols/jabber/buddy.c:2066 -#: ../libpurple/protocols/novell/novell.c:2837 -#: ../libpurple/protocols/oscar/oscar.c:750 -#: ../libpurple/protocols/oscar/oscar.c:5853 -#: ../libpurple/protocols/qq/qq.c:267 ../libpurple/protocols/qq/qq.c:413 -#: ../libpurple/protocols/silc/buddy.c:1491 -#: ../libpurple/protocols/silc10/buddy.c:1491 -#: ../libpurple/protocols/yahoo/yahoo.c:3756 -#: ../libpurple/protocols/yahoo/yahoo.c:3830 ../libpurple/status.c:163 -#: ../pidgin/gtkdocklet.c:549 ../pidgin/gtkprefs.c:2090 -#: ../pidgin/gtkstatusbox.c:1096 msgid "Away" msgstr "এখানে নেই" -#: ../libpurple/protocols/gg/gg.c:958 ../libpurple/protocols/gg/gg.c:1028 -#: ../libpurple/protocols/oscar/oscar.c:2958 -#: ../libpurple/protocols/oscar/oscar.c:3905 msgid "UIN" msgstr "UIN" -#: ../libpurple/protocols/gg/gg.c:961 ../libpurple/protocols/gg/gg.c:1031 -#: ../libpurple/protocols/jabber/buddy.c:2239 -#: ../libpurple/protocols/jabber/buddy.c:2425 -#: ../libpurple/protocols/oscar/oscar.c:3916 -#: ../libpurple/protocols/silc/ops.c:1004 -#: ../libpurple/protocols/silc10/ops.c:1024 msgid "First Name" msgstr "প্রথম নাম" -#: ../libpurple/protocols/gg/gg.c:974 ../libpurple/protocols/gg/gg.c:1040 msgid "Birth Year" msgstr "জন্ম সাল" -#: ../libpurple/protocols/gg/gg.c:1022 ../libpurple/protocols/gg/gg.c:1091 -#: ../libpurple/protocols/oscar/oscar.c:4092 msgid "Unable to display the search results." msgstr "অনুসন্ধান ফলাফল প্রদর্শন করতে অক্ষম।" -#: ../libpurple/protocols/gg/gg.c:1082 msgid "Gadu-Gadu Public Directory" msgstr "গাদু-গাদু জনসাধারণ নির্দেশিকা" -#: ../libpurple/protocols/gg/gg.c:1083 msgid "Search results" msgstr "অনুসন্ধান ফলাফল" -#: ../libpurple/protocols/gg/gg.c:1122 msgid "No matching users found" msgstr "কোনো সমন্বয়কারী ব্যবহারকারী পাওয়া যায়নি।" -#: ../libpurple/protocols/gg/gg.c:1123 msgid "There are no users matching your search criteria." msgstr "আপনার অনুসন্ধানের শর্তাবলী সাথে মেলে এমন কোনো ব্যবহারকারী নেই।" -#: ../libpurple/protocols/gg/gg.c:1383 ../libpurple/protocols/gg/gg.c:1541 msgid "Unable to read socket" msgstr "সকেট পড়তে ব্যর্থ" -#: ../libpurple/protocols/gg/gg.c:1475 msgid "Buddy list downloaded" msgstr "বন্ধু তালিকা ডাউনলোড করা হয়েছে" -#: ../libpurple/protocols/gg/gg.c:1476 msgid "Your buddy list was downloaded from the server." msgstr "আপনার বন্ধু তালিকা সার্ভার থেকে ডাউনলোড করা হয়েছে।" -#: ../libpurple/protocols/gg/gg.c:1483 msgid "Buddy list uploaded" msgstr "বন্ধু তালিকা আপলোড করা হয়েছে" -#: ../libpurple/protocols/gg/gg.c:1484 msgid "Your buddy list was stored on the server." msgstr "আপনার বন্ধু তালিকাটি সার্ভারে সংরক্ষণ করা হয়েছিল।" -#: ../libpurple/protocols/gg/gg.c:1578 ../libpurple/protocols/gg/gg.c:1783 msgid "Connection failed." msgstr "সংযোগ ব্যর্থ।" -#: ../libpurple/protocols/gg/gg.c:1706 msgid "Add to chat" msgstr "আড্ডার যোগ দিন" -#: ../libpurple/protocols/gg/gg.c:1734 msgid "Chat _name:" msgstr "আড্ডার নাম (_n):" -#: ../libpurple/protocols/gg/gg.c:2079 msgid "Chat error" msgstr "আড্ডা ত্রুটি" -#: ../libpurple/protocols/gg/gg.c:2080 msgid "This chat name is already in use" msgstr "এই আড্ডা নামটি ইতোমধ্যে ব্যবহৃত হচ্ছে" -#: ../libpurple/protocols/gg/gg.c:2159 msgid "Not connected to the server." msgstr "সার্ভারের সাথে সংযুক্ত নয়।" -#: ../libpurple/protocols/gg/gg.c:2178 msgid "Find buddies..." msgstr "বন্ধু খুঁজুন..." -#: ../libpurple/protocols/gg/gg.c:2184 msgid "Change password..." msgstr "গুপ্তসঙ্কেত পরিবর্তন করুন..." -#: ../libpurple/protocols/gg/gg.c:2190 msgid "Upload buddylist to Server" msgstr "সার্ভারে বন্ধু তালিকা আপলোড করুন" -#: ../libpurple/protocols/gg/gg.c:2194 msgid "Download buddylist from Server" msgstr "সার্ভার থেকে বন্ধু তালিকা ডাউনলোড করুন" -#: ../libpurple/protocols/gg/gg.c:2198 msgid "Delete buddylist from Server" msgstr "সার্ভার থেকে বন্ধু তালিকা মুছে ফেলুন" -#: ../libpurple/protocols/gg/gg.c:2202 msgid "Save buddylist to file..." msgstr "ফাইলে বন্ধুর তালিকা সংরক্ষণ করুন..." @@ -4542,152 +3236,82 @@ #. id #. name #. version -#: ../libpurple/protocols/gg/gg.c:2305 msgid "Gadu-Gadu Protocol Plugin" msgstr "Gadu-Gadu প্রটোকল প্লাগইন" #. summary -#: ../libpurple/protocols/gg/gg.c:2306 msgid "Polish popular IM" msgstr "জনপ্রিয় আইএম পরিমার্জন করুন" -#: ../libpurple/protocols/gg/gg.c:2354 msgid "Gadu-Gadu User" msgstr "গাদু-গাদু ব্যবহারকারী" -#: ../libpurple/protocols/irc/cmds.c:43 -#: ../libpurple/protocols/silc/silc.c:1890 -#: ../libpurple/protocols/silc10/silc.c:1609 #, c-format msgid "Unknown command: %s" msgstr "অজানা নির্দেশ: %s" -#: ../libpurple/protocols/irc/cmds.c:536 -#: ../libpurple/protocols/jabber/chat.c:617 -#: ../libpurple/protocols/silc/silc.c:1580 -#: ../libpurple/protocols/silc10/silc.c:1299 #, c-format msgid "current topic is: %s" msgstr "বর্তমান বিষয় হচ্ছে: %s" -#: ../libpurple/protocols/irc/cmds.c:540 -#: ../libpurple/protocols/jabber/chat.c:621 -#: ../libpurple/protocols/silc/silc.c:1584 -#: ../libpurple/protocols/silc10/silc.c:1303 msgid "No topic is set" msgstr "কোনো বিষয় নির্ধারণ করা হয়নি" -#: ../libpurple/protocols/irc/dcc_send.c:304 -#: ../libpurple/protocols/irc/dcc_send.c:345 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:318 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:327 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:336 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1110 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1514 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1565 msgid "File Transfer Failed" msgstr "ফাইল বিনিময় ব্যর্থ" -#: ../libpurple/protocols/irc/dcc_send.c:305 -#: ../libpurple/protocols/irc/dcc_send.c:346 msgid "Could not open a listening port." msgstr "শোনার কোনো পোর্ট খুলতে পারছে না।" -#: ../libpurple/protocols/irc/irc.c:77 msgid "Error displaying MOTD" msgstr "MOTD দেখানোর সময় ত্রুটি দেখা দিয়েছে" -#: ../libpurple/protocols/irc/irc.c:77 msgid "No MOTD available" msgstr "কোনো MOTD সহজলভ্য নয়" -#: ../libpurple/protocols/irc/irc.c:78 msgid "There is no MOTD associated with this connection." msgstr "এই সংযোগের সাথে সম্পর্কিত কোনো MOTD নেই।" -#: ../libpurple/protocols/irc/irc.c:81 #, c-format msgid "MOTD for %s" msgstr "%s এর জন্য MOTD" -#: ../libpurple/protocols/irc/irc.c:127 ../libpurple/protocols/irc/irc.c:167 -#: ../libpurple/protocols/irc/irc.c:645 ../libpurple/protocols/irc/irc.c:674 -#: ../libpurple/protocols/myspace/myspace.c:2060 msgid "Server has disconnected" msgstr "সার্ভার বিচ্ছিন্ন হয়েছে" -#: ../libpurple/protocols/irc/irc.c:258 msgid "View MOTD" msgstr "MOTD প্রদর্শন করুন" -#: ../libpurple/protocols/irc/irc.c:270 ../libpurple/protocols/silc/chat.c:33 -#: ../libpurple/protocols/silc10/chat.c:33 msgid "_Channel:" msgstr "চ্যানেল (_C):" -#: ../libpurple/protocols/irc/irc.c:276 -#: ../libpurple/protocols/jabber/chat.c:60 ../pidgin/gtkaccount.c:553 msgid "_Password:" msgstr "গুপ্তসংকেত (_P):" # tithi -#: ../libpurple/protocols/irc/irc.c:309 msgid "IRC nicks may not contain whitespace" msgstr "IRC এর ডাকনামসমূহ ফাঁকা স্থান ধারণ নাও করতে পারে" #. 1. connect to server #. connect to the server -#: ../libpurple/protocols/irc/irc.c:330 -#: ../libpurple/protocols/jabber/jabber.c:1423 -#: ../libpurple/protocols/msn/session.c:406 -#: ../libpurple/protocols/msnp9/session.c:368 -#: ../libpurple/protocols/myspace/myspace.c:2196 -#: ../libpurple/protocols/novell/novell.c:2199 -#: ../libpurple/protocols/oscar/oscar.c:1449 -#: ../libpurple/protocols/sametime/sametime.c:3784 -#: ../libpurple/protocols/simple/simple.c:1957 -#: ../libpurple/protocols/yahoo/yahoo.c:3004 -#: ../libpurple/protocols/zephyr/zephyr.c:1588 ../pidgin/gtkstatusbox.c:693 msgid "Connecting" msgstr "সংযোগ করছে" -#: ../libpurple/protocols/irc/irc.c:340 -#: ../libpurple/protocols/jabber/jabber.c:755 -#: ../libpurple/protocols/jabber/jabber.c:1223 msgid "SSL support unavailable" msgstr "এসএসএল সমর্থন অপ্রাপ্য" -#: ../libpurple/protocols/irc/irc.c:353 -#: ../libpurple/protocols/myspace/myspace.c:2214 -#: ../libpurple/protocols/simple/simple.c:485 -#: ../libpurple/protocols/simple/simple.c:1860 msgid "Couldn't create socket" msgstr "সকেট তৈরী করা যাচ্ছে না" -#: ../libpurple/protocols/irc/irc.c:451 -#: ../libpurple/protocols/oscar/oscar.c:1445 msgid "Couldn't connect to host" msgstr "হোস্টের সাথে সংযুক্ত করা যাচ্ছে না" -#: ../libpurple/protocols/irc/irc.c:640 ../libpurple/protocols/irc/irc.c:669 -#: ../libpurple/protocols/myspace/myspace.c:2054 msgid "Read error" msgstr "পড়ায় ত্রুটি" -#: ../libpurple/protocols/irc/irc.c:810 -#: ../libpurple/protocols/silc/chat.c:1401 -#: ../libpurple/protocols/silc10/chat.c:1426 -#: ../libpurple/protocols/yahoo/yahoochat.c:1508 msgid "Users" msgstr "ব্যবহারকারীরা" -#: ../libpurple/protocols/irc/irc.c:813 -#: ../libpurple/protocols/sametime/sametime.c:3431 -#: ../libpurple/protocols/silc/chat.c:1404 -#: ../libpurple/protocols/silc/ops.c:1406 -#: ../libpurple/protocols/silc10/chat.c:1429 -#: ../libpurple/protocols/silc10/ops.c:1382 -#: ../libpurple/protocols/yahoo/yahoochat.c:1517 msgid "Topic" msgstr "বিষয়" @@ -4699,54 +3323,29 @@ #. *< id #. *< name #. *< version -#: ../libpurple/protocols/irc/irc.c:952 msgid "IRC Protocol Plugin" msgstr "আইআরসি প্রটোকল প্লাগইন" # tithi #. * summary -#: ../libpurple/protocols/irc/irc.c:953 msgid "The IRC Protocol Plugin that Sucks Less" msgstr "IRC প্রটোকল প্লাগইন যা কম সমস্য়া তৈরি করে" #. host to connect to -#: ../libpurple/protocols/irc/irc.c:978 ../libpurple/protocols/irc/msgs.c:377 -#: ../libpurple/protocols/msn/msn.c:2622 -#: ../libpurple/protocols/msnp9/msn.c:2326 -#: ../libpurple/protocols/oscar/oscar.c:6857 -#: ../libpurple/protocols/sametime/sametime.c:5787 -#: ../libpurple/protocols/silc/ops.c:1262 -#: ../libpurple/protocols/silc/ops.c:1356 -#: ../libpurple/protocols/silc10/ops.c:1244 -#: ../libpurple/protocols/silc10/ops.c:1347 -#: ../libpurple/protocols/simple/simple.c:2141 -#: ../libpurple/protocols/toc/toc.c:2327 msgid "Server" msgstr "সার্ভার" #. port to connect to -#: ../libpurple/protocols/irc/irc.c:981 ../libpurple/protocols/msn/msn.c:2627 -#: ../libpurple/protocols/msnp9/msn.c:2331 -#: ../libpurple/protocols/oscar/oscar.c:6860 -#: ../libpurple/protocols/sametime/sametime.c:5792 -#: ../libpurple/protocols/silc/silc.c:2181 -#: ../libpurple/protocols/silc10/silc.c:1904 -#: ../libpurple/protocols/toc/toc.c:2331 msgid "Port" msgstr "পোর্ট" -#: ../libpurple/protocols/irc/irc.c:984 msgid "Encodings" msgstr "সঙ্কেতায়নসমূহ" # tithi -#: ../libpurple/protocols/irc/irc.c:987 msgid "Auto-detect incoming UTF-8" msgstr "আসন্ন UTF-8 স্বয়ং-শনাক্ত করে" -#: ../libpurple/protocols/irc/irc.c:993 ../libpurple/protocols/irc/msgs.c:371 -#: ../libpurple/protocols/silc/silc.c:1244 -#: ../libpurple/protocols/silc10/silc.c:945 msgid "Real name" msgstr "আসল নাম" @@ -4754,175 +3353,132 @@ #. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT); #. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); #. -#: ../libpurple/protocols/irc/irc.c:1001 msgid "Use SSL" msgstr "SSL ব্যবহার করুন" -#: ../libpurple/protocols/irc/msgs.c:196 msgid "Bad mode" msgstr "খারাপ মেজাজ" # tithi -#: ../libpurple/protocols/irc/msgs.c:219 #, c-format msgid "Ban on %s by %s, set %s ago" msgstr "%2s দ্বারা %1s এ বাধা, %3s আগে নির্ধারণ করুন" -#: ../libpurple/protocols/irc/msgs.c:223 #, c-format msgid "Ban on %s" msgstr "%s এ বাধা দিচ্ছে" -#: ../libpurple/protocols/irc/msgs.c:238 msgid "End of ban list" msgstr "নিষিদ্ধ তালিকার শেষে" -#: ../libpurple/protocols/irc/msgs.c:252 #, c-format msgid "You are banned from %s." msgstr "আপনি %s থেকে নিষিদ্ধ।" -#: ../libpurple/protocols/irc/msgs.c:253 msgid "Banned" msgstr "নিষিদ্ধ করা হয়েছে" -#: ../libpurple/protocols/irc/msgs.c:270 #, c-format msgid "Cannot ban %s: banlist is full" msgstr "%s নিষিদ্ধ করা যাচ্ছে না: নিষিদ্ধ তালিকা পূর্ণ" -#: ../libpurple/protocols/irc/msgs.c:355 msgid " (ircop)" msgstr "(ircop)" -#: ../libpurple/protocols/irc/msgs.c:356 msgid " (identified)" msgstr "(শনাক্তকৃত)" -#: ../libpurple/protocols/irc/msgs.c:357 -#: ../libpurple/protocols/oscar/oscar.c:3906 -#: ../libpurple/protocols/silc/ops.c:1435 -#: ../libpurple/protocols/silc10/ops.c:1414 msgid "Nick" msgstr "ডাকনাম" # tithi -#: ../libpurple/protocols/irc/msgs.c:383 -#: ../libpurple/protocols/silc/ops.c:1281 -#: ../libpurple/protocols/silc10/ops.c:1272 msgid "Currently on" msgstr "বর্তমানে" -#: ../libpurple/protocols/irc/msgs.c:388 msgid "Idle for" msgstr "এর জন্য অলস" -#: ../libpurple/protocols/irc/msgs.c:391 msgid "Online since" msgstr "যখন থেকে অনলাইন " -#: ../libpurple/protocols/irc/msgs.c:395 msgid "Defining adjective:" msgstr "বিশেষন নির্ধারন করছে:" # tithi -#: ../libpurple/protocols/irc/msgs.c:395 msgid "Glorious" msgstr "চমৎকার" -#: ../libpurple/protocols/irc/msgs.c:479 #, c-format msgid "%s has changed the topic to: %s" msgstr "%1s বিষয় পরিবর্তন করছে: %2s" -#: ../libpurple/protocols/irc/msgs.c:481 #, c-format msgid "%s has cleared the topic." msgstr "%s বিষয়টি পরিস্কার করেছে।" -#: ../libpurple/protocols/irc/msgs.c:489 #, c-format msgid "The topic for %s is: %s" msgstr "%1s এর জন্য বিষয় হলো: %2s" -#: ../libpurple/protocols/irc/msgs.c:507 #, c-format msgid "Unknown message '%s'" msgstr "অজানা বার্তা '%s'" -#: ../libpurple/protocols/irc/msgs.c:508 msgid "Unknown message" msgstr "অজানা বার্তা" -#: ../libpurple/protocols/irc/msgs.c:508 msgid "The IRC server received a message it did not understand." msgstr "IRC সার্ভার এমন একটি বার্তা পেয়েছে যা এটা বুঝতে পারেনি।" -#: ../libpurple/protocols/irc/msgs.c:529 #, c-format msgid "Users on %s: %s" msgstr "%1s এর ব্যবহারকারী: %2s" -#: ../libpurple/protocols/irc/msgs.c:636 msgid "Time Response" msgstr "সাড়া দেওয়ার সময়" -#: ../libpurple/protocols/irc/msgs.c:637 msgid "The IRC server's local time is:" msgstr "আইআরসি সার্ভারের স্থানীয় সময় হলো:" -#: ../libpurple/protocols/irc/msgs.c:648 msgid "No such channel" msgstr "এমন কোনো চ্যানেল নেই" #. does this happen? -#: ../libpurple/protocols/irc/msgs.c:659 msgid "no such channel" msgstr "এমন কোনো চ্যানেল নেই" -#: ../libpurple/protocols/irc/msgs.c:662 msgid "User is not logged in" msgstr "ব্যবহারকারী লগইন অবস্থায় নেই" -#: ../libpurple/protocols/irc/msgs.c:667 msgid "No such nick or channel" msgstr "এমন কোনো ডাকনাম বা চ্যানেল নেই" -#: ../libpurple/protocols/irc/msgs.c:687 msgid "Could not send" msgstr "পাঠানো সম্ভব হয়নি" -#: ../libpurple/protocols/irc/msgs.c:743 #, c-format msgid "Joining %s requires an invitation." msgstr "%s এর অংশগ্রহনের জন্যে আমন্ত্রণ প্রয়োজন" -#: ../libpurple/protocols/irc/msgs.c:744 msgid "Invitation only" msgstr "শুধুমাত্র আমন্ত্রণ" -#: ../libpurple/protocols/irc/msgs.c:860 #, c-format msgid "You have been kicked by %s: (%s)" msgstr "%1s দ্বারা আপনাকে বের করে দেয়া হয়েছে: (%2s)" #. Remove user from channel -#: ../libpurple/protocols/irc/msgs.c:865 ../libpurple/protocols/silc/ops.c:714 -#: ../libpurple/protocols/silc10/ops.c:720 #, c-format msgid "Kicked by %s (%s)" msgstr "%1s (%2s) দ্বারা বহিষ্কৃত" -#: ../libpurple/protocols/irc/msgs.c:888 #, c-format msgid "mode (%s %s) by %s" msgstr "%s দ্বারা (%s %s) পরিমন্ডল" -#: ../libpurple/protocols/irc/msgs.c:978 ../libpurple/protocols/irc/msgs.c:979 msgid "Invalid nickname" msgstr "অবৈধ ডাকনাম" -#: ../libpurple/protocols/irc/msgs.c:980 msgid "" "Your selected nickname was rejected by the server. It probably contains " "invalid characters." @@ -4930,7 +3486,6 @@ "আপনার নির্বাচিত ডাকনামটি সার্ভার দ্বারা বাতিল করা হয়েছে। এটি সম্ভবত অবৈধ বর্ণচিহ্ন " "ধারণ করে।" -#: ../libpurple/protocols/irc/msgs.c:985 msgid "" "Your selected account name was rejected by the server. It probably contains " "invalid characters." @@ -4938,54 +3493,41 @@ "আপনার নির্বাচিত একাউন্ট নাম সার্ভার থেকে বাতিল করা হয়েছে। এটি সম্ভবত অবৈধ " "বর্ণচিহ্ন ধারণ করে।" -#: ../libpurple/protocols/irc/msgs.c:1033 msgid "Cannot change nick" msgstr "ডাকনাম পরিবর্তন করতে পারে না" -#: ../libpurple/protocols/irc/msgs.c:1033 msgid "Could not change nick" msgstr "ডাকনাম পরিবর্তন করতে পারেনি" -#: ../libpurple/protocols/irc/msgs.c:1058 #, c-format msgid "You have parted the channel%s%s" msgstr "আপনি চ্যানেল%s%s বিভক্ত করেছেন" -#: ../libpurple/protocols/irc/msgs.c:1102 msgid "Error: invalid PONG from server" msgstr "ত্রুটি: সার্ভার থেকে অবৈধ PONG" -#: ../libpurple/protocols/irc/msgs.c:1104 #, c-format msgid "PING reply -- Lag: %lu seconds" msgstr "PING উত্তর ‌‌-- পরে: %lu সেকেন্ড" -#: ../libpurple/protocols/irc/msgs.c:1195 #, c-format msgid "Cannot join %s: Registration is required." msgstr "%s যুক্ত করতে পারে না: নিবন্ধন আবশ্যক।" -#: ../libpurple/protocols/irc/msgs.c:1196 -#: ../libpurple/protocols/silc/ops.c:1106 -#: ../libpurple/protocols/silc10/ops.c:1128 msgid "Cannot join channel" msgstr "চ্যানেলে অংশগ্রহণ করতে পারে না" -#: ../libpurple/protocols/irc/msgs.c:1230 msgid "Nick or channel is temporarily unavailable." msgstr "ডাকনাম বা চ্যানেল সাময়িকভাবে অপ্রাপ্য" -#: ../libpurple/protocols/irc/msgs.c:1242 #, c-format msgid "Wallops from %s" msgstr "%s থেকে Wallop" # tithi -#: ../libpurple/protocols/irc/parse.c:124 msgid "action <action to perform>: Perform an action." msgstr "কর্ম &1lt;&2gt সম্পন্ন করার কাজ;: একটি কাজ সম্পন্ন করেন।" -#: ../libpurple/protocols/irc/parse.c:125 msgid "" "away [message]: Set an away message, or use no message to return from being " "away." @@ -4994,15 +3536,12 @@ "অনুপস্থিত আবস্থা থেকে ফিরে আসুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:126 msgid "ctcp : sends ctcp msg to nick." msgstr "ctcp : ডাকনামকে ctcp বার্তা পাঠায়।" -#: ../libpurple/protocols/irc/parse.c:127 msgid "chanserv: Send a command to chanserv" msgstr "chanserv: chanserv এ নির্দেশ পাঠান" -#: ../libpurple/protocols/irc/parse.c:128 msgid "" "deop <nick1> [nick2] ...: Remove channel operator status from " "someone. You must be a channel operator to do this." @@ -5010,7 +3549,6 @@ "deop &1lt;ডাকনাম১&2gt; [ডাকনাম২] ...: কারও কাছ থেকে চ্যনেল অপারেটর অবস্থা মুছে " "ফেলুন। এটি করতে আপনাকে অবশ্যই চ্যানেল পরিচালক হতে হবে।" -#: ../libpurple/protocols/irc/parse.c:129 msgid "" "devoice <nick1> [nick2] ...: Remove channel voice status from " "someone, preventing them from speaking if the channel is moderated (+m). You " @@ -5021,7 +3559,6 @@ "আপনাকে অবশ্যই চ্যানেল অপারেটর হতে হবে।" # tithi -#: ../libpurple/protocols/irc/parse.c:130 msgid "" "invite <nick> [room]: Invite someone to join you in the specified " "channel, or the current channel." @@ -5030,7 +3567,6 @@ "চ্যানেলে যুক্ত করাতে কাউকে আমন্ত্রন জানান।" # tithi -#: ../libpurple/protocols/irc/parse.c:131 msgid "" "j <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " "channels, optionally providing a channel key for each if needed." @@ -5039,7 +3575,6 @@ "ঐচ্ছিকভাবে একটি চ্যানেল কী প্রদান করে এক বা একাধিক চ্যানেল প্রবেশ করান।" # tithi -#: ../libpurple/protocols/irc/parse.c:132 msgid "" "join <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " "channels, optionally providing a channel key for each if needed." @@ -5048,7 +3583,6 @@ "প্রত্যেককে ঐচ্ছিকভাবে একটি চ্যানেল কী প্রদান করে এক বা একাধিক চ্যানেল প্রবেশ করান।" # tithi -#: ../libpurple/protocols/irc/parse.c:133 msgid "" "kick <nick> [message]: Remove someone from a channel. You must be a " "channel operator to do this." @@ -5056,7 +3590,6 @@ "মুছে ফেলা &1lt;ডাকনাম&2gt; [বার্তা]: একটি চ্যানেল থেকে কাউকে অপসারণ করুন। এটা " "করতে আপনাকে অবশ্যই চ্যানেলে অপারেটর হতে হবে।" -#: ../libpurple/protocols/irc/parse.c:134 msgid "" "list: Display a list of chat rooms on the network. Warning, some servers " "may disconnect you upon doing this." @@ -5065,17 +3598,14 @@ "disconnect you upon doing this" # tithi -#: ../libpurple/protocols/irc/parse.c:135 msgid "me <action to perform>: Perform an action." msgstr "আমাকে &1lt;সম্পাদনার কাজ&2gt;: একটি কাজ সম্পাদন করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:136 msgid "memoserv: Send a command to memoserv" msgstr "স্মৃতি সার্ভার: স্মৃতি সার্ভারে একটি নির্দেশ পাঠান" # tithi -#: ../libpurple/protocols/irc/parse.c:137 msgid "" "mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel " "or user mode." @@ -5084,7 +3614,6 @@ "ব্যবহারকারীর মোড নির্ধারন বা অনির্ধারণ করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:138 msgid "" "msg <nick> <message>: Send a private message to a user (as " "opposed to a channel)." @@ -5092,26 +3621,20 @@ "বার্তা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;: একজন ব্যবহারকারীকে একটি ব্যক্তিগত " "বার্তা পাঠান (একটি চ্যানেলের বিপরীতে)।" -#: ../libpurple/protocols/irc/parse.c:139 msgid "names [channel]: List the users currently in a channel." msgstr "নামসমূহ [চ্যানেল১]: চ্যানেলে বর্তমান ব্যবহারকারীদের তালিকা করুন।" -#: ../libpurple/protocols/irc/parse.c:140 -#: ../libpurple/protocols/jabber/jabber.c:2543 msgid "nick <new nickname>: Change your nickname." msgstr "ডাকনাম &1lt;নতুন ডাকনাম&2gt;: আপনার ডাকনাম পরিবর্তন করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:141 msgid "nickserv: Send a command to nickserv" msgstr "ডাকনাম-সার্ভার: ডাকনাম-সার্ভারে একটি নির্দেশ পাঠান" -#: ../libpurple/protocols/irc/parse.c:142 msgid "notice <target<: Send a notice to a user or channel." msgstr "ঘোষণা &1lt;লক্ষ্য&2lt;: ব্যবহারকারীর কাছে বা চ্যানেলে একটি ঘোষণা পাঠান।" # tithi -#: ../libpurple/protocols/irc/parse.c:143 msgid "" "op <nick1> [nick2] ...: Grant channel operator status to someone. You " "must be a channel operator to do this." @@ -5120,7 +3643,6 @@ "মেমে নিন। এটা করতে আপনাকে অবশ্যই একজন চ্যানেল অপারেটর হতে হবে।" # tithi -#: ../libpurple/protocols/irc/parse.c:144 msgid "" "operwall <message>: If you don't know what this is, you probably " "can't use it." @@ -5129,12 +3651,10 @@ "ব্যবহার করতে পারবেন না।" # tithi -#: ../libpurple/protocols/irc/parse.c:145 msgid "operserv: Send a command to operserv" msgstr "অপারেটর-সার্ভার: অপারেটর-সার্ভারে একটি নির্দেশ পাঠান" # tithi -#: ../libpurple/protocols/irc/parse.c:146 msgid "" "part [room] [message]: Leave the current channel, or a specified channel, " "with an optional message." @@ -5143,7 +3663,6 @@ "ত্যাগ করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:147 msgid "" "ping [nick]: Asks how much lag a user (or the server if no user specified) " "has." @@ -5152,7 +3671,6 @@ "ব্যবহারকারী উল্লেখিত না থাকে) করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:148 msgid "" "query <nick> <message>: Send a private message to a user (as " "opposed to a channel)." @@ -5160,16 +3678,13 @@ "জিজ্ঞাসা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;: একজন ব্যবহারকারীকে একটি ব্যক্তিগত " "বার্তা পাঠান (একটি চ্যানেলের বিপরীত হিসেবে)।" -#: ../libpurple/protocols/irc/parse.c:149 msgid "quit [message]: Disconnect from the server, with an optional message." msgstr "প্রস্থান করুন [বার্তা]: একটি ঐচ্ছিক বার্তাসহ, সার্ভারের থেকে বিচ্ছিন্ন করুন।" -#: ../libpurple/protocols/irc/parse.c:150 msgid "quote [...]: Send a raw command to the server." msgstr "উক্তি [...]: সার্ভারে একটি অরুপান্তরিত বার্তা পাঠান" # tithi -#: ../libpurple/protocols/irc/parse.c:151 msgid "" "remove <nick> [message]: Remove someone from a room. You must be a " "channel operator to do this." @@ -5177,28 +3692,23 @@ "অপসারণ করুন &1lt;ডাকনাম&2gt; [বার্তা]: একটি রুম থেকে কোনও একজন অপসারণ করুন। এটা " "করতে আপনাকে অবশ্যই একজন চ্যানেল অপারেটর হতে হবে।" -#: ../libpurple/protocols/irc/parse.c:152 msgid "time: Displays the current local time at the IRC server." msgstr "সময়: আইআরসি সার্ভারে বর্তমান স্থানীয় সময় প্রদর্শন করে।" -#: ../libpurple/protocols/irc/parse.c:153 msgid "topic [new topic]: View or change the channel topic." msgstr "বিষয়বস্তু [নতুন বিষয়বস্তু]: চ্যানেলের বিষয়বস্তু প্রদর্শন বা পরিবর্তন করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:154 msgid "umode <+|-><A-Za-z>: Set or unset a user mode." msgstr "" "ব্যবহারকারী মোড &1lt;+|-&2gt;&3lt;A-Za-z&4gt;: ব্যবহারকারীr মোড নির্ধারণ বা " "অনির্ধারণ করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:155 msgid "version [nick]: send CTCP VERSION request to a user" msgstr "সংস্করণ [ডাকনাম]: একজন ব্যবহারকারীকে CTCP সংস্করণ অনুরোধ পাঠান" # tithi -#: ../libpurple/protocols/irc/parse.c:156 msgid "" "voice <nick1> [nick2] ...: Grant channel voice status to someone. You " "must be a channel operator to do this." @@ -5207,7 +3717,6 @@ "মেনে নিন। এটা করতে আপনাকে অবশ্যই চ্যানেল অপারেটর হতে হবে।" # tithi -#: ../libpurple/protocols/irc/parse.c:157 msgid "" "wallops <message>: If you don't know what this is, you probably can't " "use it." @@ -5216,69 +3725,47 @@ "করতে পারবেন না।" # tithi -#: ../libpurple/protocols/irc/parse.c:158 msgid "whois [server] <nick>: Get information on a user." msgstr "কে [সার্ভার] &1lt;ডাকনাম&2gt;: একজন ব্যবহারকারীর তথ্য গ্রহণ করুন।" # tithi -#: ../libpurple/protocols/irc/parse.c:159 msgid "whowas <nick>: Get information on a user that has logged off." msgstr "কে ছিল&1lt;ডাকনাম&2gt;: বন্ধ রয়েছে এমন একজন ব্যবহারকারীর তথ্য গ্রহণ করুন।" -#: ../libpurple/protocols/irc/parse.c:544 #, c-format msgid "Reply time from %s: %lu seconds" msgstr "%1s হতে উত্তর দেয়ার সময়: %2lu সেকেন্ড" -#: ../libpurple/protocols/irc/parse.c:545 msgid "PONG" msgstr "PONG" -#: ../libpurple/protocols/irc/parse.c:545 msgid "CTCP PING reply" msgstr "CTCP PING উত্তর" -#: ../libpurple/protocols/irc/parse.c:657 -#: ../libpurple/protocols/irc/parse.c:664 ../libpurple/protocols/toc/toc.c:191 -#: ../libpurple/protocols/toc/toc.c:694 ../libpurple/protocols/toc/toc.c:710 -#: ../libpurple/protocols/toc/toc.c:786 msgid "Disconnected." msgstr "বিচ্ছিন্ন।" -#: ../libpurple/protocols/jabber/adhoccommands.c:143 -#: ../libpurple/protocols/jabber/jabber.c:816 -#: ../libpurple/protocols/jabber/jabber.c:846 -#: ../libpurple/protocols/jabber/jabber.c:2127 msgid "Unknown Error" msgstr "অজানা ত্রুটি" -#: ../libpurple/protocols/jabber/adhoccommands.c:145 -#: ../libpurple/protocols/jabber/adhoccommands.c:146 msgid "Ad-Hoc Command Failed" msgstr "এড-হক নির্দেশ ব্যর্থ" -#: ../libpurple/protocols/jabber/adhoccommands.c:182 msgid "execute" msgstr "কার্যকর করুন" # tithi -#: ../libpurple/protocols/jabber/auth.c:55 msgid "Server requires TLS/SSL for login. No TLS/SSL support found." msgstr "" "সার্ভারের লগইন করার জন্য TSL/SSL আবশ্যক, কোনো TLS/SSL সমর্থন খুঁজে পাওয়া যায়নি।" # tithi -#: ../libpurple/protocols/jabber/auth.c:60 msgid "You require encryption, but no TLS/SSL support found." msgstr "আপনার এনক্রিপশন প্রয়োজন, কিন্তু কোনো TLS/SSL সমর্থন খুঁজে পাওয়া যায়নি।" -#: ../libpurple/protocols/jabber/auth.c:125 msgid "Server requires plaintext authentication over an unencrypted stream" msgstr "একটি এনক্রিপশনবিহীন স্ট্রীমে সার্ভারের সরল-পাঠ প্রমাণীকরণ প্রয়োজন" -#: ../libpurple/protocols/jabber/auth.c:328 -#: ../libpurple/protocols/jabber/auth.c:548 -#: ../libpurple/protocols/jabber/auth.c:667 #, c-format msgid "" "%s requires plaintext authentication over an unencrypted connection. Allow " @@ -5287,141 +3774,74 @@ "একটি এনক্রিপশনবিহীন সংযোগে %s এর সরল-পাঠ প্রমাণীকরণ প্রয়োজন। এটি অনুমোদন করুন এবং " "প্রমাণীকরণ কি অব্যাহত রাখতে চান?" -#: ../libpurple/protocols/jabber/auth.c:330 -#: ../libpurple/protocols/jabber/auth.c:331 -#: ../libpurple/protocols/jabber/auth.c:550 -#: ../libpurple/protocols/jabber/auth.c:551 -#: ../libpurple/protocols/jabber/auth.c:669 -#: ../libpurple/protocols/jabber/auth.c:670 msgid "Plaintext Authentication" msgstr "সরল-পাঠ প্রমাণীকরণ" -#: ../libpurple/protocols/jabber/auth.c:493 -#: ../libpurple/protocols/jabber/auth.c:606 -#: ../libpurple/protocols/jabber/auth.c:851 -#: ../libpurple/protocols/jabber/auth.c:1003 -#: ../libpurple/protocols/jabber/auth.c:1030 -#: ../libpurple/protocols/jabber/auth.c:1076 -#: ../libpurple/protocols/jabber/jabber.c:131 msgid "Invalid response from server." msgstr "সার্ভার থেকে অবৈধ সাড়া।" -#: ../libpurple/protocols/jabber/auth.c:564 -#: ../libpurple/protocols/jabber/auth.c:683 msgid "Server does not use any supported authentication method" msgstr "সার্ভার কোনো সমর্থিত প্রমাণীকরণ প্রক্রিয়া ব্যবহার করে না।" -#: ../libpurple/protocols/jabber/auth.c:874 -#: ../libpurple/protocols/jabber/auth.c:900 msgid "Invalid challenge from server" msgstr "সার্ভার থেকে অবৈধ চ্যালেঞ্জ" -#: ../libpurple/protocols/jabber/auth.c:976 msgid "SASL error" msgstr "SASL ত্রুটি" -#: ../libpurple/protocols/jabber/buddy.c:311 -#: ../libpurple/protocols/jabber/buddy.c:1241 -#: ../libpurple/protocols/sametime/sametime.c:4190 -#: ../libpurple/protocols/silc/ops.c:1000 -#: ../libpurple/protocols/silc10/ops.c:1020 msgid "Full Name" msgstr "পুরো নাম" -#: ../libpurple/protocols/jabber/buddy.c:312 -#: ../libpurple/protocols/jabber/buddy.c:1252 -#: ../libpurple/protocols/silc/ops.c:1012 -#: ../libpurple/protocols/silc10/ops.c:1032 msgid "Family Name" msgstr "পারিবারিক নাম" -#: ../libpurple/protocols/jabber/buddy.c:313 -#: ../libpurple/protocols/jabber/buddy.c:1254 msgid "Given Name" msgstr "প্রদত্ত নাম" -#: ../libpurple/protocols/jabber/buddy.c:315 -#: ../libpurple/protocols/jabber/jabber.c:1115 msgid "URL" msgstr "URL" -#: ../libpurple/protocols/jabber/buddy.c:316 -#: ../libpurple/protocols/jabber/buddy.c:1298 msgid "Street Address" msgstr "রাস্তার ঠিকানা" -#: ../libpurple/protocols/jabber/buddy.c:317 -#: ../libpurple/protocols/jabber/buddy.c:1296 msgid "Extended Address" msgstr "বর্ধিত ঠিকানা" -#: ../libpurple/protocols/jabber/buddy.c:318 -#: ../libpurple/protocols/jabber/buddy.c:1300 msgid "Locality" msgstr "এলাকা" -#: ../libpurple/protocols/jabber/buddy.c:319 -#: ../libpurple/protocols/jabber/buddy.c:1302 msgid "Region" msgstr "এলাকা" -#: ../libpurple/protocols/jabber/buddy.c:320 -#: ../libpurple/protocols/jabber/buddy.c:1304 msgid "Postal Code" msgstr "পোষ্টাল কোড" -#: ../libpurple/protocols/jabber/buddy.c:321 -#: ../libpurple/protocols/jabber/buddy.c:1307 -#: ../libpurple/protocols/silc/silc.c:1250 -#: ../libpurple/protocols/silc10/silc.c:951 msgid "Country" msgstr "দেশ" #. lots of clients (including purple) do this, but it's #. * out of spec -#: ../libpurple/protocols/jabber/buddy.c:322 -#: ../libpurple/protocols/jabber/buddy.c:1321 -#: ../libpurple/protocols/jabber/buddy.c:1327 msgid "Telephone" msgstr "টেলিফোন" -#: ../libpurple/protocols/jabber/buddy.c:324 -#: ../libpurple/protocols/jabber/buddy.c:1368 msgid "Organization Name" msgstr "সংগঠনের নাম" -#: ../libpurple/protocols/jabber/buddy.c:325 -#: ../libpurple/protocols/jabber/buddy.c:1370 msgid "Organization Unit" msgstr "সংগঠন একক" -#: ../libpurple/protocols/jabber/buddy.c:327 -#: ../libpurple/protocols/jabber/buddy.c:1377 msgid "Role" msgstr "ভূমিকা" -#: ../libpurple/protocols/jabber/buddy.c:328 -#: ../libpurple/protocols/jabber/buddy.c:1270 -#: ../libpurple/protocols/msn/msn.c:2092 -#: ../libpurple/protocols/msnp9/msn.c:1798 -#: ../libpurple/protocols/oscar/oscar.c:3955 msgid "Birthday" msgstr "জন্মদিন" -#: ../libpurple/protocols/jabber/buddy.c:329 -#: ../libpurple/protocols/jabber/buddy.c:1379 -#: ../libpurple/protocols/jabber/chat.c:802 -#: ../libpurple/protocols/jabber/usermood.c:190 ../pidgin/gtkblist.c:3540 -#: ../pidgin/gtkplugin.c:584 ../pidgin/gtkprefs.c:688 msgid "Description" msgstr "বিবরণ" -#: ../libpurple/protocols/jabber/buddy.c:739 -#: ../libpurple/protocols/jabber/buddy.c:740 msgid "Edit XMPP vCard" msgstr "XMPP vCard সম্পাদনা করুন" -#: ../libpurple/protocols/jabber/buddy.c:741 msgid "" "All items below are optional. Enter only the information with which you feel " "comfortable." @@ -5429,364 +3849,226 @@ "নিচের সব বিষয়গুলো ঐচ্ছিক। আপনি যে তথ্য প্রবেশ করাতে স্বাচ্ছন্দবোধ করেন শুধুমাত্র তা " "প্রবেশ করান।" -#: ../libpurple/protocols/jabber/buddy.c:797 -#: ../libpurple/protocols/jabber/buddy.c:966 msgid "Client" msgstr "ক্লায়েন্ট" # tithi -#: ../libpurple/protocols/jabber/buddy.c:801 -#: ../libpurple/protocols/jabber/buddy.c:970 msgid "Operating System" msgstr "অপারেটিং সিস্টেম" # tithi -#: ../libpurple/protocols/jabber/buddy.c:841 -#: ../libpurple/protocols/jabber/buddy.c:1011 msgid "Last Activity" msgstr "শেষ সক্রিয়তা" -#: ../libpurple/protocols/jabber/buddy.c:843 -#: ../libpurple/protocols/jabber/buddy.c:1013 msgid "Service Discovery Info" msgstr "সেবা আবিষ্কারের তথ্য" # tithi -#: ../libpurple/protocols/jabber/buddy.c:845 -#: ../libpurple/protocols/jabber/buddy.c:1015 msgid "Service Discovery Items" msgstr "সেবা আবিষ্কারের বিষয়োপকরনসমূহ" -#: ../libpurple/protocols/jabber/buddy.c:847 -#: ../libpurple/protocols/jabber/buddy.c:1017 msgid "Extended Stanza Addressing" msgstr "বর্ধিত স্ট্যানজা উদ্দেশ করছে" -#: ../libpurple/protocols/jabber/buddy.c:849 -#: ../libpurple/protocols/jabber/buddy.c:1019 msgid "Multi-User Chat" msgstr "একাধিক-ব্যবহারকারী সম্বলিত আড্ডা" -#: ../libpurple/protocols/jabber/buddy.c:851 -#: ../libpurple/protocols/jabber/buddy.c:1021 msgid "Multi-User Chat Extended Presence Information" msgstr "একাধিক-ব্যবহারকারীর বর্ধিত উপস্থিতি তথ্য" # tithi -#: ../libpurple/protocols/jabber/buddy.c:853 -#: ../libpurple/protocols/jabber/buddy.c:1023 msgid "In-Band Bytestreams" msgstr "In-Band বাইট-প্রবাহ" -#: ../libpurple/protocols/jabber/buddy.c:855 -#: ../libpurple/protocols/jabber/buddy.c:1025 msgid "Ad-Hoc Commands" msgstr "Ad-Hoc নির্দেশসমূহ" # tithi -#: ../libpurple/protocols/jabber/buddy.c:857 -#: ../libpurple/protocols/jabber/buddy.c:1027 msgid "PubSub Service" msgstr "PubSub সেবা" # tithi -#: ../libpurple/protocols/jabber/buddy.c:859 -#: ../libpurple/protocols/jabber/buddy.c:1029 msgid "SOCKS5 Bytestreams" msgstr "SOCKS5 বাইট-প্রবাহ" # tithi -#: ../libpurple/protocols/jabber/buddy.c:861 -#: ../libpurple/protocols/jabber/buddy.c:1031 msgid "Out of Band Data" msgstr "ব্যান্ড তথ্যের বাইরে" -#: ../libpurple/protocols/jabber/buddy.c:863 -#: ../libpurple/protocols/jabber/buddy.c:1033 msgid "XHTML-IM" msgstr "XHTML-IM" -#: ../libpurple/protocols/jabber/buddy.c:865 -#: ../libpurple/protocols/jabber/buddy.c:1035 msgid "In-Band Registration" msgstr "ইন ব্যান্ড নিবন্ধন" -#: ../libpurple/protocols/jabber/buddy.c:867 -#: ../libpurple/protocols/jabber/buddy.c:1037 msgid "User Location" msgstr "ব্যবহারকারীর অবস্থান" # fix me tithi -#: ../libpurple/protocols/jabber/buddy.c:869 -#: ../libpurple/protocols/jabber/buddy.c:1039 msgid "User Avatar" msgstr "ব্যবহারকারী অ্যাভাটার" -#: ../libpurple/protocols/jabber/buddy.c:871 -#: ../libpurple/protocols/jabber/buddy.c:1041 msgid "Chat State Notifications" msgstr "আড্ডার অবস্থার প্রজ্ঞাপন" -#: ../libpurple/protocols/jabber/buddy.c:873 -#: ../libpurple/protocols/jabber/buddy.c:1043 msgid "Software Version" msgstr "সফটওয়্যায় সংস্করণ" # fix me tithi -#: ../libpurple/protocols/jabber/buddy.c:875 -#: ../libpurple/protocols/jabber/buddy.c:1045 msgid "Stream Initiation" msgstr "প্রবাহ শুরু করুন" -#: ../libpurple/protocols/jabber/buddy.c:877 -#: ../libpurple/protocols/jabber/buddy.c:1047 -#: ../libpurple/protocols/sametime/sametime.c:3292 msgid "File Transfer" msgstr "ফাইল স্থানান্তর করুন" -#: ../libpurple/protocols/jabber/buddy.c:879 -#: ../libpurple/protocols/jabber/buddy.c:1049 msgid "User Mood" msgstr "ব্যবহাকারীরর পরিমন্ডল" -#: ../libpurple/protocols/jabber/buddy.c:881 -#: ../libpurple/protocols/jabber/buddy.c:1051 msgid "User Activity" msgstr "ব্যবহারকারীর কাজকর্ম" # tithi -#: ../libpurple/protocols/jabber/buddy.c:883 -#: ../libpurple/protocols/jabber/buddy.c:1053 msgid "Entity Capabilities" msgstr "সত্তার সক্ষমতা" # tithi -#: ../libpurple/protocols/jabber/buddy.c:885 -#: ../libpurple/protocols/jabber/buddy.c:1055 msgid "Encrypted Session Negotiations" msgstr "সঙ্কেতায়িত অধিবেশনের আলোচনা" -#: ../libpurple/protocols/jabber/buddy.c:887 -#: ../libpurple/protocols/jabber/buddy.c:1057 msgid "User Tune" msgstr "ব্যবহারকারীর সুর" # tithi -#: ../libpurple/protocols/jabber/buddy.c:889 -#: ../libpurple/protocols/jabber/buddy.c:1059 msgid "Roster Item Exchange" msgstr "রোস্টার বিষয়োপকরণ পরিবর্তন করুন" -#: ../libpurple/protocols/jabber/buddy.c:891 -#: ../libpurple/protocols/jabber/buddy.c:1061 msgid "Reachability Address" msgstr "পৌঁছানোর মতো ঠিকানা" -#: ../libpurple/protocols/jabber/buddy.c:893 -#: ../libpurple/protocols/jabber/buddy.c:1063 msgid "User Profile" msgstr "ব্যবহারকারীর প্রোফাইল" -#: ../libpurple/protocols/jabber/buddy.c:895 -#: ../libpurple/protocols/jabber/buddy.c:1065 msgid "Jingle" msgstr "ছন্দ" # tithi -#: ../libpurple/protocols/jabber/buddy.c:897 -#: ../libpurple/protocols/jabber/buddy.c:1067 msgid "Jingle Audio" msgstr "ছন্দময় অডিও" -#: ../libpurple/protocols/jabber/buddy.c:899 -#: ../libpurple/protocols/jabber/buddy.c:1069 msgid "User Nickname" msgstr "ব্যবহারকারীর ডাকনাম" # tithi -#: ../libpurple/protocols/jabber/buddy.c:901 -#: ../libpurple/protocols/jabber/buddy.c:1071 msgid "Jingle ICE UDP" msgstr "ছন্দময় ICE UDP" # tithi -#: ../libpurple/protocols/jabber/buddy.c:903 -#: ../libpurple/protocols/jabber/buddy.c:1073 msgid "Jingle ICE TCP" msgstr "ছন্দময় ICE TCP" # tithi -#: ../libpurple/protocols/jabber/buddy.c:905 -#: ../libpurple/protocols/jabber/buddy.c:1075 msgid "Jingle Raw UDP" msgstr "ছন্দময় Raw UDP" # tithi -#: ../libpurple/protocols/jabber/buddy.c:907 -#: ../libpurple/protocols/jabber/buddy.c:1077 msgid "Jingle Video" msgstr "ছন্দময় ভিডিও" # tithi -#: ../libpurple/protocols/jabber/buddy.c:909 -#: ../libpurple/protocols/jabber/buddy.c:1079 msgid "Jingle DTMF" msgstr "ছন্দময় DTMF" -#: ../libpurple/protocols/jabber/buddy.c:911 -#: ../libpurple/protocols/jabber/buddy.c:1081 msgid "Message Receipts" msgstr "বার্তা গ্রহণ করা হয়েছে" -#: ../libpurple/protocols/jabber/buddy.c:913 -#: ../libpurple/protocols/jabber/buddy.c:1083 msgid "Public Key Publishing" msgstr "সর্বসাধারণের কী প্রকাশ করা হচ্ছে" -#: ../libpurple/protocols/jabber/buddy.c:915 -#: ../libpurple/protocols/jabber/buddy.c:1085 msgid "User Chatting" msgstr "ব্যবহারকারী আড্ডা দিচ্ছে" -#: ../libpurple/protocols/jabber/buddy.c:917 -#: ../libpurple/protocols/jabber/buddy.c:1087 msgid "User Browsing" msgstr "ব্যবহাকারী ব্রাউজ করছে" -#: ../libpurple/protocols/jabber/buddy.c:919 -#: ../libpurple/protocols/jabber/buddy.c:1089 msgid "User Gaming" msgstr "ব্যবহারকারীরা খেলছে" -#: ../libpurple/protocols/jabber/buddy.c:921 -#: ../libpurple/protocols/jabber/buddy.c:1091 msgid "User Viewing" msgstr "ব্যবহারকারীরা দেখছে" -#: ../libpurple/protocols/jabber/buddy.c:923 -#: ../libpurple/protocols/jabber/buddy.c:1093 -#: ../libpurple/protocols/silc/ops.c:1613 -#: ../libpurple/protocols/silc/ops.c:1618 -#: ../libpurple/protocols/silc10/ops.c:1612 -#: ../libpurple/protocols/silc10/ops.c:1617 msgid "Ping" msgstr "পিঙ্গ করুন" # tithi -#: ../libpurple/protocols/jabber/buddy.c:925 -#: ../libpurple/protocols/jabber/buddy.c:1095 msgid "Stanza Encryption" msgstr "স্ট্যানজা সঙ্কেতায়ন" # tithi -#: ../libpurple/protocols/jabber/buddy.c:927 -#: ../libpurple/protocols/jabber/buddy.c:1097 msgid "Entity Time" msgstr "সত্ত্বার সময়" # tithi -#: ../libpurple/protocols/jabber/buddy.c:929 -#: ../libpurple/protocols/jabber/buddy.c:1099 msgid "Delayed Delivery" msgstr "বিলম্বিত সরবরাহ" # tithi -#: ../libpurple/protocols/jabber/buddy.c:931 -#: ../libpurple/protocols/jabber/buddy.c:1101 msgid "Collaborative Data Objects" msgstr "সহযোগি উপাত্ত অবজেক্ট" # tithi -#: ../libpurple/protocols/jabber/buddy.c:933 -#: ../libpurple/protocols/jabber/buddy.c:1103 msgid "File Repository and Sharing" msgstr "ফাইল ভান্ডার এবং শেয়ার করছে" # tithi -#: ../libpurple/protocols/jabber/buddy.c:935 -#: ../libpurple/protocols/jabber/buddy.c:1105 msgid "STUN Service Discovery for Jingle" msgstr "ছন্দময়তার জন্য STUN সেবা আবিষ্কার" # tithi -#: ../libpurple/protocols/jabber/buddy.c:937 -#: ../libpurple/protocols/jabber/buddy.c:1107 msgid "Simplified Encrypted Session Negotiation" msgstr "সহজবোধ্য সঙ্কেতায়িত অধিবেশনের আলোচনা" # tithi -#: ../libpurple/protocols/jabber/buddy.c:939 -#: ../libpurple/protocols/jabber/buddy.c:1109 msgid "Hop Check" msgstr "হপ পরীক্ষা করুন" # tithi -#: ../libpurple/protocols/jabber/buddy.c:947 -#: ../libpurple/protocols/jabber/buddy.c:1117 -#: ../libpurple/protocols/oscar/oscar.c:3171 msgid "Capabilities" msgstr "সক্ষমতা" -#: ../libpurple/protocols/jabber/buddy.c:997 -#: ../libpurple/protocols/jabber/jabber.c:1795 -#: ../libpurple/protocols/jabber/jabber.c:1809 -#: ../libpurple/protocols/jabber/jabber.c:1823 -#: ../libpurple/protocols/jabber/jabber.c:1837 -#: ../libpurple/protocols/jabber/jabber.c:1851 msgid "Priority" msgstr "অগ্রাধিকার" -#: ../libpurple/protocols/jabber/buddy.c:1002 -#: ../libpurple/protocols/jabber/libxmpp.c:212 -#: ../libpurple/protocols/jabber/si.c:1088 msgid "Resource" msgstr "সম্পদ" -#: ../libpurple/protocols/jabber/buddy.c:1256 -#: ../libpurple/protocols/silc/ops.c:1008 -#: ../libpurple/protocols/silc10/ops.c:1028 msgid "Middle Name" msgstr "মধ্য নাম" -#: ../libpurple/protocols/jabber/buddy.c:1289 -#: ../libpurple/protocols/jabber/jabber.c:1095 -#: ../libpurple/protocols/oscar/oscar.c:3978 -#: ../libpurple/protocols/oscar/oscar.c:3986 -#: ../libpurple/protocols/qq/buddy_info.c:116 -#: ../libpurple/protocols/silc/ops.c:1044 -#: ../libpurple/protocols/silc10/ops.c:1064 msgid "Address" msgstr "ঠিকানা" -#: ../libpurple/protocols/jabber/buddy.c:1294 msgid "P.O. Box" msgstr "পি.ও. বক্স" -#: ../libpurple/protocols/jabber/buddy.c:1400 msgid "Photo" msgstr "ছবি" -#: ../libpurple/protocols/jabber/buddy.c:1400 msgid "Logo" msgstr "লোগো" # tithi -#: ../libpurple/protocols/jabber/buddy.c:1971 msgid "Un-hide From" msgstr "এর হতে উন্মোচিত" # tithi -#: ../libpurple/protocols/jabber/buddy.c:1975 msgid "Temporarily Hide From" msgstr "এর হতে সাময়িকভাবে লুকান" #. && NOT ME -#: ../libpurple/protocols/jabber/buddy.c:1983 msgid "Cancel Presence Notification" msgstr "উপস্থিতির প্রজ্ঞাপন বাতিল করুন" # tithi -#: ../libpurple/protocols/jabber/buddy.c:1990 msgid "(Re-)Request authorization" msgstr "(পুনরায়-)অনুরোধের প্রাপ্তাধিকার" @@ -5794,54 +4076,37 @@ #. if(NOT ME) #. shouldn't this just happen automatically when the buddy is #. removed? -#: ../libpurple/protocols/jabber/buddy.c:1999 msgid "Unsubscribe" msgstr "অংশীদারী ত্যাগ করুন" -#: ../libpurple/protocols/jabber/buddy.c:2014 msgid "Log In" msgstr "লগইন করুন" -#: ../libpurple/protocols/jabber/buddy.c:2018 msgid "Log Out" msgstr "লগ আউট করুন" -#: ../libpurple/protocols/jabber/buddy.c:2064 -#: ../libpurple/protocols/jabber/jabber.c:1808 msgid "Chatty" msgstr "আড্ডাবাজ" # tithi -#: ../libpurple/protocols/jabber/buddy.c:2068 msgid "Extended Away" msgstr "আরও বর্ধিত করুন" -#: ../libpurple/protocols/jabber/buddy.c:2070 -#: ../libpurple/protocols/jabber/jabber.c:1850 -#: ../libpurple/protocols/oscar/oscar.c:744 -#: ../libpurple/protocols/oscar/oscar.c:6029 -#: ../libpurple/protocols/sametime/sametime.c:3354 msgid "Do Not Disturb" msgstr "বিরক্ত করবেন না" # tithi -#: ../libpurple/protocols/jabber/buddy.c:2237 msgid "JID" msgstr "JID" -#: ../libpurple/protocols/jabber/buddy.c:2241 -#: ../libpurple/protocols/jabber/buddy.c:2430 -#: ../libpurple/protocols/oscar/oscar.c:3917 msgid "Last Name" msgstr "শেষ নাম" -#: ../libpurple/protocols/jabber/buddy.c:2273 msgid "The following are the results of your search" msgstr "নিম্নোক্ত আপনার অনুসন্ধানের ফলাফল" # fix-me tithi #. current comment from Jabber User Directory users.jabber.org -#: ../libpurple/protocols/jabber/buddy.c:2358 msgid "" "Find a contact by entering the search criteria in the given fields. Note: " "Each field supports wild card searches (%)" @@ -5849,179 +4114,121 @@ "প্রদত্ত ক্ষেত্রে সন্ধান বৈশিষ্ট্য প্রবেশ করার মাধ্যমে একটি যোগাযোগ খুঁজুন। নোট: প্রত্যেক " "ক্ষেত্র ওয়াইল্ড কার্ড অনুসন্ধানসমূহ সমর্থন করে (%)" -#: ../libpurple/protocols/jabber/buddy.c:2378 msgid "Directory Query Failed" msgstr "নির্দেশিকা জিজ্ঞাসা ব্যর্থ হয়েছে" -#: ../libpurple/protocols/jabber/buddy.c:2379 msgid "Could not query the directory server." msgstr "নির্দেশক সার্ভার সম্পর্কে প্রশ্ন করেনি" #. Try to translate the message (see static message #. list in jabber_user_dir_comments[]) -#: ../libpurple/protocols/jabber/buddy.c:2413 #, c-format msgid "Server Instructions: %s" msgstr "সার্ভার নিয়মাবলী: %s" -#: ../libpurple/protocols/jabber/buddy.c:2420 msgid "Fill in one or more fields to search for any matching XMPP users." msgstr "যেকোনো সমন্বয়করণ XMPP ব্যবহারকারীর জন্য খুঁজতে এক বা একাধিক ক্ষেত্র পূরন করুন।" -#: ../libpurple/protocols/jabber/buddy.c:2440 -#: ../libpurple/protocols/novell/novell.c:1497 -#: ../libpurple/protocols/oscar/oscar.c:3920 -#: ../libpurple/protocols/oscar/oscar.c:3929 msgid "Email Address" msgstr "ই-মেইল ঠিকানা" -#: ../libpurple/protocols/jabber/buddy.c:2449 -#: ../libpurple/protocols/jabber/buddy.c:2450 msgid "Search for XMPP users" msgstr "XMPP ব্যবহারকারীর জন্য অনুসন্ধান করুন" #. "Search" -#: ../libpurple/protocols/jabber/buddy.c:2451 -#: ../libpurple/protocols/qq/group.c:111 -#: ../libpurple/protocols/sametime/sametime.c:5671 -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:474 -#: ../pidgin/plugins/gevolution/assoc-buddy.c:356 msgid "Search" msgstr "খুঁজুন" -#: ../libpurple/protocols/jabber/buddy.c:2466 msgid "Invalid Directory" msgstr "অবৈধ নির্দেশিকা" -#: ../libpurple/protocols/jabber/buddy.c:2483 msgid "Enter a User Directory" msgstr "একটি ব্যবহারকারীর নির্দেশিকা প্রবেশ করান" -#: ../libpurple/protocols/jabber/buddy.c:2484 msgid "Select a user directory to search" msgstr "খোঁজার জন্য একটি ব্যবহারকারী নির্দেশিকা নির্বাচন করুন" -#: ../libpurple/protocols/jabber/buddy.c:2487 msgid "Search Directory" msgstr "অনুসন্ধান নির্দেশিকা" -#: ../libpurple/protocols/jabber/chat.c:42 -#: ../libpurple/protocols/oscar/oscar.c:5540 -#: ../libpurple/protocols/yahoo/yahoochat.c:1057 msgid "_Room:" msgstr "কক্ষ: (_R)" -#: ../libpurple/protocols/jabber/chat.c:48 msgid "_Server:" msgstr "সার্ভার: (_S)" -#: ../libpurple/protocols/jabber/chat.c:54 msgid "_Handle:" msgstr "হ্যান্ডেল: (_H)" -#: ../libpurple/protocols/jabber/chat.c:232 #, c-format msgid "%s is not a valid room name" msgstr "%s বৈধ কক্ষের নাম নয়" -#: ../libpurple/protocols/jabber/chat.c:233 msgid "Invalid Room Name" msgstr "অবৈধ কক্ষের নাম" -#: ../libpurple/protocols/jabber/chat.c:239 #, c-format msgid "%s is not a valid server name" msgstr "%s বৈধ সার্ভার নাম নয়" -#: ../libpurple/protocols/jabber/chat.c:240 -#: ../libpurple/protocols/jabber/chat.c:241 msgid "Invalid Server Name" msgstr "অবৈধ সার্ভার নাম" -#: ../libpurple/protocols/jabber/chat.c:246 #, c-format msgid "%s is not a valid room handle" msgstr "%s বৈধ কক্ষ নিয়ন্ত্রণ নয়" -#: ../libpurple/protocols/jabber/chat.c:247 -#: ../libpurple/protocols/jabber/chat.c:248 msgid "Invalid Room Handle" msgstr "অবৈধ কক্ষ নিয়ন্ত্রণ" -#: ../libpurple/protocols/jabber/chat.c:422 msgid "Configuration error" msgstr "বিন্যাসন ত্রুটি" -#: ../libpurple/protocols/jabber/chat.c:431 -#: ../libpurple/protocols/jabber/chat.c:574 msgid "Unable to configure" msgstr "বিন্যাস করতে অক্ষম" -#: ../libpurple/protocols/jabber/chat.c:446 msgid "Room Configuration Error" msgstr "কক্ষ বিন্যাসন ত্রুটি" # tithi -#: ../libpurple/protocols/jabber/chat.c:447 msgid "This room is not capable of being configured" msgstr "এই কক্ষটি বিন্যাসিত হতে সক্ষম নয়" -#: ../libpurple/protocols/jabber/chat.c:496 -#: ../libpurple/protocols/jabber/chat.c:565 msgid "Registration error" msgstr "নিবন্ধণ ত্রুটি" # tithi -#: ../libpurple/protocols/jabber/chat.c:653 msgid "Nick changing not supported in non-MUC chatrooms" msgstr "ডাকনাম পরিবর্তন MUC-বহিঃস্থ আড্ডারুমে সমর্থিত নয়" -#: ../libpurple/protocols/jabber/chat.c:705 -#: ../libpurple/protocols/jabber/chat.c:716 -#: ../libpurple/protocols/silc/ops.c:1473 -#: ../libpurple/protocols/silc10/ops.c:1451 msgid "Error retrieving room list" msgstr "রুম তালিকা উদ্ধার করার ত্রুটি" -#: ../libpurple/protocols/jabber/chat.c:764 msgid "Invalid Server" msgstr "অবৈধ সার্ভার" -#: ../libpurple/protocols/jabber/chat.c:808 msgid "Enter a Conference Server" msgstr "একটি কনফারেন্স সার্ভার প্রবেশ করান" -#: ../libpurple/protocols/jabber/chat.c:809 msgid "Select a conference server to query" msgstr "অনুসন্ধানের জন্য একটি কনফারেন্স সার্ভার প্রবেশ করান" -#: ../libpurple/protocols/jabber/chat.c:812 msgid "Find Rooms" msgstr "কক্ষ খুঁজুন" # tithi -#: ../libpurple/protocols/jabber/jabber.c:185 msgid "You require encryption, but it is not available on this server." msgstr "আপনার সঙ্কেতায়ন প্রয়োজন, কিন্তু এটি এই সার্ভারটিতে সহজলভ্য নয়।" -#: ../libpurple/protocols/jabber/jabber.c:309 -#: ../libpurple/protocols/jabber/jabber.c:334 msgid "Write error" msgstr "লিখন ত্রুটি" -#: ../libpurple/protocols/jabber/jabber.c:452 msgid "Ping timeout" msgstr "পিঙ্গ সময়-উত্তীর্ণ হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:506 -#: ../libpurple/protocols/jabber/jabber.c:551 msgid "Read Error" msgstr "পাঠ ত্রুটি" -#: ../libpurple/protocols/jabber/jabber.c:592 -#: ../libpurple/protocols/oscar/flap_connection.c:450 -#: ../libpurple/protocols/yahoo/yahoo.c:2613 -#: ../libpurple/protocols/yahoo/yahoo.c:2645 #, c-format msgid "" "Could not establish a connection with the server:\n" @@ -6030,655 +4237,463 @@ "সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না:\n" "%s" -#: ../libpurple/protocols/jabber/jabber.c:656 msgid "Unable to create socket" msgstr "সকেট তৈরী করতে অক্ষম" -#: ../libpurple/protocols/jabber/jabber.c:729 -#: ../libpurple/protocols/jabber/jabber.c:1201 msgid "Invalid XMPP ID" msgstr "অবৈধ XMPP ID" # tithi -#: ../libpurple/protocols/jabber/jabber.c:736 msgid "Invalid XMPP ID. Domain must be set." msgstr "অবৈধ XMPP ID। ডোমেইন অবশ্যই নির্ধারণ করতে হবে।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:801 #, c-format msgid "Registration of %s@%s successful" msgstr "%1s@%2s এর নিবন্ধন সফল" -#: ../libpurple/protocols/jabber/jabber.c:807 #, c-format msgid "Registration to %s successful" msgstr "%s এ নিবন্ধন সফল হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:809 -#: ../libpurple/protocols/jabber/jabber.c:810 msgid "Registration Successful" msgstr "নিবন্ধন সফল হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:818 -#: ../libpurple/protocols/jabber/jabber.c:819 msgid "Registration Failed" msgstr "নিবন্ধন ব্যর্থ হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:837 #, c-format msgid "Registration from %s successfully removed" msgstr "%s হতে নিবন্ধন সফলভাবে অপসারণ করা হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:839 -#: ../libpurple/protocols/jabber/jabber.c:840 msgid "Unregistration Successful" msgstr "অনিবন্ধন সফল হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:848 -#: ../libpurple/protocols/jabber/jabber.c:849 msgid "Unregistration Failed" msgstr "অনিবন্ধন ব্যর্থ হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:1015 -#: ../libpurple/protocols/jabber/jabber.c:1016 msgid "Already Registered" msgstr "ইতোমধ্যে নিবন্ধিত" -#: ../libpurple/protocols/jabber/jabber.c:1103 -#: ../libpurple/protocols/oscar/oscar.c:3980 -#: ../libpurple/protocols/oscar/oscar.c:3988 msgid "State" msgstr "রাজ্য" -#: ../libpurple/protocols/jabber/jabber.c:1107 msgid "Postal code" msgstr "ডাক সংকেত" -#: ../libpurple/protocols/jabber/jabber.c:1111 -#: ../libpurple/protocols/silc/ops.c:1049 -#: ../libpurple/protocols/silc/silc.c:1007 -#: ../libpurple/protocols/silc/util.c:563 -#: ../libpurple/protocols/silc10/ops.c:1069 -#: ../libpurple/protocols/silc10/silc.c:708 -#: ../libpurple/protocols/silc10/util.c:557 msgid "Phone" msgstr "ফোন" -#: ../libpurple/protocols/jabber/jabber.c:1119 msgid "Date" msgstr "তারিখ" -#: ../libpurple/protocols/jabber/jabber.c:1123 msgid "Unregister" msgstr "অনিবন্ধন" -#: ../libpurple/protocols/jabber/jabber.c:1130 msgid "" "Please fill out the information below to change your account registration." msgstr "আপনার একাউন্ট নিবন্ধন পরিবর্তন করতে অনুগ্রহ করে নিচের তথ্য পূরণ করুন।" -#: ../libpurple/protocols/jabber/jabber.c:1133 msgid "Please fill out the information below to register your new account." msgstr "আপনার নতুন একাউন্ট নিবন্ধন পরিবর্তন করতে অনুগ্রহ করে নিচের তথ্য পূরণ করুন।" -#: ../libpurple/protocols/jabber/jabber.c:1141 -#: ../libpurple/protocols/jabber/jabber.c:1142 msgid "Register New XMPP Account" msgstr "নতুন XMPP একাউন্ট নিবন্ধন করুন" -#: ../libpurple/protocols/jabber/jabber.c:1143 -#: ../libpurple/protocols/jabber/jabber.c:1152 msgid "Register" msgstr "নিবন্ধন করুন" -#: ../libpurple/protocols/jabber/jabber.c:1148 #, c-format msgid "Change Account Registration at %s" msgstr "%s এ একাউন্ট নিবন্ধন পরিবর্তন করুন" -#: ../libpurple/protocols/jabber/jabber.c:1149 #, c-format msgid "Register New Account at %s" msgstr "%s এ নতুন একাউন্ট নিবন্ধন করুন" -#: ../libpurple/protocols/jabber/jabber.c:1152 msgid "Change Registration" msgstr "নিবন্ধন পরিবর্তন করুন" -#: ../libpurple/protocols/jabber/jabber.c:1248 -#: ../libpurple/protocols/jabber/jabber.c:1249 msgid "Error unregistering account" msgstr "একাউন্ট নিবন্ধনহীন করার ত্রুটি" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1254 -#: ../libpurple/protocols/jabber/jabber.c:1255 msgid "Account successfully unregistered" msgstr "একাউন্ট সফলভাবে অনিবন্ধীত করা হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:1427 msgid "Initializing Stream" msgstr "স্ট্রীম প্রস্তুত করছে" -#: ../libpurple/protocols/jabber/jabber.c:1432 msgid "Initializing SSL/TLS" msgstr "SSL/TLS প্রস্তুত করছে" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1436 -#: ../libpurple/protocols/msn/session.c:412 -#: ../libpurple/protocols/msnp9/session.c:374 msgid "Authenticating" msgstr "প্রমাণীকরণ" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1454 msgid "Re-initializing Stream" msgstr "স্ট্রীম পুনরায় প্রস্তুত করছে" -#: ../libpurple/protocols/jabber/jabber.c:1536 -#: ../libpurple/protocols/jabber/jabber.c:1537 msgid "Server doesn't support blocking" msgstr "সার্ভার আবদ্ধকরণ সমর্থন করে না" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1648 -#: ../libpurple/protocols/jabber/jabber.c:2105 -#: ../libpurple/protocols/jabber/jabber.c:2148 -#: ../libpurple/protocols/jabber/jabber.c:2186 -#: ../libpurple/protocols/oscar/oscar.c:908 -#: ../libpurple/protocols/oscar/oscar.c:5823 msgid "Not Authorized" msgstr "অনুমোদিত নয়" -#: ../libpurple/protocols/jabber/jabber.c:1695 msgid "Both" msgstr "উভয়" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1697 msgid "From (To pending)" msgstr "হতে (অমীমাংসিত)" -#: ../libpurple/protocols/jabber/jabber.c:1699 msgid "From" msgstr "হতে" -#: ../libpurple/protocols/jabber/jabber.c:1702 msgid "To" msgstr "প্রতি" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1704 msgid "None (To pending)" msgstr "কোনটি নয় (অমীমাংসিত)" -#: ../libpurple/protocols/jabber/jabber.c:1706 -#: ../pidgin/plugins/gevolution/eds-utils.c:73 -#: ../pidgin/plugins/gevolution/eds-utils.c:86 msgid "None" msgstr "কোনটি না" -#: ../libpurple/protocols/jabber/jabber.c:1709 msgid "Subscription" msgstr "শেয়ারকরণ" -#: ../libpurple/protocols/jabber/jabber.c:1719 -#: ../libpurple/protocols/jabber/jabber.c:1722 -#: ../libpurple/protocols/jabber/jabber.c:1797 -#: ../libpurple/protocols/jabber/jabber.c:1811 -#: ../libpurple/protocols/jabber/jabber.c:1825 -#: ../libpurple/protocols/jabber/jabber.c:1839 -#: ../libpurple/protocols/jabber/jabber.c:1853 -#: ../libpurple/protocols/jabber/usermood.c:181 -#: ../libpurple/protocols/silc/buddy.c:1572 -#: ../libpurple/protocols/silc/ops.c:1225 -#: ../libpurple/protocols/silc10/buddy.c:1572 -#: ../libpurple/protocols/silc10/ops.c:1207 msgid "Mood" msgstr "অবস্থা" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1731 -#: ../libpurple/protocols/msn/msn.c:715 msgid "Now Listening" msgstr "এখন শুনছে" -#: ../libpurple/protocols/jabber/jabber.c:1798 -#: ../libpurple/protocols/jabber/jabber.c:1812 -#: ../libpurple/protocols/jabber/jabber.c:1826 -#: ../libpurple/protocols/jabber/jabber.c:1840 -#: ../libpurple/protocols/jabber/jabber.c:1854 msgid "Mood Text" msgstr "মোড পাঠ" -#: ../libpurple/protocols/jabber/jabber.c:1800 -#: ../libpurple/protocols/jabber/jabber.c:1814 -#: ../libpurple/protocols/jabber/jabber.c:1828 -#: ../libpurple/protocols/jabber/jabber.c:1842 -#: ../libpurple/protocols/jabber/jabber.c:1856 msgid "Allow Buzz" msgstr "বাজ অনুমোদন করুন" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1874 msgid "Tune Artist" msgstr "টিউন শিল্পী" -#: ../libpurple/protocols/jabber/jabber.c:1875 msgid "Tune Title" msgstr "টিউন শিরোনাম" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1876 msgid "Tune Album" msgstr "টিউন অ্যালবাম" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1877 msgid "Tune Genre" msgstr "টিউনের ধরন" -#: ../libpurple/protocols/jabber/jabber.c:1878 msgid "Tune Comment" msgstr "টিউনের মন্তব্য" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1879 msgid "Tune Track" msgstr "টিউন গতিপথ" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1880 msgid "Tune Time" msgstr "টিউন সময়" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1881 msgid "Tune Year" msgstr "টিউন সন" # tithi -#: ../libpurple/protocols/jabber/jabber.c:1882 msgid "Tune URL" msgstr "টিউন URL" -#: ../libpurple/protocols/jabber/jabber.c:1898 msgid "Password Changed" msgstr "গুপ্তসংকেত পরিবর্তিত হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:1899 msgid "Your password has been changed." msgstr "আপনার গুপ্তসংকেত পরিবর্তিত হয়েছে।" -#: ../libpurple/protocols/jabber/jabber.c:1905 -#: ../libpurple/protocols/jabber/jabber.c:1906 msgid "Error changing password" msgstr "গুপ্তসংকেত পরিবর্তনে ত্রুটি" -#: ../libpurple/protocols/jabber/jabber.c:1963 msgid "Password (again)" msgstr "গুপ্তসংকেত (আবার)" -#: ../libpurple/protocols/jabber/jabber.c:1969 -#: ../libpurple/protocols/jabber/jabber.c:1970 msgid "Change XMPP Password" msgstr "XMPP গুপ্তসংকেত পরিবর্তন করুন" -#: ../libpurple/protocols/jabber/jabber.c:1970 msgid "Please enter your new password" msgstr "আপনার নতুন গুপ্তসংকেতটি প্রবেশ করান" -#: ../libpurple/protocols/jabber/jabber.c:1984 -#: ../libpurple/protocols/oscar/oscar.c:6612 -#: ../libpurple/protocols/silc/silc.c:1328 -#: ../libpurple/protocols/silc10/silc.c:1029 msgid "Set User Info..." msgstr "ব্যবহারকারীর তথ্য নির্ধারণ করুন..." #. if (js->protocol_options & CHANGE_PASSWORD) { -#: ../libpurple/protocols/jabber/jabber.c:1989 -#: ../libpurple/protocols/oscar/oscar.c:6623 -#: ../libpurple/protocols/silc/silc.c:1324 -#: ../libpurple/protocols/silc10/silc.c:1025 msgid "Change Password..." msgstr "গুপ্তসংকেত পরিবর্তন করুন..." #. } -#: ../libpurple/protocols/jabber/jabber.c:1994 msgid "Search for Users..." msgstr "ব্যবহারকারীর জন্য খুঁজুন..." # tithi -#: ../libpurple/protocols/jabber/jabber.c:2085 msgid "Bad Request" msgstr "খারাপ অনুরোধ" -#: ../libpurple/protocols/jabber/jabber.c:2087 msgid "Conflict" msgstr "দ্বন্দ্ব" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2089 msgid "Feature Not Implemented" msgstr "বৈশিষ্ট্য এখনও বাস্তবায়িত হয়নি" -#: ../libpurple/protocols/jabber/jabber.c:2091 msgid "Forbidden" msgstr "নিষিদ্ধ" -#: ../libpurple/protocols/jabber/jabber.c:2093 msgid "Gone" msgstr "চলে গেছে" -#: ../libpurple/protocols/jabber/jabber.c:2095 -#: ../libpurple/protocols/jabber/jabber.c:2176 msgid "Internal Server Error" msgstr "অভ্যন্তরীণ সার্ভার ত্রুটি" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2097 msgid "Item Not Found" msgstr "বিষয়োপকরণ খুঁজে পাওয়া যায়নি" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2099 msgid "Malformed XMPP ID" msgstr "বিকৃত XMPP ID" -#: ../libpurple/protocols/jabber/jabber.c:2101 msgid "Not Acceptable" msgstr "গ্রহণযোগ্য নয়" -#: ../libpurple/protocols/jabber/jabber.c:2103 msgid "Not Allowed" msgstr "অনুমোদিত নয়" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2107 msgid "Payment Required" msgstr "অর্থপ্রদান প্রয়োজন" -#: ../libpurple/protocols/jabber/jabber.c:2109 msgid "Recipient Unavailable" msgstr "প্রাপক অপ্রাপ্য" -#: ../libpurple/protocols/jabber/jabber.c:2113 msgid "Registration Required" msgstr "নিবন্ধন প্রয়োজন" -#: ../libpurple/protocols/jabber/jabber.c:2115 msgid "Remote Server Not Found" msgstr "দূরবর্তী সার্ভার খুঁজে পাওয়া যায়নি" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2117 msgid "Remote Server Timeout" msgstr "দূরবর্তী সার্ভারের সময় উত্তীর্ণ হয়েছে" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2119 msgid "Server Overloaded" msgstr "সার্ভার অতিরিক্ত বোঝাইকৃত" -#: ../libpurple/protocols/jabber/jabber.c:2121 msgid "Service Unavailable" msgstr "পরিসেবা অপ্রাপ্য" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2123 msgid "Subscription Required" msgstr "শেয়ারকরণ প্রয়োজন" -#: ../libpurple/protocols/jabber/jabber.c:2125 msgid "Unexpected Request" msgstr "অপ্রত্যাশিত অনুরোধ" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2133 msgid "Authorization Aborted" msgstr "প্রাপ্তাধিকার বাতিলকৃত" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2135 msgid "Incorrect encoding in authorization" msgstr "প্রাপ্তাধিকারে ত্রুটিপূর্ণ সঙ্কেতায়ন" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2137 msgid "Invalid authzid" msgstr "অবৈধ প্রাপ্তাধিকার" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2139 msgid "Invalid Authorization Mechanism" msgstr "অবৈধ প্রাপ্তাধিকার কৌশল" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2142 msgid "Authorization mechanism too weak" msgstr "প্রাপ্তাধিকার কৌশল খুব দূর্বল" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2150 msgid "Temporary Authentication Failure" msgstr "সাময়িক প্রমাণীকরণ ব্যর্থ" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2153 msgid "Authentication Failure" msgstr "প্রমাণীকরণ ব্যর্থ" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2161 msgid "Bad Format" msgstr "খারাপ বিন্যাস" -#: ../libpurple/protocols/jabber/jabber.c:2163 msgid "Bad Namespace Prefix" msgstr "খারাপ নাম-পরিসরের উপপদ" -#: ../libpurple/protocols/jabber/jabber.c:2166 msgid "Resource Conflict" msgstr "সম্পদ দ্বন্দ্ব তৈরি করে" -#: ../libpurple/protocols/jabber/jabber.c:2168 -#: ../libpurple/protocols/silc/silc.c:351 -#: ../libpurple/protocols/silc10/ops.c:1725 msgid "Connection Timeout" msgstr "সংযোগ সময় উত্তীর্ণ হয়েছে" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2170 msgid "Host Gone" msgstr "হোস্ট চলে গেছে" -#: ../libpurple/protocols/jabber/jabber.c:2172 msgid "Host Unknown" msgstr "অজানা হোস্ট" -#: ../libpurple/protocols/jabber/jabber.c:2174 msgid "Improper Addressing" msgstr "অনুপযুক্ত নির্দেশকরণ" -#: ../libpurple/protocols/jabber/jabber.c:2178 msgid "Invalid ID" msgstr "অবৈধ আইডি" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2180 msgid "Invalid Namespace" msgstr "অবৈধ নামপরিসর" -#: ../libpurple/protocols/jabber/jabber.c:2182 msgid "Invalid XML" msgstr "অবৈধ এক্সএমএল" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2184 msgid "Non-matching Hosts" msgstr "সমন্বয়হীন হোস্ট" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2188 msgid "Policy Violation" msgstr "নীতিমালা লঙ্ঘন" -#: ../libpurple/protocols/jabber/jabber.c:2190 msgid "Remote Connection Failed" msgstr "দূরবর্তী সংযোগ ব্যর্থ হয়েছে" -#: ../libpurple/protocols/jabber/jabber.c:2192 msgid "Resource Constraint" msgstr "সম্পদের সীমাবদ্ধতা" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2194 msgid "Restricted XML" msgstr "নিয়ন্ত্রিত XML" -#: ../libpurple/protocols/jabber/jabber.c:2196 msgid "See Other Host" msgstr "অন্যান্য হোষ্ট দেখুন" -#: ../libpurple/protocols/jabber/jabber.c:2198 msgid "System Shutdown" msgstr "সিস্টেম বন্ধ করুন" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2200 msgid "Undefined Condition" msgstr "অনির্ধারিত শর্ত" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2202 msgid "Unsupported Encoding" msgstr "অসমর্থিত সঙ্কেতায়ন" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2204 msgid "Unsupported Stanza Type" msgstr "অসমর্থিত স্ট্যানজা ধরন" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2206 msgid "Unsupported Version" msgstr "অসমর্থিত সংস্করণ" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2208 msgid "XML Not Well Formed" msgstr "XMLসঠিক ভাবে গঠিত নয়" -#: ../libpurple/protocols/jabber/jabber.c:2210 msgid "Stream Error" msgstr "স্ট্রীম ত্রুটি" -#: ../libpurple/protocols/jabber/jabber.c:2295 #, c-format msgid "Unable to ban user %s" msgstr "%s ব্যবহারকারীকে নিষিদ্ধ করতে অক্ষম" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2315 #, c-format msgid "Unknown affiliation: \"%s\"" msgstr "অজানা সম্পর্ক: \"%s\"" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2320 #, c-format msgid "Unable to affiliate user %s as \"%s\"" msgstr "%1s ব্যবহারকারীকে \"%2s\" হিসেবে সম্পর্কিত করতে অসমর্থ" -#: ../libpurple/protocols/jabber/jabber.c:2339 #, c-format msgid "Unknown role: \"%s\"" msgstr "অজানা ভূমিকা: \"%s\"" -#: ../libpurple/protocols/jabber/jabber.c:2344 #, c-format msgid "Unable to set role \"%s\" for user: %s" msgstr "ব্যবহারকারীর জন্য \"%1s\" ভূমিকা নির্ধারণ করতে ব্যর্থ: %2s" -#: ../libpurple/protocols/jabber/jabber.c:2397 #, c-format msgid "Unable to kick user %s" msgstr "%s ব্যবহারকারীকে বের করে দিতে অক্ষম" -#: ../libpurple/protocols/jabber/jabber.c:2428 #, c-format msgid "Unable to ping user %s" msgstr "%s ব্যবহারকারীকে পিঙ্গ করতে অক্ষম" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2446 -#: ../libpurple/protocols/jabber/jabber.c:2457 #, c-format msgid "Unable to buzz, because there is nothing known about user %s." msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীর সম্পর্কে কোনো কিছু জানা নেই।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2452 #, c-format msgid "Unable to buzz, because user %s might be offline." msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীরা সম্ভবত অফলাইনে।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2483 #, c-format msgid "Unable to buzz, because the user %s does not support it." msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারী এটি সমর্থন করে না।" #. Yahoo only supports one attention command: the 'buzz'. #. This is index number YAHOO_BUZZ. -#: ../libpurple/protocols/jabber/jabber.c:2503 -#: ../libpurple/protocols/yahoo/yahoo.c:4218 msgid "Buzz" msgstr "বাজ" -#: ../libpurple/protocols/jabber/jabber.c:2504 -#: ../libpurple/protocols/yahoo/yahoo.c:4219 #, c-format msgid "%s has buzzed you!" msgstr "%s আপনাকে বাজ দিয়েছে!" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2504 -#: ../libpurple/protocols/yahoo/yahoo.c:4219 #, c-format msgid "Buzzing %s..." msgstr "%s বাজ দিচ্ছে..." -#: ../libpurple/protocols/jabber/jabber.c:2535 msgid "config: Configure a chat room." msgstr "বিন্যাস: একটি আড্ডার কক্ষ পছন্দসই বিন্যাস করুন।" -#: ../libpurple/protocols/jabber/jabber.c:2539 msgid "configure: Configure a chat room." msgstr "বিন্যাসন: একটি আড্ডার কক্ষ পছন্দসই বিন্যাস করুন।" -#: ../libpurple/protocols/jabber/jabber.c:2548 msgid "part [room]: Leave the room." msgstr "অংশ [কক্ষ]: কক্ষ ত্যাগ করুন।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2553 msgid "register: Register with a chat room." msgstr "নিবন্ধন করুন: আড্ডা রুমের সাথে নিবন্ধন করুন।" -#: ../libpurple/protocols/jabber/jabber.c:2559 msgid "topic [new topic]: View or change the topic." msgstr "বিষয়বস্তু [নতুন বিষয়বস্তু]: বিষয়বস্তু প্রদর্শন অথবা পরিবর্তন করুন।" -#: ../libpurple/protocols/jabber/jabber.c:2565 msgid "ban <user> [reason]: Ban a user from the room." msgstr "" "নিষিদ্ধ <ব্যবহারকারী&2gt; [কারণ]: একজন ব্যবহারকারীকে কক্ষ থেকে নিষিদ্ধ করুন।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2571 msgid "" "affiliate <user> <owner|admin|member|outcast|none>: Set a user's " "affiliation with the room." @@ -6687,7 +4702,6 @@ "সঙ্গে একটি ব্যবহারকারীর সম্পর্ক নির্ধারণ করুন।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2577 msgid "" "role <user> <moderator|participant|visitor|none>: Set a user's " "role in the room." @@ -6695,23 +4709,19 @@ "ভূমিকা &1lt;ব্যবহারকারী&2gt; &3lt;সমন্বয়জ্ঞ|অংশগ্রহনকারী|পরিদর্শক|কেউনা&4gt;: কক্ষে " "ব্যবহারকারীর ভূমিকা নির্ধারণ করুন।" -#: ../libpurple/protocols/jabber/jabber.c:2583 msgid "invite <user> [message]: Invite a user to the room." msgstr "" "আমন্ত্রণ &1lt;ব্যবহাকারী&2gt; [বার্তা]: একজন ব্যবহারকারীকে কক্ষে আমন্ত্রণ জানান" -#: ../libpurple/protocols/jabber/jabber.c:2589 msgid "join: <room> [password]: Join a chat on this server." msgstr "যোগ দিন: &1lt;কক্ষ&2gt; [গুপ্তসঙ্কেত]: এই সার্ভারের একটি আড্ডায় অংশ নিন।" -#: ../libpurple/protocols/jabber/jabber.c:2595 msgid "kick <user> [reason]: Kick a user from the room." msgstr "" "বের করে দিন &1lt;ব্যবহারকারী&2gt; [কারণ]: কক্ষ থেকে একজন ব্যবহারকারীকে বের করে " "দিন।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2600 msgid "" "msg <user> <message>: Send a private message to another user." msgstr "" @@ -6719,14 +4729,11 @@ "বার্তা পাঠান।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2606 msgid "ping <jid>:\tPing a user/component/server." msgstr "" "ping <jid>: একজন ব্যবহারকারী/উপকরণ/সার্ভারকে পিঙ্গ করুন।" # tithi -#: ../libpurple/protocols/jabber/jabber.c:2611 -#: ../libpurple/protocols/yahoo/yahoo.c:4242 msgid "buzz: Buzz a user to get their attention" msgstr "বাজ: ব্যবহারকারীকে তার মনযোগ পেতে বাজ দিন" @@ -6740,110 +4747,83 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/jabber/libxmpp.c:172 -#: ../libpurple/protocols/jabber/libxmpp.c:174 msgid "XMPP Protocol Plugin" msgstr "XMPP প্রটোকল প্লাগইন" #. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im -#: ../libpurple/protocols/jabber/libxmpp.c:208 ../pidgin/gtkaccount.c:535 msgid "Domain" msgstr "ডোমেইন" # tithi -#: ../libpurple/protocols/jabber/libxmpp.c:216 msgid "Require SSL/TLS" msgstr "SSL/TSL প্রয়োজন" # tithi -#: ../libpurple/protocols/jabber/libxmpp.c:220 msgid "Force old (port 5223) SSL" msgstr "পুরাতন (পোর্ট ৫২২৩) SSL কে চাপ দিন" # tithi -#: ../libpurple/protocols/jabber/libxmpp.c:225 msgid "Allow plaintext auth over unencrypted streams" msgstr "অসঙ্কেতায়িত স্ট্রীমে সরল-পাঠ অধিকার অনুমোদন করুন" -#: ../libpurple/protocols/jabber/libxmpp.c:230 -#: ../libpurple/protocols/myspace/myspace.c:3630 -#: ../libpurple/protocols/simple/simple.c:2147 msgid "Connect port" msgstr "সংযোগ পোর্ট" #. TODO: default to automatically try different ports. Make the user be #. * able to set the first port to try (like LastConnectedPort in Windows client). #. Account options -#: ../libpurple/protocols/jabber/libxmpp.c:234 -#: ../libpurple/protocols/myspace/myspace.c:3627 -#: ../libpurple/protocols/silc/silc.c:2177 -#: ../libpurple/protocols/silc10/silc.c:1900 msgid "Connect server" msgstr "সংযোগ সার্ভার" -#: ../libpurple/protocols/jabber/libxmpp.c:239 msgid "File transfer proxies" msgstr "ফাইল স্থানান্তরণ প্রক্সি" # tithi #. this should probably be part of global smiley theme settings later on, #. shared with MSN -#: ../libpurple/protocols/jabber/libxmpp.c:248 msgid "Show Custom Smileys" msgstr "স্বনির্বাচিত স্মাইলিগুলো প্রদর্শন করুন" -#: ../libpurple/protocols/jabber/message.c:110 #, c-format msgid "%s has left the conversation." msgstr "%s কথোপকথন ত্যাগ করেছে।" -#: ../libpurple/protocols/jabber/message.c:166 #, c-format msgid "Message from %s" msgstr "%s হতে বার্তা" -#: ../libpurple/protocols/jabber/message.c:230 #, c-format msgid "%s has set the topic to: %s" msgstr "%1s বিষয়বস্তু নির্ধারণ করেছেন: %2s" -#: ../libpurple/protocols/jabber/message.c:232 #, c-format msgid "The topic is: %s" msgstr "বিষয়বস্তু হলো: %s" -#: ../libpurple/protocols/jabber/message.c:280 #, c-format msgid "Message delivery to %s failed: %s" msgstr "%1s এ বার্তা পাঠানো ব্যর্থ হয়েছে: %2s" -#: ../libpurple/protocols/jabber/message.c:283 msgid "XMPP Message Error" msgstr "XMPP বার্তা ত্রুটি" # tithi -#: ../libpurple/protocols/jabber/message.c:589 #, c-format msgid "(Code %s)" msgstr "(কোড %s)" # tithi -#: ../libpurple/protocols/jabber/parser.c:251 msgid "XML Parse error" msgstr "XML পার্স ত্রুটি" # tithi -#: ../libpurple/protocols/jabber/presence.c:445 msgid "Unknown Error in presence" msgstr "বর্তমানে অজানা ত্রুটি" -#: ../libpurple/protocols/jabber/presence.c:528 -#: ../libpurple/protocols/jabber/presence.c:529 msgid "Create New Room" msgstr "নতুন কক্ষ তৈরী করুন" # tithi -#: ../libpurple/protocols/jabber/presence.c:530 msgid "" "You are creating a new room. Would you like to configure it, or accept the " "default settings?" @@ -6851,144 +4831,103 @@ "আপনি একটি নতুন কক্ষ তৈরি করছেন। আপনি কি এটি বিন্যাস করতে আগ্রহী, বা পূর্বনির্ধারিত " "বিন্যাসনসমূহ গ্রহণ করবেন?" -#: ../libpurple/protocols/jabber/presence.c:536 msgid "_Configure Room" msgstr "কক্ষ বিন্যাস করুন (_C)" -#: ../libpurple/protocols/jabber/presence.c:537 msgid "_Accept Defaults" msgstr "পূর্বনির্ধারিত গ্রহণ (_A)" -#: ../libpurple/protocols/jabber/presence.c:579 #, c-format msgid "Error joining chat %s" msgstr "%s আড্ডায় অংশগ্রহনের ত্রুটি" -#: ../libpurple/protocols/jabber/presence.c:582 #, c-format msgid "Error in chat %s" msgstr "%s আড্ডায় ত্রুটি" # tithi -#: ../libpurple/protocols/jabber/si.c:1003 #, c-format msgid "Unable to send file to %s, user does not support file transfers" msgstr "%s এ ফাইল পাঠাতে অক্ষম, ব্যবহাকারীরা ফাইল স্থানান্তর সমর্থন করে না" -#: ../libpurple/protocols/jabber/si.c:1004 -#: ../libpurple/protocols/jabber/si.c:1005 -#: ../libpurple/protocols/jabber/si.c:1074 msgid "File Send Failed" msgstr "ফাইল পাঠানো ব্যর্থ হয়েছে" -#: ../libpurple/protocols/jabber/si.c:1067 #, c-format msgid "Unable to send file to %s, invalid JID" msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, অবৈধ JID" -#: ../libpurple/protocols/jabber/si.c:1069 #, c-format msgid "Unable to send file to %s, user is not online" msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী অনলাইনে নেই" -#: ../libpurple/protocols/jabber/si.c:1071 #, c-format msgid "Unable to send file to %s, not subscribed to user presence" msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী উপস্থিতিতে সম্মত নয়" # fix me tithi -#: ../libpurple/protocols/jabber/si.c:1086 #, c-format msgid "Please select the resource of %s to which you would like to send a file" msgstr "" "অনুগ্রহ করে আপনি %s এর এমন একটি সম্পদ নির্বাচন করুন যাতে আপনি একটি ফাইল পাঠাতে চান" -#: ../libpurple/protocols/jabber/si.c:1102 msgid "Select a Resource" msgstr "একটি সম্পদ নির্বাচন করুন" -#: ../libpurple/protocols/jabber/usermood.c:194 -#: ../libpurple/protocols/jabber/usermood.c:195 msgid "Edit User Mood" msgstr "ব্যবহাকারীরর মোড সম্পাদন করুন" # tithi -#: ../libpurple/protocols/jabber/usermood.c:196 msgid "Please select your mood from the list." msgstr "অনুগ্রহ করে তালিকা থেকে আপনার মোড নির্বাচন করুন।" -#: ../libpurple/protocols/jabber/usermood.c:198 -#: ../libpurple/protocols/jabber/usernick.c:78 msgid "Set" msgstr "নির্ধারন করুন" -#: ../libpurple/protocols/jabber/usermood.c:206 msgid "Set Mood..." msgstr "মোড নির্ধারন করুন..." -#: ../libpurple/protocols/jabber/usernick.c:76 msgid "Set User Nickname" msgstr "ব্যবহারকারীর ডাকনাম নির্ধারন করুন" -#: ../libpurple/protocols/jabber/usernick.c:76 msgid "Please specify a new nickname for you." msgstr "অনুগ্রহ করে আপনার জন্য নতুন ডাকনাম নির্দিষ্ট করুন।" # tithi -#: ../libpurple/protocols/jabber/usernick.c:77 msgid "" "This information is visible to all contacts on your contact list, so choose " "something appropriate." msgstr "" "এই তথ্যটি আপনার যোগাযোগ তালিকার সকল যোগাযোগে দৃশ্যমান, সুতরাং উপযুক্ত কিছু পছন্দ করুন।" -#: ../libpurple/protocols/jabber/usernick.c:100 msgid "Set Nickname..." msgstr "ডাকনাম নির্ধারণ করুন..." -#: ../libpurple/protocols/jabber/xdata.c:379 msgid "Actions" msgstr "কার্যসমূহ" -#: ../libpurple/protocols/jabber/xdata.c:381 msgid "Select an action" msgstr "একটি কার্য নির্বাচন করুন" -#: ../libpurple/protocols/msn/contact.c:801 -msgid "Unable to retrieve MSN Address Book" -msgstr "MSN ঠিকানা বই পুনরূদ্ধারে ব্যর্থ হয়েছে" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it -#: ../libpurple/protocols/msn/contact.c:968 -#: ../libpurple/protocols/msn/contact.c:1076 -#: ../libpurple/protocols/msn/userlist.c:695 -#: ../libpurple/protocols/msnp9/userlist.c:653 #, c-format msgid "Unable to add \"%s\"." msgstr "\"%s\" যোগ করতে সমর্থ নয়।" -#: ../libpurple/protocols/msn/contact.c:969 -#: ../libpurple/protocols/msn/contact.c:1077 msgid "Buddy Add error" msgstr "বন্ধু যোগ করতে ত্রুটি" -#: ../libpurple/protocols/msn/contact.c:970 -#: ../libpurple/protocols/msn/contact.c:1078 msgid "The username specified does not exist." msgstr "উল্লেখিত ব্য়বহারকারীর নামটি বিদ্যমান নয়।" # fix me tithi -#: ../libpurple/protocols/msn/dialog.c:118 -#: ../libpurple/protocols/msnp9/dialog.c:110 #, c-format msgid "Buddy list synchronization issue in %s (%s)" msgstr "%1s (%2s) এ বন্ধু তালিকার এককালবর্তীকরণ বিষয়" # tithi -#: ../libpurple/protocols/msn/dialog.c:124 -#: ../libpurple/protocols/msnp9/dialog.c:116 #, c-format msgid "" "%s on the local list is inside the group \"%s\" but not on the server list. " @@ -7000,8 +4939,6 @@ # msgstr "" # "স্থানীয় তালিকার %s গ্রুপ এ আছেন কিন্তু সার্ভার তালিকায় নেই।আপনি কি এই বন্ধুটিকে যোগ " # "করতে চান?" -#: ../libpurple/protocols/msn/dialog.c:132 -#: ../libpurple/protocols/msnp9/dialog.c:124 #, c-format msgid "" "%s is on the local list but not on the server list. Do you want this buddy " @@ -7010,387 +4947,304 @@ "%s স্থানীয় তালিকায় আছে কিন্তু সার্ভার তালিকায় নেই। আপনি কি এই বন্ধুটিকে যোগ করতে " "চান?" -#: ../libpurple/protocols/msn/error.c:36 -#: ../libpurple/protocols/msnp9/error.c:36 +#, c-format msgid "Unable to parse message" msgstr "বার্তা পার্স করা সম্ভব হয়নি" -#: ../libpurple/protocols/msn/error.c:40 -#: ../libpurple/protocols/msnp9/error.c:41 +#, c-format msgid "Syntax Error (probably a client bug)" msgstr "বাক্যরীতি ত্রুটি (সম্ভবত ক্লায়েন্টের ভূল)" -#: ../libpurple/protocols/msn/error.c:44 -#: ../libpurple/protocols/msnp9/error.c:46 +#, c-format msgid "Invalid email address" msgstr "অবৈধ ই‌-মেইল ঠিকানা" -#: ../libpurple/protocols/msn/error.c:47 -#: ../libpurple/protocols/msnp9/error.c:49 +#, c-format msgid "User does not exist" msgstr "ব্যবহারকারী বিদ্যমান নয়" # tithi -#: ../libpurple/protocols/msn/error.c:50 -#: ../libpurple/protocols/msnp9/error.c:53 +#, c-format msgid "Fully qualified domain name missing" msgstr "সম্পূর্ণভাবে যোগ্য ডোমেইন নাম নিরুদ্দিষ্ট" -#: ../libpurple/protocols/msn/error.c:53 -#: ../libpurple/protocols/msnp9/error.c:56 +#, c-format msgid "Already logged in" msgstr "ইতোমধ্যে লগইন করেছে" -#: ../libpurple/protocols/msn/error.c:56 -#: ../libpurple/protocols/msnp9/error.c:59 +#, c-format msgid "Invalid username" msgstr "অবৈধ ব্যবহারকারীর নাম" -#: ../libpurple/protocols/msn/error.c:59 -#: ../libpurple/protocols/msnp9/error.c:62 +#, c-format msgid "Invalid friendly name" msgstr "অবৈধ বন্ধুসুলভ নাম" -#: ../libpurple/protocols/msn/error.c:62 -#: ../libpurple/protocols/msnp9/error.c:65 +#, c-format msgid "List full" msgstr "তালিকা পূর্ণ" -#: ../libpurple/protocols/msn/error.c:65 -#: ../libpurple/protocols/msnp9/error.c:68 +#, c-format msgid "Already there" msgstr "ইতোমধ্যে সেখানে আছে" -#: ../libpurple/protocols/msn/error.c:69 -#: ../libpurple/protocols/msnp9/error.c:72 +#, c-format msgid "Not on list" msgstr "তালিকায় নেই" -#: ../libpurple/protocols/msn/error.c:72 -#: ../libpurple/protocols/msnp9/error.c:75 -#: ../libpurple/protocols/zephyr/zephyr.c:759 +#, c-format msgid "User is offline" msgstr "ব্যবহারকারী অফলাইনে" -#: ../libpurple/protocols/msn/error.c:75 -#: ../libpurple/protocols/msnp9/error.c:78 +#, c-format msgid "Already in the mode" msgstr "ইতোমধ্যে পরিমন্ডলে আছে" -#: ../libpurple/protocols/msn/error.c:79 -#: ../libpurple/protocols/msnp9/error.c:82 +#, c-format msgid "Already in opposite list" msgstr "ইতোমধ্যে বিপরীত তালিকায় আছে" -#: ../libpurple/protocols/msn/error.c:83 -#: ../libpurple/protocols/msnp9/error.c:86 +#, c-format msgid "Too many groups" msgstr "অতিরিক্ত গ্রুপ" -#: ../libpurple/protocols/msn/error.c:86 -#: ../libpurple/protocols/msnp9/error.c:89 +#, c-format msgid "Invalid group" msgstr "অবৈধ গ্রুপ" -#: ../libpurple/protocols/msn/error.c:89 -#: ../libpurple/protocols/msnp9/error.c:92 +#, c-format msgid "User not in group" msgstr "ব্যবহারকারী গ্রুপে নেই" -#: ../libpurple/protocols/msn/error.c:92 -#: ../libpurple/protocols/msnp9/error.c:95 +#, c-format msgid "Group name too long" msgstr "গ্রুপ নামটি অত্যন্ত দীর্ঘ" -#: ../libpurple/protocols/msn/error.c:95 -#: ../libpurple/protocols/msnp9/error.c:98 +#, c-format msgid "Cannot remove group zero" msgstr "গ্রুপ জিরো মুছে ফেলতে পারে না" -#: ../libpurple/protocols/msn/error.c:99 -#: ../libpurple/protocols/msnp9/error.c:103 +#, c-format msgid "Tried to add a user to a group that doesn't exist" msgstr "ব্যবহারকারীকে এমন একটি গ্রুপে যোগদানের চেষ্টা করা হয়েছে যা বিদ্যমান নেই" -#: ../libpurple/protocols/msn/error.c:102 -#: ../libpurple/protocols/msnp9/error.c:107 +#, c-format msgid "Switchboard failed" msgstr "সুইচবোর্ড ব্যর্থ" -#: ../libpurple/protocols/msn/error.c:106 -#: ../libpurple/protocols/msnp9/error.c:111 +#, c-format msgid "Notify transfer failed" msgstr "প্রজ্ঞাপন স্থানান্তর ব্যর্থ" # tithi -#: ../libpurple/protocols/msn/error.c:111 -#: ../libpurple/protocols/msnp9/error.c:116 +#, c-format msgid "Required fields missing" msgstr "প্রয়োজনীয় ক্ষেত্র নিরুদ্দিষ্ট" # tithi -#: ../libpurple/protocols/msn/error.c:115 -#: ../libpurple/protocols/msnp9/error.c:120 +#, c-format msgid "Too many hits to a FND" msgstr "একটি FND এ খুব বেশি আঘাত করা হয়েছে" -#: ../libpurple/protocols/msn/error.c:119 -#: ../libpurple/protocols/msnp9/error.c:124 -#: ../libpurple/protocols/oscar/oscar.c:123 +#, c-format msgid "Not logged in" msgstr "লগইন করা হয়নি" -#: ../libpurple/protocols/msn/error.c:123 -#: ../libpurple/protocols/msnp9/error.c:128 +#, c-format msgid "Service temporarily unavailable" msgstr "সাময়িকভাবে সেবা পাওয়া যাচ্ছে না" -#: ../libpurple/protocols/msn/error.c:126 -#: ../libpurple/protocols/msnp9/error.c:131 +#, c-format msgid "Database server error" msgstr "উপাত্তধার সার্ভারের ত্রুটি" -#: ../libpurple/protocols/msn/error.c:130 -#: ../libpurple/protocols/msnp9/error.c:135 +#, c-format msgid "Command disabled" msgstr "নির্দেশ নিষ্ক্রিয়" -#: ../libpurple/protocols/msn/error.c:134 -#: ../libpurple/protocols/msnp9/error.c:139 +#, c-format msgid "File operation error" msgstr "ফাইল পরিচালনের ত্রুটি" # tithi -#: ../libpurple/protocols/msn/error.c:138 -#: ../libpurple/protocols/msnp9/error.c:143 +#, c-format msgid "Memory allocation error" msgstr "মেমোরি বরাদ্দে ত্রুটি" # tithi -#: ../libpurple/protocols/msn/error.c:142 -#: ../libpurple/protocols/msnp9/error.c:147 +#, c-format msgid "Wrong CHL value sent to server" msgstr "ভূল CHL মান সার্ভারে পাঠিয়েছিল" -#: ../libpurple/protocols/msn/error.c:147 -#: ../libpurple/protocols/msnp9/error.c:152 +#, c-format msgid "Server busy" msgstr "সার্ভার ব্যস্ত" -#: ../libpurple/protocols/msn/error.c:150 -#: ../libpurple/protocols/msn/error.c:164 -#: ../libpurple/protocols/msn/error.c:222 -#: ../libpurple/protocols/msnp9/error.c:155 -#: ../libpurple/protocols/msnp9/error.c:170 -#: ../libpurple/protocols/msnp9/error.c:230 +#, c-format msgid "Server unavailable" msgstr "সার্ভার অপ্রাপ্য " # fix me tithi -#: ../libpurple/protocols/msn/error.c:153 -#: ../libpurple/protocols/msnp9/error.c:158 +#, c-format msgid "Peer notification server down" msgstr "পিয়ার প্রজ্ঞাপন সার্ভার নিস্ক্রিয়" -#: ../libpurple/protocols/msn/error.c:157 -#: ../libpurple/protocols/msnp9/error.c:162 +#, c-format msgid "Database connect error" msgstr "উপাত্তধার সংযোগে ত্রুটি" # tithi -#: ../libpurple/protocols/msn/error.c:161 -#: ../libpurple/protocols/msnp9/error.c:167 +#, c-format msgid "Server is going down (abandon ship)" msgstr "সার্ভার নিস্ক্রিয় হয়ে যাচ্ছে (ত্যাগ করুন)" # tithi -#: ../libpurple/protocols/msn/error.c:168 -#: ../libpurple/protocols/msnp9/error.c:174 +#, c-format msgid "Error creating connection" msgstr "সংযোগ তৈরিতে ত্রুটি" # tithi -#: ../libpurple/protocols/msn/error.c:172 -#: ../libpurple/protocols/msnp9/error.c:179 +#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "CVR প্যারামিটারসমূহ হয় অজানা বা অনুমোদিত নয়" -#: ../libpurple/protocols/msn/error.c:176 -#: ../libpurple/protocols/msnp9/error.c:183 +#, c-format msgid "Unable to write" msgstr "লিখতে সমর্থ নয়" # tithi -#: ../libpurple/protocols/msn/error.c:179 -#: ../libpurple/protocols/msnp9/error.c:186 +#, c-format msgid "Session overload" msgstr "অধিবেশন অতিরিক্ত" # tithi -#: ../libpurple/protocols/msn/error.c:183 -#: ../libpurple/protocols/msnp9/error.c:190 +#, c-format msgid "User is too active" msgstr "ব্যবহারকারী অনেক বেশি সক্রিয়" # tithi -#: ../libpurple/protocols/msn/error.c:186 -#: ../libpurple/protocols/msnp9/error.c:193 +#, c-format msgid "Too many sessions" msgstr "অনেক বেশি অধিবেশন" # tithi -#: ../libpurple/protocols/msn/error.c:189 -#: ../libpurple/protocols/msnp9/error.c:196 +#, c-format msgid "Passport not verified" msgstr "পাসপোর্ট পরীক্ষা করা হয়নি" # tithi -#: ../libpurple/protocols/msn/error.c:192 -#: ../libpurple/protocols/msnp9/error.c:199 +#, c-format msgid "Bad friend file" msgstr "খারাপ বন্ধু ফাইল" # tithi -#: ../libpurple/protocols/msn/error.c:196 -#: ../libpurple/protocols/msnp9/error.c:203 +#, c-format msgid "Not expected" msgstr "প্রত্যাশিত ছিল না" # tithi -#: ../libpurple/protocols/msn/error.c:201 -#: ../libpurple/protocols/msnp9/error.c:209 +#, c-format msgid "Friendly name changes too rapidly" msgstr "বন্ধুভাবাপন্ন নাম খুব দ্রুত পরিবর্তন হয়" -#: ../libpurple/protocols/msn/error.c:210 -#: ../libpurple/protocols/msnp9/error.c:218 +#, c-format msgid "Server too busy" msgstr "সার্ভার অত্যন্ত ব্যস্ত" # tithi -#: ../libpurple/protocols/msn/error.c:214 -#: ../libpurple/protocols/msnp9/error.c:222 -#: ../libpurple/protocols/oscar/oscar.c:1541 -#: ../libpurple/protocols/silc/silc.c:339 -#: ../libpurple/protocols/silc10/ops.c:1713 -#: ../libpurple/protocols/toc/toc.c:728 ../libpurple/proxy.c:1589 +#, c-format msgid "Authentication failed" msgstr "প্রমাণীকরণ ব্যর্থ" # tithi -#: ../libpurple/protocols/msn/error.c:217 -#: ../libpurple/protocols/msnp9/error.c:225 +#, c-format msgid "Not allowed when offline" msgstr "অফলাইনে অনুমোদিত নয়" # tithi -#: ../libpurple/protocols/msn/error.c:225 -#: ../libpurple/protocols/msnp9/error.c:233 +#, c-format msgid "Not accepting new users" msgstr "নতুন ব্যবহারকারী গ্রহণ করছে না" # tithi -#: ../libpurple/protocols/msn/error.c:228 -#: ../libpurple/protocols/msnp9/error.c:237 +#, c-format msgid "Kids Passport without parental consent" msgstr "অভিভাবক অনুমোদন ব্যতীত শিশুদের পাসপোর্ট" # tithi -#: ../libpurple/protocols/msn/error.c:231 -#: ../libpurple/protocols/msnp9/error.c:241 +#, c-format msgid "Passport account not yet verified" msgstr "এখনও পাসপোর্ট একাউন্ট পরীক্ষা করা হয়নি" # tithi -#: ../libpurple/protocols/msn/error.c:234 msgid "Passport account suspended" msgstr "পাসপোর্ট একাউন্ট স্থগিত" -#: ../libpurple/protocols/msn/error.c:237 -#: ../libpurple/protocols/msnp9/error.c:244 +#, c-format msgid "Bad ticket" msgstr "ত্রুটিযুক্ত টিকেট" # tithi -#: ../libpurple/protocols/msn/error.c:243 -#: ../libpurple/protocols/msnp9/error.c:249 #, c-format msgid "Unknown Error Code %d" msgstr "অজানা ত্রুটি কোড %d" # tithi -#: ../libpurple/protocols/msn/error.c:258 -#: ../libpurple/protocols/msnp9/error.c:263 #, c-format msgid "MSN Error: %s\n" msgstr "MSN ত্রুটি: %s\n" -#: ../libpurple/protocols/msn/group.h:36 msgid "Other Contacts" msgstr "অন্যান্য যোগাযোগসমূহ" -#: ../libpurple/protocols/msn/group.h:39 msgid "Non-IM Contacts" msgstr "IM নয় এমন যোগাযোগসমূহ" # tithi -#: ../libpurple/protocols/msn/msn.c:136 ../libpurple/protocols/msnp9/msn.c:137 msgid "Nudge" msgstr "একান্তে" -#: ../libpurple/protocols/msn/msn.c:137 ../libpurple/protocols/msnp9/msn.c:138 #, c-format msgid "%s has nudged you!" msgstr "%s আপনাকে একান্তে যোগ করেছেন!" # fix-me tithi -#: ../libpurple/protocols/msn/msn.c:137 ../libpurple/protocols/msnp9/msn.c:138 #, c-format msgid "Nudging %s..." msgstr "%s মনোযোগ আকর্ষন করছে..." -#: ../libpurple/protocols/msn/msn.c:150 ../libpurple/protocols/msnp9/msn.c:151 -#: ../libpurple/protocols/myspace/myspace.c:3002 msgid "Email Address..." msgstr "ই-মেইল ঠিকানা..." # tithi -#: ../libpurple/protocols/msn/msn.c:189 ../libpurple/protocols/msnp9/msn.c:190 msgid "Your new MSN friendly name is too long." msgstr "আপনার নতুন MSN বন্ধুভাবাপন্ন নাম খুব দীর্ঘ।" # tithi -#: ../libpurple/protocols/msn/msn.c:315 ../libpurple/protocols/msnp9/msn.c:298 msgid "Set your friendly name." msgstr "আপনার বন্ধুভাবাপন্ন নাম নির্ধারণ করুন।" # tithi -#: ../libpurple/protocols/msn/msn.c:316 ../libpurple/protocols/msnp9/msn.c:299 msgid "This is the name that other MSN buddies will see you as." msgstr "এটি এমন নাম যা দ্বারা অন্যান্য MSN বন্ধুরা আপনাকে দেখবে।" # tithi -#: ../libpurple/protocols/msn/msn.c:334 ../libpurple/protocols/msnp9/msn.c:317 msgid "Set your home phone number." msgstr "আপনার বাসার ফোন নাম্বার দিন।" # tithi -#: ../libpurple/protocols/msn/msn.c:351 ../libpurple/protocols/msnp9/msn.c:334 msgid "Set your work phone number." msgstr "আপনার কাজের ফোন নাম্বার দিন।" # tithi -#: ../libpurple/protocols/msn/msn.c:368 ../libpurple/protocols/msnp9/msn.c:351 msgid "Set your mobile phone number." msgstr "আপনার মোবাইল ফোন নাম্বার দিন।" # tithi -#: ../libpurple/protocols/msn/msn.c:383 ../libpurple/protocols/msnp9/msn.c:366 msgid "Allow MSN Mobile pages?" msgstr "MSN মোবাইল পেজগুলো কি অনুমোদন করবেন?" # tithi -#: ../libpurple/protocols/msn/msn.c:384 ../libpurple/protocols/msnp9/msn.c:367 msgid "" "Do you want to allow or disallow people on your buddy list to send you MSN " "Mobile pages to your cell phone or other mobile device?" @@ -7398,102 +5252,65 @@ "আপনি কি আপনার বন্ধু তালিকার জনগণকে আপনার সেল ফোন বা অন্যান্য মোবাইল ডিভাইসে MSN " "মোবাইল পৃষ্ঠাসমূহ পাঠাতে অনুমোদন দিতে চান বা চান না?" -#: ../libpurple/protocols/msn/msn.c:390 ../libpurple/protocols/msnp9/msn.c:373 msgid "Allow" msgstr "অনুমোদন করুন" -#: ../libpurple/protocols/msn/msn.c:391 ../libpurple/protocols/msnp9/msn.c:374 msgid "Disallow" msgstr "অনুমোদন করবিন না" -#: ../libpurple/protocols/msn/msn.c:406 #, c-format msgid "Blocked Text for %s" msgstr "%s এর জন্য ব্লককৃত পাঠ" # tithi -#: ../libpurple/protocols/msn/msn.c:408 msgid "No text is blocked for this account." msgstr "এই একাউন্টটির জন্য কোনো পাঠ আবদ্ধ নয়।" # tithi -#: ../libpurple/protocols/msn/msn.c:411 #, c-format msgid "" "MSN servers are currently blocking the following regular expressions:
%s" msgstr "MSN সার্ভার বর্তমানে নিম্নলিখিত নিয়মিত রাশিসমূহ আবদ্ধ করছে:
%s" # tithi -#: ../libpurple/protocols/msn/msn.c:432 msgid "This account does not have email enabled." msgstr "এই একাউন্টটি ই-মেইল সক্রিয় নেই।" -#: ../libpurple/protocols/msn/msn.c:472 ../libpurple/protocols/msnp9/msn.c:416 msgid "Send a mobile message." msgstr "মোবাইল বার্তা পাঠান।" -#: ../libpurple/protocols/msn/msn.c:474 ../libpurple/protocols/msnp9/msn.c:418 msgid "Page" msgstr "পৃষ্ঠা" -#: ../libpurple/protocols/msn/msn.c:718 msgid "Playing a game" msgstr "একটি খেলা খেলছে" -#: ../libpurple/protocols/msn/msn.c:721 msgid "Working" msgstr "কাজ করছে" # tithi -#: ../libpurple/protocols/msn/msn.c:795 ../libpurple/protocols/msnp9/msn.c:565 msgid "Has you" msgstr "আপনার কি" -#: ../libpurple/protocols/msn/msn.c:803 ../libpurple/protocols/msnp9/msn.c:586 msgid "Home Phone Number" msgstr "বাসার ফোন নম্বর" -#: ../libpurple/protocols/msn/msn.c:807 ../libpurple/protocols/msnp9/msn.c:590 msgid "Work Phone Number" msgstr "অফিসের ফোন নম্বর " -#: ../libpurple/protocols/msn/msn.c:811 ../libpurple/protocols/msnp9/msn.c:594 msgid "Mobile Phone Number" msgstr "মোবাইল ফোন নম্বর" -#: ../libpurple/protocols/msn/msn.c:834 ../libpurple/protocols/msn/state.c:33 -#: ../libpurple/protocols/msnp9/msn.c:613 -#: ../libpurple/protocols/msnp9/state.c:33 -#: ../libpurple/protocols/yahoo/yahoo.c:3155 -#: ../libpurple/protocols/yahoo/yahoo.c:3864 msgid "Be Right Back" msgstr "এক্ষুনি আসছি" -#: ../libpurple/protocols/msn/msn.c:840 ../libpurple/protocols/msn/state.c:31 -#: ../libpurple/protocols/msnp9/msn.c:617 -#: ../libpurple/protocols/msnp9/state.c:31 -#: ../libpurple/protocols/novell/novell.c:2840 -#: ../libpurple/protocols/novell/novell.c:2970 -#: ../libpurple/protocols/qq/qq.c:273 ../libpurple/protocols/qq/qq.c:421 -#: ../libpurple/protocols/silc/buddy.c:1495 -#: ../libpurple/protocols/silc/silc.c:57 -#: ../libpurple/protocols/silc10/buddy.c:1495 -#: ../libpurple/protocols/silc10/silc.c:48 -#: ../libpurple/protocols/yahoo/yahoo.c:3157 -#: ../libpurple/protocols/yahoo/yahoo.c:3867 msgid "Busy" msgstr "ব্যস্ত" -#: ../libpurple/protocols/msn/msn.c:845 ../libpurple/protocols/msnp9/msn.c:621 -#: ../libpurple/protocols/yahoo/yahoo.c:3165 -#: ../libpurple/protocols/yahoo/yahoo.c:3879 msgid "On the Phone" msgstr "ফোন এ কথা বলছি" # tithi -#: ../libpurple/protocols/msn/msn.c:850 ../libpurple/protocols/msnp9/msn.c:625 -#: ../libpurple/protocols/yahoo/yahoo.c:3169 -#: ../libpurple/protocols/yahoo/yahoo.c:3885 msgid "Out to Lunch" msgstr "দুপুরে খাবার জন্য বাইরে" @@ -7503,361 +5320,203 @@ #. saveable #. should be user_settable some day #. independent -#: ../libpurple/protocols/msn/msn.c:869 -#: ../libpurple/protocols/myspace/myspace.c:506 msgid "Artist" msgstr "শিল্পী" -#: ../libpurple/protocols/msn/msn.c:870 msgid "Album" msgstr "এ্যালবাম" -#: ../libpurple/protocols/msn/msn.c:872 msgid "Game Title" msgstr "খেলার শিরোনাম" -#: ../libpurple/protocols/msn/msn.c:873 msgid "Office Title" msgstr "অফিসের শিরোনাম" -#: ../libpurple/protocols/msn/msn.c:886 ../libpurple/protocols/msnp9/msn.c:653 msgid "Set Friendly Name..." msgstr "বন্ধুসুলভ নাম নির্ধারন করুন..." -#: ../libpurple/protocols/msn/msn.c:891 ../libpurple/protocols/msnp9/msn.c:658 msgid "Set Home Phone Number..." msgstr "বাসার ফোন নম্বর নির্ধারন করুন..." -#: ../libpurple/protocols/msn/msn.c:895 ../libpurple/protocols/msnp9/msn.c:662 msgid "Set Work Phone Number..." msgstr "অফিসের ফোন নম্বর নির্ধারন করুন..." -#: ../libpurple/protocols/msn/msn.c:899 ../libpurple/protocols/msnp9/msn.c:666 msgid "Set Mobile Phone Number..." msgstr "মোবাইল ফোন নম্বর নির্ধারন করুন..." -#: ../libpurple/protocols/msn/msn.c:905 ../libpurple/protocols/msnp9/msn.c:672 msgid "Enable/Disable Mobile Devices..." msgstr "মোবাইল ডিভাইসসমূহ সক্রিয়/নিষ্ক্রিয় করুন..." # tithi -#: ../libpurple/protocols/msn/msn.c:910 ../libpurple/protocols/msnp9/msn.c:677 msgid "Allow/Disallow Mobile Pages..." msgstr "মোবাইল পৃষ্ঠাগুলোকে অনুমোদন করুন/করবেন না..." # tithi -#: ../libpurple/protocols/msn/msn.c:917 msgid "View Blocked Text..." msgstr "ব্লককৃত পাঠ দেখান..." -#: ../libpurple/protocols/msn/msn.c:923 ../libpurple/protocols/msnp9/msn.c:688 msgid "Open Hotmail Inbox" msgstr "হটমেইল ইনবক্স খুলুন" -#: ../libpurple/protocols/msn/msn.c:946 ../libpurple/protocols/msnp9/msn.c:712 msgid "Send to Mobile" msgstr "মোবাইলে পাঠান" # tithi -#: ../libpurple/protocols/msn/msn.c:956 ../libpurple/protocols/msnp9/msn.c:722 -#: ../libpurple/protocols/novell/novell.c:3426 msgid "Initiate _Chat" msgstr "আড্ডা প্রস্তুত করুন (_C)" -#: ../libpurple/protocols/msn/msn.c:994 ../libpurple/protocols/msnp9/msn.c:761 msgid "SSL support is needed for MSN. Please install a supported SSL library." msgstr "" "MSN এর জন্য SSL সমর্থন প্রয়োজন। অনুগ্রহ করে একটি সমর্থিত SSL লাইব্রেরী সংস্থাপন করুন।" -#: ../libpurple/protocols/msn/msn.c:1025 -#: ../libpurple/protocols/msnp9/msn.c:792 msgid "Failed to connect to server." msgstr "সার্ভারে সংযোগ দিতে ব্যর্থ হয়েছে।" # tithi -#: ../libpurple/protocols/msn/msn.c:1951 ../libpurple/protocols/msn/msn.c:2293 -#: ../libpurple/protocols/msnp9/msn.c:1655 -#: ../libpurple/protocols/msnp9/msn.c:1998 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:809 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1200 msgid "Error retrieving profile" msgstr "বৃত্তান্ত উদ্ধারে ত্রুটি" -#: ../libpurple/protocols/msn/msn.c:2015 -#: ../libpurple/protocols/msnp9/msn.c:1721 ../pidgin/plugins/convcolors.c:371 -#: ../pidgin/plugins/pidginrc.c:375 msgid "General" msgstr "সাধারন" -#: ../libpurple/protocols/msn/msn.c:2022 -#: ../libpurple/protocols/msnp9/msn.c:1728 -#: ../libpurple/protocols/myspace/user.c:126 -#: ../libpurple/protocols/oscar/oscar.c:3960 -#: ../libpurple/protocols/qq/buddy_info.c:118 -#: ../libpurple/protocols/qq/qq.c:309 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1081 msgid "Age" msgstr "বয়স" -#: ../libpurple/protocols/msn/msn.c:2024 -#: ../libpurple/protocols/msnp9/msn.c:1730 -#: ../libpurple/protocols/qq/buddy_info.c:127 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1096 msgid "Occupation" msgstr "পেশা" -#: ../libpurple/protocols/msn/msn.c:2025 -#: ../libpurple/protocols/msnp9/msn.c:1731 -#: ../libpurple/protocols/myspace/user.c:134 -#: ../libpurple/protocols/novell/novell.c:1487 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1076 -#: ../libpurple/protocols/zephyr/zephyr.c:801 -#: ../libpurple/protocols/zephyr/zephyr.c:1178 msgid "Location" msgstr "স্থান" -#: ../libpurple/protocols/msn/msn.c:2030 ../libpurple/protocols/msn/msn.c:2222 -#: ../libpurple/protocols/msn/msn.c:2228 ../libpurple/protocols/msn/msn.c:2235 -#: ../libpurple/protocols/msnp9/msn.c:1736 -#: ../libpurple/protocols/msnp9/msn.c:1928 -#: ../libpurple/protocols/msnp9/msn.c:1934 -#: ../libpurple/protocols/msnp9/msn.c:1941 msgid "Hobbies and Interests" msgstr "শখ এবং আগ্রহ" -#: ../libpurple/protocols/msn/msn.c:2036 ../libpurple/protocols/msn/msn.c:2156 -#: ../libpurple/protocols/msn/msn.c:2162 ../libpurple/protocols/msn/msn.c:2169 -#: ../libpurple/protocols/msn/msn.c:2177 ../libpurple/protocols/msn/msn.c:2184 -#: ../libpurple/protocols/msnp9/msn.c:1742 -#: ../libpurple/protocols/msnp9/msn.c:1862 -#: ../libpurple/protocols/msnp9/msn.c:1868 -#: ../libpurple/protocols/msnp9/msn.c:1875 -#: ../libpurple/protocols/msnp9/msn.c:1883 -#: ../libpurple/protocols/msnp9/msn.c:1890 msgid "A Little About Me" msgstr "আমার সম্পর্কে অল্প কিছু" -#: ../libpurple/protocols/msn/msn.c:2053 -#: ../libpurple/protocols/msnp9/msn.c:1759 msgid "Social" msgstr "সামাজিক" -#: ../libpurple/protocols/msn/msn.c:2055 -#: ../libpurple/protocols/msnp9/msn.c:1761 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1086 msgid "Marital Status" msgstr "বৈবাহিক অবস্থা" -#: ../libpurple/protocols/msn/msn.c:2056 -#: ../libpurple/protocols/msnp9/msn.c:1762 msgid "Interests" msgstr "আগ্রহসমূহ" -#: ../libpurple/protocols/msn/msn.c:2057 -#: ../libpurple/protocols/msnp9/msn.c:1763 msgid "Pets" msgstr "পোষা প্রাণীসমূহ" -#: ../libpurple/protocols/msn/msn.c:2058 -#: ../libpurple/protocols/msnp9/msn.c:1764 msgid "Hometown" msgstr "শহুরে-বাড়ি" -#: ../libpurple/protocols/msn/msn.c:2059 -#: ../libpurple/protocols/msnp9/msn.c:1765 msgid "Places Lived" msgstr "বসবাসরত অবস্থান" -#: ../libpurple/protocols/msn/msn.c:2060 -#: ../libpurple/protocols/msnp9/msn.c:1766 msgid "Fashion" msgstr "ফ্যাশন" # tithi -#: ../libpurple/protocols/msn/msn.c:2061 -#: ../libpurple/protocols/msnp9/msn.c:1767 msgid "Humor" msgstr "হাস্যরস" -#: ../libpurple/protocols/msn/msn.c:2062 -#: ../libpurple/protocols/msnp9/msn.c:1768 msgid "Music" msgstr "সংগীত" -#: ../libpurple/protocols/msn/msn.c:2063 ../libpurple/protocols/msn/msn.c:2244 -#: ../libpurple/protocols/msn/msn.c:2250 -#: ../libpurple/protocols/msnp9/msn.c:1769 -#: ../libpurple/protocols/msnp9/msn.c:1950 -#: ../libpurple/protocols/msnp9/msn.c:1956 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1138 msgid "Favorite Quote" msgstr "প্রিয় উক্তি" -#: ../libpurple/protocols/msn/msn.c:2080 -#: ../libpurple/protocols/msnp9/msn.c:1786 msgid "Contact Info" msgstr "যোগাযোগের তথ্য" -#: ../libpurple/protocols/msn/msn.c:2081 -#: ../libpurple/protocols/msnp9/msn.c:1787 msgid "Personal" msgstr "ব্যক্তিগত" # tithi -#: ../libpurple/protocols/msn/msn.c:2084 -#: ../libpurple/protocols/msnp9/msn.c:1790 msgid "Significant Other" msgstr "গুরুত্বপূর্ণ অন্যান্য" -#: ../libpurple/protocols/msn/msn.c:2085 -#: ../libpurple/protocols/msnp9/msn.c:1791 msgid "Home Phone" msgstr "বাসার ফোন" -#: ../libpurple/protocols/msn/msn.c:2086 -#: ../libpurple/protocols/msnp9/msn.c:1792 msgid "Home Phone 2" msgstr "বাসার ফোন ২" -#: ../libpurple/protocols/msn/msn.c:2087 -#: ../libpurple/protocols/msnp9/msn.c:1793 -#: ../libpurple/protocols/oscar/oscar.c:3976 msgid "Home Address" msgstr "বাসার ঠিকানা" -#: ../libpurple/protocols/msn/msn.c:2088 -#: ../libpurple/protocols/msnp9/msn.c:1794 msgid "Personal Mobile" msgstr "ব্যক্তিগত মোবাইল" -#: ../libpurple/protocols/msn/msn.c:2089 -#: ../libpurple/protocols/msnp9/msn.c:1795 msgid "Home Fax" msgstr "বাসার ফ্যাক্স" -#: ../libpurple/protocols/msn/msn.c:2090 -#: ../libpurple/protocols/msnp9/msn.c:1796 msgid "Personal Email" msgstr "ব্যক্তিগত ই-মেইল" -#: ../libpurple/protocols/msn/msn.c:2091 -#: ../libpurple/protocols/msnp9/msn.c:1797 msgid "Personal IM" msgstr "ব্যক্তিগত আইএম" # tithi -#: ../libpurple/protocols/msn/msn.c:2093 -#: ../libpurple/protocols/msnp9/msn.c:1799 msgid "Anniversary" msgstr "বার্ষিকী" #. Business -#: ../libpurple/protocols/msn/msn.c:2109 -#: ../libpurple/protocols/msnp9/msn.c:1815 msgid "Work" msgstr "অফিস" # tithi -#: ../libpurple/protocols/msn/msn.c:2111 -#: ../libpurple/protocols/msnp9/msn.c:1817 -#: ../libpurple/protocols/silc/ops.c:1024 -#: ../libpurple/protocols/silc10/ops.c:1044 msgid "Job Title" msgstr "কাজের শিরোনাম" -#: ../libpurple/protocols/msn/msn.c:2112 -#: ../libpurple/protocols/msnp9/msn.c:1818 -#: ../libpurple/protocols/oscar/oscar.c:3994 msgid "Company" msgstr "কোম্পানী" -#: ../libpurple/protocols/msn/msn.c:2113 -#: ../libpurple/protocols/msnp9/msn.c:1819 -#: ../libpurple/protocols/novell/novell.c:1489 msgid "Department" msgstr "বিভাগ" -#: ../libpurple/protocols/msn/msn.c:2114 -#: ../libpurple/protocols/msnp9/msn.c:1820 msgid "Profession" msgstr "পেশা" -#: ../libpurple/protocols/msn/msn.c:2115 -#: ../libpurple/protocols/msnp9/msn.c:1821 msgid "Work Phone" msgstr "অফিস ফোন" -#: ../libpurple/protocols/msn/msn.c:2116 -#: ../libpurple/protocols/msnp9/msn.c:1822 msgid "Work Phone 2" msgstr "অফিস ফোন ২" -#: ../libpurple/protocols/msn/msn.c:2117 -#: ../libpurple/protocols/msnp9/msn.c:1823 -#: ../libpurple/protocols/oscar/oscar.c:3984 msgid "Work Address" msgstr "অফিস ঠিকানা" -#: ../libpurple/protocols/msn/msn.c:2118 -#: ../libpurple/protocols/msnp9/msn.c:1824 msgid "Work Mobile" msgstr "অফিস মোবাইল" -#: ../libpurple/protocols/msn/msn.c:2119 -#: ../libpurple/protocols/msnp9/msn.c:1825 msgid "Work Pager" msgstr "অফিস পেইজার" -#: ../libpurple/protocols/msn/msn.c:2120 -#: ../libpurple/protocols/msnp9/msn.c:1826 msgid "Work Fax" msgstr "অফিস ফ্যাক্স" -#: ../libpurple/protocols/msn/msn.c:2121 -#: ../libpurple/protocols/msnp9/msn.c:1827 msgid "Work Email" msgstr "অফিস ই-মেইল" -#: ../libpurple/protocols/msn/msn.c:2122 -#: ../libpurple/protocols/msnp9/msn.c:1828 msgid "Work IM" msgstr "অফিস আইএম" -#: ../libpurple/protocols/msn/msn.c:2123 -#: ../libpurple/protocols/msnp9/msn.c:1829 msgid "Start Date" msgstr "শুরুর তারিখ" -#: ../libpurple/protocols/msn/msn.c:2193 ../libpurple/protocols/msn/msn.c:2199 -#: ../libpurple/protocols/msn/msn.c:2206 ../libpurple/protocols/msn/msn.c:2213 -#: ../libpurple/protocols/msnp9/msn.c:1899 -#: ../libpurple/protocols/msnp9/msn.c:1905 -#: ../libpurple/protocols/msnp9/msn.c:1912 -#: ../libpurple/protocols/msnp9/msn.c:1919 msgid "Favorite Things" msgstr "প্রিয় জিনিসসমূহ" -#: ../libpurple/protocols/msn/msn.c:2258 -#: ../libpurple/protocols/msnp9/msn.c:1964 msgid "Last Updated" msgstr "সর্বশেষ হালনাগাদকৃত" -#: ../libpurple/protocols/msn/msn.c:2269 -#: ../libpurple/protocols/msnp9/msn.c:1975 -#: ../libpurple/protocols/qq/buddy_info.c:128 -#: ../libpurple/protocols/silc/ops.c:1040 -#: ../libpurple/protocols/silc10/ops.c:1060 msgid "Homepage" msgstr "হোমপেজ" -#: ../libpurple/protocols/msn/msn.c:2295 -#: ../libpurple/protocols/msnp9/msn.c:1999 msgid "The user has not created a public profile." msgstr "ব্যবহারকারী কোনো জনসাধারণের প্রোফাইল তৈরী করেনি।" # tithi -#: ../libpurple/protocols/msn/msn.c:2296 -#: ../libpurple/protocols/msnp9/msn.c:2000 msgid "" "MSN reported not being able to find the user's profile. This either means " "that the user does not exist, or that the user exists but has not created a " @@ -7868,19 +5527,12 @@ "বৃত্তান্ত তৈরি করেনি।" # tithi -#: ../libpurple/protocols/msn/msn.c:2300 -#: ../libpurple/protocols/msnp9/msn.c:2004 msgid "" "Could not find any information in the user's profile. The user most likely " "does not exist." msgstr "" "ব্যবহারকারীর বৃত্তান্তে কোনো তথ্য খুঁজে পায়নি। ব্যবহারকারী সম্ভবত বিদ্যমান থাকবে না।" -#: ../libpurple/protocols/msn/msn.c:2308 -#: ../libpurple/protocols/myspace/user.c:193 -#: ../libpurple/protocols/myspace/user.c:196 -#: ../libpurple/protocols/oscar/oscar.c:3192 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1236 msgid "View web profile" msgstr "ওয়েব প্রোফাইল দেখুন" @@ -7893,139 +5545,91 @@ #. *< name #. *< version #. *< summary -#: ../libpurple/protocols/msn/msn.c:2596 ../libpurple/protocols/msn/msn.c:2597 msgid "Windows Live Messenger Protocol Plugin" msgstr "উইন্ডোজের সরাসরি মেসেনজার প্রোটোকল প্লাগইন" # tithi -#: ../libpurple/protocols/msn/msn.c:2631 -#: ../libpurple/protocols/msnp9/msn.c:2335 msgid "Use HTTP Method" msgstr "HTTP পদ্ধতি ব্যবহার করুন" -#: ../libpurple/protocols/msn/msn.c:2636 -#: ../libpurple/protocols/msnp9/msn.c:2340 msgid "HTTP Method Server" msgstr "HTTP পদ্ধতির সার্ভার" # tithi -#: ../libpurple/protocols/msn/msn.c:2641 -#: ../libpurple/protocols/msnp9/msn.c:2345 msgid "Show custom smileys" msgstr "স্বনির্বাচিত স্মাইলীগুলো দেখান" # fix -me tithi -#: ../libpurple/protocols/msn/msn.c:2649 -#: ../libpurple/protocols/msnp9/msn.c:2353 msgid "nudge: nudge a user to get their attention" msgstr "নাজ: ব্যবহারকারীদের মনোযোগ পেতে তাদেরকে নাজ দিন" # tithi -#: ../libpurple/protocols/msn/nexus.c:359 msgid "Windows Live ID authentication:Unable to connect" msgstr "উইন্ডোজ সরাসরি আইডি প্রমাণীকরণ:সংযোগ করতে অক্ষম" # tithi -#: ../libpurple/protocols/msn/nexus.c:366 msgid "Windows Live ID authentication:Invalid response" msgstr "উইন্ডোজ সরাসরি আইডি প্রমাণীকরণ:অবৈধ সাড়া" -#: ../libpurple/protocols/msn/notification.c:176 -#: ../libpurple/protocols/msnp9/notification.c:178 #, c-format msgid "%s is not a valid group." msgstr "%s কোনো বৈধ গ্রুপ নয়।" -#: ../libpurple/protocols/msn/notification.c:182 -#: ../libpurple/protocols/msn/notification.c:961 -#: ../libpurple/protocols/msn/session.c:391 -#: ../libpurple/protocols/msnp9/notification.c:184 -#: ../libpurple/protocols/msnp9/notification.c:534 -#: ../libpurple/protocols/msnp9/session.c:353 -#: ../libpurple/protocols/yahoo/yahoo.c:2140 msgid "Unknown error." msgstr "অজানা ত্রুটি।" -#: ../libpurple/protocols/msn/notification.c:185 -#: ../libpurple/protocols/msnp9/notification.c:187 #, c-format msgid "%s on %s (%s)" msgstr "%2s (%3s) এ %1s" -#: ../libpurple/protocols/msn/notification.c:475 #, c-format msgid "%s just sent you a Nudge!" msgstr "%s আপনার দৃষ্টি আকর্ষন করছে!" #. char *adl = g_strndup(payload, len); -#: ../libpurple/protocols/msn/notification.c:765 -#: ../libpurple/protocols/msn/notification.c:795 #, c-format msgid "Unknown error (%d)" msgstr "অজানা ত্রুটি (%d)" -#: ../libpurple/protocols/msn/notification.c:773 -#: ../libpurple/protocols/msn/notification.c:796 -#: ../libpurple/protocols/sametime/sametime.c:4487 msgid "Unable to add user" msgstr "ব্যবহারকারী যোগ করতে সমর্থ নয়" -#: ../libpurple/protocols/msn/notification.c:836 msgid "The following users are missing from your addressbook" msgstr "আপনার ঠিকানা বই থেকে নিম্নোক্ত ব্যবহারকারীরা হারিয়ে গেছে" -#: ../libpurple/protocols/msn/notification.c:927 -#: ../libpurple/protocols/msnp9/notification.c:500 #, c-format msgid "Unable to add user on %s (%s)" msgstr "%1s (%2s) এ ব্যবহারকারী যোগ করতে সমর্থ নয়" -#: ../libpurple/protocols/msn/notification.c:931 -#: ../libpurple/protocols/msnp9/notification.c:504 #, c-format msgid "Unable to block user on %s (%s)" msgstr "%1s (%2s) এ ব্যবহারকারী আবদ্ধ করতে সমর্থ নয়" -#: ../libpurple/protocols/msn/notification.c:935 -#: ../libpurple/protocols/msnp9/notification.c:508 #, c-format msgid "Unable to permit user on %s (%s)" msgstr "%1s (%2s) ব্যবহারকারীকে অনুমতি প্রদান করতে সমর্থ নয়" -#: ../libpurple/protocols/msn/notification.c:943 -#: ../libpurple/protocols/msnp9/notification.c:516 #, c-format msgid "%s could not be added because your buddy list is full." msgstr "আপনার বন্ধু তালিকা পূর্ণ থাকার কারণে %s কে যোগ করা যাচ্ছে না।" -#: ../libpurple/protocols/msn/notification.c:952 -#: ../libpurple/protocols/msnp9/notification.c:525 #, c-format msgid "%s is not a valid passport account." msgstr "%s বৈধ পাসপোর্ট একাউন্ট নয়।" -#: ../libpurple/protocols/msn/notification.c:957 -#: ../libpurple/protocols/msnp9/notification.c:530 msgid "Service Temporarily Unavailable." msgstr "সাময়িকভাবে সেবা পাওয়া যাচ্ছে না।" -#: ../libpurple/protocols/msn/notification.c:1196 msgid "Mobile message was not sent because it was too long." msgstr "মোবাইল বার্তাটি অনেক বড় বিধায় পাঠানো হয়নি।" -#: ../libpurple/protocols/msn/notification.c:1375 -#: ../libpurple/protocols/msnp9/notification.c:899 msgid "Unable to rename group" msgstr "গ্রুপ পুনরায় নামকরণ করতে সমর্থ নয়" -#: ../libpurple/protocols/msn/notification.c:1402 -#: ../libpurple/protocols/msnp9/notification.c:954 msgid "Unable to delete group" msgstr "গ্রুপ মুছে ফেলতে অক্ষম" # tithi -#: ../libpurple/protocols/msn/notification.c:1935 -#: ../libpurple/protocols/msnp9/notification.c:1373 #, c-format msgid "" "The MSN server will shut down for maintenance in %d minute. You will " @@ -8053,7 +5657,6 @@ "রক্ষনাবেক্ষন সম্পূর্ন হবার পর, আপনি সফলভাবে সাইন ইন করতে পারবেন।" # tithi -#: ../libpurple/protocols/msn/oim.c:400 msgid "" "Message was not sent because the system is unavailable. This normally " "happens when the user is blocked or does not exist." @@ -8061,42 +5664,26 @@ "বার্তা পাঠানো হয়নি কারণ সিস্টেম সহজলভ্য নয়। এইটি সাধারণত ঘটে যখন ব্যবহারকারী " "আবদ্ধ বা ব্যবহারকারী বিদ্যমান থাকে না।" -#: ../libpurple/protocols/msn/oim.c:405 msgid "Message was not sent because messages are being sent too quickly." msgstr "বার্তা পাঠানো যায়নি কারণ বার্তাগুলো খুব তাড়াতাড়ি পাঠানো হচ্ছিল।" -#: ../libpurple/protocols/msn/oim.c:409 msgid "Message was not sent because an unknown encoding error occurred." msgstr "অজানা সঙ্কেতায়ন ত্রুটি সংঘটিত হওয়ার কারণে বার্তা পাঠানো যায়নি।" -#: ../libpurple/protocols/msn/oim.c:413 msgid "Message was not sent because an unknown error occurred." msgstr "অজানা ত্রুটি সংঘটিত হওয়ার কারণে বার্তা পাঠানো যায়নি।" -#: ../libpurple/protocols/msn/servconn.c:134 -#: ../libpurple/protocols/msnp9/nexus.c:146 -#: ../libpurple/protocols/msnp9/servconn.c:133 -#: ../libpurple/protocols/qq/qq_network.c:840 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1565 -#: ../libpurple/protocols/yahoo/yahoochat.c:1425 -#: ../libpurple/protocols/yahoo/yahoochat.c:1451 msgid "Unable to connect" msgstr "সংযোগ করতে সমর্থ নয়" # tithi -#: ../libpurple/protocols/msn/servconn.c:136 -#: ../libpurple/protocols/msnp9/servconn.c:135 msgid "Writing error" msgstr "লিখন ত্রুটি" -#: ../libpurple/protocols/msn/servconn.c:138 -#: ../libpurple/protocols/msnp9/servconn.c:137 msgid "Reading error" msgstr "পাঠ ত্রুটি" # tithi -#: ../libpurple/protocols/msn/servconn.c:145 -#: ../libpurple/protocols/msnp9/servconn.c:144 #, c-format msgid "" "Connection error from %s server:\n" @@ -8105,44 +5692,28 @@ "%1s সার্ভার হতে সংযোগের ত্রুটি:\n" "%2s" -#: ../libpurple/protocols/msn/session.c:353 -#: ../libpurple/protocols/msnp9/session.c:315 msgid "Our protocol is not supported by the server." msgstr "আমাদের প্রটোকল সার্ভার সমর্থন করে না।" -#: ../libpurple/protocols/msn/session.c:358 -#: ../libpurple/protocols/msnp9/session.c:320 msgid "Error parsing HTTP." msgstr "HTTP পার্স করতে ত্রুটি।" -#: ../libpurple/protocols/msn/session.c:362 -#: ../libpurple/protocols/msnp9/session.c:324 -#: ../libpurple/protocols/oscar/flap_connection.c:439 -#: ../libpurple/protocols/yahoo/yahoo.c:161 msgid "You have signed on from another location." msgstr "আপনি অন্য স্থান থেকে সাইন অন করেছেন।" -#: ../libpurple/protocols/msn/session.c:368 -#: ../libpurple/protocols/msnp9/session.c:330 msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" "সাময়িকভাবে এমএসএন সার্ভার পাওয়া যাচ্ছে না। অনুগ্রহ করে অপেক্ষা করুন এবং পুনরায় " "চেষ্টা করুন" # tithi -#: ../libpurple/protocols/msn/session.c:374 -#: ../libpurple/protocols/msnp9/session.c:336 msgid "The MSN servers are going down temporarily." msgstr "MSN সার্ভার সাময়িকভাবে নিস্ক্রিয় হচ্ছে।" -#: ../libpurple/protocols/msn/session.c:379 -#: ../libpurple/protocols/msnp9/session.c:341 #, c-format msgid "Unable to authenticate: %s" msgstr "প্রমাণীকরণ করতে অক্ষম: %s" -#: ../libpurple/protocols/msn/session.c:385 -#: ../libpurple/protocols/msnp9/session.c:347 msgid "" "Your MSN buddy list is temporarily unavailable. Please wait and try again." msgstr "" @@ -8150,84 +5721,52 @@ "পুনরায় চেষ্টা করুন।" # tithi -#: ../libpurple/protocols/msn/session.c:407 -#: ../libpurple/protocols/msn/session.c:409 -#: ../libpurple/protocols/msnp9/session.c:369 -#: ../libpurple/protocols/msnp9/session.c:371 msgid "Handshaking" msgstr "হ্যান্ডসেকিং" -#: ../libpurple/protocols/msn/session.c:408 -#: ../libpurple/protocols/msnp9/session.c:370 msgid "Transferring" msgstr "স্থানান্তর করছে" # tithi -#: ../libpurple/protocols/msn/session.c:410 -#: ../libpurple/protocols/msnp9/session.c:372 msgid "Starting authentication" msgstr "প্রমাণীকরণ শুরু করছে" # tithi -#: ../libpurple/protocols/msn/session.c:411 -#: ../libpurple/protocols/msnp9/session.c:373 msgid "Getting cookie" msgstr "কুকি গ্রহণ করছে" -#: ../libpurple/protocols/msn/session.c:413 -#: ../libpurple/protocols/msnp9/session.c:375 msgid "Sending cookie" msgstr "কুকি পাঠাচ্ছে" -#: ../libpurple/protocols/msn/session.c:414 -#: ../libpurple/protocols/msnp9/session.c:376 msgid "Retrieving buddy list" msgstr "বন্ধু তালিকা উদ্ধার করছে" -#: ../libpurple/protocols/msn/state.c:34 -#: ../libpurple/protocols/msnp9/state.c:34 msgid "Away From Computer" msgstr "কম্পিউটার থেকে দূরে" -#: ../libpurple/protocols/msn/state.c:35 -#: ../libpurple/protocols/msnp9/state.c:35 msgid "On The Phone" msgstr "ফোন এ কথা বলছে" -#: ../libpurple/protocols/msn/state.c:36 -#: ../libpurple/protocols/msnp9/state.c:36 msgid "Out To Lunch" msgstr "লাঞ্চ এর জন্য বাইরে" -#: ../libpurple/protocols/msn/switchboard.c:427 -#: ../libpurple/protocols/msnp9/switchboard.c:411 msgid "Message may have not been sent because a timeout occurred:" msgstr "সময় শেষ হয়ে যাওযার কারণে বার্তা সম্ভবত পাঠানো হয়নি:" # tithi -#: ../libpurple/protocols/msn/switchboard.c:463 -#: ../libpurple/protocols/msnp9/switchboard.c:419 msgid "Message could not be sent, not allowed while invisible:" msgstr "বার্তা পাঠানো যাবে না, অদৃশ্য অবস্থায় অনুমোদিত নয়:" -#: ../libpurple/protocols/msn/switchboard.c:467 -#: ../libpurple/protocols/msnp9/switchboard.c:423 msgid "Message could not be sent because the user is offline:" msgstr "বার্তা পাঠানো যাচ্ছে না কারণ ব্যবহারকারী অফলাইনে:" -#: ../libpurple/protocols/msn/switchboard.c:471 -#: ../libpurple/protocols/msnp9/switchboard.c:427 msgid "Message could not be sent because a connection error occurred:" msgstr "বার্তা পাঠানো যাচ্ছে না কারণ সংযোগে ত্রুটি সংঘটিত হয়েছে:" -#: ../libpurple/protocols/msn/switchboard.c:475 -#: ../libpurple/protocols/msnp9/switchboard.c:431 msgid "Message could not be sent because we are sending too quickly:" msgstr "বার্তা পাঠানো যাচ্ছে না কারন আমরা খুব তাড়াতাড়ি পাঠাচ্ছি:" # tithi -#: ../libpurple/protocols/msn/switchboard.c:479 -#: ../libpurple/protocols/msnp9/switchboard.c:435 msgid "" "Message could not be sent because we were unable to establish a session with " "the server. This is likely a server problem, try again in a few minutes:" @@ -8235,49 +5774,35 @@ "বার্তা পাঠানো যাচ্ছে না কারণ আমরা সার্ভারের সাথে একটি অধিবেশন প্রতিষ্ঠিত করতে " "অক্ষম ছিলাম। এটি সম্ভবত সার্ভার সমস্যা, কয়েক মিনিটের মধ্যে পুনরায় একটি চেষ্টা করুন:" -#: ../libpurple/protocols/msn/switchboard.c:486 -#: ../libpurple/protocols/msnp9/switchboard.c:442 msgid "" "Message could not be sent because an error with the switchboard occurred:" msgstr "সুইচবোর্ডে ত্রুটি থাকার কারনে বার্তা পাঠানো যায়নি:" -#: ../libpurple/protocols/msn/switchboard.c:494 -#: ../libpurple/protocols/msnp9/switchboard.c:450 msgid "Message may have not been sent because an unknown error occurred:" msgstr "একটি অজানা ত্রুটির সংঘটিত হওয়ার কারণে বার্তা হয়ত পাঠানো যায়নি:" -#: ../libpurple/protocols/msn/userlist.c:211 -#: ../libpurple/protocols/msnp9/userlist.c:262 #, c-format msgid "%s has added you to his or her buddy list." msgstr "%s আপনাকে তার বন্ধু তালিকায় যোগ করেছেন।" -#: ../libpurple/protocols/msn/userlist.c:276 -#: ../libpurple/protocols/msnp9/userlist.c:331 #, c-format msgid "%s has removed you from his or her buddy list." msgstr "%s আপনাকে তার বন্ধু তালিকা থেকে অপসারণ করেছে।" -#: ../libpurple/protocols/msn/userlist.c:641 msgid "Delete Buddy from Address Book?" msgstr "ঠিকানার বই থেকে কি বন্ধু মুছে ফেলতে চান?" -#: ../libpurple/protocols/msn/userlist.c:642 msgid "Do you want to delete this buddy from your address book as well?" msgstr "আপনি কি এই বন্ধুটিকেও আপনার ঠিকানা বই থেকে মুছে ফেলতে চান?" -#: ../libpurple/protocols/msn/userlist.c:698 -#: ../libpurple/protocols/msnp9/userlist.c:655 msgid "The username specified is invalid." msgstr "উল্লেখিত ব্য়বহারকারীর নামটি অবৈধ।" # tithi -#: ../libpurple/protocols/msnp9/msn.c:390 msgid "This Hotmail account may not be active." msgstr "এই হটমেইল একাউন্টটি সক্রিয় নাও থাকতে পারে।" # tithi -#: ../libpurple/protocols/msnp9/msn.c:2012 msgid "Profile URL" msgstr "প্রোফাইল URL" @@ -8291,92 +5816,69 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/msnp9/msn.c:2299 -#: ../libpurple/protocols/msnp9/msn.c:2301 msgid "MSN Protocol Plugin" msgstr "MSN প্রোটোকল প্লাগইন" # tithi -#: ../libpurple/protocols/myspace/myspace.c:136 #, c-format msgid "No such user: %s" msgstr "এমন কোনো ব্যবহারকারী নেই: %s" -#: ../libpurple/protocols/myspace/myspace.c:138 msgid "User lookup" msgstr "ব্যবহারকারী দেখছে" -#: ../libpurple/protocols/myspace/myspace.c:675 msgid "Reading challenge" msgstr "পড়তে সমস্যা হচ্ছে" # fix me tithi -#: ../libpurple/protocols/myspace/myspace.c:685 msgid "Unexpected challenge length from server" msgstr "সার্ভারের অপ্রত্যাশিত চ্যালেঞ্জ সীমা" -#: ../libpurple/protocols/myspace/myspace.c:689 -#: ../libpurple/protocols/qq/qq_process.c:1010 msgid "Logging in" msgstr "সংযুক্ত হচ্ছে" -#: ../libpurple/protocols/myspace/myspace.c:786 msgid "MySpaceIM - No Username Set" msgstr "MySpaceIM - কোনো ব্যবহারকারীর নাম বিন্যাস করা হয়নি" # tithi -#: ../libpurple/protocols/myspace/myspace.c:787 msgid "You appear to have no MySpace username." msgstr "আপনি MySpace ব্যবহারকারীর-নাম ব্যতিত উপস্থিত হয়েছেন।" # tithi -#: ../libpurple/protocols/myspace/myspace.c:788 msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)" msgstr "আপনি কি এখন একটি নির্ধারণ করতে আগ্রহী? (নোট: এটি পরিবর্তন করা যায় না!)" -#: ../libpurple/protocols/myspace/myspace.c:825 -#: ../libpurple/protocols/qq/qq_base.c:484 -#: ../libpurple/protocols/qq/qq_base.c:533 -#: ../libpurple/protocols/qq/qq_base.c:577 msgid "Lost connection with server" msgstr "সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হয়েছে" #. Can't write _()'d strings in array initializers. Workaround. -#: ../libpurple/protocols/myspace/myspace.c:861 msgid "New mail messages" msgstr "নতুন মেইল বার্তাসমূহ" # tithi -#: ../libpurple/protocols/myspace/myspace.c:862 msgid "New blog comments" msgstr "নতুন ব্লগ মন্তব্য" # tithi -#: ../libpurple/protocols/myspace/myspace.c:863 msgid "New profile comments" msgstr "নতুন প্রোফাইল মন্তব্য" # tithi -#: ../libpurple/protocols/myspace/myspace.c:864 msgid "New friend requests!" msgstr "নতুন বন্ধু অনুরোধ!" # tithi -#: ../libpurple/protocols/myspace/myspace.c:865 msgid "New picture comments" msgstr "নতুন ছবি মন্তব্য" # tithi -#: ../libpurple/protocols/myspace/myspace.c:893 msgid "MySpace" msgstr "MySpace" -#: ../libpurple/protocols/myspace/myspace.c:1000 msgid "IM Friends" msgstr "IM বন্ধুসমূহ" # tithi -#: ../libpurple/protocols/myspace/myspace.c:1136 #, c-format msgid "" "%d buddy was added or updated from the server (including buddies already on " @@ -8391,25 +5893,20 @@ "সার্ভার থেকে %d বন্ধুসমূহ যোগ বা হালনাগাদ করা হয়েছিল ( সার্ভার-পার্শ্বের তালিকায় " "বিদ্যমান বন্ধুরা সহ)" -#: ../libpurple/protocols/myspace/myspace.c:1140 msgid "Add contacts from server" msgstr "সার্ভার থেকে যোগাযোগগুলো যোগ করুন" #. The session is now set up, ready to be connected. This emits the #. * signedOn signal, so clients can now do anything with msimprpl, and #. * we're ready for it (session key, userid, username all setup). -#: ../libpurple/protocols/myspace/myspace.c:1191 -#: ../libpurple/protocols/sametime/sametime.c:1553 msgid "Connected" msgstr "সংযুক্ত" -#: ../libpurple/protocols/myspace/myspace.c:1804 #, c-format msgid "Protocol error, code %d: %s" msgstr "প্রোটকল ত্রুটি, কোড %1d: %2s" # tithi -#: ../libpurple/protocols/myspace/myspace.c:1826 #, c-format msgid "" "%s Your password is %d characters, greater than the expected maximum length " @@ -8422,68 +5919,50 @@ "cfm?fuseaction=accountSettings। গুপ্তসংকেত সংক্ষিপ্ত করুন এবং পুনরায় চেষ্টা করুন।" # tithi -#: ../libpurple/protocols/myspace/myspace.c:1849 msgid "MySpaceIM Error" msgstr "MySpaceIM ত্রুটি" -#: ../libpurple/protocols/myspace/myspace.c:2014 msgid "Invalid input condition" msgstr "অবৈধ ইনপুট শর্ত" # tithi -#: ../libpurple/protocols/myspace/myspace.c:2069 msgid "Read buffer full (2)" msgstr "পাঠ বাফার পূর্ণ (২)" -#: ../libpurple/protocols/myspace/myspace.c:2112 msgid "Unparseable message" msgstr "পার্স অযোগ্য বার্তা" -#: ../libpurple/protocols/myspace/myspace.c:2155 #, c-format msgid "Couldn't connect to host: %s (%d)" msgstr "হোস্টের সাথে সংযুক্ত করা যায়নি: %1s (%2d)" -#: ../libpurple/protocols/myspace/myspace.c:2646 -#: ../libpurple/protocols/myspace/myspace.c:2680 msgid "Failed to add buddy" msgstr "বন্ধু যোগ করতে ব্যর্থ" -#: ../libpurple/protocols/myspace/myspace.c:2646 msgid "'addbuddy' command failed." msgstr "\"বন্ধু যোগ করুন\" নির্দেশটি ব্যর্থ হয়েছে।" -#: ../libpurple/protocols/myspace/myspace.c:2680 -#: ../libpurple/protocols/myspace/myspace.c:2728 msgid "persist command failed" msgstr "যুক্তির নির্দেশ ব্যর্থ হয়েছে" -#: ../libpurple/protocols/myspace/myspace.c:2709 -#: ../libpurple/protocols/myspace/myspace.c:2728 -#: ../libpurple/protocols/myspace/myspace.c:2741 msgid "Failed to remove buddy" msgstr "বন্ধু অপসারণ করতে ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/myspace/myspace.c:2709 msgid "'delbuddy' command failed" msgstr "'বন্ধু মুছে ফেলুন' নির্দেশ ব্যর্থ হয়েছে" -#: ../libpurple/protocols/myspace/myspace.c:2741 msgid "blocklist command failed" msgstr "ব্লক-লিস্ট নির্দেশ ব্যর্থ হয়েছে" -#: ../libpurple/protocols/myspace/myspace.c:3094 msgid "Missing Cipher" msgstr "হারিয়ে যাওয়া সাইফার" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3095 msgid "The RC4 cipher could not be found" msgstr "RC4 ছাইফারকে খুঁজে পাওয়া যায়নি" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3096 msgid "" "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " "not be loaded." @@ -8492,123 +5971,93 @@ "না।" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3123 -#: ../libpurple/protocols/myspace/myspace.c:3189 msgid "Add friends from MySpace.com" msgstr "MySpace.com থেকে বন্ধু যোগ করুন" -#: ../libpurple/protocols/myspace/myspace.c:3124 msgid "Importing friends failed" msgstr "বন্ধুদের আনতে ব্যর্থ হয়েছে" #. TODO: find out how -#: ../libpurple/protocols/myspace/myspace.c:3182 msgid "Find people..." msgstr "জনগণ খুঁজুন..." -#: ../libpurple/protocols/myspace/myspace.c:3185 msgid "Change IM name..." msgstr "IM নাম পরিবর্তন করুন..." # tithi -#: ../libpurple/protocols/myspace/myspace.c:3571 msgid "myim URL handler" msgstr "myim URL নিয়ন্ত্রক" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3572 msgid "No suitable MySpaceIM account could be found to open this myim URL." msgstr "এই myim URL খুলতে কোনো উপযুক্ত MySpaceIM একাউন্ট খুঁজে পাওয়া যাবে না।" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3573 msgid "Enable the proper MySpaceIM account and try again." msgstr "উপযুক্ত MySpaceIM একাউন্ট সক্রিয় করুন এবং পুনরায় চেষ্টা করুন।" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3634 msgid "Show display name in status text" msgstr "অবস্থা পাঠে প্রদর্শন নাম দেখান" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3637 msgid "Show headline in status text" msgstr "অবস্থা পাঠে শিরোনাম দেখান" # fix me tithi -#: ../libpurple/protocols/myspace/myspace.c:3642 msgid "Send emoticons" msgstr "আবেগীয় প্রতীকগুলো পাঠান" # tithi -#: ../libpurple/protocols/myspace/myspace.c:3647 msgid "Screen resolution (dots per inch)" msgstr "পর্দার রিসোলিউশন (প্রতি ইঞ্চির ডট)" # fix me tithi -#: ../libpurple/protocols/myspace/myspace.c:3650 msgid "Base font size (points)" msgstr "ভিত্তির ফন্ট আকার (বিন্দু)" -#: ../libpurple/protocols/myspace/user.c:119 -#: ../libpurple/protocols/zephyr/zephyr.c:789 -#: ../libpurple/protocols/zephyr/zephyr.c:1167 msgid "User" msgstr "ব্যবহারকারী" -#: ../libpurple/protocols/myspace/user.c:139 msgid "Headline" msgstr "শিরোনাম" -#: ../libpurple/protocols/myspace/user.c:155 msgid "Song" msgstr "গান" # tithi -#: ../libpurple/protocols/myspace/user.c:165 msgid "Total Friends" msgstr "সব বন্ধু" -#: ../libpurple/protocols/myspace/user.c:183 -#: ../libpurple/protocols/qq/qq.c:1086 msgid "Client Version" msgstr "ক্লায়েন্ট সংস্করণ" -#: ../libpurple/protocols/myspace/user.c:815 msgid "MySpaceIM - Username Available" msgstr "MySpaceIM -ব্যবহারকারীর নাম সহজলভ্য" # tithi -#: ../libpurple/protocols/myspace/user.c:816 msgid "This username is available. Would you like to set it?" msgstr "এই ব্যবহারকারীর-নামটি সহজলভ্য। আপনি কি এটি নির্ধারন করতে আগ্রহী?" # tithi -#: ../libpurple/protocols/myspace/user.c:817 msgid "ONCE SET, THIS CANNOT BE CHANGED!" msgstr "একবার নির্ধারণ করলে, এটি আর পরিবর্তন করা যাবে না!" # tithi -#: ../libpurple/protocols/myspace/user.c:828 -#: ../libpurple/protocols/myspace/user.c:891 msgid "MySpaceIM - Please Set a Username" msgstr "MySpaceIM- অনুগ্রহ করে একটি ব্যবহারকারীর নাম নির্ধারন করুন" -#: ../libpurple/protocols/myspace/user.c:829 msgid "This username is unavailable." msgstr "এই ব্যহারকারীর নামটি অপ্রাপ্য।" -#: ../libpurple/protocols/myspace/user.c:830 msgid "Please try another username:" msgstr "অনুগ্রহ করে অন্য একটি ব্যবহারকারীর নাম চেষ্টা করুন:" #. Protocol won't log in now without a username set.. Disconnect -#: ../libpurple/protocols/myspace/user.c:881 msgid "No username set" msgstr "কোনো ব্যবহারকারীর নাম নির্ধারণ করা নেই" # tithi -#: ../libpurple/protocols/myspace/user.c:892 msgid "Please enter a username to check its availability:" msgstr "অনুগ্রহ করে এর সহজলভ্যতা পরীক্ষা করতে একটি ব্যবহারকারীর নাম প্রবেশ করান:" @@ -8619,35 +6068,28 @@ #. * projectile or weapon." This term often has an electrical #. * connotation, for example, "he was zapped by electricity when #. * he put a fork in the toaster." -#: ../libpurple/protocols/myspace/zap.c:44 -#: ../libpurple/protocols/myspace/zap.c:217 msgid "Zap" msgstr "আক্রমণ করুন" -#: ../libpurple/protocols/myspace/zap.c:44 #, c-format msgid "%s has zapped you!" msgstr "%s আপনাকে আক্রমণ করেছে! " # tithi -#: ../libpurple/protocols/myspace/zap.c:45 #, c-format msgid "Zapping %s..." msgstr "%s আক্রমণ করছে ..." # tithi #. Whack means "to hit or strike someone with a sharp blow" -#: ../libpurple/protocols/myspace/zap.c:48 msgid "Whack" msgstr "সজোরে আঘাত করুন" -#: ../libpurple/protocols/myspace/zap.c:49 #, c-format msgid "%s has whacked you!" msgstr "%s আপনাকে আঘাত করেছে!" # tithi -#: ../libpurple/protocols/myspace/zap.c:49 #, c-format msgid "Whacking %s..." msgstr "%s সজোরে আঘাত করছে..." @@ -8655,83 +6097,68 @@ #. Torch means "to set on fire." Don't worry, this doesn't #. * make a whole lot of sense in English, either. Feel free #. * to translate it literally. -#: ../libpurple/protocols/myspace/zap.c:54 msgid "Torch" msgstr "আলোকপাত করুন" -#: ../libpurple/protocols/myspace/zap.c:55 #, c-format msgid "%s has torched you!" msgstr "%s আপনার উপর আলোকপাত করেছে!" # tithi -#: ../libpurple/protocols/myspace/zap.c:55 #, c-format msgid "Torching %s..." msgstr "%s আলোকপাত করছে..." # fix me tithi #. Smooch means "to kiss someone, often enthusiastically" -#: ../libpurple/protocols/myspace/zap.c:58 msgid "Smooch" msgstr "অন্তরঙ্গতা" -#: ../libpurple/protocols/myspace/zap.c:59 #, c-format msgid "%s has smooched you!" msgstr "%s আপনার সাথে অন্তরঙ্গ হয়েছে!" # fix me tithi -#: ../libpurple/protocols/myspace/zap.c:59 #, c-format msgid "Smooching %s..." msgstr "%s অন্তরঙ্গ করছে..." # tithi #. A hug is a display of affection; wrapping your arms around someone -#: ../libpurple/protocols/myspace/zap.c:62 msgid "Hug" msgstr "জড়িয়ে ধরুন" -#: ../libpurple/protocols/myspace/zap.c:62 #, c-format msgid "%s has hugged you!" msgstr "%s আপনাকে জড়িয়ে ধরেছে!" # tithi -#: ../libpurple/protocols/myspace/zap.c:63 #, c-format msgid "Hugging %s..." msgstr "%s জড়িয়ে ধরছে..." #. Slap means "to hit someone with an open/flat hand" -#: ../libpurple/protocols/myspace/zap.c:66 msgid "Slap" msgstr "চড় মারুন" -#: ../libpurple/protocols/myspace/zap.c:67 #, c-format msgid "%s has slapped you!" msgstr "%s আপনাকে চড় মেরেছে!" # tithi -#: ../libpurple/protocols/myspace/zap.c:67 #, c-format msgid "Slapping %s..." msgstr "%s চড় মারছে..." # fix me tithi #. Goose means "to pinch someone on their butt" -#: ../libpurple/protocols/myspace/zap.c:70 msgid "Goose" msgstr "আঘাত করুন" -#: ../libpurple/protocols/myspace/zap.c:71 #, c-format msgid "%s has goosed you!" msgstr "%s আপনাকে আঘাত করেছে!" -#: ../libpurple/protocols/myspace/zap.c:71 #, c-format msgid "Goosing %s..." msgstr "%s আঘাত করছে..." @@ -8740,17 +6167,14 @@ #. A high-five is when two people's hands slap each other #. * in the air above their heads. It is done to celebrate #. * something, often a victory, or to congratulate someone. -#: ../libpurple/protocols/myspace/zap.c:76 msgid "High-five" msgstr "হাই-ফাইভ" -#: ../libpurple/protocols/myspace/zap.c:77 #, c-format msgid "%s has high-fived you!" msgstr "%s আপনার সাথে হাই-ফাইভ করেছে!" # tithi -#: ../libpurple/protocols/myspace/zap.c:77 #, c-format msgid "High-fiving %s..." msgstr "%s হাই-ফাইভ করেছে..." @@ -8759,17 +6183,14 @@ #. We're not entirely sure what the MySpace people mean by #. * this... but we think it's the equivalent of "prank." Or, for #. * someone to perform a mischievous trick or practical joke. -#: ../libpurple/protocols/myspace/zap.c:82 msgid "Punk" msgstr "মজা" -#: ../libpurple/protocols/myspace/zap.c:83 #, c-format msgid "%s has punk'd you!" msgstr "%s আপনার সাথে মজা করেছে!" # tithi -#: ../libpurple/protocols/myspace/zap.c:83 #, c-format msgid "Punking %s..." msgstr "%s মজা করছে..." @@ -8782,199 +6203,157 @@ #. * gesture, so it does not carry a harsh negative #. * connotation. It is generally used in a playful tone #. * with friends. -#: ../libpurple/protocols/myspace/zap.c:92 msgid "Raspberry" msgstr "অঙ্গভঙ্গি" # fix me tithi -#: ../libpurple/protocols/myspace/zap.c:93 #, c-format msgid "%s has raspberried you!" msgstr "%s আপনাকে অঙ্গভঙ্গি দিয়েছে!" # tithi -#: ../libpurple/protocols/myspace/zap.c:93 #, c-format msgid "Raspberrying %s..." msgstr "%s অঙ্গভঙ্গি করছে..." # tithi -#: ../libpurple/protocols/novell/nmuser.c:1864 msgid "Required parameters not passed in" msgstr "প্রয়োজনীয় মানসমূহ প্রবেশ করা হয়নি" -#: ../libpurple/protocols/novell/nmuser.c:1867 msgid "Unable to write to network" msgstr "নেটওয়ার্কে লিখতে ব্যর্থ" -#: ../libpurple/protocols/novell/nmuser.c:1870 msgid "Unable to read from network" msgstr "নেটওয়ার্ক থেকে পড়তে ব্যর্থ" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1873 msgid "Error communicating with server" msgstr "সার্ভারের সাথে যোগাযোগের ত্রুটি" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1877 msgid "Conference not found" msgstr "অধিবেশন পাওয়া যাচ্ছে না" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1880 msgid "Conference does not exist" msgstr "অধিবেশন বিদ্যমান নয়" -#: ../libpurple/protocols/novell/nmuser.c:1884 msgid "A folder with that name already exists" msgstr "ইতোমধ্যে ঐ নামের একটি ফোল্ডার বিদ্যমান" -#: ../libpurple/protocols/novell/nmuser.c:1887 msgid "Not supported" msgstr "সমর্থিত নয়" -#: ../libpurple/protocols/novell/nmuser.c:1891 msgid "Password has expired" msgstr "গুপ্তসঙ্কেতের মেয়াদ শেষ" -#: ../libpurple/protocols/novell/nmuser.c:1894 msgid "Incorrect password" msgstr "ভুল গুপ্তসঙ্কেতে" -#: ../libpurple/protocols/novell/nmuser.c:1897 msgid "User not found" msgstr "ব্যবহারকারী খুঁজে পাওয়া যায়নি" -#: ../libpurple/protocols/novell/nmuser.c:1900 msgid "Account has been disabled" msgstr "একাউন্টটি নিষ্ক্রিয় করা হয়েছে" -#: ../libpurple/protocols/novell/nmuser.c:1903 msgid "The server could not access the directory" msgstr "সার্ভার নির্দেশিকায় প্রবেশ করতে পারে না" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1906 msgid "Your system administrator has disabled this operation" msgstr "আপনার সিস্টেম প্রশাসক এই অপারেশনটি নিষ্ক্রিয় করেছে" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1909 msgid "The server is unavailable; try again later" msgstr "সার্ভার অপ্রাপ্য; পরবর্তীতে আবার চেষ্টা করুন" -#: ../libpurple/protocols/novell/nmuser.c:1912 msgid "Cannot add a contact to the same folder twice" msgstr "একই ফোল্ডারে একটি যোগাযোগ দুইবার যোগ করা যাবে না" -#: ../libpurple/protocols/novell/nmuser.c:1915 msgid "Cannot add yourself" msgstr "আপনি নিজেকে যোগ করতে পারবেন না" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1918 msgid "Master archive is misconfigured" msgstr "মাস্টার আর্কাইভ ভূলভাবে-বিন্যাসিত" -#: ../libpurple/protocols/novell/nmuser.c:1922 msgid "Incorrect username or password" msgstr "ভুল ব্যবহারকারীর নাম বা গুপ্তসংকেত" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1925 msgid "Could not recognize the host of the username you entered" msgstr "আপনার প্রবেশকৃত ব্যবহারকারীর-নামের হোস্ট শনাক্ত করতে পারে না" -#: ../libpurple/protocols/novell/nmuser.c:1928 msgid "" "Your account has been disabled because too many incorrect passwords were " "entered" msgstr "" "আপনার একাউন্টটি নিষ্ক্রিয় করা হয়েছে কারণ অনেকগুলো ভুল গুপ্তসংকেত প্রবেশ করা হয়েছিল" -#: ../libpurple/protocols/novell/nmuser.c:1931 msgid "You cannot add the same person twice to a conversation" msgstr "আপনি একটি কথোপকথনে একই ব্যক্তিকে দুইবার যোগ করতে পারেন না" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1935 msgid "You have reached your limit for the number of contacts allowed" msgstr "আপনি আপনার অনুমোদিত যোগাযোগ সংখ্যার সীমায় পৌঁছেছেন" -#: ../libpurple/protocols/novell/nmuser.c:1938 msgid "You have entered an incorrect username" msgstr "আপনি একটি ভুল ব্যবহারকারীর নাম প্রবেশ করেছেন" -#: ../libpurple/protocols/novell/nmuser.c:1941 msgid "An error occurred while updating the directory" msgstr "নির্দেশিকাটি হালনাগাদ করার সময় একটি ত্রুটি দেখা দিয়েছে" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1944 msgid "Incompatible protocol version" msgstr "অসঙ্গতিপূর্ণ প্রোটোকল সংস্করণ" -#: ../libpurple/protocols/novell/nmuser.c:1947 msgid "The user has blocked you" msgstr "এই ব্যবহারকারী আপনাকে ব্লক করে রেখেছে" # tithi -#: ../libpurple/protocols/novell/nmuser.c:1950 msgid "" "This evaluation version does not allow more than ten users to log in at one " "time" msgstr "" "এই মূল্যায়ন সংস্করণটি একই সময়ে দশজন ব্যবহারকারীর অধিক লগইন করতে অনুমোদন করে না" -#: ../libpurple/protocols/novell/nmuser.c:1953 msgid "The user is either offline or you are blocked" msgstr "এই ব্যবহারকারী হয় অফলাইনে বা আপনাকে ব্লক করে রেখেছে" -#: ../libpurple/protocols/novell/nmuser.c:1956 #, c-format msgid "Unknown error: 0x%X" msgstr "অজানা ত্রুটি: 0x%X" -#: ../libpurple/protocols/novell/novell.c:124 #, c-format msgid "Login failed (%s)." msgstr "লগইন ব্যর্থ হয়েছে (%s)।" -#: ../libpurple/protocols/novell/novell.c:255 #, c-format msgid "Unable to send message. Could not get details for user (%s)." msgstr "" "বার্তা পাঠানো সম্ভব হয়নি। ব্যবহারকারী (%s) সম্পর্কে বিস্তারিত তথ্য পাওয়া যায়নি।" -#: ../libpurple/protocols/novell/novell.c:404 #, c-format msgid "Unable to add %s to your buddy list (%s)." msgstr "%s কে আপনার বন্ধুতালিকায় (%s) যোগ করতে সমর্থ নয়।" #. TODO: Improve this! message to who or for what conference? -#: ../libpurple/protocols/novell/novell.c:430 #, c-format msgid "Unable to send message (%s)." msgstr "বার্তা (%s) পাঠাতে সমর্থ নয়।" -#: ../libpurple/protocols/novell/novell.c:501 -#: ../libpurple/protocols/novell/novell.c:993 #, c-format msgid "Unable to invite user (%s)." msgstr "ব্যবহারকারীকে (%s) আমন্ত্রন জানাতে সমর্থ নয়।" -#: ../libpurple/protocols/novell/novell.c:540 #, c-format msgid "Unable to send message to %s. Could not create the conference (%s)." msgstr "%s এ বার্তা পাঠাতে সমর্থ নয়। অধিবেশন (%s) তৈরি করতে পারে না। " -#: ../libpurple/protocols/novell/novell.c:545 #, c-format msgid "Unable to send message. Could not create the conference (%s)." msgstr "বার্তা পাঠাতে সমর্থ নয়। অধিবেশন (%s) তৈরি করতে পারে না। " -#: ../libpurple/protocols/novell/novell.c:592 #, c-format msgid "" "Unable to move user %s to folder %s in the server side list. Error while " @@ -8983,7 +6362,6 @@ "ব্যবহারকারী %s কে সার্ভারের পার্শ্বের তালিকার %s ফোল্ডারে সরিয়ে নিতে সমর্থ নয়। " "ফোল্ডার (%s) তৈরীর সময় ত্রুটি দেখা দিয়েছে।" -#: ../libpurple/protocols/novell/novell.c:640 #, c-format msgid "" "Unable to add %s to your buddy list. Error creating folder in server side " @@ -8993,65 +6371,49 @@ "তৈরীর সময় ত্রুটি দেখা দিয়েছে।" # tithi -#: ../libpurple/protocols/novell/novell.c:713 #, c-format msgid "Could not get details for user %s (%s)." msgstr "%1s (%2s) ব্যবহারকারীর জন্য বিস্তারিত বর্ণনা পাবে না।" # msgstr "ব্যবহারকারী %s এর বিবরন পাওয়া যাচ্ছে না" -#: ../libpurple/protocols/novell/novell.c:759 -#: ../libpurple/protocols/novell/novell.c:905 #, c-format msgid "Unable to add user to privacy list (%s)." msgstr "ব্যক্তিগত তালিকায় (%s) ব্যবহারকারী যোগ করা সম্ভব হয়নি।" -#: ../libpurple/protocols/novell/novell.c:806 #, c-format msgid "Unable to add %s to deny list (%s)." msgstr "নিষিদ্ধ তালিকায় (%s) %s যোগ করা সম্ভব হয়নি।" -#: ../libpurple/protocols/novell/novell.c:859 #, c-format msgid "Unable to add %s to permit list (%s)." msgstr "অনুমোদিত তালিকায় (%s) %s যোগ করা সম্ভব হয়নি।" -#: ../libpurple/protocols/novell/novell.c:927 #, c-format msgid "Unable to remove %s from privacy list (%s)." msgstr "%s কে ব্যক্তিগত তালিকা (%s) থেকে মুছে ফেলতে সমর্থ হয়নি।" -#: ../libpurple/protocols/novell/novell.c:950 -#: ../libpurple/protocols/novell/novell.c:1656 #, c-format msgid "Unable to change server side privacy settings (%s)." msgstr "সার্ভার পার্শ্বের ব্যাক্তিগত বিন্যাসনসমূহ (%s) পরিবর্তন করতে সমর্থ হয়নি।" -#: ../libpurple/protocols/novell/novell.c:1020 #, c-format msgid "Unable to create conference (%s)." msgstr "অধিবেশন (%s) শুরু করতে সমর্থ হয়নি।" # tithi -#: ../libpurple/protocols/novell/novell.c:1131 -#: ../libpurple/protocols/novell/novell.c:1702 msgid "Error communicating with server. Closing connection." msgstr "সার্ভারের সঙ্গে যোগাযোগে ত্রুটি। সংযোগ বন্ধ করছে।" -#: ../libpurple/protocols/novell/novell.c:1485 msgid "Telephone Number" msgstr "টেলিফোন নম্বর" -#: ../libpurple/protocols/novell/novell.c:1491 msgid "Personal Title" msgstr "ব্যক্তিগত শিরোনাম" # tithi -#: ../libpurple/protocols/novell/novell.c:1495 msgid "Mailstop" msgstr "মেইল-বন্ধ" -#: ../libpurple/protocols/novell/novell.c:1511 -#: ../libpurple/protocols/sametime/sametime.c:4184 msgid "User ID" msgstr "ব্যবহারকারী আইডি" @@ -9061,39 +6423,31 @@ #. purple_notify_user_info_add_pair(user_info, tag, value); #. } #. -#: ../libpurple/protocols/novell/novell.c:1524 msgid "Full name" msgstr "সম্পূর্ন নাম" -#: ../libpurple/protocols/novell/novell.c:1646 #, c-format msgid "GroupWise Conference %d" msgstr "GroupWise অধিবেশন %d" # tithi -#: ../libpurple/protocols/novell/novell.c:1729 msgid "Authenticating..." msgstr "প্রমাণীকরণ..." -#: ../libpurple/protocols/novell/novell.c:1743 msgid "Unable to connect to server." msgstr "সার্ভারের সাথে সংযোগ স্থাপনে অসমর্থ।" -#: ../libpurple/protocols/novell/novell.c:1746 msgid "Waiting for response..." msgstr "উত্তরের জন্য অপেক্ষা করছে..." -#: ../libpurple/protocols/novell/novell.c:1881 #, c-format msgid "%s has been invited to this conversation." msgstr "%s এই কথোপকথনে আমন্ত্রিত হয়েছে।" -#: ../libpurple/protocols/novell/novell.c:1909 msgid "Invitation to Conversation" msgstr "কথোপকথনে আমন্ত্রণ" # tithi -#: ../libpurple/protocols/novell/novell.c:1910 #, c-format msgid "" "Invitation from: %s\n" @@ -9104,23 +6458,19 @@ "\n" "প্রেরিত: %2s" -#: ../libpurple/protocols/novell/novell.c:1912 msgid "Would you like to join the conversation?" msgstr "আপনি কি কথোপকথনে অংশগ্রহন করতে ইচ্ছুক?" # tithi -#: ../libpurple/protocols/novell/novell.c:2028 msgid "You have been logged out because you logged in at another workstation." msgstr "আপনাকে প্রস্থান করছেন কারণ আপনি অন্য একটি ওয়ার্ক-ষ্টেশনে সংযুক্ত হয়েছেন।" # tithi -#: ../libpurple/protocols/novell/novell.c:2085 #, c-format msgid "" "%s appears to be offline and did not receive the message that you just sent." msgstr "%s অফলাইনে উপস্থিত এবং আপনার প্রেরিত বার্তাটি গ্রহণ করেনি।" -#: ../libpurple/protocols/novell/novell.c:2185 msgid "" "Unable to connect to server. Please enter the address of the server you wish " "to connect to." @@ -9129,12 +6479,10 @@ "ঠিকানা প্রবেশ করান।" # tithi -#: ../libpurple/protocols/novell/novell.c:2214 msgid "Error. SSL support is not installed." msgstr "ত্রুটি। SSL সমর্থন সংস্থাপিত নয়।" # tithi -#: ../libpurple/protocols/novell/novell.c:2522 msgid "This conference has been closed. No more messages can be sent." msgstr "এই অধিবেশনটি বন্ধ করা হয়েছে। আর কোনো বার্তা পাঠানো যাবে না।" @@ -9149,43 +6497,24 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/novell/novell.c:3537 -#: ../libpurple/protocols/novell/novell.c:3539 msgid "Novell GroupWise Messenger Protocol Plugin" msgstr "নোভেল GroupWise বার্তাবাহক প্রোটোকল প্লাগইন" -#: ../libpurple/protocols/novell/novell.c:3564 msgid "Server address" msgstr "সার্ভারের ঠিকানা" -#: ../libpurple/protocols/novell/novell.c:3568 msgid "Server port" msgstr "সার্ভারের পোর্ট" -#: ../libpurple/protocols/oscar/family_chatnav.c:62 msgid "Could not join chat room" msgstr "আড্ডার রুমে যুক্ত হতে পারেনি" -#: ../libpurple/protocols/oscar/family_chatnav.c:63 msgid "Invalid chat room name" msgstr "অবৈধ আড্ডার রুমের নাম" -#: ../libpurple/protocols/oscar/flap_connection.c:443 -#: ../libpurple/protocols/qq/qq_network.c:400 -#: ../libpurple/protocols/yahoo/yahoo.c:2524 -#: ../libpurple/protocols/yahoo/yahoo.c:2692 -#: ../libpurple/protocols/yahoo/ycht.c:482 ../libpurple/proxy.c:801 -#: ../libpurple/proxy.c:1325 ../libpurple/proxy.c:1439 -#: ../libpurple/proxy.c:1675 ../libpurple/proxy.c:1750 msgid "Server closed the connection." msgstr "সার্ভার সংযোগটি বন্ধ করে দিয়েছে।" -#: ../libpurple/protocols/oscar/flap_connection.c:445 -#: ../libpurple/protocols/qq/qq_network.c:392 -#: ../libpurple/protocols/yahoo/yahoo.c:2517 -#: ../libpurple/protocols/yahoo/yahoo.c:2685 ../libpurple/proxy.c:812 -#: ../libpurple/proxy.c:1337 ../libpurple/proxy.c:1451 -#: ../libpurple/proxy.c:1686 ../libpurple/proxy.c:1762 #, c-format msgid "" "Lost connection with server:\n" @@ -9194,10 +6523,6 @@ "সার্ভারের সাথে সংযুক্ত হারিয়েছে:\n" "%s" -#: ../libpurple/protocols/oscar/flap_connection.c:448 -#: ../libpurple/proxy.c:1354 ../libpurple/proxy.c:1384 -#: ../libpurple/proxy.c:1464 ../libpurple/proxy.c:1535 -#: ../libpurple/proxy.c:1636 ../libpurple/proxy.c:1775 msgid "Received invalid data on connection with server." msgstr "সার্ভারের সাথে সংযুক্ত অবস্থায় অবৈধ উপাত্ত গ্রহণ করেছে।" @@ -9211,13 +6536,10 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/oscar/libaim.c:118 -#: ../libpurple/protocols/oscar/libaim.c:120 msgid "AIM Protocol Plugin" msgstr "এআইএম প্রোটোকল প্লাগইন" # tithi -#: ../libpurple/protocols/oscar/libicq.c:35 msgid "ICQ UIN..." msgstr "ICQ UIN..." @@ -9231,47 +6553,35 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/oscar/libicq.c:127 -#: ../libpurple/protocols/oscar/libicq.c:129 msgid "ICQ Protocol Plugin" msgstr "আইসিকিউ প্রোটোকল প্লাগইন" # tithi -#: ../libpurple/protocols/oscar/libicq.c:156 -#: ../libpurple/protocols/yahoo/yahoo.c:4516 -#: ../libpurple/protocols/zephyr/zephyr.c:2988 msgid "Encoding" msgstr "সঙ্কেতায়ন" -#: ../libpurple/protocols/oscar/odc.c:42 msgid "The remote user has closed the connection." msgstr "দূরবর্তী ব্যবহারকারী যোগাযোগটি বন্ধ করে দিয়েছে।" -#: ../libpurple/protocols/oscar/odc.c:44 msgid "The remote user has declined your request." msgstr "দূরবর্তী ব্যবহারকারী আপনার অনুরোধ অস্বীকার করেছে।" # tithi -#: ../libpurple/protocols/oscar/odc.c:46 #, c-format msgid "Lost connection with the remote user:
%s" msgstr "দূরবর্তী ব্যবহারকারীর সঙ্গে সংযোগ হারিয়েছে:
%s" # tithi -#: ../libpurple/protocols/oscar/odc.c:49 msgid "Received invalid data on connection with remote user." msgstr "দূরবর্তী ব্যবহারকারীর সাথে সংযুক্ত অবস্থায় অবৈধ উপাত্ত গ্রহণ করেছে।" -#: ../libpurple/protocols/oscar/odc.c:51 msgid "Could not establish a connection with the remote user." msgstr "দূরবর্তী ব্য়বহারকারীর সাথে সংযোগ স্থাপন করতে পারেনি।" -#: ../libpurple/protocols/oscar/odc.c:562 msgid "Direct IM established" msgstr "সরাসরি IM স্থাপন করা হয়েছে" # tithi -#: ../libpurple/protocols/oscar/odc.c:601 #, c-format msgid "" "%s tried to send you a %s file, but we only allow files up to %s over Direct " @@ -9282,128 +6592,102 @@ "চেষ্টা করুন।\n" # tithi -#: ../libpurple/protocols/oscar/oft.c:656 #, c-format msgid "File %s is %s, which is larger than the maximum size of %s." msgstr "ফাইল %1s হলো %2s, যা %3s এর সর্বোচ্চ আকার অপেক্ষা বৃহত্তর।" -#: ../libpurple/protocols/oscar/oscar.c:119 msgid "Invalid error" msgstr "অবৈধ ত্রুটি" -#: ../libpurple/protocols/oscar/oscar.c:120 msgid "Invalid SNAC" msgstr "অবৈধ SNAC" # tithi -#: ../libpurple/protocols/oscar/oscar.c:121 msgid "Rate to host" msgstr "হোস্টের হার" # tithi -#: ../libpurple/protocols/oscar/oscar.c:122 msgid "Rate to client" msgstr "গ্রাহকের হার" -#: ../libpurple/protocols/oscar/oscar.c:124 msgid "Service unavailable" msgstr "সেবা অপ্রাপ্য" # tithi -#: ../libpurple/protocols/oscar/oscar.c:125 msgid "Service not defined" msgstr "সেবা নির্ধারিত নয়" # tithi -#: ../libpurple/protocols/oscar/oscar.c:126 msgid "Obsolete SNAC" msgstr "অপ্রচলিত SNAC" # tithi -#: ../libpurple/protocols/oscar/oscar.c:127 msgid "Not supported by host" msgstr "হোস্ট দ্বারা সমর্থিত নয়" # tithi -#: ../libpurple/protocols/oscar/oscar.c:128 msgid "Not supported by client" msgstr "গ্রাহক দ্বারা সমর্থিত নয়" # tithi -#: ../libpurple/protocols/oscar/oscar.c:129 msgid "Refused by client" msgstr "গ্রাহক দ্বারা অস্বীকৃত" # tithi -#: ../libpurple/protocols/oscar/oscar.c:130 msgid "Reply too big" msgstr "উত্তর অনেক বেশি বড়" # tithi -#: ../libpurple/protocols/oscar/oscar.c:131 msgid "Responses lost" msgstr "সাড়াসমূহ হারিয়েছে" -#: ../libpurple/protocols/oscar/oscar.c:132 msgid "Request denied" msgstr "অনুরোধ প্রত্যাখ্যান করা হয়েছে" # tithi -#: ../libpurple/protocols/oscar/oscar.c:133 msgid "Busted SNAC payload" msgstr "বাস্টেড SNAC পেলোড" # tithi -#: ../libpurple/protocols/oscar/oscar.c:134 msgid "Insufficient rights" msgstr "অপর্যাপ্ত অধিকার" # tithi -#: ../libpurple/protocols/oscar/oscar.c:135 msgid "In local permit/deny" msgstr "স্থানীয় অনুমতি/অস্বীকার এ" # tithi -#: ../libpurple/protocols/oscar/oscar.c:136 msgid "Warning level too high (sender)" msgstr "সতর্কতা স্তর খুব উচ্চ (প্রেরক)" # tithi -#: ../libpurple/protocols/oscar/oscar.c:137 msgid "Warning level too high (receiver)" msgstr "সতর্কতা স্তর খুব উচ্চ (গ্রাহক)" # tithi -#: ../libpurple/protocols/oscar/oscar.c:138 msgid "User temporarily unavailable" msgstr "ব্যবহারকারী সাময়িকভাবে অপ্রাপ্য" # tithi -#: ../libpurple/protocols/oscar/oscar.c:139 msgid "No match" msgstr "কোনো মিল নেই" # tithi -#: ../libpurple/protocols/oscar/oscar.c:140 msgid "List overflow" msgstr "তালিকা অতিরিক্ত" -#: ../libpurple/protocols/oscar/oscar.c:141 msgid "Request ambiguous" msgstr "অনুরোধ অস্পষ্ট" # tithi -#: ../libpurple/protocols/oscar/oscar.c:142 msgid "Queue full" msgstr "সারি পূর্ণ" # tithi -#: ../libpurple/protocols/oscar/oscar.c:143 msgid "Not while on AOL" msgstr "এই সময়ে AOL এ নেই" # tithi -#: ../libpurple/protocols/oscar/oscar.c:351 msgid "" "(There was an error receiving this message. The buddy you are speaking with " "is probably using a different encoding than expected. If you know what " @@ -9416,7 +6700,6 @@ "পছন্দসমূহে উল্লেখ করতে পারেন।)" # tithi -#: ../libpurple/protocols/oscar/oscar.c:460 #, c-format msgid "" "(There was an error receiving this message. Either you and %s have " @@ -9426,152 +6709,110 @@ "আছে, বা %s এর একটি ত্রুটিপূর্ণ গ্রাহক রয়েছে।)" #. Label -#: ../libpurple/protocols/oscar/oscar.c:653 ../pidgin/gtkutils.c:2457 -#: ../pidgin/gtkutils.c:2487 -#: ../pidgin/plugins/gevolution/new_person_dialog.c:336 msgid "Buddy Icon" msgstr "বন্ধু আইকন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:656 msgid "Voice" msgstr "কন্ঠ" # tithi -#: ../libpurple/protocols/oscar/oscar.c:659 msgid "AIM Direct IM" msgstr "AIM সরাসরি IM" -#: ../libpurple/protocols/oscar/oscar.c:665 -#: ../libpurple/protocols/oscar/oscar.c:6236 msgid "Get File" msgstr "ফাইল গ্রহণ করুন" -#: ../libpurple/protocols/oscar/oscar.c:672 msgid "Games" msgstr "খেলা" -#: ../libpurple/protocols/oscar/oscar.c:675 msgid "Add-Ins" msgstr "অন্তর্যোগসমূহ" -#: ../libpurple/protocols/oscar/oscar.c:678 msgid "Send Buddy List" msgstr "বন্ধু তালিকা পাঠান" -#: ../libpurple/protocols/oscar/oscar.c:681 msgid "ICQ Direct Connect" msgstr "ICQ সরাসরি সংযোগ" -#: ../libpurple/protocols/oscar/oscar.c:684 msgid "AP User" msgstr "AP ব্যবহারকারী" # tithi -#: ../libpurple/protocols/oscar/oscar.c:687 msgid "ICQ RTF" msgstr "ICQ RTF" # tithi -#: ../libpurple/protocols/oscar/oscar.c:690 msgid "Nihilist" msgstr "নাস্তিবাদী" # tithi -#: ../libpurple/protocols/oscar/oscar.c:693 msgid "ICQ Server Relay" msgstr "ICQ সার্ভার সম্প্রচার" # tithi -#: ../libpurple/protocols/oscar/oscar.c:696 msgid "Old ICQ UTF8" msgstr "পুরাতন ICQ UTF8" # tithi -#: ../libpurple/protocols/oscar/oscar.c:699 msgid "Trillian Encryption" msgstr "ট্রিলিয়ন সঙ্কেতায়ন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:702 msgid "ICQ UTF8" msgstr "ICQ UTF8" -#: ../libpurple/protocols/oscar/oscar.c:705 msgid "Hiptop" msgstr "হিপটপ" -#: ../libpurple/protocols/oscar/oscar.c:708 msgid "Security Enabled" msgstr "নিরাপত্তা সক্রিয়কৃত" -#: ../libpurple/protocols/oscar/oscar.c:711 msgid "Video Chat" msgstr "ভিডিও আড্ডা" -#: ../libpurple/protocols/oscar/oscar.c:715 msgid "iChat AV" msgstr "আইআড্ডা AV" # tithi -#: ../libpurple/protocols/oscar/oscar.c:718 msgid "Live Video" msgstr "সরাসরি ভিডিও" -#: ../libpurple/protocols/oscar/oscar.c:721 msgid "Camera" msgstr "ক্যামেরা" -#: ../libpurple/protocols/oscar/oscar.c:724 msgid "Screen Sharing" msgstr "স্ক্রীন শেয়ারকরণ" # tithi -#: ../libpurple/protocols/oscar/oscar.c:742 -#: ../libpurple/protocols/oscar/oscar.c:6001 msgid "Free For Chat" msgstr "আড্ডার জন্য মুক্ত" -#: ../libpurple/protocols/oscar/oscar.c:746 -#: ../libpurple/protocols/oscar/oscar.c:6036 msgid "Not Available" msgstr "বিদ্যমান নেই " # tithi -#: ../libpurple/protocols/oscar/oscar.c:748 -#: ../libpurple/protocols/oscar/oscar.c:6022 msgid "Occupied" msgstr "অধিষ্টিত" # tithi -#: ../libpurple/protocols/oscar/oscar.c:752 msgid "Web Aware" msgstr "ওয়েব সচেতন" -#: ../libpurple/protocols/oscar/oscar.c:754 ../libpurple/protocols/qq/qq.c:270 -#: ../libpurple/protocols/qq/qq.c:417 -#: ../libpurple/protocols/yahoo/yahoo.c:3173 ../libpurple/status.c:162 -#: ../pidgin/gtkdocklet.c:557 ../pidgin/gtkstatusbox.c:1098 msgid "Invisible" msgstr "অদৃশ্য" -#: ../libpurple/protocols/oscar/oscar.c:962 -#: ../libpurple/protocols/oscar/oscar.c:3913 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1207 msgid "IP Address" msgstr "আইপি ঠিকানা" # tithi -#: ../libpurple/protocols/oscar/oscar.c:968 msgid "Warning Level" msgstr "সতর্কতা স্তর" -#: ../libpurple/protocols/oscar/oscar.c:978 msgid "Buddy Comment" msgstr "বন্ধুর মন্তব্য" # fix me tithi -#: ../libpurple/protocols/oscar/oscar.c:1118 #, c-format msgid "" "Could not connect to authentication server:\n" @@ -9580,7 +6821,6 @@ "প্রমাণীকরণ সাথে সংযুক্ত করা যায়নি:\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:1126 #, c-format msgid "" "Could not connect to BOS server:\n" @@ -9589,23 +6829,19 @@ "BOS সার্ভারের সাথে সংযুক্ত করা যায়নি:\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:1158 msgid "Username sent" msgstr "ব্যবহারকারীর-নাম পাঠানো হয়েছে" # tithi -#: ../libpurple/protocols/oscar/oscar.c:1163 msgid "Connection established, cookie sent" msgstr "সংযোগ প্রতিষ্ঠিত, কুকি পাঠানো হয়েছে " # tithi #. TODO: Don't call this with ssi -#: ../libpurple/protocols/oscar/oscar.c:1192 msgid "Finalizing connection" msgstr "সংযোগ চূড়ান্ত করা হচ্ছে" # tithi -#: ../libpurple/protocols/oscar/oscar.c:1420 #, c-format msgid "" "Unable to login: Could not sign on as %s because the username is invalid. " @@ -9618,37 +6854,25 @@ #. Unregistered screen name #. uid is not exist -#: ../libpurple/protocols/oscar/oscar.c:1506 -#: ../libpurple/protocols/qq/qq_base.c:1109 -#: ../libpurple/protocols/yahoo/yahoo.c:2144 msgid "Invalid username." msgstr "অবৈধ ব্যবহারকারীর নাম।" -#: ../libpurple/protocols/oscar/oscar.c:1512 -#: ../libpurple/protocols/qq/qq_base.c:415 -#: ../libpurple/protocols/qq/qq_base.c:1100 -#: ../libpurple/protocols/simple/simple.c:1130 -#: ../libpurple/protocols/yahoo/yahoo.c:2166 msgid "Incorrect password." msgstr "ভুল গুপ্তসংকেত।" # tithi #. Suspended account -#: ../libpurple/protocols/oscar/oscar.c:1516 msgid "Your account is currently suspended." msgstr "আপনার একাউন্টটি বর্তমানে স্থগিত।" # tithi #. service temporarily unavailable -#: ../libpurple/protocols/oscar/oscar.c:1521 msgid "The AOL Instant Messenger service is temporarily unavailable." msgstr "AOL তাৎক্ষণিক বার্তাবাহক সার্ভিস সাময়িকভাবে অপ্রাপ্য।" # tithi #. screen name connecting too frequently #. IP address connecting too frequently -#: ../libpurple/protocols/oscar/oscar.c:1525 -#: ../libpurple/protocols/oscar/oscar.c:1538 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." @@ -9658,105 +6882,76 @@ "করতে হবে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:1531 #, c-format msgid "The client version you are using is too old. Please upgrade at %s" msgstr "আপনার ব্যবহৃত গ্রাহক সংস্করণ খুব পুরনো। অনুগ্রহ করে %s এ উন্নততর করুন" -#: ../libpurple/protocols/oscar/oscar.c:1573 msgid "Could Not Connect" msgstr "সংযোগ দিতে পারে না" # tithi -#: ../libpurple/protocols/oscar/oscar.c:1577 msgid "Received authorization" msgstr "গৃহীত অনুমোদন প্রাপ্ত" # tithi -#: ../libpurple/protocols/oscar/oscar.c:1600 msgid "The SecurID key entered is invalid." msgstr "অবৈধ নিরাপদ-আইডি কী প্রবেশ করা হয়েছে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:1613 msgid "Enter SecurID" msgstr "নিরাপদ-আইডি প্রবেশ করান" # tithi -#: ../libpurple/protocols/oscar/oscar.c:1614 msgid "Enter the 6 digit number from the digital display." msgstr "ডিজিটাল প্রদর্শন থেকে ৬ ডিজিটের সংখ্যা প্রবেশ করান।" #. * #. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. #. -#: ../libpurple/protocols/oscar/oscar.c:1616 -#: ../libpurple/protocols/oscar/oscar.c:2492 -#: ../libpurple/protocols/oscar/oscar.c:2540 -#: ../libpurple/protocols/oscar/oscar.c:6107 -#: ../libpurple/protocols/oscar/oscar.c:6393 ../libpurple/request.h:1401 msgid "_OK" msgstr "ঠিক আছে (_O)" -#: ../libpurple/protocols/oscar/oscar.c:1657 #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." msgstr "আপনি সাময়িকভাবে বিচ্ছিন্ন থাকতে পারেন। হালনাগাদের জন্য %s পরীক্ষা করুন." -#: ../libpurple/protocols/oscar/oscar.c:1661 -#: ../libpurple/protocols/oscar/oscar.c:1710 msgid "Unable to get a valid AIM login hash." msgstr "একটি বৈধ AIM লগইন হ্যাশ পেতে ব্যর্থ।" -#: ../libpurple/protocols/oscar/oscar.c:1706 -#: ../libpurple/protocols/oscar/oscar.c:1808 #, c-format msgid "You may be disconnected shortly. Check %s for updates." msgstr "আপনি সাময়িকভাবে বিচ্ছিন্ন থাকতে পারেন। হালনাগাদের জন্য %s পরীক্ষা করুন।" -#: ../libpurple/protocols/oscar/oscar.c:1812 msgid "Unable to get a valid login hash." msgstr "একটি বৈধ লগইন হ্যাশ পেতে ব্যর্থ।" -#: ../libpurple/protocols/oscar/oscar.c:1843 msgid "Password sent" msgstr "গুপ্তসঙ্কেত পাঠানো হয়েছে" -#: ../libpurple/protocols/oscar/oscar.c:1899 msgid "Unable to initialize connection" msgstr "সংযোগ প্রস্তুত করতে ব্যর্থ" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2461 msgid "Please authorize me so I can add you to my buddy list." msgstr "" "অনুগ্রহ করে আমাকে অনুমোদন দিন যেন আমি আপনাকে আমার বন্ধু তালিকায় যুক্ত করতে পারি।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2490 msgid "Authorization Request Message:" msgstr "প্রাপ্তাধিকার অনুরোধ বার্তা:" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2491 msgid "Please authorize me!" msgstr "অনুগ্রহ করে আমাকে অনুমোদন দিন!" -#: ../libpurple/protocols/oscar/oscar.c:2531 -#: ../libpurple/protocols/oscar/oscar.c:2539 -#: ../libpurple/protocols/oscar/oscar.c:2666 -#: ../libpurple/protocols/oscar/oscar.c:5509 -#: ../libpurple/protocols/yahoo/yahoo.c:998 msgid "No reason given." msgstr "কোনো কারন দর্শানো হয়নি।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2538 msgid "Authorization Denied Message:" msgstr "প্রাপ্তাধিকার অগ্রাহ্য বার্তা:" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2666 #, c-format msgid "" "The user %u has denied your request to add them to your buddy list for the " @@ -9768,20 +6963,17 @@ "%2s" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2667 msgid "ICQ authorization denied." msgstr "ICQ প্রাপ্তাধিকার অগ্রাহ্য।" # tithi #. Someone has granted you authorization -#: ../libpurple/protocols/oscar/oscar.c:2674 #, c-format msgid "The user %u has granted your request to add them to your buddy list." msgstr "" "%u ব্যবহারকারী আপনার বন্ধু তালিকাতে তাদেরকে যোগ করতে আপনার অনুরোধ গ্রহণ করেছে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2682 #, c-format msgid "" "You have received a special message\n" @@ -9795,7 +6987,6 @@ "%3s " # tithi -#: ../libpurple/protocols/oscar/oscar.c:2690 #, c-format msgid "" "You have received an ICQ page\n" @@ -9809,7 +7000,6 @@ "%3s" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2698 #, c-format msgid "" "You have received an ICQ email from %s [%s]\n" @@ -9823,32 +7013,26 @@ "%3s" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2719 #, c-format msgid "ICQ user %u has sent you a buddy: %s (%s)" msgstr "ICQ %1u ব্যবহারকারী আপনাকে একটি বন্ধু পাঠিয়েছে: %2s (%3s)" -#: ../libpurple/protocols/oscar/oscar.c:2725 msgid "Do you want to add this buddy to your buddy list?" msgstr "আপনি কি এই বন্ধুকে আপনার বন্ধু তালিকায় যোগ করতে চান?" -#: ../libpurple/protocols/oscar/oscar.c:2730 ../pidgin/gtkroomlist.c:315 msgid "_Add" msgstr "যোগ করুন (_A)" -#: ../libpurple/protocols/oscar/oscar.c:2731 msgid "_Decline" msgstr "প্রত্যাখান করুন (_D)" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2855 #, c-format msgid "You missed %hu message from %s because it was invalid." msgid_plural "You missed %hu messages from %s because they were invalid." msgstr[0] "আপনি %2$s এর %1$hu বার্তাটি হারিয়েছেন কারণ এটি অবৈধ ছিল।" msgstr[1] "আপনি %2$s এর %1$hu বার্তাসমূহ হারিয়েছেন কারণ এটি অবৈধ ছিল।" -#: ../libpurple/protocols/oscar/oscar.c:2864 #, 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." @@ -9856,7 +7040,6 @@ msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ তারা অনেক বড় ছিল।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:2873 #, c-format msgid "" "You missed %hu message from %s because the rate limit has been exceeded." @@ -9868,7 +7051,6 @@ "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ হারের সীমা অতিক্রম করা হয়েছিল।" # fix me tithi -#: ../libpurple/protocols/oscar/oscar.c:2882 #, c-format msgid "" "You missed %hu message from %s because his/her warning level is too high." @@ -9878,7 +7060,6 @@ msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ তার সতর্কতা স্তর খুব উচ্চ।" # fix me tithi -#: ../libpurple/protocols/oscar/oscar.c:2891 #, c-format msgid "You missed %hu message from %s because your warning level is too high." msgid_plural "" @@ -9886,7 +7067,6 @@ msgstr[0] "আপনি %1hu বার্তাটি %2s হতে হারিয়েছেন কারণ আপনার সতর্কতা স্তর খুব উচ্চ।" msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ আপনার সতর্কতা স্তর খুব উচ্চ।" -#: ../libpurple/protocols/oscar/oscar.c:2900 #, 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." @@ -9894,50 +7074,37 @@ msgstr[1] "আপনি অজ্ঞাত কারণে %1hu বার্তাসমূহ %2s হতে হারিয়েছেন।" #. Data is assumed to be the destination sn -#: ../libpurple/protocols/oscar/oscar.c:3055 #, c-format msgid "Unable to send message: %s" msgstr "বার্তা পাঠানো অসমর্থ: %s।" -#: ../libpurple/protocols/oscar/oscar.c:3055 -#: ../libpurple/protocols/oscar/oscar.c:3060 -#: ../libpurple/protocols/oscar/oscar.c:3124 msgid "Unknown reason." msgstr "অজ্ঞাত কারণ।" -#: ../libpurple/protocols/oscar/oscar.c:3058 -#: ../libpurple/protocols/sametime/sametime.c:2466 #, c-format msgid "Unable to send message to %s:" msgstr "%s এ বার্তা পাঠাতে সমর্থ নয়:" -#: ../libpurple/protocols/oscar/oscar.c:3124 #, c-format msgid "User information not available: %s" msgstr "ব্যবহারকারীর তথ্য সহজলভ্য় নয়: %s" -#: ../libpurple/protocols/oscar/oscar.c:3161 msgid "Online Since" msgstr "যখন থেকে অনলাইনে" # tithi -#: ../libpurple/protocols/oscar/oscar.c:3166 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1185 msgid "Member Since" msgstr "যখন থেকে সদস্য" -#: ../libpurple/protocols/oscar/oscar.c:3184 msgid "Profile" msgstr "প্রোফাইল" # tithi -#: ../libpurple/protocols/oscar/oscar.c:3266 msgid "Your AIM connection may be lost." msgstr "আপনার AIM সংযোগ হয়ত নষ্ট হয়ে গেছে।" # tithi #. The conversion failed! -#: ../libpurple/protocols/oscar/oscar.c:3454 msgid "" "[Unable to display a message from this user because it contained invalid " "characters.]" @@ -9946,7 +7113,6 @@ "করেছিল।]" # tithi -#: ../libpurple/protocols/oscar/oscar.c:3618 msgid "" "The last action you attempted could not be performed because you are over " "the rate limit. Please wait 10 seconds and try again." @@ -9954,59 +7120,44 @@ "আপনি সর্বশেষ যে কার্যটে চেষ্টা করেছেন তা সম্পাদন করা যায়নি কারণ আপনি হারের সীমা " "অতিক্রম করেছেন। অনুগ্রহ করে ১০ সেকেন্ড অপেক্ষা করুন এবং পুনরায় চেষ্টা করুন।" -#: ../libpurple/protocols/oscar/oscar.c:3703 -#: ../libpurple/protocols/toc/toc.c:977 #, c-format msgid "You have been disconnected from chat room %s." msgstr "আপনাকে %s আড্ডার রুম থেকে বিচ্ছিন্ন করা হয়েছে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:3935 -#: ../libpurple/protocols/silc/util.c:591 -#: ../libpurple/protocols/silc10/util.c:586 msgid "Mobile Phone" msgstr "মোবাইল ফোন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:3964 msgid "Personal Web Page" msgstr "ব্যক্তিগত ওয়েব পেজ" #. aim_userinfo_t #. strip_html_tags -#: ../libpurple/protocols/oscar/oscar.c:3972 msgid "Additional Information" msgstr "অতিরিক্ত তথ্য" # tithi -#: ../libpurple/protocols/oscar/oscar.c:3981 -#: ../libpurple/protocols/oscar/oscar.c:3989 msgid "Zip Code" msgstr "জিপ কোড" -#: ../libpurple/protocols/oscar/oscar.c:3992 msgid "Work Information" msgstr "কাজের তথ্য" # tithi -#: ../libpurple/protocols/oscar/oscar.c:3995 msgid "Division" msgstr "বিভাগ" -#: ../libpurple/protocols/oscar/oscar.c:3996 msgid "Position" msgstr "অবস্থান" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4000 msgid "Web Page" msgstr "ওয়েব পেজ" -#: ../libpurple/protocols/oscar/oscar.c:4058 msgid "Pop-Up Message" msgstr "পপ-আপ বার্তা" -#: ../libpurple/protocols/oscar/oscar.c:4098 #, c-format msgid "The following username is associated with %s" msgid_plural "The following usernames are associated with %s" @@ -10014,24 +7165,20 @@ msgstr[1] "নিম্নবর্ণিত ব্যবহারকারীর-নামসমূহ %s এর সাথে সম্পর্কিত" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4129 #, c-format msgid "No results found for email address %s" msgstr "%s ই-মেইল ঠিকানার জন্য কোনো ফলাফল খুঁজে পায়নি" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4150 #, c-format msgid "You should receive an email asking to confirm %s." msgstr "আপনি %s নিশ্চিত করতে একটি ই-মেইল গ্রহণ করবেন।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4152 msgid "Account Confirmation Requested" msgstr "একাউন্ট নিশ্চিতকরণ অনুরোধ করা হয়েছে" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4185 #, c-format msgid "" "Error 0x%04x: Unable to format username because the requested name differs " @@ -10041,13 +7188,11 @@ "ভিন্ন।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4187 #, c-format msgid "Error 0x%04x: Unable to format username because it is invalid." msgstr "ত্রুটি 0x%04x: ব্যবহারকারীর নাম বিন্যাস করতে অক্ষম কারণ এটি অবৈধ।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4189 #, c-format msgid "" "Error 0x%04x: Unable to format username because the requested name is too " @@ -10056,7 +7201,6 @@ "ত্রুটি 0x%04x: ব্যবহারকারীর নাম বিন্যাস করতে অক্ষম কারণ অনুরোধকৃত নাম খুব দীর্ঘ।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4191 #, c-format msgid "" "Error 0x%04x: Unable to change email address because there is already a " @@ -10066,7 +7210,6 @@ "ইতোমধ্যে একটি অনুরোধ অমীমাংসিত রয়েছে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4193 #, c-format msgid "" "Error 0x%04x: Unable to change email address because the given address has " @@ -10076,7 +7219,6 @@ "অনেক বেশি ব্যবহারকারী নাম রয়েছে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4195 #, c-format msgid "" "Error 0x%04x: Unable to change email address because the given address is " @@ -10084,39 +7226,32 @@ msgstr "ত্রুটি 0x%04x: ই-মেইল ঠিকানা পরিবর্তন করতে অক্ষম কারণ প্রদত্ত ঠিকানা অবৈধ।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4197 #, c-format msgid "Error 0x%04x: Unknown error." msgstr "ত্রুটি 0x%04x: অজানা ত্রুটি।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4199 msgid "Error Changing Account Info" msgstr "একাউন্ট তথ্য পরিবর্তনের ত্রুটি" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4205 #, c-format msgid "The email address for %s is %s" msgstr "%1s এর ই-মেইল ঠিকানা %2s" -#: ../libpurple/protocols/oscar/oscar.c:4207 msgid "Account Info" msgstr "একাউন্ট তথ্য" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4393 msgid "" "Your IM Image was not sent. You must be Direct Connected to send IM Images." msgstr "" "আপনার IM চিত্র পাঠানো হয়নি। আপনাকে IM চিত্র পাঠাতে সরাসরি সংযুক্ত থাকতে হবে।" -#: ../libpurple/protocols/oscar/oscar.c:4664 msgid "Unable to set AIM profile." msgstr "AIM প্রোফাইল নির্ধারণ করতে ব্যর্থ।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4665 msgid "" "You have probably requested to set your profile before the login procedure " "completed. Your profile remains unset; try setting it again when you are " @@ -10127,7 +7262,6 @@ "আপনাকে সম্পূর্ণভাবে সংযুক্ত।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4679 #, c-format msgid "" "The maximum profile length of %d byte has been exceeded. It has been " @@ -10143,12 +7277,10 @@ "হয়েছে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4684 msgid "Profile too long." msgstr "প্রোফাইল বেশ বড়।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4728 #, c-format msgid "" "The maximum away message length of %d byte has been exceeded. It has been " @@ -10161,12 +7293,10 @@ msgstr[1] "" "সর্বোচ্চ %d বাইট দৈর্ঘ্যের বার্তা অতিক্রম করা হয়েছে। আপনার জন্য এটা হ্রাস করা হয়েছে।" -#: ../libpurple/protocols/oscar/oscar.c:4733 msgid "Away message too long." msgstr "দূরের বার্তাটি খুব দীর্ঘ।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4806 #, c-format msgid "" "Could not add the buddy %s because the username is invalid. Usernames must " @@ -10177,18 +7307,13 @@ "বৈধ ই-মেইল ঠিকানা থাকতে হবে, বা একটি বর্ণ দ্বারা শুরু হবে এবং শুধুমাত্র বর্ণ, সংখ্যা " "এবং স্পেস ধারণ করবে, বা শুধুমাত্র সংখ্যা ধারণ করবে।" -#: ../libpurple/protocols/oscar/oscar.c:4808 -#: ../libpurple/protocols/oscar/oscar.c:5278 -#: ../libpurple/protocols/oscar/oscar.c:5293 msgid "Unable to Add" msgstr "যোগ করতে সমর্থ নয়" -#: ../libpurple/protocols/oscar/oscar.c:4927 msgid "Unable to Retrieve Buddy List" msgstr "বন্ধু তালিকা উদ্ধার করতে সমর্থ নয়" # tithi -#: ../libpurple/protocols/oscar/oscar.c:4928 msgid "" "The AIM servers were temporarily unable to send your buddy list. Your buddy " "list is not lost, and will probably become available in a few minutes." @@ -10197,16 +7322,10 @@ "নষ্ট হয়নি, এবং সম্ভবত কয়েক মিনিটের মধ্যে সহজলভ্য হবে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5119 -#: ../libpurple/protocols/oscar/oscar.c:5121 -#: ../libpurple/protocols/oscar/oscar.c:5360 -#: ../libpurple/protocols/oscar/oscar.c:5361 -#: ../libpurple/protocols/oscar/oscar.c:5366 msgid "Orphans" msgstr "অনাথ" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5276 #, c-format msgid "" "Could not add the buddy %s because you have too many buddies in your buddy " @@ -10216,17 +7335,13 @@ "করে একজনকে অপসারণ করুন এবং পুনরায় চেষ্টা করুন।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5276 -#: ../libpurple/protocols/oscar/oscar.c:5291 msgid "(no name)" msgstr "(কোনো নাম নেই)" -#: ../libpurple/protocols/oscar/oscar.c:5290 #, c-format msgid "Could not add the buddy %s for an unknown reason." msgstr "একটি অজানা কারণে %s বন্ধুকে যুক্ত করা যায়নি।" -#: ../libpurple/protocols/oscar/oscar.c:5424 #, c-format msgid "" "The user %s has given you permission to add him or her to your buddy list. " @@ -10236,26 +7351,22 @@ "ব্যবহারকারীকে যুক্ত করতে চান?" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5432 msgid "Authorization Given" msgstr "প্রাপ্তাধিকার দেওয়া হয়েছে" # tithi #. Granted -#: ../libpurple/protocols/oscar/oscar.c:5505 #, c-format msgid "The user %s has granted your request to add them to your buddy list." msgstr "" "%s ব্যবহারকারী আপনার বন্ধু তালিকায় তাদেরকে যোগ করতে আপনার অনুরোধ গ্রহণ করেছে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5506 msgid "Authorization Granted" msgstr "প্রাপ্তাধিকার গ্রহণ করা হয়েছে" # tithi #. Denied -#: ../libpurple/protocols/oscar/oscar.c:5509 #, c-format msgid "" "The user %s has denied your request to add them to your buddy list for the " @@ -10267,43 +7378,34 @@ "%2s" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5510 msgid "Authorization Denied" msgstr "প্রাপ্তাধিকার বাতিল করেছে" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5546 -#: ../libpurple/protocols/toc/toc.c:1371 msgid "_Exchange:" msgstr "বিনিময় করুন: (_E)" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5659 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats." msgstr "" "আপনার আইএম চিত্র পাঠানো হয়নি। আপনি AIM আড্ডাতে আইএম চিত্র পাঠাতে পারেন না।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:5995 msgid "iTunes Music Store Link" msgstr "আই-টিউন সঙ্গীত সংরক্ষণ লিংক" -#: ../libpurple/protocols/oscar/oscar.c:6104 #, c-format msgid "Buddy Comment for %s" msgstr "%s-এর জন্য বন্ধুর মন্তব্য" -#: ../libpurple/protocols/oscar/oscar.c:6105 msgid "Buddy Comment:" msgstr "বন্ধুর মন্তব্য:" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6152 #, c-format msgid "You have selected to open a Direct IM connection with %s." msgstr "আপনি %s এর সঙ্গে একটি সরাসরি IM সংযোগ খুলতে নির্বাচন করেছেন।" -#: ../libpurple/protocols/oscar/oscar.c:6156 msgid "" "Because this reveals your IP address, it may be considered a security risk. " "Do you wish to continue?" @@ -10311,76 +7413,60 @@ "এটি আপনার IP ঠিকানা প্রকাশ করার কারণে, এতে গোপনীয়তার ঝুঁকি থাকতে পারে। আপনি কি " "অব্যাহত রাখতে চান? " -#: ../libpurple/protocols/oscar/oscar.c:6162 -#: ../libpurple/protocols/oscar/peer.c:1051 msgid "C_onnect" msgstr "সংযোগ দিন (_o)" -#: ../libpurple/protocols/oscar/oscar.c:6197 msgid "Get AIM Info" msgstr "এআইএম তথ্য গ্রহণ করুন" #. We only do this if the user is in our buddy list -#: ../libpurple/protocols/oscar/oscar.c:6206 msgid "Edit Buddy Comment" msgstr "বন্ধুর মন্তব্য সম্পাদন করুন" -#: ../libpurple/protocols/oscar/oscar.c:6215 msgid "Get Status Msg" msgstr "অবস্থার বার্তা গ্রহণ করুন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6228 msgid "Direct IM" msgstr "সরাসরি IM" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6250 msgid "Re-request Authorization" msgstr "পুনঃ-অনুরোধ প্রাপ্তাধিকার" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6309 msgid "Require authorization" msgstr "প্রাপ্তাধিকার প্রয়োজন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6312 msgid "Web aware (enabling this will cause you to receive SPAM!)" msgstr "ওয়েব সচেতন (এইটি সক্রিয় করার কারণে আপনি SPAM গ্রহণ করবেন!)" -#: ../libpurple/protocols/oscar/oscar.c:6317 msgid "ICQ Privacy Options" msgstr "ICQ ব্যক্তিগত পছন্দসমূহ" -#: ../libpurple/protocols/oscar/oscar.c:6337 msgid "The new formatting is invalid." msgstr "নতুন বিন্যাসকরণটি অবৈধ।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6338 msgid "Username formatting can change only capitalization and whitespace." msgstr "" "ব্যবহারকারীর-নাম বিন্যাসকরণ শুধুমাত্র ঊর্ধ্ববর্ণানুক্রমিক এবং ফাঁকা জায়গা পরিবর্তন করতে " "পারে।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6391 msgid "Change Address To:" msgstr "ঠিকানা পরিবর্তন করুন:" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6437 msgid "you are not waiting for authorization" msgstr "আপনি প্রাপ্তাধিকারের জন্য অপেক্ষা করছেন না" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6440 msgid "You are awaiting authorization from the following buddies" msgstr "আপনি নিম্নোক্ত বন্ধু থেকে প্রাপ্তাধিকারের জন্য অপেক্ষা করছেন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6441 msgid "" "You can re-request authorization from these buddies by right-clicking on " "them and selecting \"Re-request Authorization.\"" @@ -10389,74 +7475,59 @@ "তাদের থেকে প্রাপ্তাধিকার পুনরায় অনুরোধ করতে পারেন।" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6458 msgid "Find Buddy by Email" msgstr "ই-মেইলের মাধ্যমে বন্ধু খুঁজুন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6459 msgid "Search for a buddy by email address" msgstr "ই-মেইল ঠিকানার মাধ্যমে বন্ধু খুঁজুন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6460 msgid "Type the email address of the buddy you are searching for." msgstr "আপনি যে বন্ধু খুঁজছেন তার ই-মেইল ঠিকানা টাইপ করুন।" -#: ../libpurple/protocols/oscar/oscar.c:6463 msgid "_Search" msgstr "খুঁজুন (_S)" -#: ../libpurple/protocols/oscar/oscar.c:6618 msgid "Set User Info (web)..." msgstr "ব্যবহারকারী তথ্য নির্ধারণ করুন (ওয়েব)..." -#: ../libpurple/protocols/oscar/oscar.c:6629 msgid "Change Password (web)" msgstr "গুপ্তসংকেত পরিবর্তন করুন (ওয়েব)" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6633 msgid "Configure IM Forwarding (web)" msgstr "IM অগ্রবর্তীকরণ বিন্যাসন করুন (ওয়েব)" #. ICQ actions -#: ../libpurple/protocols/oscar/oscar.c:6643 msgid "Set Privacy Options..." msgstr "ব্যক্তিগত পছন্দসমূহ নির্ধারণ করুন..." #. AIM actions -#: ../libpurple/protocols/oscar/oscar.c:6650 msgid "Confirm Account" msgstr "একাউন্ট নিশ্চিত করুন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6654 msgid "Display Currently Registered Email Address" msgstr "বর্তমানে নিবন্ধণকৃত ই-মেইল ঠিকানা প্রদর্শন করুন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6658 msgid "Change Currently Registered Email Address..." msgstr "বর্তমানে নিবন্ধণকৃত ই-মেইল ঠিকানা পরিবর্তন করুন..." # tithi -#: ../libpurple/protocols/oscar/oscar.c:6665 msgid "Show Buddies Awaiting Authorization" msgstr "বন্ধুদের অপেক্ষমান প্রাপ্তাধিকার প্রদর্শন করুন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6671 msgid "Search for Buddy by Email Address..." msgstr "ই-মেইল ঠিকানার মাধ্যমে বন্ধুদের খুঁজুন..." # tithi -#: ../libpurple/protocols/oscar/oscar.c:6676 msgid "Search for Buddy by Information" msgstr "তথ্য দ্বারা বন্ধুদের খুঁজুন" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6864 msgid "" "Always use AIM/ICQ proxy server for\n" "file transfers and direct IM (slower,\n" @@ -10467,33 +7538,27 @@ "(অপেক্ষাকৃত ধীর, কিন্তু আপনার আইপি ঠিকানা প্রকাশ করে না)" # tithi -#: ../libpurple/protocols/oscar/oscar.c:6868 msgid "Allow multiple simultaneous logins" msgstr "একাধিক যুগপৎ লগইন অনুমোদন করুন" # tithi -#: ../libpurple/protocols/oscar/peer.c:703 #, c-format msgid "Asking %s to connect to us at %s:%hu for Direct IM." msgstr "" "%2s এ আমাদের সাথে সংযোগ করতে %1s কে জিজ্ঞাসা করছে: সরাসরি আইএম এর জন্য %3hu।" -#: ../libpurple/protocols/oscar/peer.c:788 #, c-format msgid "Attempting to connect to %s:%hu." msgstr "%1s এর সাথে সংযোগ স্থাপনের চেষ্টা করছে:%2hu।" -#: ../libpurple/protocols/oscar/peer.c:862 msgid "Attempting to connect via proxy server." msgstr "প্রক্সি সার্ভারের মাধ্যমে সংযোগ স্থাপনের চেষ্টা করছে।" # tithi -#: ../libpurple/protocols/oscar/peer.c:1039 #, c-format msgid "%s has just asked to directly connect to %s" msgstr "%1s এইমাত্র %2s এর সাথে সরাসরি সংযোগ করতে জিজ্ঞাসা করেছে" -#: ../libpurple/protocols/oscar/peer.c:1043 msgid "" "This requires a direct connection between the two computers and is necessary " "for IM Images. Because your IP address will be revealed, this may be " @@ -10504,476 +7569,344 @@ "পারে।" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:42 msgid "Aquarius" msgstr "কুম্ভ রাশি" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:42 msgid "Pisces" msgstr "মীন রাশি" -#: ../libpurple/protocols/qq/buddy_info.c:42 msgid "Aries" msgstr "মেষ রাশি" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:42 msgid "Taurus" msgstr "বৃষ রাশি" -#: ../libpurple/protocols/qq/buddy_info.c:43 msgid "Gemini" msgstr "মিথুন রাশি" -#: ../libpurple/protocols/qq/buddy_info.c:43 msgid "Cancer" msgstr "কর্কট রাশি" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:43 msgid "Leo" msgstr "সিংহ রাশি" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:43 msgid "Virgo" msgstr "কন্যা রাশি" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:43 msgid "Libra" msgstr "তুলা রাশি" -#: ../libpurple/protocols/qq/buddy_info.c:44 msgid "Scorpio" msgstr "বৃশ্চিক রাশি" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:44 msgid "Sagittarius" msgstr "ধনু রাশি" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:44 msgid "Capricorn" msgstr "মকর রাশি" -#: ../libpurple/protocols/qq/buddy_info.c:49 msgid "Rat" msgstr "ইদুর" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:49 msgid "Ox" msgstr "ষাঁড়" -#: ../libpurple/protocols/qq/buddy_info.c:49 msgid "Tiger" msgstr "বাঘ" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:49 msgid "Rabbit" msgstr "খরগোশ" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:50 msgid "Dragon" msgstr "ড্রাগন" -#: ../libpurple/protocols/qq/buddy_info.c:50 msgid "Snake" msgstr "সাপ" -#: ../libpurple/protocols/qq/buddy_info.c:50 msgid "Horse" msgstr "ঘোড়া" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:50 msgid "Goat" msgstr "ছাগল" -#: ../libpurple/protocols/qq/buddy_info.c:50 msgid "Monkey" msgstr "বানর" -#: ../libpurple/protocols/qq/buddy_info.c:51 msgid "Rooster" msgstr "মোরগ" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:51 msgid "Dog" msgstr "কুকুর" -#: ../libpurple/protocols/qq/buddy_info.c:51 msgid "Pig" msgstr "শূকর" -#: ../libpurple/protocols/qq/buddy_info.c:56 msgid "Other" msgstr "অন্যান্য" -#: ../libpurple/protocols/qq/buddy_info.c:61 msgid "Visible" msgstr "দৃশ্যমান" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:61 msgid "Friend Only" msgstr "শুধুমাত্র বন্ধু" -#: ../libpurple/protocols/qq/buddy_info.c:61 -#: ../libpurple/protocols/qq/buddy_info.c:66 msgid "Private" msgstr "ব্যক্তিগত" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:111 msgid "QQ Number" msgstr "QQ নম্বর" -#: ../libpurple/protocols/qq/buddy_info.c:113 msgid "Country/Region" msgstr "দেশ/এলাকা" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:114 msgid "Province/State" msgstr "প্রদেশ/রাজ্য" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:115 msgid "Zipcode" msgstr "জিপকোড" -#: ../libpurple/protocols/qq/buddy_info.c:117 msgid "Phone Number" msgstr "টেলিফোন নম্বর" -#: ../libpurple/protocols/qq/buddy_info.c:129 msgid "Authorize adding" msgstr "অনুমোদিত সংযুক্তকরণ" -#: ../libpurple/protocols/qq/buddy_info.c:133 msgid "Cellphone Number" msgstr "সেলফোন নম্বর" -#: ../libpurple/protocols/qq/buddy_info.c:135 msgid "Personal Introduction" msgstr "ব্যক্তিগত ভূমিকা" -#: ../libpurple/protocols/qq/buddy_info.c:136 msgid "City/Area" msgstr "শহর/এলাকা" -#: ../libpurple/protocols/qq/buddy_info.c:140 msgid "Publish Mobile" msgstr "মোবাইল প্রকাশ করুন" -#: ../libpurple/protocols/qq/buddy_info.c:141 msgid "Publish Contact" msgstr "যোগাযোগ প্রকাশ করুন" -#: ../libpurple/protocols/qq/buddy_info.c:142 msgid "College" msgstr "কলেজ" -#: ../libpurple/protocols/qq/buddy_info.c:143 msgid "Horoscope" msgstr "রাশি চক্র" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:144 msgid "Zodiac" msgstr "জোডিয়াক" -#: ../libpurple/protocols/qq/buddy_info.c:145 msgid "Blood" msgstr "রক্ত" # tithi -#: ../libpurple/protocols/qq/buddy_info.c:195 msgid "True" msgstr "সত্য" -#: ../libpurple/protocols/qq/buddy_info.c:195 msgid "False" msgstr "মিথ্যা" -#: ../libpurple/protocols/qq/buddy_info.c:415 -#: ../libpurple/protocols/qq/buddy_info.c:416 -#: ../libpurple/protocols/qq/qq.c:770 msgid "Modify Contact" msgstr "যোগাযোগ পরিবর্তন করুন" -#: ../libpurple/protocols/qq/buddy_info.c:418 -#: ../libpurple/protocols/qq/buddy_info.c:419 -#: ../libpurple/protocols/qq/qq.c:767 msgid "Modify Address" msgstr "ঠিকানা পরিবর্তন করুন" -#: ../libpurple/protocols/qq/buddy_info.c:421 -#: ../libpurple/protocols/qq/buddy_info.c:422 -#: ../libpurple/protocols/qq/qq.c:764 msgid "Modify Extended Information" msgstr "বর্ধিত তথ্য পরিবর্তন করুন" -#: ../libpurple/protocols/qq/buddy_info.c:426 -#: ../libpurple/protocols/qq/buddy_info.c:427 -#: ../libpurple/protocols/qq/qq.c:761 msgid "Modify Information" msgstr "তথ্য পরিবর্তন করুন" -#: ../libpurple/protocols/qq/buddy_info.c:440 msgid "Update" msgstr "হালনাগাদ করুন" -#: ../libpurple/protocols/qq/buddy_info.c:460 msgid "Could not change buddy information." msgstr "বন্ধুর তথ্য পরিবর্তন করতে পারে না।" # tithi -#: ../libpurple/protocols/qq/buddy_opt.c:320 #, c-format msgid "%u requires verification" msgstr "%u এর সত্যতা যাচাই করা প্রয়োজন" -#: ../libpurple/protocols/qq/buddy_opt.c:321 msgid "Add buddy question" msgstr "বন্ধুর প্রশ্ন যোগ করুন" # tithi -#: ../libpurple/protocols/qq/buddy_opt.c:322 msgid "Enter answer here" msgstr "এখানে উত্তর প্রবেশ করান" -#: ../libpurple/protocols/qq/buddy_opt.c:325 -#: ../libpurple/protocols/qq/buddy_opt.c:669 -#: ../libpurple/protocols/qq/group_join.c:149 msgid "Send" msgstr "প্রেরণ করুন" -#: ../libpurple/protocols/qq/buddy_opt.c:446 msgid "Invalid answer." msgstr "অবৈধ উত্তর।" -#: ../libpurple/protocols/qq/buddy_opt.c:618 -#: ../libpurple/protocols/qq/group_opt.c:124 -#: ../libpurple/protocols/yahoo/yahoo.c:997 msgid "Authorization denied message:" msgstr "প্রাপ্তাধিকার বার্তা অস্বীকার করেছে:" # tithi -#: ../libpurple/protocols/qq/buddy_opt.c:619 msgid "Sorry, you're not my style." msgstr "দুঃখিত,আপনি আমার শৈলী নয়।" -#: ../libpurple/protocols/qq/buddy_opt.c:664 #, c-format msgid "%u needs authorization" msgstr "%u এর প্রাপ্তাধিকার প্রয়োজন" -#: ../libpurple/protocols/qq/buddy_opt.c:665 msgid "Add buddy authorize" msgstr "বন্ধুর অনুমোদন যোগ করুন" # tithi -#: ../libpurple/protocols/qq/buddy_opt.c:666 msgid "Enter request here" msgstr "এখানে অনুরোধ প্রবেশ করান" -#: ../libpurple/protocols/qq/buddy_opt.c:667 -#: ../libpurple/protocols/qq/group_join.c:148 msgid "Would you be my friend?" msgstr "আপনি কি আমার বন্ধু হবেন?" -#: ../libpurple/protocols/qq/buddy_opt.c:704 -#: ../libpurple/protocols/qq/buddy_opt.c:729 -#: ../libpurple/protocols/qq/buddy_opt.c:733 -#: ../libpurple/protocols/qq/buddy_opt.c:749 -#: ../libpurple/protocols/qq/buddy_opt.c:774 -#: ../libpurple/protocols/qq/buddy_opt.c:1248 msgid "QQ Buddy" msgstr "QQ বন্ধু" -#: ../libpurple/protocols/qq/buddy_opt.c:704 msgid "Add buddy" msgstr "বন্ধু যোগ করুন" -#: ../libpurple/protocols/qq/buddy_opt.c:704 msgid "Invalid QQ Number" msgstr "অবৈধ QQ নম্বর" -#: ../libpurple/protocols/qq/buddy_opt.c:729 -#: ../libpurple/protocols/qq/buddy_opt.c:733 msgid "Failed sending authorize" msgstr "অনুমোদন পাঠাতে ব্যর্থ হয়েছে" -#: ../libpurple/protocols/qq/buddy_opt.c:748 #, c-format msgid "Failed removing buddy %u" msgstr "%u বন্ধুকে অপসারণ করতে ব্যর্থ হয়েছে" -#: ../libpurple/protocols/qq/buddy_opt.c:773 #, c-format msgid "Failed removing me from %d's buddy list" msgstr "%d এর বন্ধু তালিকা থেকে আমাকে অপসারণ করতে ব্যর্থ হয়েছে" -#: ../libpurple/protocols/qq/buddy_opt.c:984 -#: ../libpurple/protocols/qq/buddy_opt.c:1100 -#: ../libpurple/protocols/qq/buddy_opt.c:1225 -#: ../libpurple/protocols/qq/buddy_opt.c:1236 msgid "No reason given" msgstr "কোনো কারন দর্শানো হয়নি" #. only need to get value -#: ../libpurple/protocols/qq/buddy_opt.c:1130 #, c-format msgid "You have been added by %s" msgstr "আপনি %s দ্বারা সংযুক্ত হয়েছেন" -#: ../libpurple/protocols/qq/buddy_opt.c:1132 msgid "Would you like to add him?" msgstr "আপনি কি তাকে যোগ করতে চান?" -#: ../libpurple/protocols/qq/buddy_opt.c:1245 #, c-format msgid "Rejected by %s" msgstr "%s দ্বারা বাতিল করা হয়েছে" -#: ../libpurple/protocols/qq/buddy_opt.c:1246 #, c-format msgid "Message: %s" msgstr "বার্তা: %s" # tithi -#: ../libpurple/protocols/qq/group.c:65 msgid "ID: " msgstr "আইডি:" -#: ../libpurple/protocols/qq/group.c:98 msgid "Group ID" msgstr "দলের আইডি" # tithi -#: ../libpurple/protocols/qq/group.c:107 msgid "QQ Qun" msgstr "QQ Qun" -#: ../libpurple/protocols/qq/group.c:108 msgid "Please enter Qun number" msgstr "অনুগ্রহ করে Qun নম্বর প্রবেশ করান" # tithi -#: ../libpurple/protocols/qq/group.c:109 msgid "You can only search for permanent Qun\n" msgstr "আপনি শুধুমাত্র স্থায়ী Qun খুঁজতে পারেন\n" -#: ../libpurple/protocols/qq/group_im.c:398 -#: ../libpurple/protocols/qq/group_im.c:402 -#: ../libpurple/protocols/qq/im.c:1287 ../libpurple/protocols/qq/im.c:1291 msgid "(Invalid UTF-8 string)" msgstr "(অবৈধ UTF-8 স্ট্রিং)" # tithi -#: ../libpurple/protocols/qq/group_info.c:114 msgid "Not member" msgstr "সদস্য নয়" # tithi -#: ../libpurple/protocols/qq/group_info.c:117 -#: ../libpurple/protocols/qq/qq.c:336 msgid "Member" msgstr "সদস্য" -#: ../libpurple/protocols/qq/group_info.c:120 msgid "Requesting" msgstr "অনুরোধ করছে" -#: ../libpurple/protocols/qq/group_info.c:123 msgid "Admin" msgstr "প্রশাসন" -#: ../libpurple/protocols/qq/group_info.c:142 msgid "Notice" msgstr "বিজ্ঞপ্তি" -#: ../libpurple/protocols/qq/group_info.c:143 msgid "Detail" msgstr "বিস্তারিত" # tithi -#: ../libpurple/protocols/qq/group_info.c:148 msgid "Creator" msgstr "তৈরীকারক" -#: ../libpurple/protocols/qq/group_info.c:152 msgid "About me" msgstr "আমার সম্পর্কে" -#: ../libpurple/protocols/qq/group_info.c:156 msgid "Category" msgstr "শ্রেণী" # tithi -#: ../libpurple/protocols/qq/group_join.c:95 msgid "The Qun does not allow others to join" msgstr "Qun অন্যদের যুক্ত করতে অনুমতি দেয় না" -#: ../libpurple/protocols/qq/group_join.c:146 msgid "Join QQ Qun" msgstr "QQ Qun যুক্ত করুন" # tithi -#: ../libpurple/protocols/qq/group_join.c:147 msgid "Input request here" msgstr "এখানে অনুরোধ ইনপুট দিন" # tithi -#: ../libpurple/protocols/qq/group_join.c:222 #, c-format msgid "Successfully joined Qun %s (%u)" msgstr "%s (%u) Qun সফলভাবে যুক্ত করেছে" -#: ../libpurple/protocols/qq/group_join.c:226 msgid "Successfully joined Qun" msgstr "Qun সফলভাবে যুক্ত করেছে" # tithi -#: ../libpurple/protocols/qq/group_join.c:270 #, c-format msgid "Qun %u denied from joining" msgstr "%u Qun যুক্তকরণ বাতিল করেছে" -#: ../libpurple/protocols/qq/group_join.c:271 -#: ../libpurple/protocols/qq/group_join.c:279 -#: ../libpurple/protocols/qq/group_join.c:331 -#: ../libpurple/protocols/qq/group_opt.c:348 -#: ../libpurple/protocols/qq/group_opt.c:445 -#: ../libpurple/protocols/qq/group_opt.c:482 msgid "QQ Qun Operation" msgstr "QQ Qun অপারেশন" -#: ../libpurple/protocols/qq/group_join.c:271 -#: ../libpurple/protocols/qq/group_join.c:279 msgid "Failed:" msgstr "ব্যর্থ:" # tithi -#: ../libpurple/protocols/qq/group_join.c:279 msgid "Join Qun, Unknown Reply" msgstr "Qun যুক্ত করুন, অজানা উত্তর" -#: ../libpurple/protocols/qq/group_join.c:332 -#: ../libpurple/protocols/qq/qq.c:848 msgid "Quit Qun" msgstr "Qun ত্যাগ করুন" # tithi -#: ../libpurple/protocols/qq/group_join.c:333 msgid "" "Note, if you are the creator, \n" "this operation will eventually remove this Qun." @@ -10982,245 +7915,203 @@ "এই অপারেশনটি সবশেষে এই Qunটি অপসারণ করবে।" # tithi -#: ../libpurple/protocols/qq/group_opt.c:125 msgid "Sorry, you are not our style" msgstr "দুঃখিত,আপনি আমাদের শৈলী নন" -#: ../libpurple/protocols/qq/group_opt.c:207 msgid "Successfully changed Qun members" msgstr "Qun সদস্যদের সফলভাবে পরিবর্তন করা হয়েছে" -#: ../libpurple/protocols/qq/group_opt.c:251 msgid "Successfully changed Qun information" msgstr "Qun তথ্য সফলভাবে পরিবর্তন করা হয়েছে" # tithi -#: ../libpurple/protocols/qq/group_opt.c:349 msgid "You have successfully created a Qun" msgstr "আপনি Qun সফলভাবে তৈরি করেছেন" -#: ../libpurple/protocols/qq/group_opt.c:350 msgid "Would you like to set up detailed information now?" msgstr "আপনি কি এখন বিস্তারিত তথ্য সংস্থাপন করতে চান?" -#: ../libpurple/protocols/qq/group_opt.c:354 msgid "Setup" msgstr "সংস্থাপন করুন" -#: ../libpurple/protocols/qq/group_opt.c:425 #, c-format msgid "%u requested to join Qun %u for %s" msgstr "%1$u %3$s এর জন্য %2$u Qun যোগ করতে অনুরোধ করছে" -#: ../libpurple/protocols/qq/group_opt.c:438 #, c-format msgid "%u request to join Qun %u" msgstr "%1u %2u Qun যোগ করতে অনুরোধ করছে" -#: ../libpurple/protocols/qq/group_opt.c:480 #, c-format msgid "Failed to join Qun %u, operated by admin %u" msgstr "%u প্রশাসন দ্বারা পরিচালিত, Qun %u যোগ করতে ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/qq/group_opt.c:522 #, c-format msgid "Joining Qun %u is approved by admin %u for %s" msgstr "%3$s এর জন্য %2$u প্রশাসন দ্বারা %1$u Qun যুক্ত করার অনুমোদন দিয়েছে" -#: ../libpurple/protocols/qq/group_opt.c:557 #, c-format msgid "Removed buddy %u." msgstr "%u বন্ধু অপসারণ করা হয়েছে।" # tithi -#: ../libpurple/protocols/qq/group_opt.c:590 #, c-format msgid "New buddy %u joined." msgstr "নতুন %u বন্ধু যোগদান করেছে।" -#: ../libpurple/protocols/qq/qq.c:276 #, c-format msgid "Unknown-%d" msgstr "অজানা-%d" -#: ../libpurple/protocols/qq/qq.c:330 msgid "Level" msgstr "স্তর" # tithi -#: ../libpurple/protocols/qq/qq.c:339 msgid " VIP" msgstr " VIP" # tithi -#: ../libpurple/protocols/qq/qq.c:342 msgid " TCP" msgstr " TCP" -#: ../libpurple/protocols/qq/qq.c:345 msgid " FromMobile" msgstr " FromMobile" -#: ../libpurple/protocols/qq/qq.c:348 msgid " BindMobile" msgstr " BindMobile" -#: ../libpurple/protocols/qq/qq.c:351 msgid " Video" msgstr "ভিডিও" -#: ../libpurple/protocols/qq/qq.c:355 msgid " Zone" msgstr "এলাকা" # tithi -#: ../libpurple/protocols/qq/qq.c:357 ../libpurple/protocols/qq/qq.c:370 msgid "Flag" msgstr "পতাকা" # tithi -#: ../libpurple/protocols/qq/qq.c:365 msgid "Ver" msgstr "Ver" -#: ../libpurple/protocols/qq/qq.c:454 ../libpurple/protocols/qq/qq.c:907 msgid "Invalid name" msgstr "অবৈধ নাম" -#: ../libpurple/protocols/qq/qq.c:500 msgid "Select icon..." msgstr "আইকন নির্বাচন করুন..." -#: ../libpurple/protocols/qq/qq.c:570 #, c-format msgid "Login time: %d-%d-%d, %d:%d:%d
\n" msgstr "লগইন সময়: %1d-%2d-%3d, %4d:%5d:%6d
\n" -#: ../libpurple/protocols/qq/qq.c:573 #, c-format msgid "Total Online Buddies: %d
\n" msgstr "সর্বমোট অনলাইন বন্ধু: %d
\n" # fix me tithi -#: ../libpurple/protocols/qq/qq.c:575 #, c-format msgid "Last Refresh: %d-%d-%d, %d:%d:%d
\n" msgstr "সর্বশেষ রিফ্রেশ: %1d-%2d-%3d, %4d:%5d:%6d
\n" -#: ../libpurple/protocols/qq/qq.c:581 #, c-format msgid "Server: %s
\n" msgstr "সার্ভার: %s
\n" -#: ../libpurple/protocols/qq/qq.c:582 #, c-format msgid "Client Tag: %s
\n" msgstr "ক্লায়েন্ট ট্যাগ: %s
\n" -#: ../libpurple/protocols/qq/qq.c:583 #, c-format msgid "Connection Mode: %s
\n" msgstr "সংযোগ মোড: %s
\n" -#: ../libpurple/protocols/qq/qq.c:584 #, c-format msgid "My Internet IP: %s:%d
\n" msgstr "আমার ইন্টারনেট IP: %1s:%2d
\n" -#: ../libpurple/protocols/qq/qq.c:588 #, c-format msgid "Sent: %lu
\n" msgstr "পাঠানো হয়েছে: %lu
\n" -#: ../libpurple/protocols/qq/qq.c:589 #, c-format msgid "Resend: %lu
\n" msgstr "পুনরায় পাঠানো হয়েছে: %lu
\n" -#: ../libpurple/protocols/qq/qq.c:590 #, c-format msgid "Lost: %lu
\n" msgstr "হারিয়ে গেছে: %lu
\n" -#: ../libpurple/protocols/qq/qq.c:591 #, c-format msgid "Received: %lu
\n" msgstr "গৃহীত: %lu
\n" -#: ../libpurple/protocols/qq/qq.c:592 #, c-format msgid "Received Duplicate: %lu
\n" msgstr "অনুরুপ গৃহীত হয়েছে: %lu
\n" -#: ../libpurple/protocols/qq/qq.c:599 #, c-format msgid "Time: %d-%d-%d, %d:%d:%d
\n" msgstr "সময়: %1d-%2d-%3d, %4d:%5d:%6d
\n" -#: ../libpurple/protocols/qq/qq.c:604 #, c-format msgid "IP: %s
\n" msgstr "আইপি: %s
\n" -#: ../libpurple/protocols/qq/qq.c:609 msgid "Login Information" msgstr "লগইন তথ্য" # tithi -#: ../libpurple/protocols/qq/qq.c:625 msgid "

Original Author:
\n" msgstr "

মূল লেখক:
\n" # tithi -#: ../libpurple/protocols/qq/qq.c:628 msgid "

Code Contributors:
\n" msgstr "

কোড অংশগ্রহণকারীগণ:
\n" -#: ../libpurple/protocols/qq/qq.c:643 msgid "

Lovely Patch Writers:
\n" msgstr "

প্রিয় প্যাচ লেখকগণ :
\n" -#: ../libpurple/protocols/qq/qq.c:650 msgid "

Acknowledgement:
\n" msgstr "

প্রাপ্তিস্বীকার:
\n" +# tithi +#, fuzzy +msgid "

Scrupulous Testers:
\n" +msgstr "

মূল লেখক:
\n" + # fix me tithi -#: ../libpurple/protocols/qq/qq.c:663 msgid "

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

এবং, সমস্ত ছেলে পিছন-কামরায়...
\n" # tithi -#: ../libpurple/protocols/qq/qq.c:664 msgid "Feel free to join us! :)" msgstr "আমাদের সাথে উন্মুক্তভাবে যোগদান করুন! :)" -#: ../libpurple/protocols/qq/qq.c:667 #, c-format msgid "About OpenQ %s" msgstr "%s ওপেনQ সম্পর্কে" -#: ../libpurple/protocols/qq/qq.c:758 msgid "Change Icon" msgstr "আইকন পরিবর্তন করুন" -#: ../libpurple/protocols/qq/qq.c:773 ../libpurple/protocols/toc/toc.c:1680 msgid "Change Password" msgstr "গুপ্তসংকেত পরিবর্তন করুন" -#: ../libpurple/protocols/qq/qq.c:776 msgid "Account Information" msgstr "একাউন্ট তথ্য" # tithi -#: ../libpurple/protocols/qq/qq.c:779 msgid "Update all QQ Quns" msgstr "সব QQ Quns হালনাগাদ করুন" -#: ../libpurple/protocols/qq/qq.c:782 msgid "About OpenQ" msgstr "ওপেনQ সম্বন্ধে" +#, fuzzy +msgid "Modify Buddy Memo" +msgstr "ঠিকানা পরিবর্তন করুন" + #. *< type #. *< ui_requirement #. *< flags @@ -11231,140 +8122,112 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/qq/qq.c:1011 ../libpurple/protocols/qq/qq.c:1013 msgid "QQ Protocol Plugin" msgstr "QQ প্রটোকল প্লাগইন" -#: ../libpurple/protocols/qq/qq.c:1051 msgid "Auto" msgstr "স্বয়ংক্রিয়" -#: ../libpurple/protocols/qq/qq.c:1068 msgid "Select Server" msgstr "সার্ভার নির্বাচন করুন" # tithi -#: ../libpurple/protocols/qq/qq.c:1072 msgid "QQ2005" msgstr "QQ২০০৫" # tithi -#: ../libpurple/protocols/qq/qq.c:1077 msgid "QQ2007" msgstr "QQ২০০৭" # tithi -#: ../libpurple/protocols/qq/qq.c:1082 msgid "QQ2008" msgstr "QQ২০০৮" -#: ../libpurple/protocols/qq/qq.c:1089 msgid "Connect by TCP" msgstr "TCP দ্বারা সংযোগ করুন" -#: ../libpurple/protocols/qq/qq.c:1092 msgid "Show server notice" msgstr "সার্ভারের নোটিশ প্রদর্শন করুন" -#: ../libpurple/protocols/qq/qq.c:1095 msgid "Show server news" msgstr "সার্ভারের খবর প্রদর্শন করুন" +msgid "Show chat room when msg comes" +msgstr "" + # fix me tithi -#: ../libpurple/protocols/qq/qq.c:1098 msgid "Keep alive interval (seconds)" msgstr "বিরতি সক্রিয় রাখুন (সেকেন্ড)" # tithi -#: ../libpurple/protocols/qq/qq.c:1101 msgid "Update interval (seconds)" msgstr "বিরতি হালনাগাদ করুন (সেকেন্ড)" # fix me tithi -#: ../libpurple/protocols/qq/qq_base.c:75 -#: ../libpurple/protocols/qq/qq_base.c:163 msgid "Cannot decrypt server reply" msgstr "সার্ভার জবাব অসঙ্কেতায়ন করে না" # tithi -#: ../libpurple/protocols/qq/qq_base.c:314 #, c-format msgid "Failed requesting token, 0x%02X" msgstr "টোকেন চাইতে ব্যর্থ, 0x%02X" -#: ../libpurple/protocols/qq/qq_base.c:323 #, c-format msgid "Invalid token len, %d" msgstr "অবৈধ টোকেন দৈর্ঘ্য, %d" # Fix me tithi #. extend redirect used in QQ2006 -#: ../libpurple/protocols/qq/qq_base.c:408 msgid "Redirect_EX is not currently supported" msgstr "পুনঃনির্দেশিতEX বর্তমানে সমর্থিত নয় (_E)" #. need activation #. need activation #. need activation -#: ../libpurple/protocols/qq/qq_base.c:419 -#: ../libpurple/protocols/qq/qq_base.c:1105 msgid "Activation required" msgstr "সক্রিয়করণ আবশ্যক" # tithi -#: ../libpurple/protocols/qq/qq_base.c:427 #, c-format msgid "Unknown reply code when logging in (0x%02X)" msgstr "(0x%02X) এ লগইন করার সময় অজানা উত্তর কোড" # fix me tithi -#: ../libpurple/protocols/qq/qq_base.c:658 msgid "Could not decrypt server reply" msgstr "সার্ভার জবাব অসঙ্কেতায়ন করতে পারেনি" # tithi -#: ../libpurple/protocols/qq/qq_base.c:750 msgid "Requesting captcha" msgstr "captcha অনুরোধ করছে" # tithi -#: ../libpurple/protocols/qq/qq_base.c:795 msgid "Checking captcha" msgstr "captcha পরীক্ষা করছে" # tithi -#: ../libpurple/protocols/qq/qq_base.c:818 msgid "Failed captcha verification" msgstr "captcha যাচাইকরণ ব্যর্থ হয়েছে" # fix me tithi -#: ../libpurple/protocols/qq/qq_base.c:868 msgid "Captcha Image" msgstr "Captcha চিত্র" -#: ../libpurple/protocols/qq/qq_base.c:872 msgid "Enter code" msgstr "কোড প্রবেশ করান" # tithi -#: ../libpurple/protocols/qq/qq_base.c:877 -#: ../libpurple/protocols/qq/qq_base.c:878 msgid "QQ Captcha Verification" msgstr "QQ Captcha যাচাইকরণ" -#: ../libpurple/protocols/qq/qq_base.c:879 msgid "Enter the text from the image" msgstr "চিত্র হতে পাঠ প্রবেশ করান" # tithi -#: ../libpurple/protocols/qq/qq_base.c:1116 #, c-format msgid "Unknown reply when checking password (0x%02X)" msgstr "গুপ্তসঙ্কেত পরীক্ষণ করার সময় অজানা উত্তর (0x%02X)" # tithi -#: ../libpurple/protocols/qq/qq_base.c:1262 -#: ../libpurple/protocols/qq/qq_base.c:1451 #, c-format msgid "" "Unknown reply code when logging in (0x%02X):\n" @@ -11374,61 +8237,40 @@ "%s" #. we didn't successfully connect. tdt->toc_fd is valid here -#: ../libpurple/protocols/qq/qq_network.c:211 -#: ../libpurple/protocols/qq/qq_network.c:236 -#: ../libpurple/protocols/toc/toc.c:173 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:158 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:238 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1195 -#: ../libpurple/protocols/yahoo/ycht.c:550 msgid "Unable to connect." msgstr "সংযুক্ত করতে ব্যর্থ।" -#: ../libpurple/protocols/qq/qq_network.c:370 -#: ../libpurple/protocols/qq/qq_network.c:496 msgid "Socket error" msgstr "সকেট ত্রুটি" -#: ../libpurple/protocols/qq/qq_network.c:507 msgid "Unable to read from socket" msgstr "সকেট থেকে পাঠ করতে ব্যর্থ" -#: ../libpurple/protocols/qq/qq_network.c:590 -#: ../libpurple/protocols/yahoo/yahoo_packet.c:307 msgid "Write Error" msgstr "লিখন ত্রুটি" -#: ../libpurple/protocols/qq/qq_network.c:666 msgid "Connection lost" msgstr "সংযোগ হারিয়ে গেছে" -#: ../libpurple/protocols/qq/qq_network.c:789 msgid "Getting server" msgstr "সার্ভার পাচ্ছে" -#: ../libpurple/protocols/qq/qq_network.c:794 msgid "Requesting token" msgstr "টোকেন অনুরোধ করছে" -#: ../libpurple/protocols/qq/qq_network.c:867 -#: ../libpurple/protocols/simple/simple.c:1809 msgid "Couldn't resolve host" msgstr "হোস্ট সমাধান করা সম্ভব হয়নি" -#: ../libpurple/protocols/qq/qq_network.c:947 msgid "Invalid server or port" msgstr "অবৈধ সার্ভার বা পোর্ট" # tithi -#: ../libpurple/protocols/qq/qq_network.c:951 msgid "Connecting to server" msgstr "সার্ভারে সংযোজিত হচ্ছে" -#: ../libpurple/protocols/qq/qq_process.c:75 msgid "QQ Error" msgstr "QQ ত্রুটি" -#: ../libpurple/protocols/qq/qq_process.c:114 #, c-format msgid "" "Server News:\n" @@ -11441,17 +8283,14 @@ "%2s\n" "%3s" -#: ../libpurple/protocols/qq/qq_process.c:152 #, c-format msgid "%s:%s" msgstr "%1s:%2s" -#: ../libpurple/protocols/qq/qq_process.c:422 #, c-format msgid "From %s:" msgstr "%s থেকে:" -#: ../libpurple/protocols/qq/qq_process.c:423 #, c-format msgid "" "Server notice From %s: \n" @@ -11461,12 +8300,10 @@ "%2s" # tithi -#: ../libpurple/protocols/qq/qq_process.c:543 msgid "Unknown SERVER CMD" msgstr "অজানা সার্ভার CMD" # tithi -#: ../libpurple/protocols/qq/qq_process.c:559 #, c-format msgid "" "Error reply of %s(0x%02X)\n" @@ -11475,191 +8312,149 @@ "%1s(0x%02X) এর ত্রুটিপূর্ণ উত্তর\n" "রুম %2u, উত্তর 0x%02X" -#: ../libpurple/protocols/qq/qq_process.c:562 msgid "QQ Qun Command" msgstr "QQ Qun নির্দেশ" # tithi -#: ../libpurple/protocols/qq/qq_process.c:953 msgid "Could not decrypt login reply" msgstr "লগইন উত্তর অসঙ্কেতায়ন করতে পারে না" # fix me tithi -#: ../libpurple/protocols/qq/qq_process.c:1024 msgid "Unknown LOGIN CMD" msgstr "অজানা লগইন CMD" -#: ../libpurple/protocols/qq/qq_process.c:1146 msgid "Unknown CLIENT CMD" msgstr "অজানা ক্লায়েন্ট CMD" -#: ../libpurple/protocols/qq/send_file.c:702 #, c-format msgid "%d has declined the file %s" msgstr "%1d %2s ফাইলটি প্রত্যাখ্যান করেছে" -#: ../libpurple/protocols/qq/send_file.c:705 -#: ../libpurple/protocols/qq/send_file.c:736 msgid "File Send" msgstr "ফাইল প্রেরণ করা হয়েছে" -#: ../libpurple/protocols/qq/send_file.c:733 #, c-format msgid "%d canceled the transfer of %s" msgstr "%1d %2s-এর স্থানান্তর বাতিল করেছেন" -#: ../libpurple/protocols/sametime/sametime.c:420 msgid "Connection closed (writing)" msgstr "সংযোগ বন্ধ করা হয়েছে (লিখছে)" -#: ../libpurple/protocols/sametime/sametime.c:1299 #, c-format msgid "Group Title: %s
" msgstr "দলের শিরোনাম: %s
" -#: ../libpurple/protocols/sametime/sametime.c:1300 #, c-format msgid "Notes Group ID: %s
" msgstr "নোটের দল আইডি: %s
" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1302 #, c-format msgid "Info for Group %s" msgstr "%s দলের জন্য তথ্য" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1304 msgid "Notes Address Book Information" msgstr "নোটের ঠিকানা বইয়ের তথ্য" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1336 msgid "Invite Group to Conference..." msgstr "অধিবেশনে গ্রুপকে আমন্ত্রণ জানান..." -#: ../libpurple/protocols/sametime/sametime.c:1346 msgid "Get Notes Address Book Info" msgstr "নোটের ঠিকানা বইয়ের তথ্য গ্রহণ করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1513 msgid "Sending Handshake" msgstr "হ্যান্ডসেক পাঠাচ্ছে" -#: ../libpurple/protocols/sametime/sametime.c:1518 msgid "Waiting for Handshake Acknowledgement" msgstr "হ্যান্ডশেকের সাড়া পাওয়ার জন্য অপেক্ষা করছে" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1523 msgid "Handshake Acknowledged, Sending Login" msgstr "হ্যান্ডসেক সাড়া দিয়েছে, লগইন পাঠাচ্ছে" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1528 msgid "Waiting for Login Acknowledgement" msgstr "লগইন সাড়ার জন্য অপেক্ষা করছে" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1533 msgid "Login Redirected" msgstr "লগইন পুনঃ নির্দেশিত" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1539 msgid "Forcing Login" msgstr "লগইন বাধ্য করছে" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1543 msgid "Login Acknowledged" msgstr "লগইন সাড়া দিয়েছে" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1548 msgid "Starting Services" msgstr "সেবা শুরু করছে" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1685 #, c-format msgid "" "A Sametime administrator has issued the following announcement on server %s" msgstr "একটি এককালীন প্রশাসক %s সার্ভারে নিম্নলিখিত ঘোষণা প্রচার করেছে" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1690 msgid "Sametime Administrator Announcement" msgstr "এককালীন প্রশাসকের ঘোষণা" -#: ../libpurple/protocols/sametime/sametime.c:1743 msgid "Connection reset" msgstr "সংযোগ পুনরায় বিন্যাস করুন" -#: ../libpurple/protocols/sametime/sametime.c:1755 #, c-format msgid "Error reading from socket: %s" msgstr "সকেট থেকে পড়ায় ত্রুটি: %s" #. this is a regular connect, error out -#: ../libpurple/protocols/sametime/sametime.c:1780 -#: ../libpurple/protocols/sametime/sametime.c:3788 msgid "Unable to connect to host" msgstr "হোস্টের সাথে সংযোগে ব্যর্থ" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1821 #, c-format msgid "Announcement from %s" msgstr "%s হতে ঘোষণা" # tithi -#: ../libpurple/protocols/sametime/sametime.c:1995 msgid "Conference Closed" msgstr "অধিবেশন বন্ধ" -#: ../libpurple/protocols/sametime/sametime.c:2460 msgid "Unable to send message: " msgstr "বার্তা পাঠাতে অসমর্থ:" -#: ../libpurple/protocols/sametime/sametime.c:3016 msgid "Place Closed" msgstr "স্থান বন্ধ" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3286 msgid "Microphone" msgstr "মাইক্রোফোন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3287 msgid "Speakers" msgstr "স্পিকারসমূহ" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3288 msgid "Video Camera" msgstr "ভিডিও ক্যামেরা" -#: ../libpurple/protocols/sametime/sametime.c:3326 -#: ../libpurple/protocols/sametime/sametime.c:4207 msgid "Supports" msgstr "সমর্থনসমূহ" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3331 -#: ../libpurple/protocols/sametime/sametime.c:4181 msgid "External User" msgstr "বাহ্যিক ব্যবহারকারী" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3437 msgid "Create conference with user" msgstr "ব্যবহারকারীর সাথে অধিবেশন তৈরি করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3438 #, c-format msgid "" "Please enter a topic for the new conference, and an invitation message to be " @@ -11668,32 +8463,26 @@ "অনুগ্রহ করে নতুন অধিবেশনের জন্য একটি বিষয় প্রবেশ করান, এবং %s এ একটি আমন্ত্রণ বার্তা " "পাঠাতে হবে" -#: ../libpurple/protocols/sametime/sametime.c:3442 msgid "New Conference" msgstr "নতুন অধিবেশন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3444 msgid "Create" msgstr "তৈরি করুন " # tithi -#: ../libpurple/protocols/sametime/sametime.c:3509 msgid "Available Conferences" msgstr "সহজলভ্য অধিবেশনসমূহ" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3515 msgid "Create New Conference..." msgstr "নতুন অধিবেশন তৈরি করুন..." # tithi -#: ../libpurple/protocols/sametime/sametime.c:3522 msgid "Invite user to a conference" msgstr "ব্যবহারকারীকে অধিবেশনে আমন্ত্রন জানান" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3523 #, c-format msgid "" "Select a conference from the list below to send an invite to user %s. Select " @@ -11705,31 +8494,25 @@ "তবে \"নতুন অধিবেশন তৈরি করুন\" নির্বাচন করুন।" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3528 msgid "Invite to Conference" msgstr "অধিবেশনে আমন্ত্রন জানান" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3619 msgid "Invite to Conference..." msgstr "অধিবেশনে আমন্ত্রন জানান..." # tithi -#: ../libpurple/protocols/sametime/sametime.c:3624 msgid "Send TEST Announcement" msgstr "পরীক্ষণ ঘোষণা পাঠান" -#: ../libpurple/protocols/sametime/sametime.c:3643 ../pidgin/gtkconv.c:4591 msgid "Topic:" msgstr "বিষয়:" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3671 msgid "No Sametime Community Server specified" msgstr "কোনো এককালীন সম্প্রদায় সার্ভার উল্লেখ করা হয়নি" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3696 #, c-format msgid "" "No host or IP address has been configured for the Meanwhile account %s. " @@ -11739,47 +8522,36 @@ "লগইন অব্যাহত রাখতে নিচে একটি প্রবেশ করান।" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3701 msgid "Meanwhile Connection Setup" msgstr "ইতোমধ্যে সংযোগ সংস্থাপন করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:3702 msgid "No Sametime Community Server Specified" msgstr "কোনো এককালীন সম্প্রদায় সার্ভার উল্লেখিত নয়" -#: ../libpurple/protocols/sametime/sametime.c:3704 msgid "Connect" msgstr "সংযোগ দিন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:4197 #, c-format msgid "Unknown (0x%04x)
" msgstr "অজানা (0x%04x)
" -#: ../libpurple/protocols/sametime/sametime.c:4199 msgid "Last Known Client" msgstr "সর্বশেষ পরিচিত গ্রাহক" -#: ../libpurple/protocols/sametime/sametime.c:4363 -#: ../libpurple/protocols/sametime/sametime.c:5566 msgid "User Name" msgstr "ব্যবহারকারীর নাম" # tithi -#: ../libpurple/protocols/sametime/sametime.c:4366 -#: ../libpurple/protocols/sametime/sametime.c:5569 msgid "Sametime ID" msgstr "এককালীন আইডি" # tithi -#: ../libpurple/protocols/sametime/sametime.c:4390 msgid "An ambiguous user ID was entered" msgstr "একটি অনিশ্চিত ব্যবহারকারী আইডি প্রবেশ করা হয়েছিল" # tithi -#: ../libpurple/protocols/sametime/sametime.c:4391 #, c-format msgid "" "The identifier '%s' may possibly refer to any of the following users. Please " @@ -11789,17 +8561,14 @@ "করে নিচের তালিকা থেকে সঠিক ব্যবহারকারী নির্বাচন করে আপনার বন্ধু তালিকাতে তাদেরকে " "যোগ করুন।" -#: ../libpurple/protocols/sametime/sametime.c:4396 msgid "Select User" msgstr "ব্যবহারকারী নির্বাচন করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:4480 msgid "Unable to add user: user not found" msgstr "ব্যবহারকারী যোগ করতে অক্ষম: ব্যবহারকারী খুঁজে পায়নি" # tithi -#: ../libpurple/protocols/sametime/sametime.c:4482 #, c-format msgid "" "The identifier '%s' did not match any users in your Sametime community. This " @@ -11808,7 +8577,6 @@ "'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো ব্যবহারকারীর সাথে সমন্বয় করে না। " "এই এন্ট্রিটি আপনার বন্ধু তালিকা থেকে অপসারণ করা হয়েছে।" -#: ../libpurple/protocols/sametime/sametime.c:5071 #, c-format msgid "" "Error reading file %s: \n" @@ -11817,72 +8585,57 @@ "%1s ফাইল পড়ায় ত্রুটি: \n" "%2s\n" -#: ../libpurple/protocols/sametime/sametime.c:5206 msgid "Remotely Stored Buddy List" msgstr "দূর হতে সংরক্ষিত বন্ধু তালিকা" -#: ../libpurple/protocols/sametime/sametime.c:5211 msgid "Buddy List Storage Mode" msgstr "বন্ধু তালিকার সংরক্ষন পদ্ধতি" -#: ../libpurple/protocols/sametime/sametime.c:5214 msgid "Local Buddy List Only" msgstr "শুধুমাত্র স্থানীয় বন্ধু তালিকা" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5216 msgid "Merge List from Server" msgstr "সার্ভারের তালিকা একত্রিত করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5218 msgid "Merge and Save List to Server" msgstr "সার্ভারে তালিকা একত্রিত এবং সংরক্ষণ করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5220 msgid "Synchronize List with Server" msgstr "সার্ভারের সঙ্গে সমকালীন তালিকা" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5275 #, c-format msgid "Import Sametime List for Account %s" msgstr "%s একাউন্টের জন্য এককালীন তালিকা আমদানি করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5315 #, c-format msgid "Export Sametime List for Account %s" msgstr "%s একাউন্টের জন্য এককালীন তালিকা রপ্তানি করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5369 msgid "Unable to add group: group exists" msgstr "দল যোগ করতে অক্ষম: দল বিদ্যমান" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5370 #, c-format msgid "A group named '%s' already exists in your buddy list." msgstr "'%s' নামের একটি দল আপনার বন্ধু তালিকায় ইতোমধ্যে বিদ্যমান রয়েছে।" -#: ../libpurple/protocols/sametime/sametime.c:5373 -#: ../libpurple/protocols/sametime/sametime.c:5503 msgid "Unable to add group" msgstr "দল যোগ করতে ব্যর্থ" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5432 msgid "Possible Matches" msgstr "সম্ভাব্য মিলসমূহ" -#: ../libpurple/protocols/sametime/sametime.c:5448 msgid "Notes Address Book group results" msgstr "নোটের ঠিকানা বইয়ের দলগত ফলাফল" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5449 #, c-format msgid "" "The identifier '%s' may possibly refer to any of the following Notes Address " @@ -11893,17 +8646,14 @@ "পারে। অনুগ্রহ করে নিচের তালিকা থেকে সঠিক গ্রুপ নির্বাচন করে আপনার বন্ধু তালিকায় এটি " "যোগ করুন।" -#: ../libpurple/protocols/sametime/sametime.c:5454 msgid "Select Notes Address Book" msgstr "নোটের ঠিকানা বই নির্বাচন করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5497 msgid "Unable to add group: group not found" msgstr "দল যোগ করতে অক্ষম: দল খুঁজে পায়নি" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5499 #, c-format msgid "" "The identifier '%s' did not match any Notes Address Book groups in your " @@ -11912,12 +8662,10 @@ "'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো নোট ঠিকানা বইয়ের দলের সাথে সমন্বয় " "করেনি।" -#: ../libpurple/protocols/sametime/sametime.c:5540 msgid "Notes Address Book Group" msgstr "নোটের ঠিকানা বইয়ের দল" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5541 msgid "" "Enter the name of a Notes Address Book group in the field below to add the " "group and its members to your buddy list." @@ -11925,13 +8673,11 @@ "নিচের ক্ষেত্রে নোটের ঠিকানা বইয়ের গ্রুপের নাম প্রবেশ করে আপনার বন্ধু তালিকায় শ্রেণী " "এবং এর সদসদের যোগ করুন।" -#: ../libpurple/protocols/sametime/sametime.c:5590 #, c-format msgid "Search results for '%s'" msgstr "'%s' এর সন্ধান ফলাফল" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5591 #, c-format msgid "" "The identifier '%s' may possibly refer to any of the following users. You " @@ -11942,30 +8688,24 @@ "সম্ভবত নিচের কার্য বোতাম দ্বারা আপনার বন্ধু তালিকাতে এই ব্যবহারকারীসমূহ যোগ করতে " "পারেন বা তাদেরকে বার্তা পাঠাতে পারেন।" -#: ../libpurple/protocols/sametime/sametime.c:5598 ../pidgin/gtknotify.c:793 msgid "Search Results" msgstr "অনুসন্ধানের ফলাফল" -#: ../libpurple/protocols/sametime/sametime.c:5623 msgid "No matches" msgstr "কোনে মিল নেই" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5624 #, c-format msgid "The identifier '%s' did not match any users in your Sametime community." msgstr "'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো ব্যবহারকারীর সাথে মিলেনি।" -#: ../libpurple/protocols/sametime/sametime.c:5628 msgid "No Matches" msgstr "কোনো মিল নেই" -#: ../libpurple/protocols/sametime/sametime.c:5665 msgid "Search for a user" msgstr "একজন ব্যবহারকারীর জন্য অনুসন্ধান করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5666 msgid "" "Enter a name or partial ID in the field below to search for matching users " "in your Sametime community." @@ -11973,137 +8713,79 @@ "আপনার এককালীন সম্প্রদায়ের সমন্বয়করণ ব্যবহারকারীর জন্য অনুসন্ধান করতে নিচের ক্ষেত্রে " "একটি নাম বা আংশিক আইডি প্রবেশ করান।" -#: ../libpurple/protocols/sametime/sametime.c:5669 msgid "User Search" msgstr "ব্যবহারকারী অনুসন্ধান করুন" # tithi -#: ../libpurple/protocols/sametime/sametime.c:5682 msgid "Import Sametime List..." msgstr "এককালীন তালিকা আমদানি করুন..." # tithi -#: ../libpurple/protocols/sametime/sametime.c:5686 msgid "Export Sametime List..." msgstr "এককালীন তালিকা রপ্তানি করুন..." -#: ../libpurple/protocols/sametime/sametime.c:5690 msgid "Add Notes Address Book Group..." msgstr "নোটের ঠিকানা বইয়ের দল যোগ করুন..." -#: ../libpurple/protocols/sametime/sametime.c:5694 msgid "User Search..." msgstr "ব্যবহারকারী অনুসন্ধান করুন..." # tithi -#: ../libpurple/protocols/sametime/sametime.c:5800 msgid "Force login (ignore server redirects)" msgstr "লগইন বাধ্য করুন (সার্ভারের পুনঃ নির্দেশনাগুলো উপেক্ষা করুন)" # tithi #. pretend to be Sametime Connect -#: ../libpurple/protocols/sametime/sametime.c:5810 msgid "Hide client identity" msgstr "গ্রাহক পরিচয় গোপন করুন" # tithi -#: ../libpurple/protocols/silc/buddy.c:52 -#: ../libpurple/protocols/silc/buddy.c:410 -#: ../libpurple/protocols/silc/buddy.c:538 -#: ../libpurple/protocols/silc/buddy.c:700 -#: ../libpurple/protocols/silc/ft.c:423 -#: ../libpurple/protocols/silc10/buddy.c:52 -#: ../libpurple/protocols/silc10/buddy.c:421 -#: ../libpurple/protocols/silc10/buddy.c:546 -#: ../libpurple/protocols/silc10/buddy.c:712 -#: ../libpurple/protocols/silc10/ft.c:338 #, c-format msgid "User %s is not present in the network" msgstr "%s ব্যবহারকারী নেটওয়ার্কে উপস্থিত নেই" -#: ../libpurple/protocols/silc/buddy.c:53 -#: ../libpurple/protocols/silc/buddy.c:110 -#: ../libpurple/protocols/silc/buddy.c:115 -#: ../libpurple/protocols/silc/buddy.c:119 -#: ../libpurple/protocols/silc/buddy.c:124 -#: ../libpurple/protocols/silc/buddy.c:129 -#: ../libpurple/protocols/silc/buddy.c:134 -#: ../libpurple/protocols/silc/buddy.c:254 -#: ../libpurple/protocols/silc10/buddy.c:53 -#: ../libpurple/protocols/silc10/buddy.c:115 -#: ../libpurple/protocols/silc10/buddy.c:120 -#: ../libpurple/protocols/silc10/buddy.c:124 -#: ../libpurple/protocols/silc10/buddy.c:129 -#: ../libpurple/protocols/silc10/buddy.c:134 -#: ../libpurple/protocols/silc10/buddy.c:139 -#: ../libpurple/protocols/silc10/buddy.c:257 msgid "Key Agreement" msgstr "মূল চুক্তি" # tithi -#: ../libpurple/protocols/silc/buddy.c:54 -#: ../libpurple/protocols/silc10/buddy.c:54 msgid "Cannot perform the key agreement" msgstr "মূল চুক্তি সম্পাদন করতে পারে না" # tithi -#: ../libpurple/protocols/silc/buddy.c:111 -#: ../libpurple/protocols/silc10/buddy.c:116 msgid "Error occurred during key agreement" msgstr "মূল চুক্তির সময় ত্রুটি ঘটেছিল" # tithi -#: ../libpurple/protocols/silc/buddy.c:115 -#: ../libpurple/protocols/silc10/buddy.c:120 msgid "Key Agreement failed" msgstr "মূং চুক্তি ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/silc/buddy.c:120 -#: ../libpurple/protocols/silc10/buddy.c:125 msgid "Timeout during key agreement" msgstr "মূল চুক্তির সময় মেয়াদ উত্তীর্ণ হয়েছে" # tithi -#: ../libpurple/protocols/silc/buddy.c:125 -#: ../libpurple/protocols/silc10/buddy.c:130 msgid "Key agreement was aborted" msgstr "মূল চুক্তি বাতিল করা হয়েছিল" # tithi -#: ../libpurple/protocols/silc/buddy.c:130 -#: ../libpurple/protocols/silc10/buddy.c:135 msgid "Key agreement is already started" msgstr "মূল চুক্তি ইতোমধ্যে শুরু হয়েছে" # tithi -#: ../libpurple/protocols/silc/buddy.c:135 -#: ../libpurple/protocols/silc10/buddy.c:140 msgid "Key agreement cannot be started with yourself" msgstr "মূল চুক্তি আপনার সঙ্গে শুরু করা যায় না" # tithi -#: ../libpurple/protocols/silc/buddy.c:255 -#: ../libpurple/protocols/silc/buddy.c:383 -#: ../libpurple/protocols/silc/buddy.c:497 -#: ../libpurple/protocols/silc/buddy.c:508 -#: ../libpurple/protocols/silc10/buddy.c:258 -#: ../libpurple/protocols/silc10/buddy.c:389 -#: ../libpurple/protocols/silc10/buddy.c:514 msgid "The remote user is not present in the network any more" msgstr "দূরবর্তী ব্যবহারকারী আর নেটওয়ার্কে উপস্থিত থাকবে না" # tithi -#: ../libpurple/protocols/silc/buddy.c:298 -#: ../libpurple/protocols/silc10/buddy.c:295 #, c-format msgid "" "Key agreement request received from %s. Would you like to perform the key " "agreement?" msgstr "মূল চুক্তির অনুরোধ %s থেকে গ্রহণ করেছে। আপনি কি মূল চুক্তি সম্পাদন করতে আগ্রহী?" -#: ../libpurple/protocols/silc/buddy.c:302 -#: ../libpurple/protocols/silc10/buddy.c:299 #, c-format msgid "" "The remote user is waiting key agreement on:\n" @@ -12115,105 +8797,46 @@ "দূরবর্তী পোর্ট: %d" # tithi -#: ../libpurple/protocols/silc/buddy.c:315 -#: ../libpurple/protocols/silc10/buddy.c:312 msgid "Key Agreement Request" msgstr "মূল চুক্তির অনুরোধ" -#: ../libpurple/protocols/silc/buddy.c:382 -#: ../libpurple/protocols/silc/buddy.c:412 -#: ../libpurple/protocols/silc/buddy.c:452 -#: ../libpurple/protocols/silc10/buddy.c:388 -#: ../libpurple/protocols/silc10/buddy.c:423 -#: ../libpurple/protocols/silc10/buddy.c:465 msgid "IM With Password" msgstr "গুপ্তসঙ্কেত যুক্ত আইএম" -#: ../libpurple/protocols/silc/buddy.c:413 -#: ../libpurple/protocols/silc10/buddy.c:424 msgid "Cannot set IM key" msgstr "আইএম কী বিন্যাস করতে পারে না" -#: ../libpurple/protocols/silc/buddy.c:453 -#: ../libpurple/protocols/silc10/buddy.c:466 msgid "Set IM Password" msgstr "আইএম গুপ্তসঙ্কেত বিন্যাস করুন" # tithi -#: ../libpurple/protocols/silc/buddy.c:496 -#: ../libpurple/protocols/silc/buddy.c:507 -#: ../libpurple/protocols/silc/buddy.c:540 -#: ../libpurple/protocols/silc/ops.c:1516 -#: ../libpurple/protocols/silc/ops.c:1527 -#: ../libpurple/protocols/silc10/buddy.c:513 -#: ../libpurple/protocols/silc10/buddy.c:548 -#: ../libpurple/protocols/silc10/ops.c:1494 -#: ../libpurple/protocols/silc10/ops.c:1505 msgid "Get Public Key" msgstr "সর্বসাধারণ কী গ্রহণ করুন" # tithi -#: ../libpurple/protocols/silc/buddy.c:541 -#: ../libpurple/protocols/silc/ops.c:1517 -#: ../libpurple/protocols/silc/ops.c:1528 -#: ../libpurple/protocols/silc10/buddy.c:549 -#: ../libpurple/protocols/silc10/ops.c:1495 -#: ../libpurple/protocols/silc10/ops.c:1506 msgid "Cannot fetch the public key" msgstr "সর্বসাধারণ কী পুনরুদ্ধার করতে পারে না" # tithi -#: ../libpurple/protocols/silc/buddy.c:622 -#: ../libpurple/protocols/silc/buddy.c:1670 -#: ../libpurple/protocols/silc10/buddy.c:635 -#: ../libpurple/protocols/silc10/buddy.c:1669 msgid "Show Public Key" msgstr "সর্বসাধারণ কী দেখান" # tithi -#: ../libpurple/protocols/silc/buddy.c:623 -#: ../libpurple/protocols/silc/buddy.c:1030 -#: ../libpurple/protocols/silc/chat.c:238 -#: ../libpurple/protocols/silc10/buddy.c:636 -#: ../libpurple/protocols/silc10/buddy.c:1036 -#: ../libpurple/protocols/silc10/chat.c:237 msgid "Could not load public key" msgstr "সর্বসাধারণ কী লোড করতে পারেনি" -#: ../libpurple/protocols/silc/buddy.c:701 -#: ../libpurple/protocols/silc/ops.c:1066 -#: ../libpurple/protocols/silc/ops.c:1181 -#: ../libpurple/protocols/silc/ops.c:1303 -#: ../libpurple/protocols/silc/ops.c:1304 -#: ../libpurple/protocols/silc/ops.c:1322 -#: ../libpurple/protocols/silc10/buddy.c:713 -#: ../libpurple/protocols/silc10/ops.c:1087 -#: ../libpurple/protocols/silc10/ops.c:1159 -#: ../libpurple/protocols/silc10/ops.c:1294 -#: ../libpurple/protocols/silc10/ops.c:1295 -#: ../libpurple/protocols/silc10/ops.c:1313 msgid "User Information" msgstr "ব্যবহারকারী তথ্য" -#: ../libpurple/protocols/silc/buddy.c:702 -#: ../libpurple/protocols/silc/ops.c:1182 -#: ../libpurple/protocols/silc/ops.c:1323 -#: ../libpurple/protocols/silc10/buddy.c:714 -#: ../libpurple/protocols/silc10/ops.c:1160 -#: ../libpurple/protocols/silc10/ops.c:1314 msgid "Cannot get user information" msgstr "ব্যবহারকারীর তথ্য গ্রহণ করতে পারে না" # fix me tithi -#: ../libpurple/protocols/silc/buddy.c:723 -#: ../libpurple/protocols/silc10/buddy.c:735 #, c-format msgid "The %s buddy is not trusted" msgstr "%s বন্ধু বিশ্বাসযোগ্য নয়" # tithi -#: ../libpurple/protocols/silc/buddy.c:726 -#: ../libpurple/protocols/silc10/buddy.c:738 msgid "" "You cannot receive buddy notifications until you import his/her public key. " "You can use the Get Public Key command to get the public key." @@ -12223,21 +8846,15 @@ "ব্যবহার করতে পারেন না।" #. Open file selector to select the public key. -#: ../libpurple/protocols/silc/buddy.c:1062 -#: ../libpurple/protocols/silc10/buddy.c:1070 msgid "Open..." msgstr "খুলুন..." # tithi -#: ../libpurple/protocols/silc/buddy.c:1073 -#: ../libpurple/protocols/silc10/buddy.c:1081 #, c-format msgid "The %s buddy is not present in the network" msgstr "%s বন্ধু নেটওয়ার্কে উপস্থিত নেই" # tithi -#: ../libpurple/protocols/silc/buddy.c:1076 -#: ../libpurple/protocols/silc10/buddy.c:1084 msgid "" "To add the buddy you must import his/her public key. Press Import to import " "a public key." @@ -12246,19 +8863,13 @@ "আমদানি করতে 'আমদানি করুন' চাপুন।" # tithi -#: ../libpurple/protocols/silc/buddy.c:1080 -#: ../libpurple/protocols/silc10/buddy.c:1088 msgid "_Import..." msgstr "আমদানি করুন... (_I)" -#: ../libpurple/protocols/silc/buddy.c:1186 -#: ../libpurple/protocols/silc10/buddy.c:1184 msgid "Select correct user" msgstr "সঠিক ব্যবহারকারী নির্বাচন করুন" # tithi -#: ../libpurple/protocols/silc/buddy.c:1188 -#: ../libpurple/protocols/silc10/buddy.c:1186 msgid "" "More than one user was found with the same public key. Select the correct " "user from the list to add to the buddy list." @@ -12267,8 +8878,6 @@ "তালিকা থেকে সঠিক ব্যবহারকারী নির্বাচন করুন।" # tithi -#: ../libpurple/protocols/silc/buddy.c:1190 -#: ../libpurple/protocols/silc10/buddy.c:1188 msgid "" "More than one user was found with the same name. Select the correct user " "from the list to add to the buddy list." @@ -12277,335 +8886,177 @@ "সঠিক ব্যবহারকারী নির্বাচন করুন।" # tithi -#: ../libpurple/protocols/silc/buddy.c:1489 -#: ../libpurple/protocols/silc10/buddy.c:1489 msgid "Detached" msgstr "আলাদা" # tithi -#: ../libpurple/protocols/silc/buddy.c:1493 -#: ../libpurple/protocols/silc/silc.c:59 -#: ../libpurple/protocols/silc10/buddy.c:1493 -#: ../libpurple/protocols/silc10/silc.c:50 msgid "Indisposed" msgstr "অক্ষম" # tithi -#: ../libpurple/protocols/silc/buddy.c:1497 -#: ../libpurple/protocols/silc/silc.c:61 -#: ../libpurple/protocols/silc10/buddy.c:1497 -#: ../libpurple/protocols/silc10/silc.c:52 msgid "Wake Me Up" msgstr "আমাকে জাগান" # tithi -#: ../libpurple/protocols/silc/buddy.c:1499 -#: ../libpurple/protocols/silc/silc.c:53 -#: ../libpurple/protocols/silc10/buddy.c:1499 -#: ../libpurple/protocols/silc10/silc.c:44 msgid "Hyper Active" msgstr "অতিমাত্রায় সক্রিয়" -#: ../libpurple/protocols/silc/buddy.c:1501 -#: ../libpurple/protocols/silc10/buddy.c:1501 msgid "Robot" msgstr "যন্ত্রমানব" -#: ../libpurple/protocols/silc/buddy.c:1508 -#: ../libpurple/protocols/silc/silc.c:978 -#: ../libpurple/protocols/silc/util.c:522 -#: ../libpurple/protocols/silc10/buddy.c:1508 -#: ../libpurple/protocols/silc10/silc.c:679 -#: ../libpurple/protocols/silc10/util.c:515 msgid "Happy" msgstr "সুখী" -#: ../libpurple/protocols/silc/buddy.c:1510 -#: ../libpurple/protocols/silc/silc.c:980 -#: ../libpurple/protocols/silc/util.c:524 -#: ../libpurple/protocols/silc10/buddy.c:1510 -#: ../libpurple/protocols/silc10/silc.c:681 -#: ../libpurple/protocols/silc10/util.c:517 msgid "Sad" msgstr "দু:খী" -#: ../libpurple/protocols/silc/buddy.c:1512 -#: ../libpurple/protocols/silc/silc.c:982 -#: ../libpurple/protocols/silc/util.c:526 -#: ../libpurple/protocols/silc10/buddy.c:1512 -#: ../libpurple/protocols/silc10/silc.c:683 -#: ../libpurple/protocols/silc10/util.c:519 msgid "Angry" msgstr "রাগী" -#: ../libpurple/protocols/silc/buddy.c:1514 -#: ../libpurple/protocols/silc/silc.c:984 -#: ../libpurple/protocols/silc/util.c:528 -#: ../libpurple/protocols/silc10/buddy.c:1514 -#: ../libpurple/protocols/silc10/silc.c:685 -#: ../libpurple/protocols/silc10/util.c:521 msgid "Jealous" msgstr "ঈর্ষান্বিত" -#: ../libpurple/protocols/silc/buddy.c:1516 -#: ../libpurple/protocols/silc/silc.c:986 -#: ../libpurple/protocols/silc/util.c:530 -#: ../libpurple/protocols/silc10/buddy.c:1516 -#: ../libpurple/protocols/silc10/silc.c:687 -#: ../libpurple/protocols/silc10/util.c:523 msgid "Ashamed" msgstr "লজ্জিত" # tithi -#: ../libpurple/protocols/silc/buddy.c:1518 -#: ../libpurple/protocols/silc/silc.c:988 -#: ../libpurple/protocols/silc/util.c:532 -#: ../libpurple/protocols/silc10/buddy.c:1518 -#: ../libpurple/protocols/silc10/silc.c:689 -#: ../libpurple/protocols/silc10/util.c:525 msgid "Invincible" msgstr "অজেয়" # tithi -#: ../libpurple/protocols/silc/buddy.c:1520 -#: ../libpurple/protocols/silc/util.c:534 -#: ../libpurple/protocols/silc10/buddy.c:1520 -#: ../libpurple/protocols/silc10/util.c:527 msgid "In Love" msgstr "ভালবাসাতে" -#: ../libpurple/protocols/silc/buddy.c:1522 -#: ../libpurple/protocols/silc/silc.c:992 -#: ../libpurple/protocols/silc/util.c:536 -#: ../libpurple/protocols/silc10/buddy.c:1522 -#: ../libpurple/protocols/silc10/silc.c:693 -#: ../libpurple/protocols/silc10/util.c:529 msgid "Sleepy" msgstr "ঘুমন্ত" -#: ../libpurple/protocols/silc/buddy.c:1524 -#: ../libpurple/protocols/silc/silc.c:994 -#: ../libpurple/protocols/silc/util.c:538 -#: ../libpurple/protocols/silc10/buddy.c:1524 -#: ../libpurple/protocols/silc10/silc.c:695 -#: ../libpurple/protocols/silc10/util.c:531 msgid "Bored" msgstr "বিরক্ত" -#: ../libpurple/protocols/silc/buddy.c:1526 -#: ../libpurple/protocols/silc/silc.c:996 -#: ../libpurple/protocols/silc/util.c:540 -#: ../libpurple/protocols/silc10/buddy.c:1526 -#: ../libpurple/protocols/silc10/silc.c:697 -#: ../libpurple/protocols/silc10/util.c:533 msgid "Excited" msgstr "উত্তেজিত" -#: ../libpurple/protocols/silc/buddy.c:1528 -#: ../libpurple/protocols/silc/silc.c:998 -#: ../libpurple/protocols/silc/util.c:542 -#: ../libpurple/protocols/silc10/buddy.c:1528 -#: ../libpurple/protocols/silc10/silc.c:699 -#: ../libpurple/protocols/silc10/util.c:535 msgid "Anxious" msgstr "উদ্বিগ্ন" -#: ../libpurple/protocols/silc/buddy.c:1560 -#: ../libpurple/protocols/silc/ops.c:1220 -#: ../libpurple/protocols/silc10/buddy.c:1560 -#: ../libpurple/protocols/silc10/ops.c:1202 msgid "User Modes" msgstr "ব্যবহাকারীর পরিমন্ডলসমূহ" -#: ../libpurple/protocols/silc/buddy.c:1577 -#: ../libpurple/protocols/silc/ops.c:1237 -#: ../libpurple/protocols/silc10/buddy.c:1577 -#: ../libpurple/protocols/silc10/ops.c:1219 msgid "Preferred Contact" msgstr "পছন্দের যোগাযোগ" -#: ../libpurple/protocols/silc/buddy.c:1582 -#: ../libpurple/protocols/silc/ops.c:1242 -#: ../libpurple/protocols/silc10/buddy.c:1582 -#: ../libpurple/protocols/silc10/ops.c:1224 msgid "Preferred Language" msgstr "পছন্দের ভাষা" # tithi -#: ../libpurple/protocols/silc/buddy.c:1587 -#: ../libpurple/protocols/silc/ops.c:1247 -#: ../libpurple/protocols/silc10/buddy.c:1587 -#: ../libpurple/protocols/silc10/ops.c:1229 msgid "Device" msgstr "ডিভাইস" -#: ../libpurple/protocols/silc/buddy.c:1592 -#: ../libpurple/protocols/silc/ops.c:1252 -#: ../libpurple/protocols/silc10/buddy.c:1592 -#: ../libpurple/protocols/silc10/ops.c:1234 -#: ../libpurple/protocols/silc10/silc.c:747 -#: ../libpurple/protocols/silc10/silc.c:749 msgid "Timezone" msgstr "সময়-এলাকা" # tithi -#: ../libpurple/protocols/silc/buddy.c:1597 -#: ../libpurple/protocols/silc/ops.c:1257 -#: ../libpurple/protocols/silc10/buddy.c:1597 -#: ../libpurple/protocols/silc10/ops.c:1239 msgid "Geolocation" msgstr "ভৌগলিক-অবস্থান" # tithi -#: ../libpurple/protocols/silc/buddy.c:1653 -#: ../libpurple/protocols/silc10/buddy.c:1651 msgid "Reset IM Key" msgstr "IM কী পুনঃ বিন্যাস করুন" # tithi -#: ../libpurple/protocols/silc/buddy.c:1658 -#: ../libpurple/protocols/silc10/buddy.c:1657 msgid "IM with Key Exchange" msgstr "কী বিনিময় সহ IM" -#: ../libpurple/protocols/silc/buddy.c:1663 -#: ../libpurple/protocols/silc10/buddy.c:1662 msgid "IM with Password" msgstr "গুপ্তসঙ্কেত যুক্ত আইএম" # tithi -#: ../libpurple/protocols/silc/buddy.c:1676 -#: ../libpurple/protocols/silc10/buddy.c:1675 msgid "Get Public Key..." msgstr "সর্বসাধারণ কী গ্রহণ করুন..." # tithi -#: ../libpurple/protocols/silc/buddy.c:1683 -#: ../libpurple/protocols/silc/ops.c:1625 -#: ../libpurple/protocols/silc10/buddy.c:1682 -#: ../libpurple/protocols/silc10/ops.c:1624 msgid "Kill User" msgstr "ব্যবহারকারীকে মুছে ফেলুন" # tithi -#: ../libpurple/protocols/silc/buddy.c:1693 -#: ../libpurple/protocols/silc/chat.c:1000 -#: ../libpurple/protocols/silc10/buddy.c:1692 -#: ../libpurple/protocols/silc10/chat.c:977 msgid "Draw On Whiteboard" msgstr "সাদা-বোর্ডে অংকন করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:39 -#: ../libpurple/protocols/silc10/chat.c:39 msgid "_Passphrase:" msgstr "প্যাস-ফ্রেজ (_P):" # tithi -#: ../libpurple/protocols/silc/chat.c:80 -#: ../libpurple/protocols/silc10/chat.c:80 #, c-format msgid "Channel %s does not exist in the network" msgstr "নেটওয়ার্কে %s চ্যানেল বিদ্যমান নেই" -#: ../libpurple/protocols/silc/chat.c:81 -#: ../libpurple/protocols/silc/chat.c:176 -#: ../libpurple/protocols/silc10/chat.c:81 -#: ../libpurple/protocols/silc10/chat.c:174 msgid "Channel Information" msgstr "চ্যানেল তথ্য" -#: ../libpurple/protocols/silc/chat.c:82 -#: ../libpurple/protocols/silc10/chat.c:82 msgid "Cannot get channel information" msgstr "চ্যানেলের তথ্য পায় না" -#: ../libpurple/protocols/silc/chat.c:119 -#: ../libpurple/protocols/silc10/chat.c:119 #, c-format msgid "Channel Name: %s" msgstr "চ্যানেলের নাম: %s" -#: ../libpurple/protocols/silc/chat.c:122 -#: ../libpurple/protocols/silc10/chat.c:122 #, c-format msgid "
User Count: %d" msgstr "
ব্যবহারকারী গণনা করুন: %d" # tithi -#: ../libpurple/protocols/silc/chat.c:129 -#: ../libpurple/protocols/silc10/chat.c:129 #, c-format msgid "
Channel Founder: %s" msgstr "
চ্যানেল প্রতিষ্ঠাতা: %s" -#: ../libpurple/protocols/silc/chat.c:138 -#: ../libpurple/protocols/silc10/chat.c:138 #, c-format msgid "
Channel Cipher: %s" msgstr "
চ্যানেল সাইফার: %s" # tithi #. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC -#: ../libpurple/protocols/silc/chat.c:143 -#: ../libpurple/protocols/silc10/chat.c:142 #, c-format msgid "
Channel HMAC: %s" msgstr "
চ্যানেল HMAC: %s" -#: ../libpurple/protocols/silc/chat.c:148 -#: ../libpurple/protocols/silc10/chat.c:147 #, c-format msgid "
Channel Topic:
%s" msgstr "
চ্যানেলের বিষয়:
%s" # tithi -#: ../libpurple/protocols/silc/chat.c:153 -#: ../libpurple/protocols/silc10/chat.c:152 +#, c-format msgid "
Channel Modes: " msgstr "
চ্যানেল মোড:" # tithi -#: ../libpurple/protocols/silc/chat.c:167 -#: ../libpurple/protocols/silc10/chat.c:165 #, c-format msgid "
Founder Key Fingerprint:
%s" msgstr "
প্রতিষ্ঠাতার মূল হস্তাঙ্গুলির-ছাপ:
%s" # tithi -#: ../libpurple/protocols/silc/chat.c:168 -#: ../libpurple/protocols/silc10/chat.c:166 #, c-format msgid "
Founder Key Babbleprint:
%s" msgstr "
প্রতিষ্ঠাতার মূল ব্যাবলপ্রিন্ট:
%s" # tithi -#: ../libpurple/protocols/silc/chat.c:237 -#: ../libpurple/protocols/silc10/chat.c:236 msgid "Add Channel Public Key" msgstr "চ্যানেলের সর্বসাধারণ কী যুক্ত করুন" # tithi #. Add new public key -#: ../libpurple/protocols/silc/chat.c:305 -#: ../libpurple/protocols/silc10/chat.c:291 msgid "Open Public Key..." msgstr "সর্বসাধারণ কী খুলুন..." # tithi -#: ../libpurple/protocols/silc/chat.c:424 -#: ../libpurple/protocols/silc10/chat.c:401 msgid "Channel Passphrase" msgstr "চ্যানেলের প্যাস-ফ্রেজ" -#: ../libpurple/protocols/silc/chat.c:431 -#: ../libpurple/protocols/silc10/chat.c:408 msgid "Channel Public Keys List" msgstr "চ্যানেলের সর্বসাধারণ কী এর তালিকা" # tithi -#: ../libpurple/protocols/silc/chat.c:436 -#: ../libpurple/protocols/silc10/chat.c:413 +#, c-format msgid "" "Channel authentication is used to secure the channel from unauthorized " "access. The authentication may be based on passphrase and digital " @@ -12620,136 +9071,80 @@ "করতে সক্ষম হবে।" # tithi -#: ../libpurple/protocols/silc/chat.c:445 -#: ../libpurple/protocols/silc/chat.c:446 -#: ../libpurple/protocols/silc/chat.c:482 -#: ../libpurple/protocols/silc/chat.c:483 -#: ../libpurple/protocols/silc/chat.c:934 -#: ../libpurple/protocols/silc10/chat.c:422 -#: ../libpurple/protocols/silc10/chat.c:423 -#: ../libpurple/protocols/silc10/chat.c:461 -#: ../libpurple/protocols/silc10/chat.c:462 -#: ../libpurple/protocols/silc10/chat.c:911 msgid "Channel Authentication" msgstr "চ্যানেলের প্রমাণীকরণ" -#: ../libpurple/protocols/silc/chat.c:447 -#: ../libpurple/protocols/silc/chat.c:484 -#: ../libpurple/protocols/silc10/chat.c:424 -#: ../libpurple/protocols/silc10/chat.c:463 msgid "Add / Remove" msgstr "যোগ / অপসরণ করুন" -#: ../libpurple/protocols/silc/chat.c:600 -#: ../libpurple/protocols/silc10/chat.c:581 msgid "Group Name" msgstr "গ্রুপের নাম" # tithi -#: ../libpurple/protocols/silc/chat.c:604 -#: ../libpurple/protocols/silc/ops.c:1830 -#: ../libpurple/protocols/silc/silc.c:1255 -#: ../libpurple/protocols/silc10/chat.c:585 -#: ../libpurple/protocols/silc10/ops.c:1907 -#: ../libpurple/protocols/silc10/silc.c:956 msgid "Passphrase" msgstr "প্যাস-ফ্রেজ" -#: ../libpurple/protocols/silc/chat.c:615 -#: ../libpurple/protocols/silc10/chat.c:596 #, c-format msgid "Please enter the %s channel private group name and passphrase." msgstr "অনুগ্রহ করে %s চ্যানেলের ব্যক্তিগত গ্রুপের নাম ও প্যাস-ফ্রেজ প্রবেশ করান।" # tithi -#: ../libpurple/protocols/silc/chat.c:617 -#: ../libpurple/protocols/silc10/chat.c:598 msgid "Add Channel Private Group" msgstr "চ্যানেলের ব্যক্তিগত গ্রুপ যোগ করুন" -#: ../libpurple/protocols/silc/chat.c:749 -#: ../libpurple/protocols/silc10/chat.c:726 msgid "User Limit" msgstr "ব্যবহারকারীর সীমা" # tithi -#: ../libpurple/protocols/silc/chat.c:750 -#: ../libpurple/protocols/silc10/chat.c:727 msgid "Set user limit on channel. Set to zero to reset user limit." msgstr "" "চ্যানেলে ব্যবহারকারীর সীমা নির্ধারণ করুন। ব্যবহারকারী সীমা পুনঃ বিন্যাস করতে শূন্যে " "নির্ধরণ করুন।" -#: ../libpurple/protocols/silc/chat.c:914 -#: ../libpurple/protocols/silc10/chat.c:891 msgid "Invite List" msgstr "আমন্ত্রন তালিকা" -#: ../libpurple/protocols/silc/chat.c:919 -#: ../libpurple/protocols/silc10/chat.c:896 msgid "Ban List" msgstr "নিষিদ্ধ তালিকা" -#: ../libpurple/protocols/silc/chat.c:927 -#: ../libpurple/protocols/silc10/chat.c:904 msgid "Add Private Group" msgstr "ব্যক্তিগত দল যোগ করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:940 -#: ../libpurple/protocols/silc10/chat.c:917 msgid "Reset Permanent" msgstr "স্থায়ীভাবে পুনরায় বিন্যাস করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:945 -#: ../libpurple/protocols/silc10/chat.c:922 msgid "Set Permanent" msgstr "স্থায়ীভাবে বিন্যাস করুন" -#: ../libpurple/protocols/silc/chat.c:953 -#: ../libpurple/protocols/silc10/chat.c:930 msgid "Set User Limit" msgstr "ব্যবহারকারীর সীমা নির্ধারন করুন" -#: ../libpurple/protocols/silc/chat.c:959 -#: ../libpurple/protocols/silc10/chat.c:936 msgid "Reset Topic Restriction" msgstr "বিষয়বস্তুর নিষেধাজ্ঞা পুনরায় নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:964 -#: ../libpurple/protocols/silc10/chat.c:941 msgid "Set Topic Restriction" msgstr "বিষয়বস্তুর নিষেধাজ্ঞা নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:971 -#: ../libpurple/protocols/silc10/chat.c:948 msgid "Reset Private Channel" msgstr "ব্যক্তিগত চ্যানেল পুনরায় নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:976 -#: ../libpurple/protocols/silc10/chat.c:953 msgid "Set Private Channel" msgstr "ব্যক্তিগত চ্যানেল নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:983 -#: ../libpurple/protocols/silc10/chat.c:960 msgid "Reset Secret Channel" msgstr "গোপন চ্যানেল পুনরায় নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:988 -#: ../libpurple/protocols/silc10/chat.c:965 msgid "Set Secret Channel" msgstr "গোপন চ্যানেল নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/silc/chat.c:1049 -#: ../libpurple/protocols/silc10/chat.c:1102 #, c-format msgid "" "You have to join the %s channel before you are able to join the private group" @@ -12757,343 +9152,199 @@ "আপনি ব্যক্তিগত গ্রুপে যোগদানে সমর্থ হওয়ার পূর্বে আপনাকে অবশ্যই %s চ্যানেলে যোগ দিতে " "হবে" -#: ../libpurple/protocols/silc/chat.c:1051 -#: ../libpurple/protocols/silc10/chat.c:1104 msgid "Join Private Group" msgstr "ব্যক্তিগত গ্রুপে যোগ দিন" # tithi -#: ../libpurple/protocols/silc/chat.c:1052 -#: ../libpurple/protocols/silc10/chat.c:1105 msgid "Cannot join private group" msgstr "ব্যক্তিগত চ্যানেলে যোগ দিতে পারে না" -#: ../libpurple/protocols/silc/chat.c:1248 -#: ../libpurple/protocols/silc/silc.c:1452 -#: ../libpurple/protocols/silc10/chat.c:1299 -#: ../libpurple/protocols/silc10/silc.c:1162 msgid "Call Command" msgstr "নির্দেশ কল করুন" -#: ../libpurple/protocols/silc/chat.c:1248 -#: ../libpurple/protocols/silc/silc.c:1453 -#: ../libpurple/protocols/silc10/chat.c:1299 -#: ../libpurple/protocols/silc10/silc.c:1162 msgid "Cannot call command" msgstr "নির্দেশ কল করতে পারে না" -#: ../libpurple/protocols/silc/chat.c:1249 -#: ../libpurple/protocols/silc/silc.c:1454 -#: ../libpurple/protocols/silc10/chat.c:1300 -#: ../libpurple/protocols/silc10/silc.c:1163 msgid "Unknown command" msgstr "অজানা নির্দেশ" -#: ../libpurple/protocols/silc/ft.c:85 ../libpurple/protocols/silc/ft.c:101 -#: ../libpurple/protocols/silc/ft.c:104 ../libpurple/protocols/silc/ft.c:108 -#: ../libpurple/protocols/silc/ft.c:112 ../libpurple/protocols/silc/ft.c:116 -#: ../libpurple/protocols/silc/ft.c:120 ../libpurple/protocols/silc/ft.c:272 -#: ../libpurple/protocols/silc/ft.c:277 ../libpurple/protocols/silc/ft.c:282 -#: ../libpurple/protocols/silc/ft.c:288 ../libpurple/protocols/silc/ft.c:425 -#: ../libpurple/protocols/silc10/ft.c:89 ../libpurple/protocols/silc10/ft.c:92 -#: ../libpurple/protocols/silc10/ft.c:96 -#: ../libpurple/protocols/silc10/ft.c:100 -#: ../libpurple/protocols/silc10/ft.c:104 -#: ../libpurple/protocols/silc10/ft.c:205 -#: ../libpurple/protocols/silc10/ft.c:210 -#: ../libpurple/protocols/silc10/ft.c:215 -#: ../libpurple/protocols/silc10/ft.c:221 -#: ../libpurple/protocols/silc10/ft.c:340 msgid "Secure File Transfer" msgstr "নিরাপদ ফাইল স্থানান্তর" -#: ../libpurple/protocols/silc/ft.c:86 ../libpurple/protocols/silc/ft.c:102 -#: ../libpurple/protocols/silc/ft.c:105 ../libpurple/protocols/silc/ft.c:109 -#: ../libpurple/protocols/silc/ft.c:113 ../libpurple/protocols/silc/ft.c:117 -#: ../libpurple/protocols/silc/ft.c:121 ../libpurple/protocols/silc10/ft.c:90 -#: ../libpurple/protocols/silc10/ft.c:93 ../libpurple/protocols/silc10/ft.c:97 -#: ../libpurple/protocols/silc10/ft.c:101 -#: ../libpurple/protocols/silc10/ft.c:105 msgid "Error during file transfer" msgstr "ফাইল স্থানান্তরের ত্রুটি" -#: ../libpurple/protocols/silc/ft.c:87 msgid "Remote disconnected" msgstr "দূরবর্তী সংযোগ বিচ্ছিন্ন" # tithi -#: ../libpurple/protocols/silc/ft.c:106 ../libpurple/protocols/silc10/ft.c:94 msgid "Permission denied" msgstr "অনুমতি অস্বীকৃত" # tithi -#: ../libpurple/protocols/silc/ft.c:110 ../libpurple/protocols/silc10/ft.c:98 msgid "Key agreement failed" msgstr "মূল চুক্তি ব্যর্থ" # fix me tithi -#: ../libpurple/protocols/silc/ft.c:114 msgid "Connection timed out" msgstr "সংযোগ সময় শেষ" -#: ../libpurple/protocols/silc/ft.c:118 msgid "Creating connection failed" msgstr "সংযোগ তৈরীতে ব্যর্থ" -#: ../libpurple/protocols/silc/ft.c:122 ../libpurple/protocols/silc10/ft.c:102 msgid "File transfer session does not exist" msgstr "ফাইল স্থানান্তর অধিবেশন বিদ্যমান নয়" -#: ../libpurple/protocols/silc/ft.c:273 ../libpurple/protocols/silc10/ft.c:206 msgid "No file transfer session active" msgstr "কোনো ফাইল স্থানান্তর অধিবেশন সক্রিয় নয়" -#: ../libpurple/protocols/silc/ft.c:278 ../libpurple/protocols/silc10/ft.c:211 msgid "File transfer already started" msgstr "ফাইল স্থানান্তর ইতোমধ্যে শুরু হয়েছে" # tithi -#: ../libpurple/protocols/silc/ft.c:283 ../libpurple/protocols/silc10/ft.c:216 msgid "Could not perform key agreement for file transfer" msgstr "ফাইল স্থানান্তরের জন্য মূল চুক্তি সম্পাদন করতে পারে না" -#: ../libpurple/protocols/silc/ft.c:289 ../libpurple/protocols/silc10/ft.c:222 msgid "Could not start the file transfer" msgstr "ফাইল স্থানান্তর শুরু করেনি" -#: ../libpurple/protocols/silc/ft.c:426 ../libpurple/protocols/silc10/ft.c:341 msgid "Cannot send file" msgstr "ফাইল পাঠাতে পারে না" -#: ../libpurple/protocols/silc/ops.c:76 msgid "Error occurred" msgstr "ত্রুটি সংঘটিত হয়েছে" # tithi -#: ../libpurple/protocols/silc/ops.c:548 ../libpurple/protocols/silc/ops.c:557 -#: ../libpurple/protocols/silc/ops.c:566 -#: ../libpurple/protocols/silc10/ops.c:554 -#: ../libpurple/protocols/silc10/ops.c:563 -#: ../libpurple/protocols/silc10/ops.c:572 #, c-format msgid "%s has changed the topic of %s to: %s" msgstr "%1s %2s এর বিষয়বস্তু পরিবর্তন করেছে: %3s" # tithi -#: ../libpurple/protocols/silc/ops.c:632 -#: ../libpurple/protocols/silc10/ops.c:638 #, c-format msgid "%s set channel %s modes to: %s" msgstr "%s চ্যানেল %s মোডসমূহ নির্ধারণ করে: %s" # tithi -#: ../libpurple/protocols/silc/ops.c:636 -#: ../libpurple/protocols/silc10/ops.c:642 #, c-format msgid "%s removed all channel %s modes" msgstr "%s সমস্ত চ্যানেল %s মোডসমূহ অপসারণ করেছে" # tithi -#: ../libpurple/protocols/silc/ops.c:669 -#: ../libpurple/protocols/silc10/ops.c:675 #, c-format msgid "%s set %s's modes to: %s" msgstr "%s মোড %s নির্ধারণ করে: %s-এ" # tithi -#: ../libpurple/protocols/silc/ops.c:677 -#: ../libpurple/protocols/silc10/ops.c:683 #, c-format msgid "%s removed all %s's modes" msgstr "%s's সব %s মোডসমূহ অপসারণ করেছে" # tithi -#: ../libpurple/protocols/silc/ops.c:706 -#: ../libpurple/protocols/silc10/ops.c:712 #, c-format msgid "You have been kicked off %s by %s (%s)" msgstr "আপনি %s (%s) দ্বারা %s প্রত্যাখাতি হয়েছন" # tithi -#: ../libpurple/protocols/silc/ops.c:733 ../libpurple/protocols/silc/ops.c:738 -#: ../libpurple/protocols/silc/ops.c:743 -#: ../libpurple/protocols/silc10/ops.c:742 -#: ../libpurple/protocols/silc10/ops.c:747 -#: ../libpurple/protocols/silc10/ops.c:752 #, c-format msgid "You have been killed by %s (%s)" msgstr "আপনাকে %1s (%2s) দ্বারা অপসারণ করা হয়েছে" # tithi -#: ../libpurple/protocols/silc/ops.c:764 ../libpurple/protocols/silc/ops.c:769 -#: ../libpurple/protocols/silc/ops.c:774 -#: ../libpurple/protocols/silc10/ops.c:773 -#: ../libpurple/protocols/silc10/ops.c:778 -#: ../libpurple/protocols/silc10/ops.c:783 #, c-format msgid "Killed by %s (%s)" msgstr "%1s (%2s) দ্বারা অপসারণ করা হয়েছে" -#: ../libpurple/protocols/silc/ops.c:811 -#: ../libpurple/protocols/silc10/ops.c:829 msgid "Server signoff" msgstr "সার্ভার সাইন-অফ" -#: ../libpurple/protocols/silc/ops.c:997 -#: ../libpurple/protocols/silc10/ops.c:1017 msgid "Personal Information" msgstr "ব্যক্তিগত তথ্য" -#: ../libpurple/protocols/silc/ops.c:1020 -#: ../libpurple/protocols/silc10/ops.c:1040 msgid "Birth Day" msgstr "জন্মদিন" # tithi -#: ../libpurple/protocols/silc/ops.c:1028 -#: ../libpurple/protocols/silc10/ops.c:1048 msgid "Job Role" msgstr "কর্ম ভূমিকা" -#: ../libpurple/protocols/silc/ops.c:1032 -#: ../libpurple/protocols/silc/silc.c:1248 -#: ../libpurple/protocols/silc10/ops.c:1052 -#: ../libpurple/protocols/silc10/silc.c:949 msgid "Organization" msgstr "সংঘঠন" -#: ../libpurple/protocols/silc/ops.c:1036 -#: ../libpurple/protocols/silc10/ops.c:1056 msgid "Unit" msgstr "একক" -#: ../libpurple/protocols/silc/ops.c:1060 -#: ../libpurple/protocols/silc10/ops.c:1080 msgid "Note" msgstr "নোট" -#: ../libpurple/protocols/silc/ops.c:1106 -#: ../libpurple/protocols/silc10/ops.c:1128 msgid "Join Chat" msgstr "আড্ডায় যোগ দিন" # tithi -#: ../libpurple/protocols/silc/ops.c:1140 -#: ../libpurple/protocols/silc10/chat.c:1039 #, c-format msgid "You are channel founder on %s" msgstr "আপনি %s এ চ্যানেল প্রতিষ্ঠাতা" # tithi -#: ../libpurple/protocols/silc/ops.c:1144 -#: ../libpurple/protocols/silc10/chat.c:1043 #, c-format msgid "Channel founder on %s is %s" msgstr "%s এর চ্যানেল প্রতিষ্ঠাতা হলো %s" -#: ../libpurple/protocols/silc/ops.c:1203 -#: ../libpurple/protocols/silc/ops.c:1341 -#: ../libpurple/protocols/silc10/ops.c:1183 -#: ../libpurple/protocols/silc10/ops.c:1332 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1071 msgid "Real Name" msgstr "আসল নাম" -#: ../libpurple/protocols/silc/ops.c:1231 -#: ../libpurple/protocols/silc10/ops.c:1213 msgid "Status Text" msgstr "অবস্থা পাঠ" # tithi -#: ../libpurple/protocols/silc/ops.c:1293 -#: ../libpurple/protocols/silc/ops.c:1367 -#: ../libpurple/protocols/silc10/ops.c:1285 -#: ../libpurple/protocols/silc10/ops.c:1357 msgid "Public Key Fingerprint" msgstr "সর্বসাধারণ কী-এর হস্তাঙ্গুলির-ছাপ" # tithi -#: ../libpurple/protocols/silc/ops.c:1294 -#: ../libpurple/protocols/silc/ops.c:1368 -#: ../libpurple/protocols/silc10/ops.c:1286 -#: ../libpurple/protocols/silc10/ops.c:1358 msgid "Public Key Babbleprint" msgstr "সর্বসাধারণ কী-এর ব্যাবলপ্রিন্ট" -#: ../libpurple/protocols/silc/ops.c:1307 -#: ../libpurple/protocols/silc10/ops.c:1298 msgid "_More..." msgstr "আরও... (_M)" # tithi -#: ../libpurple/protocols/silc/ops.c:1386 -#: ../libpurple/protocols/silc/silc.c:1312 -#: ../libpurple/protocols/silc10/ops.c:1371 -#: ../libpurple/protocols/silc10/silc.c:1013 msgid "Detach From Server" msgstr "সার্ভার থেকে বিচ্ছিন্ন" # tithi -#: ../libpurple/protocols/silc/ops.c:1386 -#: ../libpurple/protocols/silc10/ops.c:1371 msgid "Cannot detach" msgstr "বিচ্ছিন্ন হতে পারে না" -#: ../libpurple/protocols/silc/ops.c:1406 -#: ../libpurple/protocols/silc10/ops.c:1382 msgid "Cannot set topic" msgstr "বিষয়বস্তু ঠিক করতে পারে না" -#: ../libpurple/protocols/silc/ops.c:1435 -#: ../libpurple/protocols/silc10/ops.c:1414 msgid "Failed to change nickname" msgstr "ডাকনাম পরিবর্তন করতে ব্যর্থ" -#: ../libpurple/protocols/silc/ops.c:1484 -#: ../libpurple/protocols/silc10/ops.c:1462 msgid "Roomlist" msgstr "রুম-তালিকা" -#: ../libpurple/protocols/silc/ops.c:1484 -#: ../libpurple/protocols/silc10/ops.c:1462 msgid "Cannot get room list" msgstr "রুম-তালিকা পাওয়া যাচ্ছে না" -#: ../libpurple/protocols/silc/ops.c:1485 msgid "Network is empty" msgstr "নেটওয়ার্ক খালি" # tithi -#: ../libpurple/protocols/silc/ops.c:1529 -#: ../libpurple/protocols/silc10/ops.c:1507 msgid "No public key was received" msgstr "কোনো সর্বসাধারণ কী খুঁজে পায়নি" -#: ../libpurple/protocols/silc/ops.c:1541 -#: ../libpurple/protocols/silc/ops.c:1554 -#: ../libpurple/protocols/silc10/ops.c:1519 -#: ../libpurple/protocols/silc10/ops.c:1532 msgid "Server Information" msgstr "সার্ভারের তথ্য" -#: ../libpurple/protocols/silc/ops.c:1542 -#: ../libpurple/protocols/silc10/ops.c:1520 msgid "Cannot get server information" msgstr "সার্ভারের তথ্য গ্রহণ করতে পারে না" -#: ../libpurple/protocols/silc/ops.c:1565 -#: ../libpurple/protocols/silc10/ops.c:1549 -#: ../libpurple/protocols/silc10/ops.c:1558 msgid "Server Statistics" msgstr "সার্ভারের পরিসংখ্যান" -#: ../libpurple/protocols/silc/ops.c:1566 -#: ../libpurple/protocols/silc10/ops.c:1550 msgid "Cannot get server statistics" msgstr "সার্ভার পরিসংখ্যান পাওয়া যাচ্ছে না" -#: ../libpurple/protocols/silc/ops.c:1573 -#: ../libpurple/protocols/silc10/ops.c:1581 #, c-format msgid "" "Local server start time: %s\n" @@ -13128,65 +9379,42 @@ "মোট সার্ভারের পরিচালকগণ: %14d\n" "মোট রাউটারের পরিচালকগণ: %15d\n" -#: ../libpurple/protocols/silc/ops.c:1605 -#: ../libpurple/protocols/silc10/ops.c:1604 msgid "Network Statistics" msgstr "নেটওয়ার্ক পরিসংখ্যান" -#: ../libpurple/protocols/silc/ops.c:1613 -#: ../libpurple/protocols/silc10/ops.c:1612 msgid "Ping failed" msgstr "পিঙ্গ ব্যর্থ" -#: ../libpurple/protocols/silc/ops.c:1618 -#: ../libpurple/protocols/silc10/ops.c:1617 msgid "Ping reply received from server" msgstr "সার্ভার থেকে পিঙ্গ এর উত্তর গ্রহন করা হয়েছে" # tithi -#: ../libpurple/protocols/silc/ops.c:1626 -#: ../libpurple/protocols/silc10/ops.c:1625 msgid "Could not kill user" msgstr "ব্যবহারকারীকে বিচ্ছিন্ন করা সম্ভব হচ্ছে না" # tithi -#: ../libpurple/protocols/silc/ops.c:1665 msgid "WATCH" msgstr "পর্যবেক্ষণ করুন" -#: ../libpurple/protocols/silc/ops.c:1665 msgid "Cannot watch user" msgstr "ব্যবহারকারীকে পর্যবেক্ষণ করতে পারছে না" # tithi -#: ../libpurple/protocols/silc/ops.c:1741 -#: ../libpurple/protocols/silc/ops.c:1792 -#: ../libpurple/protocols/silc/silc.c:395 -#: ../libpurple/protocols/silc10/ops.c:1817 -#: ../libpurple/protocols/silc10/ops.c:1864 -#: ../libpurple/protocols/silc10/silc.c:194 msgid "Resuming session" msgstr "অধিবেশন পুনরায় শুরু করছে" # tithi -#: ../libpurple/protocols/silc/ops.c:1743 -#: ../libpurple/protocols/silc10/ops.c:1819 msgid "Authenticating connection" msgstr "সংযোগ প্রমাণ করছে" -#: ../libpurple/protocols/silc/ops.c:1794 -#: ../libpurple/protocols/silc10/ops.c:1866 msgid "Verifying server public key" msgstr "সার্ভারের সর্বসাধারণ কী পরীক্ষা করছে" # tithi -#: ../libpurple/protocols/silc/ops.c:1831 -#: ../libpurple/protocols/silc10/ops.c:1908 msgid "Passphrase required" msgstr "প্যাস-ফ্রেজ প্রয়োজন" # tithi -#: ../libpurple/protocols/silc/pk.c:98 ../libpurple/protocols/silc10/pk.c:104 #, c-format msgid "" "Received %s's public key. Your local copy does not match this key. Would you " @@ -13196,14 +9424,12 @@ "আপনি কি তারপরও এই সর্বসাধারণ কী গ্রহণে আগ্রহী?" # tithi -#: ../libpurple/protocols/silc/pk.c:103 ../libpurple/protocols/silc10/pk.c:109 #, c-format msgid "Received %s's public key. Would you like to accept this public key?" msgstr "" "%s এর সর্বসাধারণ কী গ্রহণ করেছে। আপনি কি তারপরও এই সর্বসাধারণ কী গ্রহণে আগ্রহী?" # tithi -#: ../libpurple/protocols/silc/pk.c:107 ../libpurple/protocols/silc10/pk.c:113 #, c-format msgid "" "Fingerprint and babbleprint for the %s key are:\n" @@ -13216,122 +9442,79 @@ "%2s\n" "%3s\n" -#: ../libpurple/protocols/silc/pk.c:110 ../libpurple/protocols/silc/pk.c:139 -#: ../libpurple/protocols/silc10/pk.c:116 -#: ../libpurple/protocols/silc10/pk.c:142 msgid "Verify Public Key" msgstr "সর্বসাধারণ কী যাচাই করুন" -#: ../libpurple/protocols/silc/pk.c:115 ../libpurple/protocols/silc10/pk.c:121 msgid "_View..." msgstr "প্রদর্শন করুন... (_V)" # tithi -#: ../libpurple/protocols/silc/pk.c:140 ../libpurple/protocols/silc10/pk.c:143 msgid "Unsupported public key type" msgstr "অসমর্থিত সর্বসাধারণ কী এর ধরন" -#: ../libpurple/protocols/silc/silc.c:320 -#: ../libpurple/protocols/silc10/ops.c:1755 msgid "Disconnected by server" msgstr "সার্ভার দ্বারা বিচ্ছিন্ন" # tithi -#: ../libpurple/protocols/silc/silc.c:328 -#: ../libpurple/protocols/silc10/ops.c:1701 msgid "Error during connecting to SILC Server" msgstr "SILC সার্ভারে সংযোগের সময় ত্রুটি" # tithi -#: ../libpurple/protocols/silc/silc.c:334 -#: ../libpurple/protocols/silc10/ops.c:1707 msgid "Key Exchange failed" msgstr "কী বিনিময় ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/silc/silc.c:344 -#: ../libpurple/protocols/silc10/ops.c:1718 msgid "" "Resuming detached session failed. Press Reconnect to create new connection." msgstr "" "বিচ্ছিন্ন অধিবেশনটি পুনরায় শুরু করতে ব্যর্থ হয়েছে। অনুগ্রহ করে নতুন সংযোগ তৈরী করতে " "'পুনরায় সংযোগ' চাপুন।" -#: ../libpurple/protocols/silc/silc.c:374 -#: ../libpurple/protocols/silc/silc.c:421 -#: ../libpurple/protocols/silc10/silc.c:164 msgid "Connection failed" msgstr "সংযোগ ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/silc/silc.c:398 -#: ../libpurple/protocols/silc10/silc.c:197 msgid "Performing key exchange" msgstr "কী বিনিময় সম্পাদন করছে" -#: ../libpurple/protocols/silc/silc.c:450 -#: ../libpurple/protocols/silc10/silc.c:362 msgid "Unable to create connection" msgstr "সংযোগ তৈরী করতে ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/silc/silc.c:493 -#: ../libpurple/protocols/silc/silc.c:509 -#: ../libpurple/protocols/silc/silc.c:538 -#: ../libpurple/protocols/silc10/silc.c:341 msgid "Could not load SILC key pair" msgstr "SILC কী যুগল লোড করতে পারেনি" # tithi #. Progress -#: ../libpurple/protocols/silc/silc.c:523 -#: ../libpurple/protocols/silc10/silc.c:330 msgid "Connecting to SILC Server" msgstr "SILC সার্ভারে সংযোগ করছে" -#: ../libpurple/protocols/silc/silc.c:569 -#: ../libpurple/protocols/silc10/silc.c:272 msgid "Out of memory" msgstr "মেমোরীর বাইরে" # tithi -#: ../libpurple/protocols/silc/silc.c:620 -#: ../libpurple/protocols/silc10/silc.c:318 msgid "Cannot initialize SILC protocol" msgstr "SILC প্রটোকল চালু করতে পারে না" # tithi -#: ../libpurple/protocols/silc/silc.c:633 -#: ../libpurple/protocols/silc10/silc.c:325 msgid "Error loading SILC key pair" msgstr "SILC কী যুগল লোডে ত্রুটি" -#: ../libpurple/protocols/silc/silc.c:690 -#: ../libpurple/protocols/silc/silc.c:1863 -#: ../libpurple/protocols/silc10/silc.c:405 -#: ../libpurple/protocols/silc10/silc.c:1582 #, c-format msgid "Download %s: %s" msgstr "%1s ডাউনলোড করুন: %2s" -#: ../libpurple/protocols/silc/silc.c:974 -#: ../libpurple/protocols/silc10/silc.c:675 msgid "Your Current Mood" msgstr "আপনার বর্তমান অবস্থা" -#: ../libpurple/protocols/silc/silc.c:976 -#: ../libpurple/protocols/silc10/silc.c:677 ../pidgin/gtkprefs.c:1792 +#, c-format msgid "Normal" msgstr "স্বাভাবিক" -#: ../libpurple/protocols/silc/silc.c:990 -#: ../libpurple/protocols/silc10/silc.c:691 msgid "In love" msgstr "ভালবাসায়" # tithi -#: ../libpurple/protocols/silc/silc.c:1001 -#: ../libpurple/protocols/silc10/silc.c:702 msgid "" "\n" "Your Preferred Contact Methods" @@ -13339,67 +9522,40 @@ "\n" "আপনাকে পছন্দের যোগাযোগ পদ্ধতি সমূহ" -#: ../libpurple/protocols/silc/silc.c:1009 -#: ../libpurple/protocols/silc/util.c:567 -#: ../libpurple/protocols/silc10/silc.c:710 -#: ../libpurple/protocols/silc10/util.c:561 msgid "SMS" msgstr "এসএমএস" -#: ../libpurple/protocols/silc/silc.c:1011 -#: ../libpurple/protocols/silc/util.c:569 -#: ../libpurple/protocols/silc10/silc.c:712 -#: ../libpurple/protocols/silc10/util.c:563 msgid "MMS" msgstr "এমএমএস" -#: ../libpurple/protocols/silc/silc.c:1013 -#: ../libpurple/protocols/silc10/silc.c:714 msgid "Video conferencing" msgstr "ভিডিও অধিবেশন চলছে" -#: ../libpurple/protocols/silc/silc.c:1018 -#: ../libpurple/protocols/silc10/silc.c:719 msgid "Your Current Status" msgstr "আপনার বর্তমান অবস্থা" -#: ../libpurple/protocols/silc/silc.c:1025 -#: ../libpurple/protocols/silc10/silc.c:726 msgid "Online Services" msgstr "অনলাইন সেবাসমূহ" # tithi -#: ../libpurple/protocols/silc/silc.c:1028 -#: ../libpurple/protocols/silc10/silc.c:729 msgid "Let others see what services you are using" msgstr "আপনি কি সেবাসমূহ ব্যবহার করছেন তা অন্যদের দেখতে দিন" # tithi -#: ../libpurple/protocols/silc/silc.c:1034 -#: ../libpurple/protocols/silc10/silc.c:735 msgid "Let others see what computer you are using" msgstr "আপনি কি কম্পিউটার ব্যবহার করছেন তা অন্যদের দেখতে দিন" -#: ../libpurple/protocols/silc/silc.c:1041 -#: ../libpurple/protocols/silc10/silc.c:742 msgid "Your VCard File" msgstr "আপনার ভি-কার্ড ফাইল" -#: ../libpurple/protocols/silc/silc.c:1047 msgid "Timezone (UTC)" msgstr "সময়-এলাকা (ইউটিসি)" # tithi -#: ../libpurple/protocols/silc/silc.c:1051 -#: ../libpurple/protocols/silc/silc.c:1052 -#: ../libpurple/protocols/silc10/silc.c:754 -#: ../libpurple/protocols/silc10/silc.c:755 msgid "User Online Status Attributes" msgstr "ব্যবহারকারীর অনলাইন অবস্থার বৈশিষ্ট্যাবলী" # tithi -#: ../libpurple/protocols/silc/silc.c:1053 -#: ../libpurple/protocols/silc10/silc.c:756 msgid "" "You can let other users see your online status information and your personal " "information. Please fill the information you would like other users to see " @@ -13409,237 +9565,148 @@ "পারেন। অনুগ্রহ করে আপনি নিজের সম্বন্ধে যে তথ্য অন্যান্য ব্যবহারকারীকে দেখতে দিতে চান " "তা পূরণ করুন।" -#: ../libpurple/protocols/silc/silc.c:1094 -#: ../libpurple/protocols/silc/silc.c:1100 -#: ../libpurple/protocols/silc/silc.c:1721 -#: ../libpurple/protocols/silc10/silc.c:797 -#: ../libpurple/protocols/silc10/silc.c:803 -#: ../libpurple/protocols/silc10/silc.c:1440 msgid "Message of the Day" msgstr "দিনের বার্তা" -#: ../libpurple/protocols/silc/silc.c:1094 -#: ../libpurple/protocols/silc10/silc.c:797 msgid "No Message of the Day available" msgstr "আজকের দিনের কোনো বার্তা সহজলভ্য নয়" # tithi -#: ../libpurple/protocols/silc/silc.c:1095 -#: ../libpurple/protocols/silc/silc.c:1716 -#: ../libpurple/protocols/silc10/silc.c:798 -#: ../libpurple/protocols/silc10/silc.c:1435 msgid "There is no Message of the Day associated with this connection" msgstr "এই সংযোগের সাথে সম্পর্কিত আজকের দিনের কোনো বার্তা নেই" # tithi -#: ../libpurple/protocols/silc/silc.c:1146 -#: ../libpurple/protocols/silc/silc.c:1192 -#: ../libpurple/protocols/silc/silc.c:1263 -#: ../libpurple/protocols/silc/silc.c:1264 -#: ../libpurple/protocols/silc10/silc.c:849 -#: ../libpurple/protocols/silc10/silc.c:893 -#: ../libpurple/protocols/silc10/silc.c:964 -#: ../libpurple/protocols/silc10/silc.c:965 msgid "Create New SILC Key Pair" msgstr "নতুন SILC কী যুগল তৈরি করুন" -#: ../libpurple/protocols/silc/silc.c:1146 -#: ../libpurple/protocols/silc10/silc.c:849 msgid "Passphrases do not match" msgstr "প্যাস-ফ্রেজ মিলে না" -#: ../libpurple/protocols/silc/silc.c:1192 -#: ../libpurple/protocols/silc10/silc.c:893 msgid "Key Pair Generation failed" msgstr "কী জোড়া তৈরী করতে ব্যর্থ হয়েছে" -#: ../libpurple/protocols/silc/silc.c:1231 -#: ../libpurple/protocols/silc10/silc.c:932 msgid "Key length" msgstr "কী-এর দৈর্ঘ্য" -#: ../libpurple/protocols/silc/silc.c:1233 -#: ../libpurple/protocols/silc10/silc.c:934 msgid "Public key file" msgstr "সর্বসাধারণ কী ফাইল" -#: ../libpurple/protocols/silc/silc.c:1235 -#: ../libpurple/protocols/silc10/silc.c:936 msgid "Private key file" msgstr "বযক্তিগত কী ফাইল" -#: ../libpurple/protocols/silc/silc.c:1258 -#: ../libpurple/protocols/silc10/silc.c:959 msgid "Passphrase (retype)" msgstr "প্যাস-ফ্রেজ (পুনরায় টাইপ করুন)" # tithi -#: ../libpurple/protocols/silc/silc.c:1265 -#: ../libpurple/protocols/silc10/silc.c:966 msgid "Generate Key Pair" msgstr "কী যুগল তৈরি করুন" -#: ../libpurple/protocols/silc/silc.c:1308 -#: ../libpurple/protocols/silc10/silc.c:1009 msgid "Online Status" msgstr "অনলাইন অবস্থা" -#: ../libpurple/protocols/silc/silc.c:1316 -#: ../libpurple/protocols/silc10/silc.c:1017 msgid "View Message of the Day" msgstr "দিনের বার্তাটি প্রদর্শন করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1320 -#: ../libpurple/protocols/silc10/silc.c:1021 msgid "Create SILC Key Pair..." msgstr "SILC কী যুগল তৈরি করুন..." -#: ../libpurple/protocols/silc/silc.c:1412 -#: ../libpurple/protocols/silc10/silc.c:1120 #, c-format msgid "User %s is not present in the network" msgstr "%s ব্যবহারকারী নেটওয়ার্কে উপস্থিত নেই" -#: ../libpurple/protocols/silc/silc.c:1592 -#: ../libpurple/protocols/silc10/silc.c:1311 msgid "Topic too long" msgstr "বিষয়বস্তু অত্যন্ত দীর্ঘ" -#: ../libpurple/protocols/silc/silc.c:1673 -#: ../libpurple/protocols/silc10/silc.c:1392 msgid "You must specify a nick" msgstr "আপনাকে একটি ডাকনাম উল্লেখ করতে হবে" -#: ../libpurple/protocols/silc/silc.c:1775 -#: ../libpurple/protocols/silc10/silc.c:1494 #, c-format msgid "channel %s not found" msgstr "%s চ্যানেলটি খুঁজে পাওয়া যায়নি" -#: ../libpurple/protocols/silc/silc.c:1780 -#: ../libpurple/protocols/silc10/silc.c:1499 #, c-format msgid "channel modes for %s: %s" msgstr "%1s-এর চ্যানেল মোড: %2s" # tithi -#: ../libpurple/protocols/silc/silc.c:1782 -#: ../libpurple/protocols/silc10/silc.c:1501 #, c-format msgid "no channel modes are set on %s" msgstr "%s এ কোনো চ্যানেল মোড নির্ধারণ করা হয়নি" -#: ../libpurple/protocols/silc/silc.c:1795 -#: ../libpurple/protocols/silc10/silc.c:1514 #, c-format msgid "Failed to set cmodes for %s" msgstr "%s-এর জন্য সি-মোড নির্ধারণ করতে ব্যর্থ" -#: ../libpurple/protocols/silc/silc.c:1825 -#: ../libpurple/protocols/silc10/silc.c:1544 #, c-format msgid "Unknown command: %s, (may be a client bug)" msgstr "অজানা নির্দেশ: %s, (সম্ভবত এটি একটি ক্লায়েন্ট ত্রুটি)" -#: ../libpurple/protocols/silc/silc.c:1906 -#: ../libpurple/protocols/silc10/silc.c:1625 msgid "part [channel]: Leave the chat" msgstr "অংশ [চ্যানেল]: আড্ডা ত্যাগ করুন" -#: ../libpurple/protocols/silc/silc.c:1910 -#: ../libpurple/protocols/silc10/silc.c:1629 msgid "leave [channel]: Leave the chat" msgstr "ত্যাগ করুন [চ্যানেল]: আড্ডা ত্যাগ করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1914 -#: ../libpurple/protocols/silc10/silc.c:1633 msgid "topic [<new topic>]: View or change the topic" msgstr "বিষয়বস্তু [&1lt;নতুন বিষয়বস্তু &2gt;]: বিষয়বস্তু দেখুন বা পরিবর্তন করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1919 -#: ../libpurple/protocols/silc10/silc.c:1638 msgid "join <channel> [<password>]: Join a chat on this network" msgstr "" "যুক্ত হোন &1lt;চ্যানেল&2gt; [&3lt;গুপ্তসঙ্কেত&4gt;]: এই নেটওয়ার্কের একটি আড্ডায় যোগ " "দিন" -#: ../libpurple/protocols/silc/silc.c:1923 -#: ../libpurple/protocols/silc10/silc.c:1642 msgid "list: List channels on this network" msgstr "তালিকা: এই নেটওয়ার্কের চ্যানেলসমূহের তালিকা তৈরী করুন" # fix -me tithi -#: ../libpurple/protocols/silc/silc.c:1927 -#: ../libpurple/protocols/silc10/silc.c:1646 msgid "whois <nick>: View nick's information" msgstr "কে &1lt;ডাকনাম&2gt;: ডাকনামের তথ্য দেখুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1931 -#: ../libpurple/protocols/silc10/silc.c:1650 -#: ../libpurple/protocols/zephyr/zephyr.c:2706 msgid "msg <nick> <message>: Send a private message to a user" msgstr "" "বার্তা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;: ব্যবহারকারীকে একটি ব্যক্তিগত বার্তা " "পাঠান" # tithi -#: ../libpurple/protocols/silc/silc.c:1935 -#: ../libpurple/protocols/silc10/silc.c:1654 msgid "query <nick> [<message>]: Send a private message to a user" msgstr "" "জিজ্ঞাসা &1lt;ডাকনাম&2gt; [&3lt;বার্তা&4gt;]: ব্যবহারকারীকে একটি ব্যক্তিগত বার্তা " "পাঠান" # tithi -#: ../libpurple/protocols/silc/silc.c:1939 -#: ../libpurple/protocols/silc10/silc.c:1658 msgid "motd: View the server's Message Of The Day" msgstr "দিনের সেরা বার্তা: সার্ভারের 'দিনের সেরা বার্তা' দেখুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1943 -#: ../libpurple/protocols/silc10/silc.c:1662 msgid "detach: Detach this session" msgstr "বিচ্ছিন্ন: অধিবেশনটিকে বিচ্ছিন্ন করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1947 -#: ../libpurple/protocols/silc10/silc.c:1666 msgid "quit [message]: Disconnect from the server, with an optional message" msgstr "ত্যাগ করুন [বার্তা]: একটি ঐচ্ছিক বার্তার সহ, সার্ভার হতে বিচ্ছিন্ন করুন" -#: ../libpurple/protocols/silc/silc.c:1951 -#: ../libpurple/protocols/silc10/silc.c:1670 msgid "call <command>: Call any silc client command" msgstr "কল করুন &1lt;নির্দেশ&2gt;: যেকোনো silc ক্লায়েন্টের নির্দেশ কল করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1957 -#: ../libpurple/protocols/silc10/silc.c:1676 msgid "kill <nick> [-pubkey|<reason>]: Kill nick" msgstr "" "মুছে ফেলুন &1lt;ডাকনাম&2gt; [-সর্বসাধারণ-কী|&3lt;কারণ&4gt;]: ডাকনাম মুছে ফেলুন" # ডাকনাম # tithi -#: ../libpurple/protocols/silc/silc.c:1961 -#: ../libpurple/protocols/silc10/silc.c:1680 msgid "nick <newnick>: Change your nickname" msgstr "ডাকনাম &1lt;নতুন ডাকনাম&2gt;: আপনার ডাকনাম পরিবর্তন করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1965 -#: ../libpurple/protocols/silc10/silc.c:1684 msgid "whowas <nick>: View nick's information" msgstr "কে ছিল &1lt;ডাকনাম&2gt;: ডাকনামের তথ্য দেখুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1969 -#: ../libpurple/protocols/silc10/silc.c:1688 msgid "" "cmode <channel> [+|-<modes>] [arguments]: Change or display " "channel modes" @@ -13648,8 +9715,6 @@ "পরিবর্তন করুন বা প্রদর্শন করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1973 -#: ../libpurple/protocols/silc10/silc.c:1692 msgid "" "cumode <channel> +|-<modes> <nick>: Change nick's modes " "on channel" @@ -13658,23 +9723,17 @@ "ডাকনামের মোডসমূহ পরিবর্তন করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1977 -#: ../libpurple/protocols/silc10/silc.c:1696 msgid "umode <usermodes>: Set your modes in the network" msgstr "" "ইউ-মোড &1lt;ব্যবহারকারীর-মোডসমূহ&2gt;: নেটওয়ার্কে আপনার মোডসমূহ নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1981 -#: ../libpurple/protocols/silc10/silc.c:1700 msgid "oper <nick> [-pubkey]: Get server operator privileges" msgstr "" "অপারেটর &1lt;ডাকনাম&2gt; [-সর্বসাধারণ-কী]: সার্ভার অপারেটরের প্রাধিকারগুলো গ্রহণ " "করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1985 -#: ../libpurple/protocols/silc10/silc.c:1704 msgid "" "invite <channel> [-|+]<nick>: invite nick or add/remove from " "channel invite list" @@ -13683,54 +9742,38 @@ "চ্যানেলের আমন্ত্রন তালিকা থেকে যোগ করুন/মুছে ফেলুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1989 -#: ../libpurple/protocols/silc10/silc.c:1708 msgid "kick <channel> <nick> [comment]: Kick client from channel" msgstr "" "অপসারণ করুন &1lt;চ্যানেল&2gt; &3lt;ডাকনাম&4gt; [মন্তব্য]: চ্যানেল থেকে গ্রাহককে " "অপসারণ করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1993 -#: ../libpurple/protocols/silc10/silc.c:1712 msgid "info [server]: View server administrative details" msgstr "তথ্য [সার্ভার]: সার্ভারের প্রশাসনিক বিবরণ দেখুন" # tithi -#: ../libpurple/protocols/silc/silc.c:1997 -#: ../libpurple/protocols/silc10/silc.c:1716 msgid "ban [<channel> +|-<nick>]: Ban client from channel" msgstr "" "নিষিদ্ধ [&1lt;চ্যানেল&2gt; +|-&3lt;ডাকনাম&4gt;]: চ্যানেল হতে গ্রাহককে নিষিদ্ধ করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:2001 -#: ../libpurple/protocols/silc10/silc.c:1720 msgid "getkey <nick|server>: Retrieve client's or server's public key" msgstr "" "কী-গ্রহণ করুন &1lt;ডাকনাম সার্ভার&2gt;: গ্রাহক বা সার্ভারের সর্বসাধারণ কী পুনরুদ্ধার " "করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:2005 -#: ../libpurple/protocols/silc10/silc.c:1724 msgid "stats: View server and network statistics" msgstr "পরিসংখ্যান: সার্ভার এবং নেটওয়ার্কের পরিসংখ্যান দেখুন" -#: ../libpurple/protocols/silc/silc.c:2009 -#: ../libpurple/protocols/silc10/silc.c:1728 msgid "ping: Send PING to the connected server" msgstr "পিঙ্গ: সংযুক্ত সার্ভারে একটি পিঙ্গ পাঠান" # tithi -#: ../libpurple/protocols/silc/silc.c:2014 -#: ../libpurple/protocols/silc10/silc.c:1733 msgid "users <channel>: List users in channel" msgstr "ব্যবহারকারীগণ &1lt;চ্যানেল&2gt;: চ্যানেল ব্যবহারকারীর তালিকা করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:2018 -#: ../libpurple/protocols/silc10/silc.c:1737 msgid "" "names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: List " "specific users in channel(s)" @@ -13747,152 +9790,102 @@ #. *< name #. *< version #. * summary -#: ../libpurple/protocols/silc/silc.c:2130 -#: ../libpurple/protocols/silc10/silc.c:1862 msgid "SILC Protocol Plugin" msgstr "SILC প্রটোকল প্লাগইন" # tithi #. * description -#: ../libpurple/protocols/silc/silc.c:2132 -#: ../libpurple/protocols/silc10/silc.c:1864 msgid "Secure Internet Live Conferencing (SILC) Protocol" msgstr "ইন্টারনেটে সরাসরি মতবিনিময় করার নিরাপদ (SILC) প্রটোকল" -#: ../libpurple/protocols/silc/silc.c:2173 -#: ../libpurple/protocols/silc10/silc.c:1896 ../pidgin/gtkprefs.c:2170 msgid "Network" msgstr "নেটওয়ার্ক" -#: ../libpurple/protocols/silc/silc.c:2184 -#: ../libpurple/protocols/silc10/silc.c:1907 msgid "Public Key file" msgstr "সর্বসাধারণ কী ফাইল" -#: ../libpurple/protocols/silc/silc.c:2188 -#: ../libpurple/protocols/silc10/silc.c:1911 msgid "Private Key file" msgstr "ব্যক্তিগত কী ফাইল" -#: ../libpurple/protocols/silc/silc.c:2198 -#: ../libpurple/protocols/silc10/silc.c:1921 msgid "Cipher" msgstr "সাইফার" -#: ../libpurple/protocols/silc/silc.c:2208 -#: ../libpurple/protocols/silc10/silc.c:1931 msgid "HMAC" msgstr "HMAC" # tithi -#: ../libpurple/protocols/silc/silc.c:2211 msgid "Use Perfect Forward Secrecy" msgstr "যথার্থ অগ্রগামী গোপনীয়তা ব্যবহার করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:2215 -#: ../libpurple/protocols/silc10/silc.c:1934 msgid "Public key authentication" msgstr "সর্বসাধারণ কী প্রমাণীকরণ" # tithi -#: ../libpurple/protocols/silc/silc.c:2218 -#: ../libpurple/protocols/silc10/silc.c:1937 msgid "Block IMs without Key Exchange" msgstr "কী বিনিময় ব্যতিত IM গুলোকে ব্লক করুন" # Fixme # block = বন্ধ? - tithi -#: ../libpurple/protocols/silc/silc.c:2221 -#: ../libpurple/protocols/silc10/silc.c:1940 msgid "Block messages to whiteboard" msgstr "হোয়াটবোর্ডে বার্তাগুলো ব্লক করুন" # tithi -#: ../libpurple/protocols/silc/silc.c:2224 -#: ../libpurple/protocols/silc10/silc.c:1943 msgid "Automatically open whiteboard" msgstr "স্বয়ংক্রিয়ভাবে হোয়াটবোর্ড খুলুন" # tithi -#: ../libpurple/protocols/silc/silc.c:2227 -#: ../libpurple/protocols/silc10/silc.c:1946 msgid "Digitally sign and verify all messages" msgstr "সকল বার্তা ডিজিটাল স্বাক্ষর করুন এবং যাচাই করুন" # tithi -#: ../libpurple/protocols/silc/util.c:207 -#: ../libpurple/protocols/silc/util.c:250 -#: ../libpurple/protocols/silc10/util.c:207 -#: ../libpurple/protocols/silc10/util.c:247 msgid "Creating SILC key pair..." msgstr "SILC কী যুগল তৈরি করছে..." -#: ../libpurple/protocols/silc/util.c:216 -#: ../libpurple/protocols/silc/util.c:259 msgid "Cannot create SILC key pair\n" msgstr "SILC কী যুগল তৈরী করতে পারে না\n" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, #. sum: 3 tabs or 24 characters) -#: ../libpurple/protocols/silc/util.c:363 -#: ../libpurple/protocols/silc10/util.c:355 #, c-format msgid "Real Name: \t%s\n" msgstr "আসল নাম: \t%s\n" -#: ../libpurple/protocols/silc/util.c:365 -#: ../libpurple/protocols/silc10/util.c:357 #, c-format msgid "User Name: \t%s\n" msgstr "ব্যবহারকারীর নাম: \t%s\n" -#: ../libpurple/protocols/silc/util.c:367 -#: ../libpurple/protocols/silc10/util.c:359 #, c-format msgid "Email: \t\t%s\n" msgstr "ই-মেইল: \t\t%s\n" -#: ../libpurple/protocols/silc/util.c:369 -#: ../libpurple/protocols/silc10/util.c:361 #, c-format msgid "Host Name: \t%s\n" msgstr "হোস্ট নাম: \t%s\n" -#: ../libpurple/protocols/silc/util.c:371 -#: ../libpurple/protocols/silc10/util.c:363 #, c-format msgid "Organization: \t%s\n" msgstr "সংগঠন: \t%s\n" -#: ../libpurple/protocols/silc/util.c:373 -#: ../libpurple/protocols/silc10/util.c:365 #, c-format msgid "Country: \t%s\n" msgstr "দেশ: \t%s\n" -#: ../libpurple/protocols/silc/util.c:374 -#: ../libpurple/protocols/silc10/util.c:366 #, c-format msgid "Algorithm: \t%s\n" msgstr "এলগোরিদম: \t%s\n" # tithi -#: ../libpurple/protocols/silc/util.c:375 -#: ../libpurple/protocols/silc10/util.c:367 #, c-format msgid "Key Length: \t%d bits\n" msgstr "কী দৈর্ঘ্য: \t%d বিট\n" -#: ../libpurple/protocols/silc/util.c:377 #, c-format msgid "Version: \t%s\n" msgstr "সংস্করণ: \t%s\n" # tithi -#: ../libpurple/protocols/silc/util.c:379 -#: ../libpurple/protocols/silc10/util.c:369 #, c-format msgid "" "Public Key Fingerprint:\n" @@ -13904,8 +9897,6 @@ "\n" # tithi -#: ../libpurple/protocols/silc/util.c:380 -#: ../libpurple/protocols/silc10/util.c:370 #, c-format msgid "" "Public Key Babbleprint:\n" @@ -13914,46 +9905,30 @@ "সর্বসাধারণ কী এর ব্যাবল-প্রিন্ট:\n" "%s" -#: ../libpurple/protocols/silc/util.c:382 -#: ../libpurple/protocols/silc/util.c:383 -#: ../libpurple/protocols/silc10/util.c:374 -#: ../libpurple/protocols/silc10/util.c:375 msgid "Public Key Information" msgstr "সর্বসাধারণ কী এর তথ্য" -#: ../libpurple/protocols/silc/util.c:565 -#: ../libpurple/protocols/silc10/util.c:559 msgid "Paging" msgstr "পেজিং" -#: ../libpurple/protocols/silc/util.c:571 -#: ../libpurple/protocols/silc10/util.c:565 msgid "Video Conferencing" msgstr "ভিডিও আলোচনা সভা চলছে" -#: ../libpurple/protocols/silc/util.c:589 -#: ../libpurple/protocols/silc10/util.c:584 msgid "Computer" msgstr "কম্পিউটার" -#: ../libpurple/protocols/silc/util.c:593 -#: ../libpurple/protocols/silc10/util.c:588 msgid "PDA" msgstr "পিডিএ" -#: ../libpurple/protocols/silc/util.c:595 -#: ../libpurple/protocols/silc10/util.c:590 msgid "Terminal" msgstr "টার্মিনাল" # tithi -#: ../libpurple/protocols/silc/wb.c:288 ../libpurple/protocols/silc10/wb.c:287 #, c-format msgid "%s sent message to whiteboard. Would you like to open the whiteboard?" msgstr "%s হোয়াটবোর্ডে বার্তা পাঠিয়েছিল। আপনি কি হোয়াটবোর্ডটি খুলতে আগ্রহী?" # tithi -#: ../libpurple/protocols/silc/wb.c:292 ../libpurple/protocols/silc10/wb.c:291 #, c-format msgid "" "%s sent message to whiteboard on %s channel. Would you like to open the " @@ -13961,110 +9936,94 @@ msgstr "" "%2s চ্যানেলের হোয়াটবোর্ডে %1s বার্তা পাঠিয়েছিল। আপনি কি হোয়াটবোর্ডটি খুলতে আগ্রহী?" -#: ../libpurple/protocols/silc/wb.c:306 ../libpurple/protocols/silc10/wb.c:305 msgid "Whiteboard" msgstr "হোয়াইট-বোর্ড" -#: ../libpurple/protocols/silc10/ops.c:1559 msgid "No server statistics available" msgstr "কোনো সার্ভার পরিসংখ্যান সহজলভ্য নয়" # tithi -#: ../libpurple/protocols/silc10/ops.c:1937 +#, c-format msgid "Failure: Version mismatch, upgrade your client" msgstr "ব্যর্থতা: সংস্করণ অমিল, আপনার ক্লায়েন্ট উন্নততর করুন" -#: ../libpurple/protocols/silc10/ops.c:1940 +#, c-format msgid "Failure: Remote does not trust/support your public key" msgstr "ব্যর্থতা: রিমোট আপনার সর্বাসাধারণ কী বিশ্বাস/সমর্থন করে না" # tithi -#: ../libpurple/protocols/silc10/ops.c:1943 +#, c-format msgid "Failure: Remote does not support proposed KE group" msgstr "ব্যর্থ: রিমোট প্রস্তাবিত কেই গ্রুপ সমর্থন করে না" # tithi -#: ../libpurple/protocols/silc10/ops.c:1946 +#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "ব্যর্থ: রিমোট প্রস্তাবিত ছাইফার সমর্থন করে না" # tithi -#: ../libpurple/protocols/silc10/ops.c:1949 +#, c-format msgid "Failure: Remote does not support proposed PKCS" msgstr "ব্যর্থ: রিমোট প্রস্তাবিত পিকেসিএস সমর্থন করে না" # tithi -#: ../libpurple/protocols/silc10/ops.c:1952 +#, c-format msgid "Failure: Remote does not support proposed hash function" msgstr "ব্যর্থ: রিমোট প্রস্তাবিত হ্যাস ফাংশন সমর্থন করে না" # tithi -#: ../libpurple/protocols/silc10/ops.c:1955 +#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "ব্যর্থ: রিমোট প্রস্তাবিত এইচএমএসি সমর্থন করে না" # tithi -#: ../libpurple/protocols/silc10/ops.c:1957 +#, c-format msgid "Failure: Incorrect signature" msgstr "ব্যর্থতা: ভূল স্বাক্ষর" # tithi -#: ../libpurple/protocols/silc10/ops.c:1959 +#, c-format msgid "Failure: Invalid cookie" msgstr "ব্যর্থতা: অবৈধ কুকি" # tithi -#: ../libpurple/protocols/silc10/ops.c:1970 +#, c-format msgid "Failure: Authentication failed" msgstr "ব্যর্থতা: প্রমাণীকরণ ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/silc10/silc.c:186 msgid "Cannot initialize SILC Client connection" msgstr "SILC ক্লায়েন্ট সংযোগ প্রাথমিকভাবে প্রস্তুত করতে পারে না" # fix me tithi -#: ../libpurple/protocols/silc10/silc.c:295 msgid "John Noname" msgstr "জন নোনেম" # tithi -#: ../libpurple/protocols/silc10/silc.c:339 #, c-format msgid "Could not load SILC key pair: %s" msgstr "SILC কী যুগল লোড করতে পারেনি: %s" -#: ../libpurple/protocols/simple/simple.c:435 msgid "Could not write" msgstr "লিখতে পারেনি" -#: ../libpurple/protocols/simple/simple.c:459 -#: ../libpurple/protocols/simple/simple.c:1748 msgid "Could not connect" msgstr "সংযোগ দিতে পারেনি" -#: ../libpurple/protocols/simple/simple.c:1145 msgid "Unknown server response." msgstr "অজানা সার্ভার উত্তর।" # tithi -#: ../libpurple/protocols/simple/simple.c:1784 -#: ../libpurple/protocols/simple/simple.c:1830 -#: ../libpurple/protocols/simple/simple.c:1845 -#: ../libpurple/protocols/simple/simple.c:1900 msgid "Could not create listen socket" msgstr "শ্রবণ সকেট তৈরি করতে পারেনি" -#: ../libpurple/protocols/simple/simple.c:1910 msgid "Could not resolve hostname" msgstr "হোস্ট-নাম স্থির করা হয়নি" # tihi -#: ../libpurple/protocols/simple/simple.c:1928 msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP এর ব্যবহারকারী-নামগুলো ফাঁকা-জায়গা বা @ চিহ্ন ধারণ করতে পারে না" -#: ../libpurple/protocols/simple/simple.c:1945 msgid "SIP connect server not specified" msgstr "SIP সংযোগ সার্ভার সুনির্দিষ্ট নয়" @@ -14077,172 +10036,151 @@ #. *< id #. *< name #. *< version -#: ../libpurple/protocols/simple/simple.c:2115 msgid "SIP/SIMPLE Protocol Plugin" msgstr "SIP/সাধারণ প্রটোকল প্লাগইন" # tithi #. * summary -#: ../libpurple/protocols/simple/simple.c:2116 msgid "The SIP/SIMPLE Protocol Plugin" msgstr "SIP/সাধারণ প্রটোকল প্লাগইন" # tithi -#: ../libpurple/protocols/simple/simple.c:2144 msgid "Publish status (note: everyone may watch you)" msgstr "প্রকাশ অবস্থা (নোট: আপনাকে সবাই পর্যবেক্ষণ করতে পারে)" -#: ../libpurple/protocols/simple/simple.c:2150 msgid "Use UDP" msgstr "UDP ব্যবহার করুন" -#: ../libpurple/protocols/simple/simple.c:2152 msgid "Use proxy" msgstr "প্রক্সি ব্যবহার করুন" -#: ../libpurple/protocols/simple/simple.c:2154 msgid "Proxy" msgstr "প্রক্সি" -#: ../libpurple/protocols/simple/simple.c:2156 msgid "Auth User" msgstr "স্বীকৃত ব্যবহারকারী" -#: ../libpurple/protocols/simple/simple.c:2158 msgid "Auth Domain" msgstr "স্বীকৃত ডোমেইন" -#: ../libpurple/protocols/toc/toc.c:139 #, c-format msgid "Looking up %s" msgstr "%s খোঁজা হচ্ছে" -#: ../libpurple/protocols/toc/toc.c:148 #, c-format msgid "Connect to %s failed" msgstr "%s-এর সাথে সংযোগ দিতে ব্যর্থ হয়েছে" -#: ../libpurple/protocols/toc/toc.c:201 #, c-format msgid "Signon: %s" msgstr "সাইনঅন: %s" -#: ../libpurple/protocols/toc/toc.c:488 #, c-format msgid "Unable to write file %s." msgstr "%s ফাইলে লিখতে ব্যর্থ হয়েছে।" -#: ../libpurple/protocols/toc/toc.c:491 #, c-format msgid "Unable to read file %s." msgstr "%s ফাইলে পড়তে ব্যর্থ হয়েছে।" # tithi -#: ../libpurple/protocols/toc/toc.c:494 #, c-format msgid "Message too long, last %s bytes truncated." msgstr "বার্তাটি খুব দীর্ঘ, শেষ %s বাইট বাদ দেয়া হয়েছে।" # tithi -#: ../libpurple/protocols/toc/toc.c:497 #, c-format msgid "%s not currently logged in." msgstr "%s বর্তমানে লগইন নেই।" # tithi -#: ../libpurple/protocols/toc/toc.c:500 #, c-format msgid "Warning of %s not allowed." msgstr "%s এর সতর্কতা অনুমোদিত নয়।" # tithi -#: ../libpurple/protocols/toc/toc.c:503 +#, c-format msgid "A message has been dropped, you are exceeding the server speed limit." msgstr "একটি বার্তা বাদ দেয়া হয়েছে, আপনি সার্ভারের গতি সীমা অতিক্রম করছেন।" -#: ../libpurple/protocols/toc/toc.c:506 #, c-format msgid "Chat in %s is not available." msgstr "%s-এ আড্ডা সহজলভ্য নয়।" -#: ../libpurple/protocols/toc/toc.c:509 #, c-format msgid "You are sending messages too fast to %s." msgstr "আপনি %s এ খুব দ্রুত বার্তা পাঠাচ্ছেন।" # tithi -#: ../libpurple/protocols/toc/toc.c:512 #, c-format msgid "You missed an IM from %s because it was too big." msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব বড় ছিল।" # tithi -#: ../libpurple/protocols/toc/toc.c:515 #, c-format msgid "You missed an IM from %s because it was sent too fast." msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব দ্রুত পাঠানো হয়েছিল।" -#: ../libpurple/protocols/toc/toc.c:518 +#, c-format msgid "Failure." msgstr "ব্যর্থতা।" # tithi -#: ../libpurple/protocols/toc/toc.c:521 +#, c-format msgid "Too many matches." msgstr "অনেক বেশি মিল।" # tithi -#: ../libpurple/protocols/toc/toc.c:524 +#, c-format msgid "Need more qualifiers." msgstr "আরও নিয়ন্ত্রণকারী প্রয়োজন।" -#: ../libpurple/protocols/toc/toc.c:527 +#, c-format msgid "Dir service temporarily unavailable." msgstr "নির্দেশিকা সেবা সাময়িকভাবে অপ্রাপ্য" # tithi -#: ../libpurple/protocols/toc/toc.c:530 +#, c-format msgid "Email lookup restricted." msgstr "ই-মেইল অনুসন্ধান নিষিদ্ধ।" # tithi -#: ../libpurple/protocols/toc/toc.c:533 +#, c-format msgid "Keyword ignored." msgstr "মূল-শব্দ অগ্রাহ্য করা হয়েছে।" -#: ../libpurple/protocols/toc/toc.c:536 +#, c-format msgid "No keywords." msgstr "কোনো মূল-শব্দ নেই।" -#: ../libpurple/protocols/toc/toc.c:539 +#, c-format msgid "User has no directory information." msgstr "ব্যবহারকারীর কোনো নির্দেশিকা তথ্য নেই।" -#: ../libpurple/protocols/toc/toc.c:543 +#, c-format msgid "Country not supported." msgstr "দেশটি সমর্থিত নয়।" -#: ../libpurple/protocols/toc/toc.c:546 #, c-format msgid "Failure unknown: %s." msgstr "ব্যর্থতা অজানা: %s।" -#: ../libpurple/protocols/toc/toc.c:549 +#, c-format msgid "Incorrect username or password." msgstr "ভুল ব্যবহারকারীর-নাম বা গুপ্তসংকেত।" # tithi -#: ../libpurple/protocols/toc/toc.c:552 +#, c-format msgid "The service is temporarily unavailable." msgstr "সেবাটি সাময়িকভাবে অপ্রাপ্য।" # tithi -#: ../libpurple/protocols/toc/toc.c:555 +#, c-format msgid "Your warning level is currently too high to log in." msgstr "আপনার সতর্কতা স্তর লগইন করার জন্য বর্তমানে খুব উচ্চ।" # tithi -#: ../libpurple/protocols/toc/toc.c:558 +#, c-format 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." @@ -14251,86 +10189,68 @@ "করুন। আপনি যদি চেষ্টা অব্যাহত রাখেন, আপনাকে দীর্ঘ সময় অপেক্ষা করতে হতে পারে।" # tithi -#: ../libpurple/protocols/toc/toc.c:560 #, c-format msgid "An unknown signon error has occurred: %s." msgstr "একটি অজানা সাইনঅন ত্রুটি সংঘটিত হয়েছে: %s।" # tithi -#: ../libpurple/protocols/toc/toc.c:563 #, c-format msgid "An unknown error, %d, has occurred. Info: %s" msgstr "একটি অজানা ত্রুটি, %d, সংঘটিত হয়েছে। তথ্য: %s" # tithi -#: ../libpurple/protocols/toc/toc.c:590 msgid "Invalid Groupname" msgstr "অবৈধ গ্রুপনাম" -#: ../libpurple/protocols/toc/toc.c:674 msgid "Connection Closed" msgstr "সংযোগ বন্ধ করা হয়েছে " -#: ../libpurple/protocols/toc/toc.c:714 msgid "Waiting for reply..." msgstr "উত্তরের অপেক্ষায়..." # tithi -#: ../libpurple/protocols/toc/toc.c:792 msgid "TOC has come back from its pause. You may now send messages again." msgstr "TOC পুনরায় সচল হয়েছে। আপনি এখন পুনরায় বার্তা পাঠাতে পারেন।" -#: ../libpurple/protocols/toc/toc.c:995 msgid "Password Change Successful" msgstr "গুপ্তসংকেত পরিবর্তন সফল হয়েছে" -#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:6981 msgid "_Group:" msgstr "গ্রুপ: (_G)" -#: ../libpurple/protocols/toc/toc.c:1535 msgid "Get Dir Info" msgstr "নির্দেশিকা তথ্য গ্রহণ করুন" -#: ../libpurple/protocols/toc/toc.c:1675 msgid "Set Dir Info" msgstr "নির্দেশিকা তথ্য নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/toc/toc.c:1797 #, c-format msgid "Could not open %s for writing!" msgstr "লেখার জন্য %s খুলতে পারেনি!" # tithi -#: ../libpurple/protocols/toc/toc.c:1833 msgid "File transfer failed; other side probably canceled." msgstr "ফাইল স্থানান্তর ব্যর্থ হয়েছে; অন্য দিক সম্ভবত বাতিল হয়েছে।" # tithi -#: ../libpurple/protocols/toc/toc.c:1878 ../libpurple/protocols/toc/toc.c:1918 -#: ../libpurple/protocols/toc/toc.c:2042 ../libpurple/protocols/toc/toc.c:2130 msgid "Could not connect for transfer." msgstr "স্থানান্তরের জন্য সংযোগ করতে পারেনি।" # tithi -#: ../libpurple/protocols/toc/toc.c:2075 msgid "Could not write file header. The file will not be transferred." msgstr "ফাইল শিরোনাম লিখতে পারেনি। ফাইল স্থানান্তর করা হবে না।" -#: ../libpurple/protocols/toc/toc.c:2175 msgid "Save As..." msgstr "এভাবে সংরক্ষণ করুন..." # tithi -#: ../libpurple/protocols/toc/toc.c:2209 #, c-format 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] " %1s %2s-কে %3d ফাইলটি গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s" msgstr[1] "%1s %2s-কে %3d ফাইলসমূহ গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s" -#: ../libpurple/protocols/toc/toc.c:2216 #, c-format msgid "%s requests you to send them a file" msgstr "%s আপনাকে একটি ফাইল পাঠাতে অনুরোধ করেছেন" @@ -14345,28 +10265,23 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/toc/toc.c:2306 ../libpurple/protocols/toc/toc.c:2308 msgid "TOC Protocol Plugin" msgstr "TOC প্রটোকল প্লাগইন" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:751 #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." msgstr "%s আপনাকে ওয়েবক্যাম আমন্ত্রন পাঠিয়েছেন, যা এখনও সমর্থিত নয়।" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:810 msgid "Your Yahoo! message did not get sent." msgstr "আপনার ইয়াহু! বার্তাটি পৌঁছায়নি।" -#: ../libpurple/protocols/yahoo/yahoo.c:923 #, c-format msgid "Yahoo! system message for %s:" msgstr "%s-এর জন্য ইয়াহু! সিস্টেম বার্তা:" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:1015 #, c-format msgid "" "%s has (retroactively) denied your request to add them to your list for the " @@ -14376,17 +10291,14 @@ "অনুরোধ বাতিল করেছে: %s।" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:1018 #, c-format msgid "%s has (retroactively) denied your request to add them to your list." msgstr "%s (আইনগতভাবে) আপনার তালিকাতে তাদের যোগ করতে আপনার অনুরোধ বাতিল করেছে।" -#: ../libpurple/protocols/yahoo/yahoo.c:1020 msgid "Add buddy rejected" msgstr "বন্ধু যোগ প্রত্যাখ্যান করেছে" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:2007 #, c-format msgid "" "The Yahoo server has requested the use of an unrecognized authentication " @@ -14397,11 +10309,9 @@ "ইয়াহুতে সফলভাবে যুক্ত হতে পারবেন না। হালনাগাদসমূহের জন্য %s পরীক্ষা করুন।" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:2011 msgid "Failed Yahoo! Authentication" msgstr "ইয়াহু! প্রমাণীকরণ ব্যর্থ হয়েছে" -#: ../libpurple/protocols/yahoo/yahoo.c:2091 #, c-format msgid "" "You have tried to ignore %s, but the user is on your buddy list. Clicking " @@ -14410,53 +10320,38 @@ "আপনি %s কে অগ্রাহ্য করতে চাচ্ছেন, কিন্তু ব্যবহারকারী আপনার বন্ধু তালিকায় রয়েছেন। " "\"হ্যাঁ\" ক্লিক করলে আপনার বন্ধু অপসারিত হবে এবং অগ্রাহ্য করা হবে।" -#: ../libpurple/protocols/yahoo/yahoo.c:2094 msgid "Ignore buddy?" msgstr "বন্ধু কি অগ্রাহ্য করবেন?" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:2170 msgid "Your account is locked, please log in to the Yahoo! website." msgstr "আপনার একাউন্ট বন্ধ, অনুগ্রহ করে ইয়াহু! ওয়েবসাইটে লগইন করুন।" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:2174 #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." msgstr "অজানা ত্রুটি নাম্বার %d। ইয়াহু! ওয়েব সাইটে লগইন করলে হয়ত এটি ঠিক হতে পারে।" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:2227 #, c-format msgid "Could not add buddy %s to group %s to the server list on account %s." msgstr "%3s একাউন্টের সার্ভার তালিকায় %2s গ্রুপে %1s বন্ধুকে যোগ করতে পারেনি।" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:2230 msgid "Could not add buddy to server list" msgstr "সার্ভার তালিকায় বন্ধু যোগ করতে পারেনি।" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:2352 #, c-format msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ শ্রবণযোগ্য %1s/%2s/%3s.swf ] %4s" -#: ../libpurple/protocols/yahoo/yahoo.c:2708 msgid "Received unexpected HTTP response from server." msgstr "সার্ভার থেকে অপ্রত্যাশিত এইচটিটিপি সাড়া পেয়েছে।" -#: ../libpurple/protocols/yahoo/yahoo.c:2738 -#: ../libpurple/protocols/yahoo/yahoo.c:2926 -#: ../libpurple/protocols/yahoo/yahoo.c:3032 -#: ../libpurple/protocols/yahoo/yahoo.c:3043 -#: ../libpurple/protocols/yahoo/yahoochat.c:1525 -#: ../libpurple/protocols/yahoo/yahoochat.c:1595 -#: ../libpurple/protocols/yahoo/ycht.c:586 msgid "Connection problem" msgstr "সংযোগ সমস্যা" -#: ../libpurple/protocols/yahoo/yahoo.c:2764 #, c-format msgid "" "Lost connection with %s:\n" @@ -14465,7 +10360,6 @@ "%1s এর সাথে সংযোগ হারিয়েছে:\n" "%2s" -#: ../libpurple/protocols/yahoo/yahoo.c:2789 #, c-format msgid "" "Could not establish a connection with %s:\n" @@ -14474,112 +10368,80 @@ "%1s এর সাথে সংযোগ স্থাপন করতে পারেনি:\n" "%2s" -#: ../libpurple/protocols/yahoo/yahoo.c:3159 -#: ../libpurple/protocols/yahoo/yahoo.c:3870 msgid "Not at Home" msgstr "বাসায় নেই" -#: ../libpurple/protocols/yahoo/yahoo.c:3161 -#: ../libpurple/protocols/yahoo/yahoo.c:3873 msgid "Not at Desk" msgstr "ডেস্কে নেই" -#: ../libpurple/protocols/yahoo/yahoo.c:3163 -#: ../libpurple/protocols/yahoo/yahoo.c:3876 msgid "Not in Office" msgstr "অফিসে নেই" -#: ../libpurple/protocols/yahoo/yahoo.c:3167 -#: ../libpurple/protocols/yahoo/yahoo.c:3882 msgid "On Vacation" msgstr "ছুটিতে" # fix me tithi -#: ../libpurple/protocols/yahoo/yahoo.c:3171 -#: ../libpurple/protocols/yahoo/yahoo.c:3888 msgid "Stepped Out" msgstr "চলে গেছে" -#: ../libpurple/protocols/yahoo/yahoo.c:3264 -#: ../libpurple/protocols/yahoo/yahoo.c:3294 msgid "Not on server list" msgstr "সার্ভার তালিকায় নেই" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:3311 -#: ../libpurple/protocols/yahoo/yahoo.c:3369 msgid "Appear Online" msgstr "অনলাইনে আছেন" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:3314 -#: ../libpurple/protocols/yahoo/yahoo.c:3390 msgid "Appear Permanently Offline" msgstr "স্থায়ীভাবে অফলাইনে আছেন" -#: ../libpurple/protocols/yahoo/yahoo.c:3332 msgid "Presence" msgstr "উপস্থিতি" -#: ../libpurple/protocols/yahoo/yahoo.c:3375 msgid "Appear Offline" msgstr "অফলাইনে উপস্থিত" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:3384 msgid "Don't Appear Permanently Offline" msgstr "অফলাইনে স্থায়ীভাবে থাকছে না" -#: ../libpurple/protocols/yahoo/yahoo.c:3432 msgid "Join in Chat" msgstr "আড্ডায় যোগ দিন" -#: ../libpurple/protocols/yahoo/yahoo.c:3438 msgid "Initiate Conference" msgstr "আলোচনা সভা শুরু করুন" -#: ../libpurple/protocols/yahoo/yahoo.c:3466 msgid "Presence Settings" msgstr "উপস্থিতির বিন্যাসনসমূহ" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:3472 msgid "Start Doodling" msgstr "হিজিবিজি কাজ শুরু করুন" -#: ../libpurple/protocols/yahoo/yahoo.c:3580 msgid "Activate which ID?" msgstr "কোন আইডি সক্রিয় করা হবে?" -#: ../libpurple/protocols/yahoo/yahoo.c:3591 msgid "Join whom in chat?" msgstr "কার সাথে আড্ডায় যোগ দিতে চান?" -#: ../libpurple/protocols/yahoo/yahoo.c:3603 msgid "Activate ID..." msgstr "আইডি সক্রিয় করুন..." -#: ../libpurple/protocols/yahoo/yahoo.c:3607 msgid "Join User in Chat..." msgstr "ব্যবহারকারীকে আড্ডায় যোগ করুন..." -#: ../libpurple/protocols/yahoo/yahoo.c:3612 msgid "Open Inbox" msgstr "ইনবক্স খুলুন" -#: ../libpurple/protocols/yahoo/yahoo.c:4233 msgid "join <room>: Join a chat room on the Yahoo network" msgstr "যোগ দিন &1lt;রুম&2gt;: ইয়াহু নেটওয়ার্কের একটি আড্ডার রুমে যোগ দিন" -#: ../libpurple/protocols/yahoo/yahoo.c:4238 msgid "list: List rooms on the Yahoo network" msgstr "তালিকা: ইয়াহু নেটওয়ার্কে রুমের তালিকা করুন" -#: ../libpurple/protocols/yahoo/yahoo.c:4246 msgid "doodle: Request user to start a Doodle session" msgstr "হিজিবিজি: ব্যবহারকারীকে একটি হিজিবিজি অধিবেশন শুরু করতে অনুরোধ করুন" -#: ../libpurple/protocols/yahoo/yahoo.c:4355 msgid "Yahoo ID..." msgstr "ইয়াহু আইডি..." @@ -14593,90 +10455,66 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/yahoo/yahoo.c:4464 -#: ../libpurple/protocols/yahoo/yahoo.c:4466 msgid "Yahoo Protocol Plugin" msgstr "ইয়াহু প্রটোকল প্লাগইন" -#: ../libpurple/protocols/yahoo/yahoo.c:4489 msgid "Yahoo Japan" msgstr "ইয়াহু জাপান" -#: ../libpurple/protocols/yahoo/yahoo.c:4492 msgid "Pager server" msgstr "পেজার সার্ভার" -#: ../libpurple/protocols/yahoo/yahoo.c:4495 msgid "Japan Pager server" msgstr "জাপানী পেজার সার্ভার" -#: ../libpurple/protocols/yahoo/yahoo.c:4498 msgid "Pager port" msgstr "পেজার পোর্ট" -#: ../libpurple/protocols/yahoo/yahoo.c:4501 msgid "File transfer server" msgstr "ফাইল স্থানান্তর সার্ভার" -#: ../libpurple/protocols/yahoo/yahoo.c:4504 msgid "Japan file transfer server" msgstr "জাপান ফাইল স্থানান্তর সার্ভার" -#: ../libpurple/protocols/yahoo/yahoo.c:4507 msgid "File transfer port" msgstr "ফাইল স্থানান্তর পোর্ট" -#: ../libpurple/protocols/yahoo/yahoo.c:4510 msgid "Chat room locale" msgstr "আড্ডা রুমের অবস্থা" # tithi -#: ../libpurple/protocols/yahoo/yahoo.c:4513 msgid "Ignore conference and chatroom invitations" msgstr "আলোচনা সভা এবং আড্ডার-রুমের আমন্ত্রন অগ্রাহ্য করুন" -#: ../libpurple/protocols/yahoo/yahoo.c:4521 msgid "Chat room list URL" msgstr "আড্ডার রুম তালিকার ইউআরএল" -#: ../libpurple/protocols/yahoo/yahoo.c:4524 msgid "Yahoo Chat server" msgstr "ইয়াহু আড্ডা সার্ভার" -#: ../libpurple/protocols/yahoo/yahoo.c:4527 msgid "Yahoo Chat port" msgstr "ইয়াহু আড্ডার পোর্ট" #. Write a local message to this conversation showing that a request for a #. * Doodle session has been made #. -#: ../libpurple/protocols/yahoo/yahoo_doodle.c:98 msgid "Sent Doodle request." msgstr "হিজিবিজি অনুরোধ পাঠানো হয়েছে" -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:319 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:328 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:337 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1111 -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1515 msgid "Unable to establish file descriptor." msgstr "ফাইল বর্ণনাকারী স্থাপন করতে অক্ষম।" -#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1410 #, c-format msgid "%s is trying to send you a group of %d files.\n" msgstr "%s আপনাকে %d ফাইলের একটি গ্রুপ পাঠানোর চেষ্টা করছে।\n" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:798 msgid "Yahoo! Japan Profile" msgstr "ইয়াহু! জাপান প্রোফাইল" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:799 msgid "Yahoo! Profile" msgstr "ইয়াহু! প্রোফাইল" # tithi -#: ../libpurple/protocols/yahoo/yahoo_profile.c:839 msgid "" "Sorry, profiles marked as containing adult content are not supported at this " "time." @@ -14685,7 +10523,6 @@ "এখন সমর্থিত নয়।" # tithi -#: ../libpurple/protocols/yahoo/yahoo_profile.c:841 msgid "" "If you wish to view this profile, you will need to visit this link in your " "web browser:" @@ -14693,49 +10530,36 @@ "আপনি যদি এই বৃত্তান্তটি দেখতে চান, আপনাকে আপনার ওয়েব ব্রাউজারের এই লিংকটি " "পরিদর্শন করতে হবে:" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1033 msgid "Yahoo! ID" msgstr "ইয়াহু! আইডি" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1109 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1113 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1117 msgid "Hobbies" msgstr "শখ" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1127 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1131 msgid "Latest News" msgstr "সাম্প্রতিক খবর" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1152 msgid "Home Page" msgstr "হোম পেজ" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1167 msgid "Cool Link 1" msgstr "কুল লিংক ১" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1172 msgid "Cool Link 2" msgstr "কুল লিংক ২" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1176 msgid "Cool Link 3" msgstr "কুল লিংক ৩" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1190 msgid "Last Update" msgstr "সর্বশেষ পরিবর্ধন" # tithi -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1203 msgid "" "This profile is in a language or format that is not supported at this time." msgstr "এই বৃত্তান্তটি এমন একটি ভাষায় বা বিন্যাসে যা এখন সমর্থিত নয়।" # tithi -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1218 msgid "" "Could not retrieve the user's profile. This most likely is a temporary " "server-side problem. Please try again later." @@ -14743,7 +10567,6 @@ "ব্যবহারকারীর বৃত্তান্ত উদ্ধার করতে পারনি। এটি সম্ভাবত একটি অস্থায়ী সার্ভার-পার্শ্বের " "সমস্যা। অনুগ্রহ করে পরবর্তীতে আবার চেষ্টা করুন।" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1221 msgid "" "Could not retrieve the user's profile. This most likely means that the user " "does not exist; however, Yahoo! sometimes does fail to find a user's " @@ -14753,42 +10576,34 @@ "নেই; যাই হোক, ইয়্যাহু! কখনোও ব্যবহারকারীর বৃত্তান্ত খুঁজে পেতে ব্যর্থ হয়। আপনি যদি " "জানেন যে ব্যবহারকারী বিদ্যমান, অনুগ্রহ করে পরবর্তীতে আবার চেষ্টা করুন।" -#: ../libpurple/protocols/yahoo/yahoo_profile.c:1227 msgid "The user's profile is empty." msgstr "ব্যবহারকারীর প্রোফাইল ফাঁকা।" # tithi -#: ../libpurple/protocols/yahoo/yahoochat.c:222 #, c-format msgid "%s declined your conference invitation to room \"%s\" because \"%s\"." msgstr "" "\"%3s\" এর কারণে %1s \"%2s\" রুমে আপনার আলোচনা সভার আমন্ত্রণ অস্বীকার করেছেন।" -#: ../libpurple/protocols/yahoo/yahoochat.c:224 msgid "Invitation Rejected" msgstr "আমন্ত্রন প্রত্যাখ্যান করা হয়েছে" -#: ../libpurple/protocols/yahoo/yahoochat.c:443 msgid "Failed to join chat" msgstr "আড্ডায় যোগ দিতে ব্যর্থ" #. -6 -#: ../libpurple/protocols/yahoo/yahoochat.c:446 msgid "Unknown room" msgstr "অজানা রুম" #. -15 -#: ../libpurple/protocols/yahoo/yahoochat.c:449 msgid "Maybe the room is full" msgstr "সম্ভবত রুমটি পূর্ণ" #. -35 -#: ../libpurple/protocols/yahoo/yahoochat.c:452 msgid "Not available" msgstr "বিদ্যমান নেই" # tithi -#: ../libpurple/protocols/yahoo/yahoochat.c:456 msgid "" "Unknown error. You may need to logout and wait five minutes before being " "able to rejoin a chatroom" @@ -14796,47 +10611,35 @@ "অজানা ত্রুটি। একটি আড্ডা-রুমে পুনরায় যোগদানের পূর্বে আপনাকে সম্ভবত লগ আউট করতে হবে " "এবং পাঁচ মিনিট অপেক্ষা করতে হবে।" -#: ../libpurple/protocols/yahoo/yahoochat.c:539 #, c-format msgid "You are now chatting in %s." msgstr "আপনি এখন %s-এ আড্ডা দিচ্ছেন।" -#: ../libpurple/protocols/yahoo/yahoochat.c:728 msgid "Failed to join buddy in chat" msgstr "বন্ধুকে আড্ডায় অংশগ্রহন করাতে ব্যর্থ হয়েছে" -#: ../libpurple/protocols/yahoo/yahoochat.c:729 msgid "Maybe they're not in a chat?" msgstr "সম্ভবত তারা আড্ডায় নেই?" -#: ../libpurple/protocols/yahoo/yahoochat.c:1425 -#: ../libpurple/protocols/yahoo/yahoochat.c:1451 msgid "Fetching the room list failed." msgstr "রুমের তালিকা খুঁজতে ব্যর্থ হয়েছে।" -#: ../libpurple/protocols/yahoo/yahoochat.c:1511 msgid "Voices" msgstr "কন্ঠস্বরসমূহ" -#: ../libpurple/protocols/yahoo/yahoochat.c:1514 msgid "Webcams" msgstr "ওয়েবক্যামসমূহ" -#: ../libpurple/protocols/yahoo/yahoochat.c:1525 -#: ../libpurple/protocols/yahoo/yahoochat.c:1595 msgid "Unable to fetch room list." msgstr "রুমের তালিকা খুঁজতে অক্ষম।" -#: ../libpurple/protocols/yahoo/yahoochat.c:1588 msgid "User Rooms" msgstr "ব্যবহারকারীর রুম" # tithi -#: ../libpurple/protocols/yahoo/ycht.c:457 msgid "Connection problem with the YCHT server." msgstr "YCHT সার্ভারের সাথে সংযোগে সমস্যা।" -#: ../libpurple/protocols/yahoo/ycht.c:476 #, c-format msgid "" "Lost connection with server\n" @@ -14845,7 +10648,6 @@ "সার্ভারের সাথে সংযোগ হারিয়েছে\n" "%s" -#: ../libpurple/protocols/zephyr/zephyr.c:357 msgid "" "(There was an error converting this message.\t Check the 'Encoding' option " "in the Account Editor)" @@ -14853,87 +10655,68 @@ "(এই বার্তাটি রুপান্তরে একটি ত্রুটি ছিল। একাউন্ট সম্পাদকে " "'সঙ্কেতায়ন' পছন্দ পরীক্ষা করুন)" -#: ../libpurple/protocols/zephyr/zephyr.c:755 #, c-format msgid "Unable to send to chat %s,%s,%s" msgstr "%1s,%2s,%3s আড্ডায় পাঠাতে সমর্থ নয়।" -#: ../libpurple/protocols/zephyr/zephyr.c:794 -#: ../libpurple/protocols/zephyr/zephyr.c:1173 msgid "Hidden or not logged-in" msgstr "লুকানো বা লগইন অবস্থায় নেই" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:800 -#: ../libpurple/protocols/zephyr/zephyr.c:1175 #, c-format msgid "
At %s since %s" msgstr "
%s হতে %s এ" -#: ../libpurple/protocols/zephyr/zephyr.c:1513 -#: ../libpurple/protocols/zephyr/zephyr.c:1514 msgid "Anyone" msgstr "যে কেউ" -#: ../libpurple/protocols/zephyr/zephyr.c:2375 msgid "_Class:" msgstr "শ্রেণী: (_C)" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2381 msgid "_Instance:" msgstr "ঘটনা: (_I)" -#: ../libpurple/protocols/zephyr/zephyr.c:2387 msgid "_Recipient:" msgstr "প্রাপক: (_R)" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2398 #, c-format msgid "Attempt to subscribe to %s,%s,%s failed" msgstr "%1s,%2s,%3s এর গ্রাহক হবার চেষ্টা ব্যর্থ হয়েছে" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2711 msgid "zlocate <nick>: Locate user" msgstr "z-নির্দেশ করুন &1lt;ডাকনাম&2gt;: ব্যবহারকারী নির্দেশ করুন" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2716 msgid "zl <nick>: Locate user" msgstr "zl <ডাকনাম>: ব্যবহারকারী নির্দেশ করুন" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2721 msgid "instance <instance>: Set the instance to be used on this class" msgstr "দৃষ্টান্ত &1lt;দৃষ্টান্ত&2gt;: এই শ্রেনীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2726 msgid "inst <instance>: Set the instance to be used on this class" msgstr "দৃষ্টান্ত &1lt;দৃষ্টান্ত&2gt;: এই শ্রেণীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2731 msgid "topic <instance>: Set the instance to be used on this class" msgstr "বিষয়বস্তু &1lt;দৃষ্টান্ত&2gt;: এই শ্রেণীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2737 msgid "sub <class> <instance> <recipient>: Join a new chat" msgstr "" "বিষয় &1lt;শ্রেণী&2gt; &3lt;দৃষ্টান্ত&4gt; &5lt;প্রাপক&6gt;: একটি নতুন আড্ডায় " "অংশগ্রহন করুন" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2742 msgid "" "zi <instance>: Send a message to <message,instance,*>" msgstr "zi &1lt;দৃষ্টান্ত&2gt;; একটি বার্তা পাঠান &3It;বার্তা,দৃষ্টান্ত,*&4gt;" # fix-me tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2748 msgid "" "zci <class> <instance>: Send a message to <class," "instance,*>" @@ -14942,7 +10725,6 @@ "দৃষ্টান্ত,*&6gt;" # fix-me tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2754 msgid "" "zcir <class> <instance> <recipient>: Send a message to <" "class,instance,recipient>" @@ -14951,7 +10733,6 @@ "শ্রেণী,দৃষ্টান্ত,প্রাপক&8gt;" # fix-me tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2760 msgid "" "zir <instance> <recipient>: Send a message to <MESSAGE," "instance,recipient>" @@ -14960,16 +10741,13 @@ "i>,প্রাপক&6gt;" # fix-me tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2765 msgid "zc <class>: Send a message to <class,PERSONAL,*>" msgstr "zc &1lt;শ্রেণী&2gt;: একটি বার্তা পাঠান &3lt;শ্রেণী,ব্যক্তিগত,*&4gt;" -#: ../libpurple/protocols/zephyr/zephyr.c:2841 msgid "Resubscribe" msgstr "পুনরায় গ্রাহক হোন" # fix me tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2844 msgid "Retrieve subscriptions from server" msgstr "সার্ভার থেকে শেয়ারসমূহ উদ্ধার করুন" @@ -14984,49 +10762,37 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/zephyr/zephyr.c:2937 -#: ../libpurple/protocols/zephyr/zephyr.c:2939 msgid "Zephyr Protocol Plugin" msgstr "Zephyr প্রটোকল প্লাগইন" -#: ../libpurple/protocols/zephyr/zephyr.c:2964 msgid "Use tzc" msgstr "tzc ব্যবহার করুন" -#: ../libpurple/protocols/zephyr/zephyr.c:2967 msgid "tzc command" msgstr "tzc নির্দেশ" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2970 msgid "Export to .anyone" msgstr ".যেকারও কাছে রপ্তানি করুন" -#: ../libpurple/protocols/zephyr/zephyr.c:2973 msgid "Export to .zephyr.subs" msgstr ".zephyr.subs এ রপ্তানি করুন" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2976 msgid "Import from .anyone" msgstr ".যেকারও কাছ থেকে আমদানি করুন" # fix me tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2979 msgid "Import from .zephyr.subs" msgstr ".zephyr.subs থেকে আমদানি করুন" -#: ../libpurple/protocols/zephyr/zephyr.c:2982 msgid "Realm" msgstr "এলাকা" # tithi -#: ../libpurple/protocols/zephyr/zephyr.c:2985 msgid "Exposure" msgstr "অনাবৃতকরণ" -#: ../libpurple/proxy.c:680 ../libpurple/proxy.c:1121 -#: ../libpurple/proxy.c:1256 ../libpurple/proxy.c:1916 #, c-format msgid "" "Unable to create socket:\n" @@ -15035,39 +10801,32 @@ "সকেট তৈরী করতে ব্যর্থ:\n" "%s" -#: ../libpurple/proxy.c:875 #, c-format msgid "Unable to parse response from HTTP proxy: %s\n" msgstr "HTTP প্রক্সি থেকে সাড়া গ্রহণ করতে অক্ষম: %s\n" -#: ../libpurple/proxy.c:908 ../libpurple/proxy.c:970 ../libpurple/proxy.c:999 #, c-format msgid "HTTP proxy connection error %d" msgstr "এইচটিটিপি প্রক্সি সংযোগের %d ত্রুটি" # tithi -#: ../libpurple/proxy.c:995 #, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling." msgstr "অনুমতি বাতিল: HTTP প্রক্সি সার্ভার %d পোর্ট টানেলকরণে বাধা দেয়।" -#: ../libpurple/proxy.c:1217 #, c-format msgid "Error resolving %s" msgstr "%s স্থিরকরণে ত্রুটি" -#: ../libpurple/proxy.c:2022 msgid "Could not resolve host name" msgstr "হোস্টের নাম স্থির করা হয়নি" # tithi -#: ../libpurple/prpl.c:426 #, c-format msgid "Requesting %s's attention..." msgstr "%s এর মনোযোগ কামনা করছে..." # tithi -#: ../libpurple/prpl.c:471 #, c-format msgid "%s has requested your attention!" msgstr "%s আপনার মনযোগ কামনা করেছে!" @@ -15075,38 +10834,31 @@ #. * #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons. #. -#: ../libpurple/request.h:1391 ../pidgin/gtkblist.c:554 msgid "_Yes" msgstr "হ্যাঁ (_Y)" -#: ../libpurple/request.h:1391 ../pidgin/gtkblist.c:554 msgid "_No" msgstr "না (_N)" #. * #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons. #. -#: ../libpurple/request.h:1411 msgid "_Accept" msgstr "গ্রহণ করুন (_A)" #. * #. * The default message to use when the user becomes auto-away. #. -#: ../libpurple/savedstatuses.c:48 msgid "I'm not here right now" msgstr "এই মুহুর্তে আমি এখানে নেই" -#: ../libpurple/savedstatuses.c:537 msgid "saved statuses" msgstr "সংরক্ষিত অবস্থাসমূহ" -#: ../libpurple/server.c:267 #, c-format msgid "%s is now known as %s.\n" msgstr "%1s এখন %2s নামে পরিচিত।\n" -#: ../libpurple/server.c:834 #, c-format msgid "" "%s has invited %s to the chat room %s:\n" @@ -15115,105 +10867,82 @@ "%1s %2s কে %3s আড্ডার রুমে আমন্ত্রন জানিয়েছেন:\n" "%4s" -#: ../libpurple/server.c:839 #, c-format msgid "%s has invited %s to the chat room %s\n" msgstr "%1s %2s কে %3s আড্ডার রুমে আমন্ত্রন জানিয়েছেন\n" -#: ../libpurple/server.c:843 msgid "Accept chat invitation?" msgstr "আড্ডার আমন্ত্রন কি গ্রহণ করবেন?" #. Shortcut -#: ../libpurple/smiley.c:411 ../pidgin/gtksmiley.c:525 msgid "Shortcut" msgstr "শর্টকাট" -#: ../libpurple/smiley.c:412 msgid "The text-shortcut for the smiley" msgstr "স্মাইলির জন্য পাঠ-শর্টকাট" #. Stored Image -#: ../libpurple/smiley.c:418 msgid "Stored Image" msgstr "সংরক্ষিত ছবি" # tithi -#: ../libpurple/smiley.c:419 msgid "Stored Image. (that'll have to do for now)" msgstr "সংরক্ষিত ছবি। (ঐটি এই সময়ের জন্য করতে হবে)" -#: ../libpurple/sslconn.c:167 msgid "SSL Connection Failed" msgstr "SSL সংযোগ ব্যর্থ হয়েছে" -#: ../libpurple/sslconn.c:169 msgid "SSL Handshake Failed" msgstr "SSL হ্যান্ডশেক ব্যর্থ হয়েছে" # tithi -#: ../libpurple/sslconn.c:171 msgid "SSL peer presented an invalid certificate" msgstr "SSL যুগল একটি অবৈধ প্রত্যয়নপত্র উপস্থাপন করেছিল" -#: ../libpurple/sslconn.c:174 msgid "Unknown SSL error" msgstr "অজানা SSL ত্রুটি" -#: ../libpurple/status.c:158 msgid "Unset" msgstr "অনির্ধারণ করুন" -#: ../libpurple/status.c:161 ../pidgin/gtkdocklet.c:553 -#: ../pidgin/gtkstatusbox.c:1097 msgid "Do not disturb" msgstr "বিরক্ত করবেন না" # fix me tithi -#: ../libpurple/status.c:164 msgid "Extended away" msgstr "অনেক বর্ধিত" -#: ../libpurple/status.c:165 msgid "Mobile" msgstr "মোবাইল" # tithi -#: ../libpurple/status.c:166 msgid "Listening to music" msgstr "গান শুনছে" -#: ../libpurple/status.c:615 #, c-format msgid "%s (%s) changed status from %s to %s" msgstr "%1s (%2s) অবস্থা %4s থেকে %3s তে পরিবর্তন করেছে" -#: ../libpurple/status.c:626 #, c-format msgid "%s (%s) is now %s" msgstr "%1s (%2s) এখন %3s" -#: ../libpurple/status.c:632 #, c-format msgid "%s (%s) is no longer %s" msgstr "%1s (%2s) আর %3s থাকবে না" -#: ../libpurple/status.c:1247 #, c-format msgid "%s became idle" msgstr "%s এখন অলস" -#: ../libpurple/status.c:1267 #, c-format msgid "%s became unidle" msgstr "%s এখন অলস নয়" -#: ../libpurple/status.c:1333 #, c-format msgid "+++ %s became idle" msgstr "+++ %s অলস হয়েছে" -#: ../libpurple/status.c:1335 #, c-format msgid "+++ %s became unidle" msgstr "+++ %s অলস হয়নি" @@ -15224,18 +10953,15 @@ #. * change this to "%X %x" if they want the time to be shown first, #. * followed by the date. #. -#: ../libpurple/util.c:730 #, c-format msgid "%x %X" msgstr "%x %X" -#: ../libpurple/util.c:2829 #, c-format msgid "Error Reading %s" msgstr "%s পড়ায় ত্রুটি" # tithi -#: ../libpurple/util.c:2830 #, c-format msgid "" "An error was encountered reading your %s. They have not been loaded, and " @@ -15244,50 +10970,42 @@ "আপনার %s পড়ার সময় একটি ত্রুটির বাধা দেয়েছিল। তাদেরকে লোড করা হয়নি, এবং পুরনো " "ফাইলটি %s~ এ নামান্তর করা হয়েছে।" -#: ../libpurple/util.c:3338 msgid "Calculating..." msgstr "গননা করা হচ্ছে..." -#: ../libpurple/util.c:3341 msgid "Unknown." msgstr "অজানা।" -#: ../libpurple/util.c:3367 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d সেকেন্ড" msgstr[1] "%d সেকেন্ড" -#: ../libpurple/util.c:3379 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d দিন" msgstr[1] "%d গুলো দিন" -#: ../libpurple/util.c:3387 #, c-format msgid "%s, %d hour" msgid_plural "%s, %d hours" msgstr[0] "%s, %d ঘন্টা" msgstr[1] "%s, %d গুলো ঘন্টা" -#: ../libpurple/util.c:3393 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ঘন্টা" msgstr[1] "%d গুলো ঘন্টা" -#: ../libpurple/util.c:3401 #, c-format msgid "%s, %d minute" msgid_plural "%s, %d minutes" msgstr[0] "%s, %d মিনিট" msgstr[1] "%s, %d গুলো মিনিট" -#: ../libpurple/util.c:3407 #, c-format msgid "%d minute" msgid_plural "%d minutes" @@ -15295,23 +11013,19 @@ msgstr[1] "%d গুলো মিনিট" # tithi -#: ../libpurple/util.c:3678 #, c-format msgid "Could not open %s: Redirected too many times" msgstr "%s খুলতে পারেনি: অনেকবার পুনঃনির্দেশ করা হয়েছে" -#: ../libpurple/util.c:3728 ../libpurple/util.c:4105 #, c-format msgid "Unable to connect to %s" msgstr "%s এ সংযোগ দিতে ব্যর্থ হয়েছে" -#: ../libpurple/util.c:3796 #, c-format msgid "Error reading from %s: response too long (%d bytes limit)" msgstr "%s থেকে পড়ায় ত্রুটি: প্রতিউত্তর অনেক দীর্ঘ্য (%d বাইটের সীমা)" # fix-me tithi -#: ../libpurple/util.c:3864 #, c-format msgid "" "Unable to allocate enough memory to hold the contents from %s. The web " @@ -15320,147 +11034,121 @@ "%s এর উপাদানসমূহ ধারণ করার মতো যথেষ্ট মেমোরি বরাদ্দ করতে অক্ষম। ওয়েব সার্ভার " "বিদ্বেষপরায়ণ কিছু করার চেষ্টা করতে পারে।" -#: ../libpurple/util.c:3899 #, c-format msgid "Error reading from %s: %s" msgstr "%1s থেকে পড়ায় ত্রুটি: %2s" -#: ../libpurple/util.c:3983 #, c-format msgid "Error writing to %s: %s" msgstr "%1s এ লেখায় ত্রুটি: %2s" -#: ../libpurple/util.c:4014 ../libpurple/util.c:4044 #, c-format msgid "Unable to connect to %s: %s" msgstr "%1s এর সাথে সংযোগে ব্যর্থ: %2s" # tithi -#: ../libpurple/util.c:4860 #, c-format msgid " - %s" msgstr " - %s" -#: ../libpurple/util.c:4866 #, c-format msgid " (%s)" msgstr " (%s)" # tithi #. 10053 -#: ../libpurple/win32/libc_interface.c:319 +#, c-format msgid "Connection interrupted by other software on your computer." msgstr "আপনার কম্পিউটারের অন্য সফটওয়্য়ার দ্বারা সংয়োগ বাধাগ্রস্থ হয়েছে। " #. 10054 -#: ../libpurple/win32/libc_interface.c:322 +#, c-format msgid "Remote host closed connection." msgstr "দূরবর্তী হোস্ট সংযোগ বন্ধ করেছে।" # fix me tithi #. 10060 -#: ../libpurple/win32/libc_interface.c:325 +#, c-format msgid "Connection timed out." msgstr "সংযোগ সময় উত্তীর্ণ হয়েছে।" #. 10061 -#: ../libpurple/win32/libc_interface.c:328 +#, c-format msgid "Connection refused." msgstr "সংযোগে প্রত্যাখান করা হয়েছে" #. 10048 -#: ../libpurple/win32/libc_interface.c:331 +#, c-format msgid "Address already in use." msgstr "ঠিকানাটি ইতোমধ্যে ব্যবহৃত হচ্ছে।" -#: ../pidgin.desktop.in.h:1 msgid "Internet Messenger" msgstr "ইন্টারনেট বার্তাবাহক" -#: ../pidgin.desktop.in.h:2 msgid "Pidgin Internet Messenger" msgstr "পিজিন ইন্টারনেট বার্তাবাহক" # tithi -#: ../pidgin.desktop.in.h:3 msgid "Send instant messages over multiple protocols" msgstr "বহুবিধ প্রটোকল দিয়ে তাৎক্ষনিক বার্তাসমূহ প্রেরণ করুন" -#: ../pidgin/eggtrayicon.c:128 msgid "Orientation" msgstr "পরিচিতি পর্ব" -#: ../pidgin/eggtrayicon.c:129 msgid "The orientation of the tray." msgstr "ট্রে প্রদর্শনের ধরন" #. Build the login options frame. -#: ../pidgin/gtkaccount.c:419 msgid "Login Options" msgstr "লগইনের পছন্দসমূহ" -#: ../pidgin/gtkaccount.c:440 msgid "Pro_tocol:" msgstr "প্রটোকল (_t):" -#: ../pidgin/gtkaccount.c:451 ../pidgin/gtkaccount.c:1090 msgid "_Username:" msgstr "ব্যবহারকারীরনাম (_U):" -#: ../pidgin/gtkaccount.c:558 msgid "Remember pass_word" msgstr "গুপ্তসংকেত স্মরণ রাখুন (_w)" #. Build the user options frame. -#: ../pidgin/gtkaccount.c:613 msgid "User Options" msgstr "ব্যবহারকারীর পছন্দসমূহ" -#: ../pidgin/gtkaccount.c:626 msgid "_Local alias:" msgstr "স্থানীয় ডাকনাম (_L):" -#: ../pidgin/gtkaccount.c:630 msgid "New _mail notifications" msgstr "নতুন মেইলের প্রজ্ঞাপন (_m)" # tithi #. Buddy icon -#: ../pidgin/gtkaccount.c:635 msgid "Use this buddy _icon for this account:" msgstr "এই একাউন্টের জন্য এই বন্ধু আইকন ব্যবহার করুন (_i):" #. Build the protocol options frame. -#: ../pidgin/gtkaccount.c:763 #, c-format msgid "%s Options" msgstr "%s পছন্দসমূহ" -#: ../pidgin/gtkaccount.c:961 msgid "Use GNOME Proxy Settings" msgstr "GNOME প্রক্সি বিন্যাসনসমূহ ব্যবহার করুন" -#: ../pidgin/gtkaccount.c:962 msgid "Use Global Proxy Settings" msgstr "সর্বজনীন প্রক্সি বিন্যাসনসমূহ ব্যবহার করুন" -#: ../pidgin/gtkaccount.c:968 msgid "No Proxy" msgstr "প্রক্সি নেই" -#: ../pidgin/gtkaccount.c:974 msgid "HTTP" msgstr "HTTP" -#: ../pidgin/gtkaccount.c:980 msgid "SOCKS 4" msgstr "SOCKS ৪" -#: ../pidgin/gtkaccount.c:986 msgid "SOCKS 5" msgstr "SOCKS ৫" -#: ../pidgin/gtkaccount.c:992 ../pidgin/gtkprefs.c:1337 msgid "Use Environmental Settings" msgstr "পারিপার্শ্বিক বিন্যাসনসমূহ ব্যবহার করুন" @@ -15469,72 +11157,55 @@ #. A) your network is really slow and you have nothing better to do than #. look at butterflies. #. B)You are looking really closely at something that shouldn't matter. -#: ../pidgin/gtkaccount.c:1031 msgid "If you look real closely" msgstr "আপনি যদি খুব ভালভাবে দেখেন" #. This is an easter egg. See the comment on the previous line in the source. -#: ../pidgin/gtkaccount.c:1034 msgid "you can see the butterflies mating" msgstr "আপনি প্রজাপতিদের সঙ্গী দেখতে পাবেন" -#: ../pidgin/gtkaccount.c:1055 msgid "Proxy Options" msgstr "প্রক্সির পছন্দসমূহ" -#: ../pidgin/gtkaccount.c:1069 ../pidgin/gtkprefs.c:1331 msgid "Proxy _type:" msgstr "প্রক্সির ধরন (_t):" -#: ../pidgin/gtkaccount.c:1078 ../pidgin/gtkprefs.c:1352 msgid "_Host:" msgstr "হোস্ট (_H):" -#: ../pidgin/gtkaccount.c:1082 ../pidgin/gtkprefs.c:1370 msgid "_Port:" msgstr "পোর্ট (_P):" -#: ../pidgin/gtkaccount.c:1097 ../pidgin/gtkprefs.c:1407 msgid "Pa_ssword:" msgstr "গুপ্তসংকেত (_s):" -#: ../pidgin/gtkaccount.c:1221 msgid "Unable to save new account" msgstr "নতুন একাউন্ট সংরক্ষণে অক্ষম" # tithi -#: ../pidgin/gtkaccount.c:1222 msgid "An account already exists with the specified criteria." msgstr "উল্লেখিত বৈশিষ্ট্যের একটি একাউন্ট ইতিমধ্যে বিদ্যমান।" -#: ../pidgin/gtkaccount.c:1498 msgid "Add Account" msgstr "একাউন্ট যোগ করুন" -#: ../pidgin/gtkaccount.c:1515 msgid "_Basic" msgstr "মৌলিক (_B)" # tithi -#: ../pidgin/gtkaccount.c:1523 msgid "Create _this new account on the server" msgstr "সার্ভারে এই নতুন একাউন্টটি তৈরী করুন (_t)" -#: ../pidgin/gtkaccount.c:1537 msgid "_Advanced" msgstr "অগ্রগামী (_A)" -#: ../pidgin/gtkaccount.c:1930 ../pidgin/gtkplugin.c:757 -#: ../pidgin/plugins/convcolors.c:327 msgid "Enabled" msgstr "সক্রিয়" -#: ../pidgin/gtkaccount.c:1958 msgid "Protocol" msgstr "প্রটোকল" # tithi -#: ../pidgin/gtkaccount.c:2154 #, c-format msgid "" "Welcome to %s!\n" @@ -15559,7 +11230,6 @@ "মুছে ফেলতে পারেন" # tithi -#: ../pidgin/gtkblist.c:551 #, c-format msgid "You have %d contact named %s. Would you like to merge them?" msgid_plural "" @@ -15568,7 +11238,6 @@ msgstr[1] "" "আপনার বর্তমানে %1dগুলো %2s নামের যোগাযোগ আছে। আপনি কি তাদের একত্রিত করতে চান?" -#: ../pidgin/gtkblist.c:552 msgid "" "Merging these contacts will cause them to share a single entry on the buddy " "list and use a single conversation window. You can separate them again by " @@ -15579,132 +11248,95 @@ "'প্রসারন' পছন্দ করার মাধ্যমে তাদেরকে পুনরায় আলাদা করতে পারেন" # tithi -#: ../pidgin/gtkblist.c:685 msgid "Please update the necessary fields." msgstr "অনুগ্রহ করে প্রয়োজনীয় ক্ষেত্রগুলো হালনাগাদ করুন।" -#: ../pidgin/gtkblist.c:1040 ../pidgin/gtkblist.c:6928 msgid "Room _List" msgstr "রুমের তালিকা (_L)" -#: ../pidgin/gtkblist.c:1060 msgid "" "Please enter the appropriate information about the chat you would like to " "join.\n" msgstr "" "অনুগ্রহ করে আপনি যে আড্ডায় যোগ দিতে চান তার সম্পর্কে যথাযথ তথ্য প্রবেশ করান।\n" -#: ../pidgin/gtkblist.c:1072 ../pidgin/gtkblist.c:6963 -#: ../pidgin/gtkpounce.c:560 ../pidgin/gtkroomlist.c:540 msgid "_Account:" msgstr "একাউন্ট (_A):" -#: ../pidgin/gtkblist.c:1351 ../pidgin/gtkprivacy.c:549 -#: ../pidgin/gtkprivacy.c:563 msgid "_Block" msgstr "ব্লক করুন (_B)" -#: ../pidgin/gtkblist.c:1351 msgid "Un_block" msgstr "ব্লক সরান (_b)" # tithi -#: ../pidgin/gtkblist.c:1394 msgid "Move to" msgstr "সরান" -#: ../pidgin/gtkblist.c:1434 msgid "Get _Info" msgstr "তথ্য সংগ্রহ করুন (_I)" -#: ../pidgin/gtkblist.c:1437 ../pidgin/pidginstock.c:91 msgid "I_M" msgstr "আইএম (_M)" -#: ../pidgin/gtkblist.c:1443 msgid "_Send File..." msgstr "ফাইল পাঠান... (_S)" -#: ../pidgin/gtkblist.c:1450 msgid "Add Buddy _Pounce..." msgstr "বন্ধু পাউন্স যোগ করুন... (_P)" -#: ../pidgin/gtkblist.c:1455 ../pidgin/gtkblist.c:1459 -#: ../pidgin/gtkblist.c:1622 ../pidgin/gtkblist.c:1649 msgid "View _Log" msgstr "লগ প্রদর্শন করুন (_L)" -#: ../pidgin/gtkblist.c:1465 ../pidgin/gtkblist.c:1594 msgid "Hide when offline" msgstr "অফলাইনে থাকলে লুকিয়ে রাখুন" -#: ../pidgin/gtkblist.c:1479 ../pidgin/gtkblist.c:1488 -#: ../pidgin/gtkblist.c:1632 ../pidgin/gtkblist.c:1655 msgid "_Alias..." msgstr "উপনাম... (_A)" -#: ../pidgin/gtkblist.c:1482 ../pidgin/gtkblist.c:1490 -#: ../pidgin/gtkblist.c:1634 ../pidgin/gtkblist.c:1657 msgid "_Remove" msgstr "অপসারণ করুন (_R)" -#: ../pidgin/gtkblist.c:1564 msgid "Set Custom Icon" msgstr "পছন্দসই আইকন নির্ধারণ করুন" -#: ../pidgin/gtkblist.c:1568 ../pidgin/gtkconv.c:2952 msgid "Remove Custom Icon" msgstr "পছন্দসই আইকন অপসারণ করুন" -#: ../pidgin/gtkblist.c:1582 msgid "Add _Buddy..." msgstr "বন্ধু যোগ করুন... (_B)" -#: ../pidgin/gtkblist.c:1585 msgid "Add C_hat..." msgstr "আড্ডা যোগ করুন...(_h)" -#: ../pidgin/gtkblist.c:1588 msgid "_Delete Group" msgstr "গ্রুপ মুছে ফেলুন (_D)" -#: ../pidgin/gtkblist.c:1590 msgid "_Rename" msgstr "পুনরায় নামকরণ করুন (_R)" #. join button -#: ../pidgin/gtkblist.c:1616 ../pidgin/gtkroomlist.c:313 -#: ../pidgin/gtkroomlist.c:587 ../pidgin/pidginstock.c:89 msgid "_Join" msgstr "যোগ দিন (_J)" -#: ../pidgin/gtkblist.c:1618 msgid "Auto-Join" msgstr "স্বয়ং-যোগ দিন" -#: ../pidgin/gtkblist.c:1620 msgid "Persistent" msgstr "পুনঃপুন ঘটনশীল" -#: ../pidgin/gtkblist.c:1630 msgid "_Edit Settings..." msgstr "বিন্যাসনসমূহ সম্পাদনা করুন... (_E)" -#: ../pidgin/gtkblist.c:1664 ../pidgin/gtkblist.c:1689 msgid "_Collapse" msgstr "গুটিয়ে ফেলুন (_C)" -#: ../pidgin/gtkblist.c:1694 msgid "_Expand" msgstr "বর্ধিত করুন (_E)" -#: ../pidgin/gtkblist.c:1947 ../pidgin/gtkblist.c:1959 -#: ../pidgin/gtkblist.c:5614 ../pidgin/gtkblist.c:5627 msgid "/Tools/Mute Sounds" msgstr "/টুলসমূহ/সাউন্ড বন্ধ রাখুন" -#: ../pidgin/gtkblist.c:2419 ../pidgin/gtkconv.c:4996 -#: ../pidgin/gtkpounce.c:451 msgid "" "You are not currently signed on with an account that can add that buddy." msgstr "আপনি বর্তমানে এমন কোনো একাউন্টে যুক্ত নন যা এই বন্ধুকে যোগ করতে পারে।" @@ -15713,152 +11345,116 @@ #. I don't believe this can happen currently, I think #. * everything that calls this function checks for one of the #. * above node types first. -#: ../pidgin/gtkblist.c:2805 msgid "Unknown node type" msgstr "অজানা নোডের ধরন" #. Buddies menu -#: ../pidgin/gtkblist.c:3260 msgid "/_Buddies" msgstr "/বন্ধুগণ (_B)" -#: ../pidgin/gtkblist.c:3261 msgid "/Buddies/New Instant _Message..." msgstr "/বন্ধুগণ/নতুন তাৎক্ষণিক বার্তা... (_M)" -#: ../pidgin/gtkblist.c:3262 msgid "/Buddies/Join a _Chat..." msgstr "/বন্ধুগণ/আড্ডায় যোগদান করুন... (_C)" -#: ../pidgin/gtkblist.c:3263 msgid "/Buddies/Get User _Info..." msgstr "/বন্ধুগণ/ব্যবহারকারীর তথ্য সংগ্রহ করুন... (_I)" -#: ../pidgin/gtkblist.c:3264 msgid "/Buddies/View User _Log..." msgstr "/বন্ধুগণ/ব্যবহারকারী লগ প্রদর্শন করুন... (_L)" -#: ../pidgin/gtkblist.c:3266 msgid "/Buddies/Sh_ow" msgstr "/বন্ধুগণ/দেখান (_o)" -#: ../pidgin/gtkblist.c:3267 msgid "/Buddies/Show/_Offline Buddies" msgstr "/বন্ধুগণ/দেখান/অফলাইন বন্ধুগণ (_O)" -#: ../pidgin/gtkblist.c:3268 msgid "/Buddies/Show/_Empty Groups" msgstr "/বন্ধুগণ/দেখান/ফাঁকা গ্রুপসমূহ (_E)" -#: ../pidgin/gtkblist.c:3269 msgid "/Buddies/Show/Buddy _Details" msgstr "/বন্ধুগণ/দেখান/বন্ধুর বিবরণ (_D)" -#: ../pidgin/gtkblist.c:3270 msgid "/Buddies/Show/Idle _Times" msgstr "/বন্ধুগণ/দেখান/অলস সময় (_T)" -#: ../pidgin/gtkblist.c:3271 msgid "/Buddies/Show/_Protocol Icons" msgstr "/বন্ধুগণ/দেখান/প্রটোকল আইকনগুলো (_P)" -#: ../pidgin/gtkblist.c:3272 msgid "/Buddies/_Sort Buddies" msgstr "/বন্ধুগণ/বন্ধুদের ক্রমানুসারে সাজান (_S)" -#: ../pidgin/gtkblist.c:3274 msgid "/Buddies/_Add Buddy..." msgstr "/বন্ধুগণ/বন্ধু যোগ করুন... (_A)" -#: ../pidgin/gtkblist.c:3275 msgid "/Buddies/Add C_hat..." msgstr "/বন্ধুগণ/আড্ডা যোগ করুন... (_h)" -#: ../pidgin/gtkblist.c:3276 msgid "/Buddies/Add _Group..." msgstr "/বন্ধুগণ/গ্রুপ যোগ করুন... (_G)" -#: ../pidgin/gtkblist.c:3278 msgid "/Buddies/_Quit" msgstr "/বন্ধুগণ/প্রস্থান করুন (_Q)" #. Accounts menu -#: ../pidgin/gtkblist.c:3281 msgid "/_Accounts" msgstr "/একাউন্টসমূহ (_A)" -#: ../pidgin/gtkblist.c:3282 ../pidgin/gtkblist.c:7659 msgid "/Accounts/Manage Accounts" msgstr "/একাউন্টসমূহ/একাউন্টসমূহ নিয়ন্ত্রণ করুন" #. Tools -#: ../pidgin/gtkblist.c:3285 msgid "/_Tools" msgstr "/টুলসমূহ (_T)" -#: ../pidgin/gtkblist.c:3286 msgid "/Tools/Buddy _Pounces" msgstr "/টুলসমূহ/বন্ধু পাউন্সসমূহ (_P)" -#: ../pidgin/gtkblist.c:3287 msgid "/Tools/_Certificates" msgstr "/টুলসমূহ/প্রত্যয়নপত্রসমূহ (_C)" -#: ../pidgin/gtkblist.c:3288 msgid "/Tools/Plu_gins" msgstr "/টুলসমূহ/প্লাগ-ইনসমূহ (_g)" -#: ../pidgin/gtkblist.c:3289 msgid "/Tools/Pr_eferences" msgstr "/টুলসমূহ/প্রাধিকারসমূহ (_e)" -#: ../pidgin/gtkblist.c:3290 msgid "/Tools/Pr_ivacy" msgstr "/টুলসমূহ/গোপনীয়তা (_i)" -#: ../pidgin/gtkblist.c:3291 msgid "/Tools/Smile_y" msgstr "/টুলসমূহ/স্মাইলী (_y)" -#: ../pidgin/gtkblist.c:3293 msgid "/Tools/_File Transfers" msgstr "/টুলসমূহ/ফাইল স্থানান্তর করে (_F)" -#: ../pidgin/gtkblist.c:3294 msgid "/Tools/R_oom List" msgstr "/টুলসমূহ/রুমের তালিকা (_o)" -#: ../pidgin/gtkblist.c:3295 msgid "/Tools/System _Log" msgstr "/টুলসমূহ/সিস্টেমের কার্যবিবরণী (_L)" -#: ../pidgin/gtkblist.c:3297 msgid "/Tools/Mute _Sounds" msgstr "/টুলসমূহ/সাউন্ড বন্ধ রাখুন (_S)" #. Help -#: ../pidgin/gtkblist.c:3299 msgid "/_Help" msgstr "/সহায়িকা (_H)" -#: ../pidgin/gtkblist.c:3300 msgid "/Help/Online _Help" msgstr "/সহায়িকা/অনলাইন সহায়িকা (_H)" -#: ../pidgin/gtkblist.c:3301 msgid "/Help/_Debug Window" msgstr "/সহায়িকা/ডিবাগ উইন্ডো (_D)" -#: ../pidgin/gtkblist.c:3303 ../pidgin/gtkblist.c:3305 msgid "/Help/_About" msgstr "/সহায়িকা/পরিচিতি (_A)" -#: ../pidgin/gtkblist.c:3338 #, c-format msgid "Account: %s" msgstr "একাউন্ট: %s" -#: ../pidgin/gtkblist.c:3357 #, c-format msgid "" "\n" @@ -15867,7 +11463,6 @@ "\n" "পেশা: %d" -#: ../pidgin/gtkblist.c:3363 #, c-format msgid "" "\n" @@ -15876,132 +11471,102 @@ "\n" "বিষয়বস্তু: %s" -#: ../pidgin/gtkblist.c:3363 msgid "(no topic set)" msgstr "(কোনো বিষয়বস্তু নির্ধারণ করা হয়নি)" -#: ../pidgin/gtkblist.c:3444 msgid "Buddy Alias" msgstr "বন্ধুর উপনাম" -#: ../pidgin/gtkblist.c:3473 msgid "Logged In" msgstr "লগইন করেছে" -#: ../pidgin/gtkblist.c:3519 msgid "Last Seen" msgstr "শেষ দেখেছিলাম" # fix me tithi -#: ../pidgin/gtkblist.c:3540 msgid "Spooky" msgstr "ভূতুরে" -#: ../pidgin/gtkblist.c:3542 msgid "Awesome" msgstr "দারুণ" # fix- me tithi -#: ../pidgin/gtkblist.c:3544 msgid "Rockin'" msgstr "Rockin'" -#: ../pidgin/gtkblist.c:3575 msgid "Total Buddies" msgstr "মোট বন্ধু" # fix me tithi -#: ../pidgin/gtkblist.c:3951 #, c-format msgid "Idle %dd %dh %02dm" msgstr "%dd %dh %02dm অলস" -#: ../pidgin/gtkblist.c:3953 #, c-format msgid "Idle %dh %02dm" msgstr "%dh %02dm অলস" -#: ../pidgin/gtkblist.c:3955 #, c-format msgid "Idle %dm" msgstr "%dm অলস" -#: ../pidgin/gtkblist.c:4109 msgid "/Buddies/New Instant Message..." msgstr "/বন্ধুগণ/নতুন তাৎক্ষণিক বার্তা..." -#: ../pidgin/gtkblist.c:4110 ../pidgin/gtkblist.c:4143 msgid "/Buddies/Join a Chat..." msgstr "/বন্ধুগণ/আড্ডায় যোগদান করুন..." -#: ../pidgin/gtkblist.c:4111 msgid "/Buddies/Get User Info..." msgstr "/বন্ধুগণ/ব্যবহারকারীর তথ্য গ্রহন করুন..." -#: ../pidgin/gtkblist.c:4112 msgid "/Buddies/Add Buddy..." msgstr "/বন্ধুগণ/বন্ধু যোগ করুন..." -#: ../pidgin/gtkblist.c:4113 ../pidgin/gtkblist.c:4146 msgid "/Buddies/Add Chat..." msgstr "/বন্ধুগণ/আড্ডা যোগ করুন..." -#: ../pidgin/gtkblist.c:4114 msgid "/Buddies/Add Group..." msgstr "/বন্ধুগণ/গ্রুপ যোগ করুন..." -#: ../pidgin/gtkblist.c:4149 msgid "/Tools/Privacy" msgstr "/টুলসমূহ/গোপনীয়তা" -#: ../pidgin/gtkblist.c:4152 msgid "/Tools/Room List" msgstr "/টুলসমূহ/রুমের তালিকা" -#: ../pidgin/gtkblist.c:4284 ../pidgin/gtkdocklet.c:155 -#: ../pidgin/gtkdocklet.c:160 #, c-format msgid "%d unread message from %s\n" msgid_plural "%d unread messages from %s\n" msgstr[0] "%1dটি অপঠিত বার্তা %2s হতে\n" msgstr[1] "%1dগুলো অপঠিত বার্তা %2s হতে\n" -#: ../pidgin/gtkblist.c:4447 msgid "Manually" msgstr "হস্তচালিতভাবে" -#: ../pidgin/gtkblist.c:4450 msgid "By status" msgstr "অবস্থা অনুসারে" -#: ../pidgin/gtkblist.c:4451 msgid "By log size" msgstr "লগের আকার অনুসারে" -#: ../pidgin/gtkblist.c:4787 #, c-format msgid "%s disconnected" msgstr "%s বিচ্ছিন্ন" -#: ../pidgin/gtkblist.c:4789 #, c-format msgid "%s disabled" msgstr "%s নিষ্ক্রিয়" -#: ../pidgin/gtkblist.c:4793 msgid "Reconnect" msgstr "পুনরায় সংযোগ দিন" -#: ../pidgin/gtkblist.c:4793 ../pidgin/gtkblist.c:4911 msgid "Re-enable" msgstr "পুনরায় সক্রিয় করুন" # tithi -#: ../pidgin/gtkblist.c:4909 msgid "Welcome back!" msgstr "পুনরায় স্বাগতম!" -#: ../pidgin/gtkblist.c:4945 #, c-format msgid "%d account was disabled because you signed on from another location:" msgid_plural "" @@ -16010,24 +11575,19 @@ msgstr[1] "" "আপনি অন্য একটি স্থান থেকে সাইন অন করার কারণে %d একাউন্টগুলো নিষ্ক্রিয় ছিল:" -#: ../pidgin/gtkblist.c:5226 msgid "Username:" msgstr "ব্যবহারকারীর-নাম:" -#: ../pidgin/gtkblist.c:5233 msgid "Password:" msgstr "গুপ্তসংকেত:" -#: ../pidgin/gtkblist.c:5244 msgid "_Login" msgstr "লগইন (_L)" -#: ../pidgin/gtkblist.c:5330 msgid "/Accounts" msgstr "/একাউন্টগুলো" #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy -#: ../pidgin/gtkblist.c:5344 #, c-format msgid "" "Welcome to %s!\n" @@ -16046,54 +11606,42 @@ #. set the Show Offline Buddies option. must be done #. * after the treeview or faceprint gets mad. -Robot101 #. -#: ../pidgin/gtkblist.c:5608 msgid "/Buddies/Show/Offline Buddies" msgstr "/বন্ধুগণ/দেখান/অফলাইন বন্ধুগণ" -#: ../pidgin/gtkblist.c:5611 msgid "/Buddies/Show/Empty Groups" msgstr "/বন্ধুগণ/দেখান/ফাঁকা গ্রুপগুলো" -#: ../pidgin/gtkblist.c:5617 msgid "/Buddies/Show/Buddy Details" msgstr "/বন্ধুগণ/দেখান/বন্ধুদের বিস্তারিত" -#: ../pidgin/gtkblist.c:5620 msgid "/Buddies/Show/Idle Times" msgstr "/বন্ধুগণ/দোখান/অলস সময়" -#: ../pidgin/gtkblist.c:5623 msgid "/Buddies/Show/Protocol Icons" msgstr "/বন্ধুগণ/দেখান/প্রটোকল আইকনগুলো" -#: ../pidgin/gtkblist.c:6589 msgid "Add a buddy.\n" msgstr "বন্ধু যোগ করুন।\n" -#: ../pidgin/gtkblist.c:6604 msgid "Buddy's _username:" msgstr "বন্ধুর ব্যবহারকারীর-নাম (_u):" # and this -#: ../pidgin/gtkblist.c:6626 msgid "(Optional) A_lias:" msgstr "উপনাম (ঐচ্ছিক) (_l):" -#: ../pidgin/gtkblist.c:6644 msgid "Add buddy to _group:" msgstr "গ্রুপে বন্ধু যোগ করুন (_g):" -#: ../pidgin/gtkblist.c:6893 msgid "This protocol does not support chat rooms." msgstr "এই প্রটোকলটি আড্ডার রুমসমূহ সমর্থন করে না।" -#: ../pidgin/gtkblist.c:6909 msgid "" "You are not currently signed on with any protocols that have the ability to " "chat." msgstr "আপনি বর্তমানে আড্ডার যোগ্য এমন কোনো প্রটোকলে যুক্ত হননি।" -#: ../pidgin/gtkblist.c:6953 msgid "" "Please enter an alias, and the appropriate information about the chat you " "would like to add to your buddy list.\n" @@ -16101,80 +11649,62 @@ "অনুগ্রহ করে আপনি আপনার বন্ধু তালিকায় যুক্ত করতে চান এমন আড্ডার একটি ডাকনাম,এবং " "যথাযথ তথ্য প্রবেশ করান।\n" -#: ../pidgin/gtkblist.c:6976 msgid "A_lias:" msgstr "উপনাম (_l):" # tithi -#: ../pidgin/gtkblist.c:6983 msgid "Auto_join when account becomes online." msgstr "একাউন্ট অনলাইনে থাকলে স্বয়ংক্রিয় ভাবে যোগদান করুন।" # tithi -#: ../pidgin/gtkblist.c:6984 msgid "_Remain in chat after window is closed." msgstr "উইন্ডো বন্ধ হবার পরেও আড্ডায় থাকুন (_R)।" -#: ../pidgin/gtkblist.c:7010 msgid "Please enter the name of the group to be added." msgstr "অনুগ্রহ করে যুক্ত করতে হবে এমন গ্রুপের নাম প্রবেশ করান।" -#: ../pidgin/gtkblist.c:7673 msgid "Enable Account" msgstr "একাউন্ট সক্রিয় করুন" -#: ../pidgin/gtkblist.c:7679 msgid "/Accounts/Enable Account" msgstr "/একাউন্টসমূহ/একাউন্ট সক্রিয় করুন" -#: ../pidgin/gtkblist.c:7732 msgid "/Accounts/" msgstr "/একাউন্টসমূহ/" -#: ../pidgin/gtkblist.c:7755 msgid "_Edit Account" msgstr "একাউন্ট সম্পাদন করুন (_E)" -#: ../pidgin/gtkblist.c:7768 ../pidgin/gtkconv.c:3301 msgid "No actions available" msgstr "কোনো কাজ সহজলভ্য নয়" -#: ../pidgin/gtkblist.c:7776 msgid "_Disable" msgstr "নিষ্ক্রিয় (_D)" -#: ../pidgin/gtkblist.c:7794 msgid "/Tools" msgstr "/টুলসমূহ" -#: ../pidgin/gtkblist.c:7864 msgid "/Buddies/Sort Buddies" msgstr "/বন্ধুগণ/বন্ধুদের ক্রমানুসারে সাজান" #. Widget creation function -#: ../pidgin/gtkcertmgr.c:541 msgid "SSL Servers" msgstr "SSL সার্ভারসমূহ" -#: ../pidgin/gtkconv.c:489 msgid "Unknown command." msgstr "অজানা নির্দেশ।" -#: ../pidgin/gtkconv.c:773 ../pidgin/gtkconv.c:800 msgid "That buddy is not on the same protocol as this chat." msgstr "ঐ বন্ধুটি এই আড্ডার মতো একই প্রটোকলে নেই।" -#: ../pidgin/gtkconv.c:794 msgid "" "You are not currently signed on with an account that can invite that buddy." msgstr "আপনি বর্তমানে এমন কোনো একাউন্টে যুক্ত নন যা ঐ বন্ধুকে আমন্ত্রণ জানাতে পারে।" -#: ../pidgin/gtkconv.c:848 msgid "Invite Buddy Into Chat Room" msgstr "বন্ধুকে আড্ডার রুমে আমন্ত্রণ জানান" #. Put our happy label in it. -#: ../pidgin/gtkconv.c:878 msgid "" "Please enter the name of the user you wish to invite, along with an optional " "invite message." @@ -16182,185 +11712,140 @@ "একটি ঐচ্ছিক আমন্ত্রণ বার্তা সহ, অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ জানাতে চান " "তার নামটি প্রবেশ করান।" -#: ../pidgin/gtkconv.c:899 msgid "_Buddy:" msgstr "বন্ধু (_B):" -#: ../pidgin/gtkconv.c:912 ../pidgin/gtksavedstatuses.c:1215 -#: ../pidgin/gtksavedstatuses.c:1529 msgid "_Message:" msgstr "বার্তা (_M):" -#: ../pidgin/gtkconv.c:977 #, c-format msgid "

Conversation with %s

\n" msgstr "

%s-এর সঙ্গে কথোপকথন

\n" -#: ../pidgin/gtkconv.c:1015 msgid "Save Conversation" msgstr "কথোপকথন সংরক্ষণ করুন" -#: ../pidgin/gtkconv.c:1161 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:740 msgid "Find" msgstr "খুঁজুন" -#: ../pidgin/gtkconv.c:1187 ../pidgin/gtkdebug.c:195 msgid "_Search for:" msgstr "খুঁজছে (_S):" -#: ../pidgin/gtkconv.c:1708 msgid "Un-Ignore" msgstr "অগ্রাহ্য করবেন না" -#: ../pidgin/gtkconv.c:1711 msgid "Ignore" msgstr "অগ্রাহ্য করুন" -#: ../pidgin/gtkconv.c:1731 msgid "Get Away Message" msgstr "অনুপস্থিতি বার্তা গ্রহণ করুন" -#: ../pidgin/gtkconv.c:1754 msgid "Last said" msgstr "সর্বশেষ বলা হয়েছে" -#: ../pidgin/gtkconv.c:2770 msgid "Unable to save icon file to disk." msgstr "ডিস্কে আইকন ফাইল সংরক্ষণ করতে অক্ষম।" -#: ../pidgin/gtkconv.c:2865 msgid "Save Icon" msgstr "আইকন সংরক্ষণ করুন" -#: ../pidgin/gtkconv.c:2923 msgid "Animate" msgstr "অ্যানিমেট" -#: ../pidgin/gtkconv.c:2928 msgid "Hide Icon" msgstr "আইকন লুকিয়ে রাখুন" -#: ../pidgin/gtkconv.c:2931 msgid "Save Icon As..." msgstr "এভাবে আইকন সংরক্ষণ করুন..." -#: ../pidgin/gtkconv.c:2935 msgid "Set Custom Icon..." msgstr "পছন্দসই আইকন নির্ধারণ করুন..." -#: ../pidgin/gtkconv.c:2939 msgid "Change Size" msgstr "আকার পরিবর্তন করুন" # tithi -#: ../pidgin/gtkconv.c:3077 msgid "Show All" msgstr "সব প্রদর্শন করুন" #. Conversation menu -#: ../pidgin/gtkconv.c:3096 msgid "/_Conversation" msgstr "/কথোপকথন (_C)" -#: ../pidgin/gtkconv.c:3098 msgid "/Conversation/New Instant _Message..." msgstr "/কথোপকথন/নতুন তাৎক্ষণিক বার্তা... (_M)" -#: ../pidgin/gtkconv.c:3103 msgid "/Conversation/_Find..." msgstr "/কথোপকথন/খুঁজুন... (_F)" -#: ../pidgin/gtkconv.c:3105 msgid "/Conversation/View _Log" msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন (_L)" -#: ../pidgin/gtkconv.c:3106 msgid "/Conversation/_Save As..." msgstr "/কথোপকথন/এভাবে সংরক্ষণ করুন... (_S)" # fix me tithi -#: ../pidgin/gtkconv.c:3108 msgid "/Conversation/Clea_r Scrollback" msgstr "/কথোপকথন/স্ক্রলবেক মুছুন (_r)" -#: ../pidgin/gtkconv.c:3112 msgid "/Conversation/Se_nd File..." msgstr "/কথোপকথন/ফাইল প্রেরণ করুন... (_n)" -#: ../pidgin/gtkconv.c:3113 msgid "/Conversation/Add Buddy _Pounce..." msgstr "/কথোপকথন/বন্ধু পাউন্স যোগ করুন... (_P)" -#: ../pidgin/gtkconv.c:3115 msgid "/Conversation/_Get Info" msgstr "/কথোপকথন/তথ্য সংগ্রহ করুন (_G)" -#: ../pidgin/gtkconv.c:3117 msgid "/Conversation/In_vite..." msgstr "/কথোপকথন/আমন্ত্রণ করুন... (_v)" -#: ../pidgin/gtkconv.c:3119 msgid "/Conversation/M_ore" msgstr "/কথোপকথন/আরও (_o)" -#: ../pidgin/gtkconv.c:3123 msgid "/Conversation/Al_ias..." msgstr "/কথোপকথন/উপনাম... (_i)" -#: ../pidgin/gtkconv.c:3125 msgid "/Conversation/_Block..." msgstr "/কথোপকথন/ব্লক করুন... (_B)" -#: ../pidgin/gtkconv.c:3127 msgid "/Conversation/_Unblock..." msgstr "/কথোপকথন/ব্লক মুক্ত করুন... (_U)" -#: ../pidgin/gtkconv.c:3129 msgid "/Conversation/_Add..." msgstr "/কথোপকথন/যোগ করুন... (_A)" -#: ../pidgin/gtkconv.c:3131 msgid "/Conversation/_Remove..." msgstr "/কথোপকথন/অপসারণ করুন... (_R)" -#: ../pidgin/gtkconv.c:3136 msgid "/Conversation/Insert Lin_k..." msgstr "/কথোপকথন/লিঙ্ক প্রবেশ করান... (_k)" -#: ../pidgin/gtkconv.c:3138 msgid "/Conversation/Insert Imag_e..." msgstr "/কথোপকথন/চিত্র প্রবেশ করান... (_e)" -#: ../pidgin/gtkconv.c:3144 msgid "/Conversation/_Close" msgstr "/কথোপকথন/বন্ধ করুন (_C)" #. Options -#: ../pidgin/gtkconv.c:3148 msgid "/_Options" msgstr "/পছন্দসমূহ (_O)" -#: ../pidgin/gtkconv.c:3149 msgid "/Options/Enable _Logging" msgstr "/পছন্দসমূহ/লগ সক্রিয় করুন (_L)" -#: ../pidgin/gtkconv.c:3150 msgid "/Options/Enable _Sounds" msgstr "/পছন্দসমূহ/শব্দ সক্রিয় করুন (_S)" -#: ../pidgin/gtkconv.c:3152 msgid "/Options/Show Formatting _Toolbars" msgstr "/পছন্দসমূহ/বিন্যাসকরণ টুলবারসমূহ প্রদর্শন করুন (_T)" -#: ../pidgin/gtkconv.c:3153 msgid "/Options/Show Ti_mestamps" msgstr "/পছন্দসমূহ/সময়-স্ট্যাম্প প্রদর্শন করুন (_m)" -#: ../pidgin/gtkconv.c:3289 msgid "/Conversation/More" msgstr "/কথোপকথন/আরও" -#: ../pidgin/gtkconv.c:3345 msgid "/Options" msgstr "/পছন্দসমূহ" @@ -16369,79 +11854,60 @@ #. Make sure the 'Conversation -> More' menuitems are regenerated whenever #. * the 'Conversation' menu pops up because the entries can change after the #. * conversation is created. -#: ../pidgin/gtkconv.c:3380 ../pidgin/gtkconv.c:3412 msgid "/Conversation" msgstr "/কথোপকথন" -#: ../pidgin/gtkconv.c:3420 msgid "/Conversation/View Log" msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন" -#: ../pidgin/gtkconv.c:3426 msgid "/Conversation/Send File..." msgstr "/কথোপকথন/ফাইল প্রেরণ করুন..." -#: ../pidgin/gtkconv.c:3430 msgid "/Conversation/Add Buddy Pounce..." msgstr "/কথোপকথন/বন্ধু পাউন্স যোগ করুন..." -#: ../pidgin/gtkconv.c:3436 msgid "/Conversation/Get Info" msgstr "/কথোপকথন/তথ্য গ্রহণ করুন" -#: ../pidgin/gtkconv.c:3440 msgid "/Conversation/Invite..." msgstr "/কথোপকথন/আমন্ত্রণ করুন..." -#: ../pidgin/gtkconv.c:3446 msgid "/Conversation/Alias..." msgstr "/কথোপকথন/উপনাম..." -#: ../pidgin/gtkconv.c:3450 msgid "/Conversation/Block..." msgstr "/কথোপকথন/ব্লক করুন..." -#: ../pidgin/gtkconv.c:3454 msgid "/Conversation/Unblock..." msgstr "/কথোপকথন/ব্লক মুক্ত করুন..." -#: ../pidgin/gtkconv.c:3458 msgid "/Conversation/Add..." msgstr "/কথোপকথন/যোগ করুন..." -#: ../pidgin/gtkconv.c:3462 msgid "/Conversation/Remove..." msgstr "/কথোপকথন/অপসারণ করুন..." -#: ../pidgin/gtkconv.c:3468 msgid "/Conversation/Insert Link..." msgstr "/কথোপকথন/লিঙ্ক প্রবেশ করান..." -#: ../pidgin/gtkconv.c:3472 msgid "/Conversation/Insert Image..." msgstr "/কথোপকথন/চিত্র প্রবেশ করান..." -#: ../pidgin/gtkconv.c:3478 msgid "/Options/Enable Logging" msgstr "/পছন্দসমূহ/লগ সক্রিয় করুন" -#: ../pidgin/gtkconv.c:3481 msgid "/Options/Enable Sounds" msgstr "/পছন্দসমূহ/শব্দ সক্রিয় করুন" -#: ../pidgin/gtkconv.c:3494 msgid "/Options/Show Formatting Toolbars" msgstr "/পছন্দসমূহ/বিন্যাসকরণ টুলবারসমূহ প্রদর্শন করুন" -#: ../pidgin/gtkconv.c:3497 msgid "/Options/Show Timestamps" msgstr "/পছন্দসমূহ/সময়-স্ট্যাম্প প্রদর্শন করুন" -#: ../pidgin/gtkconv.c:3575 msgid "User is typing..." msgstr "ব্যবহারকারী টাইপ করছে..." -#: ../pidgin/gtkconv.c:3649 #, c-format msgid "" "\n" @@ -16451,559 +11917,410 @@ "%s টাইপ করা বন্ধ করে দিয়েছে" #. Build the Send To menu -#: ../pidgin/gtkconv.c:3829 ../pidgin/gtkconv.c:8417 msgid "S_end To" msgstr "প্রেরণ করুন (_S)" -#: ../pidgin/gtkconv.c:4498 ../pidgin/plugins/sendbutton.c:61 msgid "_Send" msgstr "প্রেরণ করুন (_S)" #. Setup the label telling how many people are in the room. -#: ../pidgin/gtkconv.c:4657 msgid "0 people in room" msgstr "রুমে ০ জন ব্যক্তি উপস্থিত" -#: ../pidgin/gtkconv.c:5958 ../pidgin/gtkconv.c:6079 #, c-format msgid "%d person in room" msgid_plural "%d people in room" msgstr[0] "রুমে %d জন ব্যক্তি উপস্থিত" msgstr[1] "রুমে %d জন ব্যক্তি উপস্থিত" -#: ../pidgin/gtkconv.c:6623 ../pidgin/gtkstatusbox.c:691 msgid "Typing" msgstr "টাইপ করছে" -#: ../pidgin/gtkconv.c:6627 msgid "Stopped Typing" msgstr "টাইপ করা বন্ধ করেছে" -#: ../pidgin/gtkconv.c:6630 msgid "Nick Said" msgstr "নিক বলেছে" -#: ../pidgin/gtkconv.c:6633 msgid "Unread Messages" msgstr "অপঠিত বার্তাসমূহ" -#: ../pidgin/gtkconv.c:6639 msgid "New Event" msgstr "নতুন ঘটনা" # fix me tithi -#: ../pidgin/gtkconv.c:7889 msgid "clear: Clears all conversation scrollbacks." msgstr "মুছে ফেলুন: সব কথোপকথনের স্ক্রলবেক মুছে ফেলুন।" -#: ../pidgin/gtkconv.c:8093 msgid "Confirm close" msgstr "বন্ধ নিশ্চিত করুন" -#: ../pidgin/gtkconv.c:8125 msgid "You have unread messages. Are you sure you want to close the window?" msgstr "আপনার অপঠিত বার্তা আছে। আপনি কি নিশ্চিত আপনি উইন্ডোটি বন্ধ করতে চান?" -#: ../pidgin/gtkconv.c:8758 msgid "Close other tabs" msgstr "অন্যান্য ট্যাবগুলো বন্ধ করুন" -#: ../pidgin/gtkconv.c:8764 msgid "Close all tabs" msgstr "সকল ট্যাব বন্ধ করুন" -#: ../pidgin/gtkconv.c:8772 msgid "Detach this tab" msgstr "এই ট্যাবটি আলাদা করুন" -#: ../pidgin/gtkconv.c:8778 msgid "Close this tab" msgstr "এই ট্যাবটি বন্ধ করুন" -#: ../pidgin/gtkconv.c:9300 msgid "Close conversation" msgstr "কথোপকথন বন্ধ করুন" -#: ../pidgin/gtkconv.c:9904 msgid "Last created window" msgstr "সর্বশেষ তৈরিকৃত উইন্ডো" -#: ../pidgin/gtkconv.c:9906 msgid "Separate IM and Chat windows" msgstr "তাৎক্ষণিক বার্তা ও আড্ডার উইন্ডো পৃথক করুন" -#: ../pidgin/gtkconv.c:9908 ../pidgin/gtkprefs.c:1573 msgid "New window" msgstr "নতুন উইন্ডো" -#: ../pidgin/gtkconv.c:9910 msgid "By group" msgstr "গ্রুপ অনুসারে" -#: ../pidgin/gtkconv.c:9912 msgid "By account" msgstr "একাউন্ট অনুসারে" -#: ../pidgin/gtkdebug.c:234 msgid "Save Debug Log" msgstr "ডিবাগ কার্যবিবরণী সংরক্ষণ করুন" -#: ../pidgin/gtkdebug.c:582 msgid "Invert" msgstr "উল্টান" -#: ../pidgin/gtkdebug.c:585 msgid "Highlight matches" msgstr "প্রনির্দেশ মিলসমূহ" -#: ../pidgin/gtkdebug.c:652 msgid "_Icon Only" msgstr "শুধুমাত্র আইকন (_I)" -#: ../pidgin/gtkdebug.c:653 msgid "_Text Only" msgstr "শুধুমাত্র পাঠ (_T)" -#: ../pidgin/gtkdebug.c:654 msgid "_Both Icon & Text" msgstr "আইকন ও পাঠ উভয়ই (_B)" -#: ../pidgin/gtkdebug.c:772 msgid "Filter" msgstr "পরিশ্রুতক" -#: ../pidgin/gtkdebug.c:791 msgid "Right click for more options." msgstr "আরও পছন্দের জন্য ডান ক্লিক করুন।" -#: ../pidgin/gtkdebug.c:821 msgid "Level " msgstr "স্তর" # tithi -#: ../pidgin/gtkdebug.c:822 ../pidgin/gtkdebug.c:828 msgid "Select the debug filter level." msgstr "ডিবাগ পরিশ্রুতক স্তর নির্বাচন করুন।" -#: ../pidgin/gtkdebug.c:830 msgid "All" msgstr "সকল" -#: ../pidgin/gtkdebug.c:831 msgid "Misc" msgstr "অন্যান্য" -#: ../pidgin/gtkdebug.c:833 msgid "Warning" msgstr "সতর্কতা" -#: ../pidgin/gtkdebug.c:834 msgid "Error " msgstr "ত্রুটি" -#: ../pidgin/gtkdebug.c:835 msgid "Fatal Error" msgstr "মারাত্মক ত্রুটি" # tithi -#: ../pidgin/gtkdialogs.c:75 msgid "bug master" msgstr "বাগ মাস্টার" -#: ../pidgin/gtkdialogs.c:77 msgid "artist" msgstr "শিল্পী" # tithi #. feel free to not translate this -#: ../pidgin/gtkdialogs.c:80 msgid "Ka-Hing Cheung" msgstr "কা-হিং চিউং" -#: ../pidgin/gtkdialogs.c:93 msgid "support" msgstr "সমর্থন করুন" -#: ../pidgin/gtkdialogs.c:95 ../pidgin/gtkdialogs.c:118 msgid "webmaster" msgstr "ওয়েবমাস্টার" # tithi -#: ../pidgin/gtkdialogs.c:105 msgid "Senior Contributor/QA" msgstr "সিনিয়র অংশগ্রহণকারী/QA" -#: ../pidgin/gtkdialogs.c:114 msgid "win32 port" msgstr "উইন৩২ পোর্ট" -#: ../pidgin/gtkdialogs.c:115 ../pidgin/gtkdialogs.c:116 msgid "maintainer" msgstr "রক্ষণাবেক্ষক" -#: ../pidgin/gtkdialogs.c:117 msgid "libfaim maintainer" msgstr "libfaim রক্ষণাবেক্ষক" #. If "lazy bum" translates literally into a serious insult, use something else or omit it. -#: ../pidgin/gtkdialogs.c:120 msgid "hacker and designated driver [lazy bum]" msgstr "হ্যাকার ও নির্দেশিত ড্রাইভার [অকর্মা]" -#: ../pidgin/gtkdialogs.c:121 msgid "support/QA" msgstr "সমর্থন/QA" # tithi -#: ../pidgin/gtkdialogs.c:122 msgid "XMPP" msgstr "XMPP" -#: ../pidgin/gtkdialogs.c:123 msgid "original author" msgstr "মূল লেখক" -#: ../pidgin/gtkdialogs.c:125 msgid "lead developer" msgstr "প্রধান ডেভেলপার" # tithi -#: ../pidgin/gtkdialogs.c:141 ../pidgin/gtkdialogs.c:142 msgid "Afrikaans" msgstr "আফ্রিকানরা" -#: ../pidgin/gtkdialogs.c:143 ../pidgin/gtkdialogs.c:241 msgid "Arabic" msgstr "এরাবিক" # tithi -#: ../pidgin/gtkdialogs.c:144 msgid "Belarusian Latin" msgstr "বেলারুশিয়ান ল্যাটিন" -#: ../pidgin/gtkdialogs.c:145 ../pidgin/gtkdialogs.c:146 -#: ../pidgin/gtkdialogs.c:242 msgid "Bulgarian" msgstr "বুলগেরীয়" -#: ../pidgin/gtkdialogs.c:147 ../pidgin/gtkdialogs.c:148 -#: ../pidgin/gtkdialogs.c:149 ../pidgin/gtkdialogs.c:150 -#: ../pidgin/gtkdialogs.c:151 msgid "Bengali" msgstr "বাংলা" -#: ../pidgin/gtkdialogs.c:152 msgid "Bosnian" msgstr "বসনীয়" -#: ../pidgin/gtkdialogs.c:153 ../pidgin/gtkdialogs.c:243 -#: ../pidgin/gtkdialogs.c:244 msgid "Catalan" msgstr "ক্যাটালান" # tithi -#: ../pidgin/gtkdialogs.c:154 ../pidgin/gtkdialogs.c:155 msgid "Valencian-Catalan" msgstr "ভ্যালেনসিয়-ক্যাটালান" -#: ../pidgin/gtkdialogs.c:156 ../pidgin/gtkdialogs.c:245 -#: ../pidgin/gtkdialogs.c:246 msgid "Czech" msgstr "চেক" -#: ../pidgin/gtkdialogs.c:157 ../pidgin/gtkdialogs.c:158 msgid "Danish" msgstr "ড্যানিশ" -#: ../pidgin/gtkdialogs.c:159 ../pidgin/gtkdialogs.c:160 -#: ../pidgin/gtkdialogs.c:247 msgid "German" msgstr "জার্মান" # tithi -#: ../pidgin/gtkdialogs.c:161 ../pidgin/gtkdialogs.c:162 -#: ../pidgin/gtkdialogs.c:163 msgid "Dzongkha" msgstr "জংখা" -#: ../pidgin/gtkdialogs.c:164 ../pidgin/gtkdialogs.c:165 msgid "Greek" msgstr "গ্রীক" -#: ../pidgin/gtkdialogs.c:166 msgid "Australian English" msgstr "অষ্ট্রেলীয় ইংরেজী" -#: ../pidgin/gtkdialogs.c:167 msgid "Canadian English" msgstr "কানাডীয় ইংরেজী" -#: ../pidgin/gtkdialogs.c:168 msgid "British English" msgstr "ব্রিটিশ ইংরেজী" # tithi -#: ../pidgin/gtkdialogs.c:169 msgid "Esperanto" msgstr "এসপারেনটো" -#: ../pidgin/gtkdialogs.c:170 ../pidgin/gtkdialogs.c:248 -#: ../pidgin/gtkdialogs.c:249 ../pidgin/gtkdialogs.c:250 -#: ../pidgin/gtkdialogs.c:251 msgid "Spanish" msgstr "স্পেনিশ" -#: ../pidgin/gtkdialogs.c:171 msgid "Estonian" msgstr "এসতোনীয়" # tithi -#: ../pidgin/gtkdialogs.c:172 ../pidgin/gtkdialogs.c:173 msgid "Euskera(Basque)" msgstr "ইউসকেরা(বাসকু)" -#: ../pidgin/gtkdialogs.c:174 ../pidgin/gtkdialogs.c:175 -#: ../pidgin/gtkdialogs.c:176 msgid "Persian" msgstr "পার্সিয" -#: ../pidgin/gtkdialogs.c:177 ../pidgin/gtkdialogs.c:252 -#: ../pidgin/gtkdialogs.c:253 msgid "Finnish" msgstr "ফীনিশ" -#: ../pidgin/gtkdialogs.c:178 ../pidgin/gtkdialogs.c:254 -#: ../pidgin/gtkdialogs.c:255 ../pidgin/gtkdialogs.c:256 -#: ../pidgin/gtkdialogs.c:257 msgid "French" msgstr "ফরাসী" -#: ../pidgin/gtkdialogs.c:179 msgid "Irish" msgstr "আইরিশ" # fix me tithi -#: ../pidgin/gtkdialogs.c:180 ../pidgin/gtkdialogs.c:181 -#: ../pidgin/gtkdialogs.c:258 msgid "Galician" msgstr "গ্যালিশিয়" -#: ../pidgin/gtkdialogs.c:182 ../pidgin/gtkdialogs.c:183 msgid "Gujarati" msgstr "গুজরাটি" # tithi -#: ../pidgin/gtkdialogs.c:183 msgid "Gujarati Language Team" msgstr "গুজরাটি ভাষার দল" -#: ../pidgin/gtkdialogs.c:184 ../pidgin/gtkdialogs.c:259 msgid "Hebrew" msgstr "হিব্রু" -#: ../pidgin/gtkdialogs.c:185 msgid "Hindi" msgstr "হিন্দি" -#: ../pidgin/gtkdialogs.c:186 ../pidgin/gtkdialogs.c:260 msgid "Hungarian" msgstr "হাঙ্গেরীয়" -#: ../pidgin/gtkdialogs.c:187 msgid "Indonesian" msgstr "ইন্ডোনেশিয়" -#: ../pidgin/gtkdialogs.c:188 ../pidgin/gtkdialogs.c:261 msgid "Italian" msgstr "ইটালিয়" -#: ../pidgin/gtkdialogs.c:189 ../pidgin/gtkdialogs.c:262 -#: ../pidgin/gtkdialogs.c:263 ../pidgin/gtkdialogs.c:264 msgid "Japanese" msgstr "জাপানী" -#: ../pidgin/gtkdialogs.c:190 ../pidgin/gtkdialogs.c:265 msgid "Georgian" msgstr "জর্জীয়" -#: ../pidgin/gtkdialogs.c:190 msgid "Ubuntu Georgian Translators" msgstr "উবান্টুর জর্জিয়ান অনুবাদকবৃন্দ" # fix me tithi -#: ../pidgin/gtkdialogs.c:191 msgid "Kannada" msgstr "কান্নাডা" # tithi -#: ../pidgin/gtkdialogs.c:191 msgid "Kannada Translation team" msgstr "কান্নাডা ভাষান্তর দল" -#: ../pidgin/gtkdialogs.c:192 ../pidgin/gtkdialogs.c:266 -#: ../pidgin/gtkdialogs.c:267 msgid "Korean" msgstr "কোরিয়" -#: ../pidgin/gtkdialogs.c:193 ../pidgin/gtkdialogs.c:194 -#: ../pidgin/gtkdialogs.c:195 msgid "Kurdish" msgstr "কুর্দিশ" # tithi -#: ../pidgin/gtkdialogs.c:196 msgid "Lao" msgstr "লাও" -#: ../pidgin/gtkdialogs.c:197 ../pidgin/gtkdialogs.c:268 -#: ../pidgin/gtkdialogs.c:269 msgid "Lithuanian" msgstr "লিথুনীয়" -#: ../pidgin/gtkdialogs.c:198 ../pidgin/gtkdialogs.c:199 -#: ../pidgin/gtkdialogs.c:200 ../pidgin/gtkdialogs.c:270 msgid "Macedonian" msgstr "ম্যাসেডনিয়" +#, fuzzy +msgid "Mongolian" +msgstr "ম্যাসেডনিয়" + # fix me tithi -#: ../pidgin/gtkdialogs.c:202 ../pidgin/gtkdialogs.c:271 -#: ../pidgin/gtkdialogs.c:272 ../pidgin/gtkdialogs.c:273 msgid "Bokmål Norwegian" msgstr "বোকমাল নরওয়েয়ান" -#: ../pidgin/gtkdialogs.c:203 msgid "Nepali" msgstr "নেপালি" -#: ../pidgin/gtkdialogs.c:204 msgid "Dutch, Flemish" msgstr "ওলন্দাজ, ফ্লেমিশ" # fix me tithi -#: ../pidgin/gtkdialogs.c:205 msgid "Norwegian Nynorsk" msgstr "নরওয়েয়ান নাইনোরকস" # fix-me tithi -#: ../pidgin/gtkdialogs.c:206 msgid "Occitan" msgstr "অকেশান" # tithi -#: ../pidgin/gtkdialogs.c:207 msgid "Punjabi" msgstr "পাঞ্জাবী" -#: ../pidgin/gtkdialogs.c:208 ../pidgin/gtkdialogs.c:274 -#: ../pidgin/gtkdialogs.c:275 ../pidgin/gtkdialogs.c:276 -#: ../pidgin/gtkdialogs.c:277 msgid "Polish" msgstr "পোলিশ" -#: ../pidgin/gtkdialogs.c:209 msgid "Portuguese" msgstr "পর্তুগীজ" -#: ../pidgin/gtkdialogs.c:210 ../pidgin/gtkdialogs.c:278 msgid "Portuguese-Brazil" msgstr "পর্তুগীজ-ব্রাজিল" -#: ../pidgin/gtkdialogs.c:211 msgid "Pashto" msgstr "পাশতু" -#: ../pidgin/gtkdialogs.c:212 msgid "Romanian" msgstr "রুমানীয়" -#: ../pidgin/gtkdialogs.c:213 ../pidgin/gtkdialogs.c:279 -#: ../pidgin/gtkdialogs.c:280 ../pidgin/gtkdialogs.c:281 msgid "Russian" msgstr "রুশ" -#: ../pidgin/gtkdialogs.c:214 ../pidgin/gtkdialogs.c:215 -#: ../pidgin/gtkdialogs.c:282 ../pidgin/gtkdialogs.c:283 -#: ../pidgin/gtkdialogs.c:284 msgid "Slovak" msgstr "স্লোভাক" -#: ../pidgin/gtkdialogs.c:216 ../pidgin/gtkdialogs.c:285 msgid "Slovenian" msgstr "স্লোভেনিয়" -#: ../pidgin/gtkdialogs.c:217 msgid "Albanian" msgstr "আলবেনীয়" -#: ../pidgin/gtkdialogs.c:218 ../pidgin/gtkdialogs.c:219 -#: ../pidgin/gtkdialogs.c:286 ../pidgin/gtkdialogs.c:287 msgid "Serbian" msgstr "সার্বিয়" -#: ../pidgin/gtkdialogs.c:220 ../pidgin/gtkdialogs.c:221 msgid "Sinhala" msgstr "সিনহালা" -#: ../pidgin/gtkdialogs.c:222 ../pidgin/gtkdialogs.c:288 -#: ../pidgin/gtkdialogs.c:289 msgid "Swedish" msgstr "সুইডিশ" -#: ../pidgin/gtkdialogs.c:223 msgid "Tamil" msgstr "তামিল" -#: ../pidgin/gtkdialogs.c:224 msgid "Telugu" msgstr "তেলেগু" -#: ../pidgin/gtkdialogs.c:225 msgid "Thai" msgstr "থাই" -#: ../pidgin/gtkdialogs.c:226 ../pidgin/gtkdialogs.c:290 msgid "Turkish" msgstr "টার্কিশ" # tithi -#: ../pidgin/gtkdialogs.c:227 msgid "Urdu" msgstr "ঊর্দূ" -#: ../pidgin/gtkdialogs.c:228 msgid "Vietnamese" msgstr "ভিয়েতনামি" -#: ../pidgin/gtkdialogs.c:228 msgid "T.M.Thanh and the Gnome-Vi Team" msgstr "টি.এম.থানহ এবং নৌম-ভিআইর দল" -#: ../pidgin/gtkdialogs.c:229 ../pidgin/gtkdialogs.c:291 msgid "Simplified Chinese" msgstr "সহজবোধ্য চীনা" # tithi -#: ../pidgin/gtkdialogs.c:230 ../pidgin/gtkdialogs.c:231 -#: ../pidgin/gtkdialogs.c:232 msgid "Hong Kong Chinese" msgstr "হংকং চীনা" -#: ../pidgin/gtkdialogs.c:233 ../pidgin/gtkdialogs.c:234 -#: ../pidgin/gtkdialogs.c:292 msgid "Traditional Chinese" msgstr "ঐতিহ্যবাহী চীনা" -#: ../pidgin/gtkdialogs.c:240 msgid "Amharic" msgstr "আমহারিক" -#: ../pidgin/gtkdialogs.c:410 #, c-format msgid "About %s" msgstr "%s সম্পর্কে" # fix me tithi -#: ../pidgin/gtkdialogs.c:446 #, c-format msgid "" "%s is a graphical modular messaging client based on libpurple which is " @@ -17025,54 +12342,59 @@ "দ্বারা স্বত্তাধিকার সংরক্ষিত। প্রদায়কগনের সম্পূর্ণ তালিকার জন্য 'স্বত্তাধিকার সংরক্ষিত' " "ফাইল দেখুন। এই প্রোগ্রামটির জন্য আমরা কোনো নিশ্চয়তা প্রদান করি না।

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

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

" +msgstr "" + # fix me -#: ../pidgin/gtkdialogs.c:464 -msgid "IRC: #pidgin on irc.freenode.net

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

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

" -#: ../pidgin/gtkdialogs.c:469 +# fix me +#, fuzzy, c-format +msgid "XMPP MUC: devel@conference.pidgin.im

" +msgstr "IRC: #pidgin on irc.freenode.net

" + msgid "Current Developers" msgstr "বর্তমান ডেভেলপারগণ" -#: ../pidgin/gtkdialogs.c:475 msgid "Crazy Patch Writers" msgstr "ক্ষিপ্ত প্যাচ লেখকগণ" -#: ../pidgin/gtkdialogs.c:481 msgid "Retired Developers" msgstr "অবসরপ্রাপ্ত ডেভেলপার" -#: ../pidgin/gtkdialogs.c:487 msgid "Retired Crazy Patch Writers" msgstr "অবসরপ্রাপ্ত ক্ষিপ্ত প্যাচ লেখকগণ" -#: ../pidgin/gtkdialogs.c:493 msgid "Current Translators" msgstr "বর্তমান অনুবাদকবৃন্দ" -#: ../pidgin/gtkdialogs.c:499 msgid "Past Translators" msgstr "পুরনো অনুবাদকবৃন্দ" -#: ../pidgin/gtkdialogs.c:503 msgid "Debugging Information" msgstr "ডিবাগকরণ তথ্য" -#: ../pidgin/gtkdialogs.c:719 ../pidgin/gtkdialogs.c:858 -#: ../pidgin/gtkdialogs.c:939 msgid "_Name" msgstr "নাম (_N)" -#: ../pidgin/gtkdialogs.c:724 ../pidgin/gtkdialogs.c:863 -#: ../pidgin/gtkdialogs.c:944 msgid "_Account" msgstr "একাউন্ট (_A)" -#: ../pidgin/gtkdialogs.c:871 msgid "Get User Info" msgstr "ব্যবহারকারীর তথ্য গ্রহণ করুন" -#: ../pidgin/gtkdialogs.c:873 msgid "" "Please enter the username or alias of the person whose info you would like " "to view." @@ -17080,36 +12402,28 @@ "অনুগ্রহ করে আপনি যে ব্যক্তির তথ্য প্রদর্শন করতে চান তার ব্যবহারকারী-নাম বা উপনাম " "প্রবেশ করান।" -#: ../pidgin/gtkdialogs.c:963 msgid "View User Log" msgstr "ব্যবহারকারীর কার্যবিবরণী প্রদর্শন করুন" -#: ../pidgin/gtkdialogs.c:985 msgid "Alias Contact" msgstr "উপনামের যোগাযোগ" -#: ../pidgin/gtkdialogs.c:986 msgid "Enter an alias for this contact." msgstr "এই যোগাযোগের জন্য উপনাম প্রবেশ করান।" -#: ../pidgin/gtkdialogs.c:1008 #, c-format msgid "Enter an alias for %s." msgstr "%s-এর জন্য উপনাম প্রবেশ করান।" -#: ../pidgin/gtkdialogs.c:1010 msgid "Alias Buddy" msgstr "উপনাম বন্ধু" -#: ../pidgin/gtkdialogs.c:1031 msgid "Alias Chat" msgstr "উপনামের আড্ডা" -#: ../pidgin/gtkdialogs.c:1032 msgid "Enter an alias for this chat." msgstr "এই আড্ডার জন্য একটি উপনাম প্রবেশ করান।" -#: ../pidgin/gtkdialogs.c:1071 #, c-format msgid "" "You are about to remove the contact containing %s and %d other buddy from " @@ -17124,30 +12438,24 @@ "আপনি আপনার বন্ধু তালিকা থেকে অন্য %s এবং %d বন্ধুগণের ধারনকারী যোগাযোগ অপসারণ " "করতে পারেন। আপনি কি অব্যাহত রাখতে চান?" -#: ../pidgin/gtkdialogs.c:1079 msgid "Remove Contact" msgstr "যোগাযোগ অপসারণ করুন" -#: ../pidgin/gtkdialogs.c:1082 msgid "_Remove Contact" msgstr "যোগাযোগ অপসারণ করুন (_R)" -#: ../pidgin/gtkdialogs.c:1113 #, c-format msgid "" "You are about to merge the group called %s into the group called %s. Do you " "want to continue?" msgstr "আপনি %1s নামের গ্রুপকে %2s গ্রুপে একত্রিত করছেন। আপনি কি অব্যাহত রাখতে চান?" -#: ../pidgin/gtkdialogs.c:1120 msgid "Merge Groups" msgstr "গ্রুপসমুহ একত্রিত করুন" -#: ../pidgin/gtkdialogs.c:1123 msgid "_Merge Groups" msgstr "গ্রুপসমুহ একত্রিত করুন (_M)" -#: ../pidgin/gtkdialogs.c:1173 #, c-format msgid "" "You are about to remove the group %s and all its members from your buddy " @@ -17156,15 +12464,12 @@ "আপনি %s গ্রুপ ও এর সকল সদস্যকে আপনার বন্ধু তালিকা থেকে অপসারণ করতে পারেন। আপনি কি " "অব্যাহত রাখতে চান?" -#: ../pidgin/gtkdialogs.c:1176 msgid "Remove Group" msgstr "গ্রুপ অপসারণ করুন" -#: ../pidgin/gtkdialogs.c:1179 msgid "_Remove Group" msgstr "গ্রুপ অপসারণ করুন (_R)" -#: ../pidgin/gtkdialogs.c:1212 #, c-format msgid "" "You are about to remove %s from your buddy list. Do you want to continue?" @@ -17172,15 +12477,12 @@ "আপনি %s-কে আপনার বন্ধু তালিকা থেকে অপসারণ করতে পারেন। আপনি কি অব্যাহত রাখতে " "চান?" -#: ../pidgin/gtkdialogs.c:1215 msgid "Remove Buddy" msgstr "বন্ধু অপসারণ করুন" -#: ../pidgin/gtkdialogs.c:1218 msgid "_Remove Buddy" msgstr "বন্ধু অপসাণ করুন (_R)" -#: ../pidgin/gtkdialogs.c:1239 #, c-format msgid "" "You are about to remove the chat %s from your buddy list. Do you want to " @@ -17188,266 +12490,204 @@ msgstr "" "আপনি আপনার বন্ধু তালিকা হতে %s অপসারণ করতে পারেন। আপনি কি অব্যাহত রাখতে চান?" -#: ../pidgin/gtkdialogs.c:1242 msgid "Remove Chat" msgstr "আড্ডা অপসারণ করুন" -#: ../pidgin/gtkdialogs.c:1245 msgid "_Remove Chat" msgstr "আড্ডা অপসারণ করুন (_R)" -#: ../pidgin/gtkdocklet.c:152 msgid "Right-click for more unread messages...\n" msgstr "আরও অপঠিত বার্তার জন্য ডান ক্লিক করুন...\n" -#: ../pidgin/gtkdocklet.c:533 msgid "_Change Status" msgstr "অবস্থা পরিবর্তন করুন (_C)" -#: ../pidgin/gtkdocklet.c:681 msgid "Show Buddy _List" msgstr "বন্ধু তালিকা প্রদর্শন করুন (_L)" -#: ../pidgin/gtkdocklet.c:686 msgid "_Unread Messages" msgstr "অপঠিত বার্তাসমূহ (_U)" -#: ../pidgin/gtkdocklet.c:707 msgid "New _Message..." msgstr "নতুন বার্তা...(_M)" -#: ../pidgin/gtkdocklet.c:721 msgid "_Accounts" msgstr "একাউন্টগুলো (_A)" -#: ../pidgin/gtkdocklet.c:722 msgid "Plu_gins" msgstr "প্লাগইন (_g)" -#: ../pidgin/gtkdocklet.c:723 msgid "Pr_eferences" msgstr "প্রাধিকারসমূহ (_e)" -#: ../pidgin/gtkdocklet.c:727 msgid "Mute _Sounds" msgstr "শব্দ বন্ধ রাখুন (_S)" -#: ../pidgin/gtkdocklet.c:734 msgid "_Blink on New Message" msgstr "নতুন বার্তায় পিট পিট করুন (_B)" -#: ../pidgin/gtkdocklet.c:744 msgid "_Quit" msgstr "প্রস্থান করুন (_Q)" -#: ../pidgin/gtkft.c:154 msgid "Not started" msgstr "আরম্ভ হয়নি" -#: ../pidgin/gtkft.c:276 msgid "Receiving As:" msgstr "যেভাবে গ্রহণ করছে:" -#: ../pidgin/gtkft.c:278 msgid "Receiving From:" msgstr "যার থেকে গ্রহণ করছে:" -#: ../pidgin/gtkft.c:282 msgid "Sending To:" msgstr "যাকে পাঠানো হচ্ছে:" -#: ../pidgin/gtkft.c:284 msgid "Sending As:" msgstr "যেভাবে পাঠানো হচ্ছে:" -#: ../pidgin/gtkft.c:500 msgid "There is no application configured to open this type of file." msgstr "এই ধরনের ফাইল খোলার জন্য কোনো প্রয়োগন বিন্যাসিত নেই।" -#: ../pidgin/gtkft.c:505 msgid "An error occurred while opening the file." msgstr "ফাইলটি খোলার সময়ে একটি ত্রুটি ঘটেছে।" -#: ../pidgin/gtkft.c:542 #, c-format msgid "Error launching %s: %s" msgstr "%s শুরুকরণে ত্রুটি: %s" -#: ../pidgin/gtkft.c:551 #, c-format msgid "Error running %s" msgstr "%s চালুকরণে ত্রুটি" -#: ../pidgin/gtkft.c:552 #, c-format msgid "Process returned error code %d" msgstr "প্রক্রিয়াটি %d ত্রুটি কোড ফেরত পাঠিয়েছে" -#: ../pidgin/gtkft.c:699 msgid "Filename:" msgstr "ফাইলের-নাম:" -#: ../pidgin/gtkft.c:700 msgid "Local File:" msgstr "স্থানীয় ফাইল:" -#: ../pidgin/gtkft.c:702 msgid "Speed:" msgstr "গতি:" -#: ../pidgin/gtkft.c:703 msgid "Time Elapsed:" msgstr "অতিবাহিত সময়:" -#: ../pidgin/gtkft.c:704 msgid "Time Remaining:" msgstr "অবশিষ্ট সময়:" -#: ../pidgin/gtkft.c:783 msgid "Close this window when all transfers _finish" msgstr "সকল স্থানান্তর শেষ হলে এই উইন্ডোটি বন্ধ করুন (_f)" -#: ../pidgin/gtkft.c:793 msgid "C_lear finished transfers" msgstr "সমাপ্ত স্থানান্তর পরিস্কার করুন (_l)" #. "Download Details" arrow -#: ../pidgin/gtkft.c:802 msgid "File transfer _details" msgstr "ফাইল স্থানান্তরের বিবরণ (_d)" #. Pause button -#: ../pidgin/gtkft.c:820 ../pidgin/pidginstock.c:97 msgid "_Pause" msgstr "বিরতি (_P)" #. Resume button -#: ../pidgin/gtkft.c:825 msgid "_Resume" msgstr "পুনরায় শুরু করুন (_R)" -#: ../pidgin/gtkimhtml.c:905 msgid "Paste as Plain _Text" msgstr "সরল পাঠ হিসেবে প্রতিলেপন করুন (_T)" -#: ../pidgin/gtkimhtml.c:922 ../pidgin/gtkimhtmltoolbar.c:1325 msgid "_Reset formatting" msgstr "বিন্যাসকরণ পুনঃবিন্যাস করুন (_R)" # tithi -#: ../pidgin/gtkimhtml.c:930 msgid "Disable _smileys in selected text" msgstr "নির্বাচিত পাঠে স্মাইলীগুলো নিষ্ক্রিয় করুন (_s)" -#: ../pidgin/gtkimhtml.c:1490 msgid "Hyperlink color" msgstr "হাইপারলিঙ্কের রং" -#: ../pidgin/gtkimhtml.c:1491 msgid "Color to draw hyperlinks." msgstr "হাইপারলিঙ্ক আঁকার রং।" # fix me -#: ../pidgin/gtkimhtml.c:1494 msgid "Hyperlink visited color" msgstr "হাইপারলিঙ্কের পরিদর্শিত রং" -#: ../pidgin/gtkimhtml.c:1495 msgid "Color to draw hyperlinks after it has been visited (or activated)." msgstr "হাইপারলিঙ্ক পরিদর্শন (বা সক্রিয়) করার পর এটা আকাঁর রং।" -#: ../pidgin/gtkimhtml.c:1498 msgid "Hyperlink prelight color" msgstr "হাইপারলিঙ্ক প্রাক-হালকা রং" -#: ../pidgin/gtkimhtml.c:1499 msgid "Color to draw hyperlinks when mouse is over them." msgstr "হাইপারলিঙ্কের ওপর মাউস থাকাকালীন এটা আকার রং" -#: ../pidgin/gtkimhtml.c:1502 ../pidgin/plugins/pidginrc.c:55 msgid "Sent Message Name Color" msgstr "প্রেরিত বার্তার নামের রং" # tithi -#: ../pidgin/gtkimhtml.c:1503 msgid "Color to draw the name of a message you sent." msgstr "আপনার প্রেরিত বার্তাসমূহের নাম আকার রং।" -#: ../pidgin/gtkimhtml.c:1506 ../pidgin/plugins/pidginrc.c:56 msgid "Received Message Name Color" msgstr "বার্তার নামের রং গ্রহণ করা হয়েছে" # tithi -#: ../pidgin/gtkimhtml.c:1507 msgid "Color to draw the name of a message you received." msgstr "আপনার গৃহীত বার্তাসমূহের নাম আকার রং।" # tithi -#: ../pidgin/gtkimhtml.c:1510 msgid "\"Attention\" Name Color" msgstr "\"মনোযোগ\" রং এর নাম" # tithi -#: ../pidgin/gtkimhtml.c:1511 msgid "Color to draw the name of a message you received containing your name." msgstr "আপনার নাম ধারণকারী যে বার্তাটি আপনি গ্রহণ করেছেন তার নাম আকার রং।" # tithi -#: ../pidgin/gtkimhtml.c:1514 ../pidgin/plugins/pidginrc.c:58 msgid "Action Message Name Color" msgstr "কার্য বার্তা নামের রং" # tithi -#: ../pidgin/gtkimhtml.c:1515 ../pidgin/gtkimhtml.c:1519 -#: ../pidgin/gtkimhtml.c:1523 msgid "Color to draw the name of an action message." msgstr "একটি কর্ম বার্তার নাম আকার রং।" # fix me tithi -#: ../pidgin/gtkimhtml.c:1518 msgid "Action Message Name Color for Whispered Message" msgstr "গোপনীয় বার্তার জন্য কার্য বার্তার নামের রং" # fix- me tithi -#: ../pidgin/gtkimhtml.c:1522 msgid "Whisper Message Name Color" msgstr "গোপনীয় বার্তার নামের রং" -#: ../pidgin/gtkimhtml.c:1532 msgid "Typing notification color" msgstr "প্রজ্ঞাপন রং টাইপ করছে" # tithi -#: ../pidgin/gtkimhtml.c:1533 msgid "The color to use for the typing notification font" msgstr "টাইপকরণ প্রজ্ঞাপন ফন্টের জন্য ব্যবহারের রং" -#: ../pidgin/gtkimhtml.c:1536 msgid "Typing notification font" msgstr "টাইপকরণ প্রজ্ঞাপন ফন্ট" # tithi -#: ../pidgin/gtkimhtml.c:1537 msgid "The font to use for the typing notification" msgstr "টাইপকরণ প্রজ্ঞাপনের জন্য ব্যবহারের ফন্ট4" -#: ../pidgin/gtkimhtml.c:1540 ../pidgin/gtkimhtml.c:1541 msgid "Enable typing notification" msgstr "টাইপকরণ প্রজ্ঞাপন সক্রিয় করুন" -#: ../pidgin/gtkimhtml.c:1777 msgid "_Copy Email Address" msgstr "ই-মেইল ঠিকানা অনুলিপি করুন (_C)" -#: ../pidgin/gtkimhtml.c:1789 msgid "_Open Link in Browser" msgstr "ব্রাউজারে লিঙ্ক খুলুন (_O)" -#: ../pidgin/gtkimhtml.c:1799 msgid "_Copy Link Location" msgstr "লিঙ্ক অবস্থান অনুলিপি করুন (_C)" -#: ../pidgin/gtkimhtml.c:3686 msgid "" "Unrecognized file type\n" "\n" @@ -17457,7 +12697,6 @@ "\n" "PNG তে পূর্বনির্ধারিত।" -#: ../pidgin/gtkimhtml.c:3689 msgid "" "Unrecognized file type\n" "\n" @@ -17467,7 +12706,6 @@ "\n" "PNG তে পূর্বনির্ধারিত।।" -#: ../pidgin/gtkimhtml.c:3718 #, c-format msgid "" "Error saving image\n" @@ -17478,7 +12716,6 @@ "\n" "%s" -#: ../pidgin/gtkimhtml.c:3721 #, c-format msgid "" "Error saving image\n" @@ -17489,40 +12726,33 @@ "\n" "%s" -#: ../pidgin/gtkimhtml.c:3802 ../pidgin/gtkimhtml.c:3814 msgid "Save Image" msgstr "চিত্র সংরক্ষণ করুন" -#: ../pidgin/gtkimhtml.c:3851 +#, c-format msgid "_Save Image..." msgstr "চিত্র সংরক্ষণ করুন... (_S)" # tithi -#: ../pidgin/gtkimhtml.c:3865 +#, c-format msgid "_Add Custom Smiley..." msgstr "পছন্দসই স্মাইলী যোগ করুন... (_A)" -#: ../pidgin/gtkimhtmltoolbar.c:165 msgid "Select Font" msgstr "ফন্ট নির্বাচন করুন" -#: ../pidgin/gtkimhtmltoolbar.c:245 msgid "Select Text Color" msgstr "পাঠ রং নির্বাচন করুন" -#: ../pidgin/gtkimhtmltoolbar.c:325 msgid "Select Background Color" msgstr "প্রেক্ষাপট রং নির্বাচন করুন" -#: ../pidgin/gtkimhtmltoolbar.c:414 msgid "_URL" msgstr "ইউআরএল (_U)" -#: ../pidgin/gtkimhtmltoolbar.c:422 msgid "_Description" msgstr "বিবরণ (_D)" -#: ../pidgin/gtkimhtmltoolbar.c:425 msgid "" "Please enter the URL and description of the link that you want to insert. " "The description is optional." @@ -17530,29 +12760,23 @@ "অনুগ্রহ করে আপনি যে লিঙ্ক প্রবেশ করাতে চান তার ইউআরএল ও বিবরণ প্রবেশ করান। বিবরণ " "ঐচ্ছিক।" -#: ../pidgin/gtkimhtmltoolbar.c:429 msgid "Please enter the URL of the link that you want to insert." msgstr "অনুগ্রহ করে আপনি যে লিঙ্ক প্রবেশ করাতে চান তার ইউআরএল প্রবেশ করান।" -#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1232 msgid "Insert Link" msgstr "লিঙ্ক প্রবেশ করান" -#: ../pidgin/gtkimhtmltoolbar.c:438 ../pidgin/gtkimhtmltoolbar.c:1393 msgid "_Insert" msgstr "প্রবেশ করান (_I)" -#: ../pidgin/gtkimhtmltoolbar.c:519 #, c-format msgid "Failed to store image: %s\n" msgstr "চিত্র সংরক্ষণে ব্যর্থ: %s\n" -#: ../pidgin/gtkimhtmltoolbar.c:545 ../pidgin/gtkimhtmltoolbar.c:555 msgid "Insert Image" msgstr "চিত্র প্রবেশ করান" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:684 #, c-format msgid "" "This smiley is disabled because a custom smiley exists for this shortcut:\n" @@ -17561,156 +12785,121 @@ "এই স্মাইলীটি নিষ্ক্রিয় কারণ এই শর্টকাটটির জন্য একটি পছন্দসই স্মাইলী বিদ্যমান:\n" "%s" -#: ../pidgin/gtkimhtmltoolbar.c:815 msgid "Smile!" msgstr "হাসি!" # fix-me tithi -#: ../pidgin/gtkimhtmltoolbar.c:830 msgid "_Manage custom smileys" msgstr "পছন্দসই স্মাইলীগুলো নিয়ন্ত্রণ করুন (_M)" -#: ../pidgin/gtkimhtmltoolbar.c:867 msgid "This theme has no available smileys." msgstr "এই থীমের কোনো স্মাইলি সহজলভ্য নেই।" -#: ../pidgin/gtkimhtmltoolbar.c:973 ../pidgin/gtkimhtmltoolbar.c:1350 msgid "_Font" msgstr "ফন্ট (_F)" -#: ../pidgin/gtkimhtmltoolbar.c:1184 msgid "Group Items" msgstr "গ্রুপের বিষয়োপকরণসমূহ" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:1184 msgid "Ungroup Items" msgstr "গ্রুপহীন বিষয়োপকরণসমূহ" -#: ../pidgin/gtkimhtmltoolbar.c:1218 ../pidgin/plugins/convcolors.c:342 msgid "Bold" msgstr "মোটা" -#: ../pidgin/gtkimhtmltoolbar.c:1219 ../pidgin/plugins/convcolors.c:351 msgid "Italic" msgstr "তীর্যক" -#: ../pidgin/gtkimhtmltoolbar.c:1220 ../pidgin/plugins/convcolors.c:360 msgid "Underline" msgstr "নিম্নরেখা" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:1221 msgid "Strikethrough" msgstr "অবচ্ছেদন রেখা" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:1223 msgid "Increase Font Size" msgstr "ফন্টের আকার বৃদ্ধি করুন" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:1224 msgid "Decrease Font Size" msgstr "ফন্টের আকার হ্রাস করুন" -#: ../pidgin/gtkimhtmltoolbar.c:1226 msgid "Font Face" msgstr "ফন্টের রুপ" -#: ../pidgin/gtkimhtmltoolbar.c:1227 msgid "Background Color" msgstr "প্রেক্ষাপট রং" -#: ../pidgin/gtkimhtmltoolbar.c:1228 msgid "Foreground Color" msgstr "সম্মুখভাগের রং" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:1230 msgid "Reset Formatting" msgstr "বিন্যাসকরণ পুনঃবিন্যাস করুন" -#: ../pidgin/gtkimhtmltoolbar.c:1233 msgid "Insert IM Image" msgstr "আইএম চিত্র প্রবেশ করান" -#: ../pidgin/gtkimhtmltoolbar.c:1234 msgid "Insert Smiley" msgstr "স্মাইলি প্রবেশ করান" -#: ../pidgin/gtkimhtmltoolbar.c:1310 msgid "_Bold" msgstr "মোটা (_B)" -#: ../pidgin/gtkimhtmltoolbar.c:1311 msgid "_Italic" msgstr "তীর্যক (_I)" -#: ../pidgin/gtkimhtmltoolbar.c:1312 msgid "_Underline" msgstr "নিম্নরেখা (_U)" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:1313 msgid "Strikethrough" msgstr "অবচ্ছেদন রেখা" # fix me -#: ../pidgin/gtkimhtmltoolbar.c:1314 msgid "_Larger" msgstr "অপেক্ষাকৃত বড় (_L)" -#: ../pidgin/gtkimhtmltoolbar.c:1316 msgid "_Normal" msgstr "স্বাভাবিক (_N)" # tithi -#: ../pidgin/gtkimhtmltoolbar.c:1318 msgid "_Smaller" msgstr "অপেক্ষাকৃত ছোট (_S)" #. If we want to show the formatting for the following items, we would #. * need to update them when formatting changes. The above items don't need #. * no updating nor nothin' -#: ../pidgin/gtkimhtmltoolbar.c:1322 msgid "_Font face" msgstr "ফন্টের রুপ (_F)" -#: ../pidgin/gtkimhtmltoolbar.c:1323 msgid "Foreground _color" msgstr "সম্মুখভাগের রং (_c)" -#: ../pidgin/gtkimhtmltoolbar.c:1324 msgid "Bac_kground color" msgstr "প্রেক্ষাপটের রং (_k)" -#: ../pidgin/gtkimhtmltoolbar.c:1401 msgid "_Image" msgstr "চিত্র (_I)" -#: ../pidgin/gtkimhtmltoolbar.c:1407 msgid "_Link" msgstr "লিঙ্ক (_L)" -#: ../pidgin/gtkimhtmltoolbar.c:1413 msgid "_Horizontal rule" msgstr "অনুভূমিক নিয়ম (_H)" -#: ../pidgin/gtkimhtmltoolbar.c:1435 msgid "_Smile!" msgstr "হাসি! (_S)" -#: ../pidgin/gtklog.c:245 msgid "Log Deletion Failed" msgstr "কার্যবিবরণী শনাক্তকরণ ব্যর্থ হয়েছে" # tithi -#: ../pidgin/gtklog.c:246 msgid "Check permissions and try again." msgstr "অনুমতি যাচাই করুন এবং আবার চেষ্টা করুন।" -#: ../pidgin/gtklog.c:292 #, c-format msgid "" "Are you sure you want to permanently delete the log of the conversation with " @@ -17719,7 +12908,6 @@ "আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %2s তে শুরু হওয়া কথোপকথনের কার্যবিবরণী %1s সহ মুছে " "ফেলতে চান?" -#: ../pidgin/gtklog.c:303 #, c-format msgid "" "Are you sure you want to permanently delete the log of the conversation in %" @@ -17728,7 +12916,6 @@ "আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %2s তে শুরু হওয়া কথোপকথনের কার্যবিবরণী %1s এ মুছে " "ফেলতে চান?" -#: ../pidgin/gtklog.c:308 #, c-format msgid "" "Are you sure you want to permanently delete the system log which started at %" @@ -17736,38 +12923,31 @@ msgstr "" "আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %1s তে শুরু হওয়া সিস্টেম কার্যবিবরণী মুছে ফেলতে চান?" -#: ../pidgin/gtklog.c:323 msgid "Delete Log?" msgstr "কার্যবিবরণী কি মুছতে চান?" -#: ../pidgin/gtklog.c:334 msgid "Delete Log..." msgstr "কার্যবিবরণী মুছুন..." # fix me -#: ../pidgin/gtklog.c:453 #, c-format msgid "Conversation in %s on %s" msgstr "%s এর উপর %s এ কথোপকথন" # fix me -#: ../pidgin/gtklog.c:456 #, c-format msgid "Conversation with %s on %s" msgstr "%s এর উপর %s এর সাথে কথোপকথন" #. Steal the "HELP" response and use it to trigger browsing to the logs folder -#: ../pidgin/gtklog.c:581 msgid "_Browse logs folder" msgstr "কার্যবিবরণীর ফোল্ডার ব্রাউজ করুন (_B)" -#: ../pidgin/gtkmain.c:384 #, c-format msgid "%s %s. Try `%s -h' for more information.\n" msgstr "%1s %2s। আরও তথ্যের জন্য `%3s -h' এ চেষ্টা করুন।\n" # fix me -#: ../pidgin/gtkmain.c:387 #, c-format msgid "" "%s %s\n" @@ -17800,7 +12980,6 @@ " -v, --version বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n" # fix me -#: ../pidgin/gtkmain.c:400 #, c-format msgid "" "%s %s\n" @@ -17830,7 +13009,6 @@ " এটা ব্যতিত শুধুমাত্র প্রথম একাউন্ট সক্রিয় হবে)। \n" " -v, --version বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n" -#: ../pidgin/gtkmain.c:530 #, c-format msgid "" "%s %s has segfaulted and attempted to dump a core file.\n" @@ -17859,48 +13037,42 @@ #. Translators may want to transliterate the name. #. It is not to be translated. -#: ../pidgin/gtkmain.c:720 ../pidgin/pidgin.h:51 msgid "Pidgin" msgstr "পিজিন" -#: ../pidgin/gtknotify.c:362 +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "" + msgid "Open All Messages" msgstr "সকল বার্তা খুলুন" -#: ../pidgin/gtknotify.c:420 msgid "You have mail!" msgstr "আপনার মেইল আছে!" -#: ../pidgin/gtknotify.c:572 #, c-format msgid "%s has %d new message." msgid_plural "%s has %d new messages." msgstr[0] "%s-এর %dটি নতুন বার্তা আছে।" msgstr[1] "%s-এর %dগুলো নতুন বার্তা আছে।" -#: ../pidgin/gtknotify.c:601 #, c-format msgid "%d new email." msgid_plural "%d new emails." msgstr[0] " %d টি নতুন ই-মেইল।" msgstr[1] "%dগুলো নতুন ই-মেইল।" -#: ../pidgin/gtknotify.c:1032 #, c-format msgid "The browser command \"%s\" is invalid." msgstr "ব্রাউজার নির্দেশ \"%s\" অবৈধ।" -#: ../pidgin/gtknotify.c:1034 ../pidgin/gtknotify.c:1046 -#: ../pidgin/gtknotify.c:1059 ../pidgin/gtknotify.c:1196 msgid "Unable to open URL" msgstr "ইউআরএল খুলতে সমর্থ নয়" -#: ../pidgin/gtknotify.c:1044 ../pidgin/gtknotify.c:1057 #, c-format msgid "Error launching \"%s\": %s" msgstr "\"%1s\" শুরুকরণে ত্রুটি: %2s" -#: ../pidgin/gtknotify.c:1197 msgid "" "The 'Manual' browser command has been chosen, but no command has been set." msgstr "" @@ -17908,25 +13080,20 @@ "হয়নি।" # tithi -#: ../pidgin/gtkplugin.c:278 msgid "The following plugins will be unloaded." msgstr "নিম্নোক্ত প্লাগইনগুলো লোড মুক্ত করা হবে।" # tithi -#: ../pidgin/gtkplugin.c:297 msgid "Multiple plugins will be unloaded." msgstr "বহুবিধ প্লাগইনগুলো লোড মুক্ত করা হবে।" -#: ../pidgin/gtkplugin.c:301 msgid "Unload Plugins" msgstr "প্লাগইন লোড মুক্ত করুন" -#: ../pidgin/gtkplugin.c:318 msgid "Could not unload plugin" msgstr "প্লাগইন লোড মুক্ত করা যায়নি" # tithi -#: ../pidgin/gtkplugin.c:319 msgid "" "The plugin could not be unloaded now, but will be disabled at the next " "startup." @@ -17934,7 +13101,6 @@ "এই প্লাগইনটি এখন লোড মুক্ত করা যাচ্ছে না, কিন্তু পরবর্তী শুরুতে নিষ্ক্রিয় করা হবে।" # tithi -#: ../pidgin/gtkplugin.c:456 #, c-format msgid "" "Error: %s\n" @@ -17943,139 +13109,106 @@ "ত্রুটি: %s\n" "হালনাগাদের জন্য প্লাগইন ওয়েবসাইট পরীক্ষা করুন।" -#: ../pidgin/gtkplugin.c:585 msgid "Author" msgstr "লেখক" -#: ../pidgin/gtkplugin.c:663 msgid "Written by:" msgstr "লেখক:" -#: ../pidgin/gtkplugin.c:687 msgid "Web site:" msgstr "ওয়েব সাইট:" -#: ../pidgin/gtkplugin.c:696 msgid "Filename:" msgstr "ফাইলনাম:" -#: ../pidgin/gtkplugin.c:724 msgid "Configure Pl_ugin" msgstr "প্লাগইন পছন্দসই বিন্যাস করুন (_u)" -#: ../pidgin/gtkplugin.c:792 msgid "Plugin Details" msgstr "প্লাগইনের বর্ণনা" -#: ../pidgin/gtkpounce.c:158 msgid "Select a file" msgstr "একটি ফাইল নির্বাচন করুন" #. Create the "Pounce on Whom" frame. -#: ../pidgin/gtkpounce.c:553 msgid "Pounce on Whom" msgstr "কাকে পাউন্স করেন" -#: ../pidgin/gtkpounce.c:580 msgid "_Buddy name:" msgstr "বন্ধুর নাম (_B):" -#: ../pidgin/gtkpounce.c:614 msgid "Si_gns on" msgstr "সাইন অন (_g)" -#: ../pidgin/gtkpounce.c:616 msgid "Signs o_ff" msgstr "সাইন অফ (_f)" -#: ../pidgin/gtkpounce.c:618 msgid "Goes a_way" msgstr "অনুপস্থিত (_w)" -#: ../pidgin/gtkpounce.c:620 msgid "Ret_urns from away" msgstr "অনুপস্থিত অবস্থা থেকে ফিরে এসেছে (_u)" -#: ../pidgin/gtkpounce.c:622 msgid "Becomes _idle" msgstr "এখন অলস (_i)" -#: ../pidgin/gtkpounce.c:624 msgid "Is no longer i_dle" msgstr "আর অলস থাকবে না (_d)" -#: ../pidgin/gtkpounce.c:626 msgid "Starts _typing" msgstr "টাইপ শুরু করেছে (_t)" # tithi -#: ../pidgin/gtkpounce.c:628 msgid "P_auses while typing" msgstr "টাইপের সময় বন্ধ রাখুন (_a)" -#: ../pidgin/gtkpounce.c:630 msgid "Stops t_yping" msgstr "টাইপ বন্ধ করছে (_y)" -#: ../pidgin/gtkpounce.c:632 msgid "Sends a _message" msgstr "বার্তা পাঠায় (_m)" -#: ../pidgin/gtkpounce.c:675 msgid "Ope_n an IM window" msgstr "একটি আইএম উইন্ডো খুলুন (_n)" -#: ../pidgin/gtkpounce.c:677 msgid "_Pop up a notification" msgstr "একটি প্রজ্ঞাপন পপআপ করুন (_P)" -#: ../pidgin/gtkpounce.c:679 msgid "Send a _message" msgstr "একটি বার্তা পাঠান (_m)" -#: ../pidgin/gtkpounce.c:681 msgid "E_xecute a command" msgstr "একটি নির্দেশ কার্যকর করুন (_x)" -#: ../pidgin/gtkpounce.c:683 msgid "P_lay a sound" msgstr "শব্দ বাজান (_l)" -#: ../pidgin/gtkpounce.c:689 msgid "Brows_e..." msgstr "ব্রাউজ করুন... (_e)" -#: ../pidgin/gtkpounce.c:693 msgid "Br_owse..." msgstr "ব্রাউজ করুন... (_o)" -#: ../pidgin/gtkpounce.c:694 ../pidgin/gtkprefs.c:2031 msgid "Pre_view" msgstr "প্রাকদর্শন (_v)" -#: ../pidgin/gtkpounce.c:834 msgid "P_ounce only when my status is not Available" msgstr "আমার অবস্থা যখন সহজলভ্য নয় তখন পাউন্স করুন (_o)" # tithi -#: ../pidgin/gtkpounce.c:839 msgid "_Recurring" msgstr "পুনরাবৃত্ত করছে (_R)" -#: ../pidgin/gtkpounce.c:1284 msgid "Pounce Target" msgstr "পাউন্সের লক্ষ্য" -#: ../pidgin/gtkprefs.c:458 msgid "Smiley theme failed to unpack." msgstr "স্মাইলী থীম প্যাকহীন করতে ব্যর্থ হয়েছে" # tithi -#: ../pidgin/gtkprefs.c:593 msgid "Install Theme" msgstr "থীম সংস্থাপন করুন" -#: ../pidgin/gtkprefs.c:646 msgid "" "Select a smiley theme that you would like to use from the list below. New " "themes can be installed by dragging and dropping them onto the theme list." @@ -18083,154 +13216,118 @@ "আপনি যে স্মাইলি থীম ব্যবহার করতে চান তা নিম্নবর্তী তালিকা থেকে বাছাই করুন। নতুন " "থীম থীমের তালিকায় টানা ও ছাড়ার মাধ্যমে তাদের সংস্থাপন করতে পারেন।" -#: ../pidgin/gtkprefs.c:681 msgid "Icon" msgstr "আইকন" # tithi -#: ../pidgin/gtkprefs.c:891 msgid "Keyboard Shortcuts" msgstr "কীবোর্ড শর্টকাট" -#: ../pidgin/gtkprefs.c:911 msgid "Cl_ose conversations with the Escape key" msgstr "Escape কী দ্বারা কথোপকথনসমূহ বন্ধ করুন (_o)" -#: ../pidgin/gtkprefs.c:940 msgid "System Tray Icon" msgstr "সিস্টেম ট্রে এর আইকন" -#: ../pidgin/gtkprefs.c:941 msgid "_Show system tray icon:" msgstr "সিস্টেম ট্রে এর আইকন প্রদর্শন করুন (_S):" -#: ../pidgin/gtkprefs.c:944 msgid "On unread messages" msgstr "অপঠিত বার্তাসমূহে" -#: ../pidgin/gtkprefs.c:950 msgid "Conversation Window Hiding" msgstr "কথোপকথন উইন্ডো লুকিয়ে ফেলছে" -#: ../pidgin/gtkprefs.c:951 msgid "_Hide new IM conversations:" msgstr "নতুন কথোপকথন IM লুকিয়ে রাখুন (_H):" -#: ../pidgin/gtkprefs.c:954 ../pidgin/gtkprefs.c:2095 msgid "When away" msgstr "যখন অনুপস্থিত" #. All the tab options! -#: ../pidgin/gtkprefs.c:962 msgid "Tabs" msgstr "ট্যাবসমূহ" -#: ../pidgin/gtkprefs.c:964 msgid "Show IMs and chats in _tabbed windows" msgstr "আইএম ও আড্ডাসমূহ ট্যাবকৃত উইন্ডোতে প্রদর্শন করুন (_t)" -#: ../pidgin/gtkprefs.c:978 msgid "Show close b_utton on tabs" msgstr "ট্যাবে বন্ধ বোতাম প্রদর্শন করুন (_u)" -#: ../pidgin/gtkprefs.c:981 msgid "_Placement:" msgstr "অবস্থান (_P):" -#: ../pidgin/gtkprefs.c:983 msgid "Top" msgstr "উপর" -#: ../pidgin/gtkprefs.c:984 msgid "Bottom" msgstr "নীচ" -#: ../pidgin/gtkprefs.c:985 msgid "Left" msgstr "বাম" -#: ../pidgin/gtkprefs.c:986 msgid "Right" msgstr "ডান" -#: ../pidgin/gtkprefs.c:988 msgid "Left Vertical" msgstr "বাম উলম্ব" -#: ../pidgin/gtkprefs.c:989 msgid "Right Vertical" msgstr "ডান উলম্ব" -#: ../pidgin/gtkprefs.c:996 msgid "N_ew conversations:" msgstr "নতুন কথোপকথন (_e):" -#: ../pidgin/gtkprefs.c:1045 msgid "Show _formatting on incoming messages" msgstr "আগত বার্তাসমূহে বিন্যাসকরণ প্রদর্শন করুন (_f)" # tithi -#: ../pidgin/gtkprefs.c:1047 msgid "Close IMs immediately when the tab is closed" msgstr "ট্যাব বন্ধ করার সময় IM তাৎ‍ক্ষণিকভাবে বন্ধ করুন" -#: ../pidgin/gtkprefs.c:1050 msgid "Show _detailed information" msgstr "বিস্তারিত তথ্য প্রদর্শন করুন (_d)" -#: ../pidgin/gtkprefs.c:1052 msgid "Enable buddy ic_on animation" msgstr "এ্যানিমেশনে বন্ধুর আইকন সক্রিয় করুন (_o)" -#: ../pidgin/gtkprefs.c:1059 msgid "_Notify buddies that you are typing to them" msgstr "আপনি যা টাইপ করছেন তা বন্ধুদের অবগত করুন (_N)" -#: ../pidgin/gtkprefs.c:1062 msgid "Highlight _misspelled words" msgstr "ভুল বানানের শব্দ হাইলাইট করুন (_m)" # tithi -#: ../pidgin/gtkprefs.c:1066 msgid "Use smooth-scrolling" msgstr "মসৃন-স্ক্রলিং ব্যবহার করুন" -#: ../pidgin/gtkprefs.c:1069 msgid "F_lash window when IMs are received" msgstr "আইএম গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_l)" -#: ../pidgin/gtkprefs.c:1071 msgid "Minimi_ze new conversation windows" msgstr "নতুন কথোপকথন উইন্ডো নূন্যতম করুন (_z)" # tithi -#: ../pidgin/gtkprefs.c:1075 msgid "Minimum input area height in lines:" msgstr "লাইনের ন্যুনতম ইনপুট এলাকার উচ্চতা:" -#: ../pidgin/gtkprefs.c:1081 msgid "Font" msgstr "ফন্ট" # tithi -#: ../pidgin/gtkprefs.c:1083 msgid "Use document font from _theme" msgstr "থীম থেকে নথির ফন্ট ব্যবহার করুন (_t)" # tithi -#: ../pidgin/gtkprefs.c:1085 msgid "Use font from _theme" msgstr "থীম থেকে ফন্ট ব্যবহার করুন (_t)" -#: ../pidgin/gtkprefs.c:1091 msgid "Conversation _font:" msgstr "কথোপকথন ফন্ট (_f):" -#: ../pidgin/gtkprefs.c:1098 msgid "Default Formatting" msgstr "পুর্বনির্ধারিত বিন্যাসকরণ" -#: ../pidgin/gtkprefs.c:1117 msgid "" "This is how your outgoing message text will appear when you use protocols " "that support formatting." @@ -18239,68 +13336,53 @@ "এমনভাবে উপস্থিত হবে।" # tithi -#: ../pidgin/gtkprefs.c:1177 msgid "Cannot start proxy configuration program." msgstr "প্রক্সি বিন্যাসন প্রোগ্রাম শুরু করতে পারে না।" -#: ../pidgin/gtkprefs.c:1189 msgid "Cannot start browser configuration program." msgstr "ব্রাউজারের বিন্যাসন প্রোগ্রাম শুরু করতে পারে না।" -#: ../pidgin/gtkprefs.c:1209 msgid "ST_UN server:" msgstr "STUN সার্ভার (_U):" # tithi -#: ../pidgin/gtkprefs.c:1221 msgid "Example: stunserver.org" msgstr "উদাহরণ: স্ট্যানসার্ভার.অর্গ" -#: ../pidgin/gtkprefs.c:1225 msgid "_Autodetect IP address" msgstr "স্বয়ং-শনাক্ত আইপি ঠিকানা (_A)" -#: ../pidgin/gtkprefs.c:1234 msgid "Public _IP:" msgstr "সর্বসাধারণ আইপি (_I):" -#: ../pidgin/gtkprefs.c:1265 msgid "Ports" msgstr "পোর্টসমূহ" # tithi -#: ../pidgin/gtkprefs.c:1268 msgid "_Enable automatic router port forwarding" msgstr "স্বয়ংক্রিয় রাউটার পোর্ট অগ্রগমন সক্রিয় করুন (_E)" -#: ../pidgin/gtkprefs.c:1271 msgid "_Manually specify range of ports to listen on" msgstr "শুনতে পোর্টের সীমা নিজের হাতে উল্লেখ করুন (_M)" -#: ../pidgin/gtkprefs.c:1274 msgid "_Start port:" msgstr "শুরুর পোর্ট (_S):" -#: ../pidgin/gtkprefs.c:1281 msgid "_End port:" msgstr "শেষ পোর্ট (_E):" -#: ../pidgin/gtkprefs.c:1289 msgid "Proxy Server & Browser" msgstr "প্রক্সি সার্ভার & ব্রাউজার" # tithi -#: ../pidgin/gtkprefs.c:1297 msgid "Proxy configuration program was not found." msgstr "প্রক্সির পছন্দসই বিন্যাসন প্রোগ্রাম খুঁজে পাওয়া যায়নি।" # tithi -#: ../pidgin/gtkprefs.c:1305 msgid "Browser configuration program was not found." msgstr "ব্রাউজারের পছন্দসই বিন্যাসন প্রোগ্রাম খুঁজে পাওয়া যায়নি।" # tithi -#: ../pidgin/gtkprefs.c:1310 msgid "" "Proxy & Browser preferences are configured\n" "in GNOME Preferences" @@ -18308,100 +13390,80 @@ "প্রক্সি ও ব্রাউজারের প্রাধিকারসমূহ \n" "GNOME প্রাধিকারসমূহে পছন্দসই বিন্যাসন করা হয়েছে" -#: ../pidgin/gtkprefs.c:1317 msgid "Configure _Proxy" msgstr "প্রক্সি পছন্দসই বিন্যাস করুন (_P)" -#: ../pidgin/gtkprefs.c:1322 msgid "Configure _Browser" msgstr "ব্রাউজার পছন্দসই বিন্যাস করুন (_B)" -#: ../pidgin/gtkprefs.c:1328 msgid "Proxy Server" msgstr "প্রক্সি সার্ভার" -#: ../pidgin/gtkprefs.c:1333 msgid "No proxy" msgstr "কোনো প্রক্সি নেই" -#: ../pidgin/gtkprefs.c:1389 +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "" + msgid "_User:" msgstr "ব্যবহারকারী (_U):" # tithi -#: ../pidgin/gtkprefs.c:1477 msgid "Seamonkey" msgstr "সিমাঙ্কি" -#: ../pidgin/gtkprefs.c:1478 msgid "Opera" msgstr "অপেরা" -#: ../pidgin/gtkprefs.c:1479 msgid "Netscape" msgstr "নেটস্কেপ" -#: ../pidgin/gtkprefs.c:1480 msgid "Mozilla" msgstr "মজিলা" -#: ../pidgin/gtkprefs.c:1481 msgid "Konqueror" msgstr "কনকোয়েরর" -#: ../pidgin/gtkprefs.c:1482 msgid "Desktop Default" msgstr "ডেস্কটপ পূর্বনির্ধারিত" -#: ../pidgin/gtkprefs.c:1483 msgid "GNOME Default" msgstr "GNOME পূর্বনির্ধারিত" -#: ../pidgin/gtkprefs.c:1484 msgid "Galeon" msgstr "গ্যালিওন" -#: ../pidgin/gtkprefs.c:1485 msgid "Firefox" msgstr "ফায়ারফক্স" -#: ../pidgin/gtkprefs.c:1486 msgid "Firebird" msgstr "ফায়ারবার্ড" -#: ../pidgin/gtkprefs.c:1487 msgid "Epiphany" msgstr "ইপিফ্যানি" -#: ../pidgin/gtkprefs.c:1496 msgid "Manual" msgstr "সহায়িকা" -#: ../pidgin/gtkprefs.c:1557 msgid "Browser Selection" msgstr "ব্রাউজার নির্বাচন" -#: ../pidgin/gtkprefs.c:1561 msgid "_Browser:" msgstr "ব্রাউজার (_B):" -#: ../pidgin/gtkprefs.c:1569 msgid "_Open link in:" msgstr "লিঙ্ক খুলুন (_O):" -#: ../pidgin/gtkprefs.c:1571 msgid "Browser default" msgstr "ব্রাউজার পূর্বনির্ধারিত" -#: ../pidgin/gtkprefs.c:1572 msgid "Existing window" msgstr "বিদ্যমান উইন্ডো" -#: ../pidgin/gtkprefs.c:1574 msgid "New tab" msgstr "নতুন ট্যাব" -#: ../pidgin/gtkprefs.c:1591 #, c-format msgid "" "_Manual:\n" @@ -18410,63 +13472,54 @@ "সহায়িকা (_M):\n" "(URL এর জন্য %s)" -#: ../pidgin/gtkprefs.c:1617 msgid "Log _format:" msgstr "কার্যবিবরণী বিন্যাস (_f):" -#: ../pidgin/gtkprefs.c:1622 msgid "Log all _instant messages" msgstr "সব তাৎক্ষণিক বার্তাসমূহ লগ করুন (_i)" -#: ../pidgin/gtkprefs.c:1624 msgid "Log all c_hats" msgstr "সকল আড্ডা লগ করুন (_h)" -#: ../pidgin/gtkprefs.c:1626 msgid "Log all _status changes to system log" msgstr "সব অবস্থার পরিবর্তনসমূহ সিস্টেমের কার্যবিবরণীতে লগ করুন (_s)" -#: ../pidgin/gtkprefs.c:1776 msgid "Sound Selection" msgstr "শব্দ নির্বাচন" -#: ../pidgin/gtkprefs.c:1786 +#, c-format msgid "Quietest" msgstr "একদম চুপচাপ" -#: ../pidgin/gtkprefs.c:1788 +#, c-format msgid "Quieter" msgstr "অপেক্ষাকৃত চুপচাপ" -#: ../pidgin/gtkprefs.c:1790 +#, c-format msgid "Quiet" msgstr "চুপচাপ" -#: ../pidgin/gtkprefs.c:1794 +#, c-format msgid "Loud" msgstr "জোরে" -#: ../pidgin/gtkprefs.c:1796 +#, c-format msgid "Louder" msgstr "অপেক্ষাকৃত জোরে" -#: ../pidgin/gtkprefs.c:1798 +#, c-format msgid "Loudest" msgstr "একদম জোরে" -#: ../pidgin/gtkprefs.c:1880 msgid "_Method:" msgstr "প্রক্রিয়া (_M):" -#: ../pidgin/gtkprefs.c:1882 msgid "Console beep" msgstr "কনসোল বীপ" -#: ../pidgin/gtkprefs.c:1889 msgid "No sounds" msgstr "কোনো শব্দ নেই" -#: ../pidgin/gtkprefs.c:1902 #, c-format msgid "" "Sound c_ommand:\n" @@ -18475,283 +13528,218 @@ "শব্দের নির্দেশ (_o):\n" "(ফাইল-নামের জন্য %s)" -#: ../pidgin/gtkprefs.c:1912 msgid "M_ute sounds" msgstr "শব্দ বন্ধ করুন (_u)" -#: ../pidgin/gtkprefs.c:1915 msgid "Sounds when conversation has _focus" msgstr "কথোপকথন ফোকাস করার শব্দ" -#: ../pidgin/gtkprefs.c:1917 msgid "_Enable sounds:" msgstr "শব্দ সক্রিয় করুন (_E):" -#: ../pidgin/gtkprefs.c:1934 msgid "V_olume:" msgstr "ভলিউম (_o):" -#: ../pidgin/gtkprefs.c:2001 msgid "Play" msgstr "বাজাও" -#: ../pidgin/gtkprefs.c:2027 msgid "_Browse..." msgstr "ব্রাউজ করুন... (_B)" -#: ../pidgin/gtkprefs.c:2035 msgid "_Reset" msgstr "পুনঃ বিন্যাস করুন (_R)" -#: ../pidgin/gtkprefs.c:2078 msgid "_Report idle time:" msgstr "অলস সময়ের প্রতিবেদন দিন (_R)" # tithi -#: ../pidgin/gtkprefs.c:2083 msgid "Based on keyboard or mouse use" msgstr "কীবোর্ড বা মাউস ব্যবহারের উপর ভিত্তি করে" -#: ../pidgin/gtkprefs.c:2092 msgid "_Auto-reply:" msgstr "স্বয়ংক্রিয়-উত্তর (_A):" -#: ../pidgin/gtkprefs.c:2096 msgid "When both away and idle" msgstr "যখন উভয়ই অনুপস্থিত এবং অলস" #. Auto-away stuff -#: ../pidgin/gtkprefs.c:2102 msgid "Auto-away" msgstr "স্বয়ংক্রিয়ভাবে অনুপস্থিতি" -#: ../pidgin/gtkprefs.c:2104 msgid "Change status when _idle" msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন (_i)" -#: ../pidgin/gtkprefs.c:2108 msgid "_Minutes before becoming idle:" msgstr "অলস হওয়ার পূর্বের মিনিট (_M):" -#: ../pidgin/gtkprefs.c:2115 msgid "Change _status to:" msgstr "অবস্থা পরিবর্তন করুন (_s):" # tithi #. Signon status stuff -#: ../pidgin/gtkprefs.c:2128 msgid "Status at Startup" msgstr "সূচনার অবস্থা" # tithi -#: ../pidgin/gtkprefs.c:2130 msgid "Use status from last _exit at startup" msgstr "সর্বশেষ ত্যাগের অবস্থা শুরুতে ব্যবহার করুন (_e)" # tithi -#: ../pidgin/gtkprefs.c:2137 msgid "Status to a_pply at startup:" msgstr "সূচনাতে প্রয়োগ করার অবস্থা (_p):" -#: ../pidgin/gtkprefs.c:2166 msgid "Interface" msgstr "ইন্টারফেস" -#: ../pidgin/gtkprefs.c:2168 msgid "Smiley Themes" msgstr "স্মাইলী থীমসমূহ" -#: ../pidgin/gtkprefs.c:2175 msgid "Browser" msgstr "ব্রাউজার" -#: ../pidgin/gtkprefs.c:2179 msgid "Status / Idle" msgstr "অবস্থা / অলস" -#: ../pidgin/gtkprivacy.c:81 msgid "Allow all users to contact me" msgstr "সব ব্যবহারকারীকে আমার সাথে যোগাযোগ করার অনুমতি দিন" -#: ../pidgin/gtkprivacy.c:82 msgid "Allow only the users on my buddy list" msgstr "শুধুমাত্র আমার তালিকার বন্ধুদের অনুমতি দিন" -#: ../pidgin/gtkprivacy.c:83 msgid "Allow only the users below" msgstr "শুধুমাত্র নিম্নোলিখিত ব্যবহারকারীদের অনুমতি দিন" -#: ../pidgin/gtkprivacy.c:84 msgid "Block all users" msgstr "সব ব্যবহারকারীদের ব্লক করুন" -#: ../pidgin/gtkprivacy.c:85 msgid "Block only the users below" msgstr "শুধুমাত্র নিম্নোলিখিত ব্যবহারকারীদের ব্লক করুন" -#: ../pidgin/gtkprivacy.c:352 msgid "Privacy" msgstr "ব্যক্তিগত" -#: ../pidgin/gtkprivacy.c:362 msgid "Changes to privacy settings take effect immediately." msgstr "ব্যক্তিগত বিন্যাসনসমূহে পরিবর্তনসমূহ তাৎ‍ক্ষণিকভাবে কার্যকর হবে।" -#: ../pidgin/gtkprivacy.c:371 msgid "Set privacy for:" msgstr "এর জন্য গোপনীয়তা নির্ধারণ করুন:" #. Remove All button -#: ../pidgin/gtkprivacy.c:417 msgid "Remove Al_l" msgstr "সব অপসারণ করুন (_l)" -#: ../pidgin/gtkprivacy.c:503 ../pidgin/gtkprivacy.c:520 msgid "Permit User" msgstr "ব্যবহারকারীকে অনুমতি দিন" -#: ../pidgin/gtkprivacy.c:504 msgid "Type a user you permit to contact you." msgstr "আপনি অনুমতি দেন এমন ব্যবহারকারীকে আপনার সাথে যোগাযোগের জন্য টাইপ করুন।" -#: ../pidgin/gtkprivacy.c:505 msgid "Please enter the name of the user you wish to be able to contact you." msgstr "" "অনুগ।রহ করে আপনার সাথে যোগাযোগে অনুমতি দিতে চান এমন ব্যবহারকারীর নাম প্রবেশ করান।" -#: ../pidgin/gtkprivacy.c:508 ../pidgin/gtkprivacy.c:524 msgid "_Permit" msgstr "অনুমতি দিন (_P)" -#: ../pidgin/gtkprivacy.c:514 #, c-format msgid "Allow %s to contact you?" msgstr "আপনার সাথে যোগাযোগের জন্যে %s কে কি অনুমতি দিবেন?" -#: ../pidgin/gtkprivacy.c:516 #, c-format msgid "Are you sure you wish to allow %s to contact you?" msgstr "আপনি কি নিশ্চিত আপনি %s-কে আপনার সাথে যোগাযোগের অনুমতি দিতে চান?" -#: ../pidgin/gtkprivacy.c:545 ../pidgin/gtkprivacy.c:559 msgid "Block User" msgstr "ব্যবহারকারীকে বাধা দিন" -#: ../pidgin/gtkprivacy.c:546 msgid "Type a user to block." msgstr "বাধা দেয়ার জন্য ব্যবহারকারীকে টাইপ করুন।" -#: ../pidgin/gtkprivacy.c:547 msgid "Please enter the name of the user you wish to block." msgstr "অনুগ্রহ করে আপনি যে ব্যবহারকারীকে ব্লক করতে চান তার নাম প্রবেশ করান।" -#: ../pidgin/gtkprivacy.c:555 #, c-format msgid "Block %s?" msgstr "%s কে কি ব্লক করবেন?" -#: ../pidgin/gtkprivacy.c:557 #, c-format msgid "Are you sure you want to block %s?" msgstr "আপনি কি নিশ্চিত আপনি %s-কে ব্লক করতে চান?" -#: ../pidgin/gtkrequest.c:274 msgid "Apply" msgstr "প্রয়োগ করুন" -#: ../pidgin/gtkrequest.c:1503 msgid "That file already exists" msgstr "ঐ ফাইলটি ইতোমধ্যে বিদ্যমান" -#: ../pidgin/gtkrequest.c:1504 msgid "Would you like to overwrite it?" msgstr "আপনি কি এটা উপরিলিখন করতে চান?" # tithi -#: ../pidgin/gtkrequest.c:1507 msgid "Overwrite" msgstr "উপরিলিখন করুন" -#: ../pidgin/gtkrequest.c:1508 msgid "Choose New Name" msgstr "নতুন নাম পছন্দ করুন" -#: ../pidgin/gtkrequest.c:1649 ../pidgin/gtkrequest.c:1663 msgid "Select Folder..." msgstr "ফোল্ডার নির্বাচন করুন..." #. list button -#: ../pidgin/gtkroomlist.c:570 msgid "_Get List" msgstr "তালিকা সংগ্রহ করুন (_G)" #. add button -#: ../pidgin/gtkroomlist.c:578 msgid "_Add Chat" msgstr "আড্ডা যোগ করুন (_A)" -#: ../pidgin/gtksavedstatuses.c:340 msgid "Are you sure you want to delete the selected saved statuses?" msgstr "আপনি কি নিশ্চিত আপনি নির্বাচিত সংরক্ষিত অবস্থাসমূহ মুছে ফেলতে চান?" #. Use button -#: ../pidgin/gtksavedstatuses.c:650 ../pidgin/gtksavedstatuses.c:1279 msgid "_Use" msgstr "ব্যবহার করুন (_U)" -#: ../pidgin/gtksavedstatuses.c:793 msgid "Title already in use. You must choose a unique title." msgstr "" "শিরোনাম ইতোমধ্যে ব্যবহৃত হচ্ছে। আপনাকে অবশ্যই একটি অনন্য শিরোনাম পছন্দ করতে হবে।" -#: ../pidgin/gtksavedstatuses.c:1003 msgid "Different" msgstr "পৃথক" -#: ../pidgin/gtksavedstatuses.c:1202 msgid "_Title:" msgstr "শিরোনাম (_T):" -#: ../pidgin/gtksavedstatuses.c:1210 ../pidgin/gtksavedstatuses.c:1498 msgid "_Status:" msgstr "অবস্থা (_S):" #. Different status message expander -#: ../pidgin/gtksavedstatuses.c:1226 msgid "Use a _different status for some accounts" msgstr "কিছু একাউন্টের জন্য পৃথক অবস্থা ব্যবহার করুন (_d)" #. Save & Use button -#: ../pidgin/gtksavedstatuses.c:1286 msgid "Sa_ve & Use" msgstr "সংরক্ষণ এবং ব্যবহার করুন (_v)" -#: ../pidgin/gtksavedstatuses.c:1482 #, c-format msgid "Status for %s" msgstr "%s-এর জন্য অবস্থা" -#: ../pidgin/gtksmiley.c:228 ../pidgin/gtksmiley.c:236 -#: ../pidgin/gtksmiley.c:261 ../pidgin/gtksmiley.c:348 msgid "Custom Smiley" msgstr "পছন্দসই স্মাইলী" # tithi -#: ../pidgin/gtksmiley.c:229 ../pidgin/gtksmiley.c:262 msgid "More Data needed" msgstr "আরও তথ্য প্রয়োজন" # tithi -#: ../pidgin/gtksmiley.c:230 ../pidgin/gtksmiley.c:263 msgid "Please provide a shortcut to associate with the smiley." msgstr "অনুগ্রহ করে স্মাইলীর সাথে সম্পর্কিত করতে একটি শর্টকাট প্রদান করুন।" -#: ../pidgin/gtksmiley.c:237 msgid "Duplicate Shortcut" msgstr "অনুরুপ শর্টকাট" # tithi -#: ../pidgin/gtksmiley.c:238 msgid "" "A custom smiley for the selected shortcut already exists. Please specify a " "different shortcut." @@ -18759,83 +13747,65 @@ "নির্বাচিত শর্টকাটটির জন্য পছন্দসই স্মাইলী ইতোমধ্যে বিদ্যমান। অনুগ্রহ করে একটি ভিন্ন " "শর্টকাট উল্লেখ করুন।" -#: ../pidgin/gtksmiley.c:264 msgid "Please select an image for the smiley." msgstr "অনুগ্রহ করে স্মাইলীটির জন্য একটি চিত্র নির্বাচন করুন।" -#: ../pidgin/gtksmiley.c:367 msgid "Edit Smiley" msgstr "স্মাইলী সম্পাদনা করুন" -#: ../pidgin/gtksmiley.c:367 msgid "Add Smiley" msgstr "স্মাইলী যোগ করুন" -#: ../pidgin/gtksmiley.c:388 msgid "Smiley _Image" msgstr "স্মাইলীর চিত্র (_I)" # tithi #. Smiley shortcut -#: ../pidgin/gtksmiley.c:419 msgid "Smiley S_hortcut" msgstr "স্মাইলীর শর্টকাট (_S)" -#: ../pidgin/gtksmiley.c:515 msgid "Smiley" msgstr "স্মাইলী" # tithi -#: ../pidgin/gtksmiley.c:712 msgid "Custom Smiley Manager" msgstr "পছন্দসই স্মাইলী ব্যবস্থাপক" # tithi -#: ../pidgin/gtkstatusbox.c:403 msgid "Click to change your buddyicon for this account." msgstr "এই একাউন্টের জন্য আপনার বন্ধু-আইকন পরিবর্তন করতে ক্লিক করুন।" # tithi -#: ../pidgin/gtkstatusbox.c:404 msgid "Click to change your buddyicon for all accounts." msgstr "সব একাউন্টের জন্য আপনার বন্ধু-আইকন পরিবর্তন করতে ক্লিক করুন।" -#: ../pidgin/gtkstatusbox.c:695 msgid "Waiting for network connection" msgstr "নেটওয়ার্ক সংযোগের জন্য অপেক্ষা করছে" -#: ../pidgin/gtkstatusbox.c:1110 msgid "New status..." msgstr "নতুন অবস্থা..." -#: ../pidgin/gtkstatusbox.c:1111 msgid "Saved statuses..." msgstr "সংরক্ষিত অবস্থাসমূহ..." -#: ../pidgin/gtkstatusbox.c:1788 msgid "Status Selector" msgstr "অবস্থা নির্বাচক" # tithi -#: ../pidgin/gtkutils.c:687 msgid "Google Talk" msgstr "গুগল টক" -#: ../pidgin/gtkutils.c:1457 ../pidgin/gtkutils.c:1486 #, c-format msgid "The following error has occurred loading %s: %s" msgstr "%1s লোড করার সময় নিম্নোক্ত ত্রুটি সংঘটিত হয়েছে: %2s" -#: ../pidgin/gtkutils.c:1460 ../pidgin/gtkutils.c:1488 msgid "Failed to load image" msgstr "চিত্র লোড করতে ব্যর্থ হয়েছে" -#: ../pidgin/gtkutils.c:1562 #, c-format msgid "Cannot send folder %s." msgstr "%s ফোল্ডার পাঠাতে পারে না।" -#: ../pidgin/gtkutils.c:1563 #, c-format msgid "" "%s cannot transfer a folder. You will need to send the files within " @@ -18843,12 +13813,9 @@ msgstr "" "%s ফোল্ডার স্থানান্তর করতে পারে না। আপনাকে প্রতিটি ফাইল আলাদাভাবে পাঠাতে হবে।" -#: ../pidgin/gtkutils.c:1597 ../pidgin/gtkutils.c:1609 -#: ../pidgin/gtkutils.c:1616 msgid "You have dragged an image" msgstr "আপনি একটি চিত্র টেনেছেন" -#: ../pidgin/gtkutils.c:1598 msgid "" "You can send this image as a file transfer, embed it into this message, or " "use it as the buddy icon for this user." @@ -18856,23 +13823,18 @@ "আপনি এই ছবিটি ফাইল স্থানান্তর হিসেবে পাঠাতে পারেন, এটাকে এই বার্তার সাথে দৃঢ়বাবে " "সংযুক্ত করুন, বা এটাকে এই ব্যবহারকারীর জন্য বন্ধু আইকন হিসেবে ব্যবহার করুন।" -#: ../pidgin/gtkutils.c:1604 ../pidgin/gtkutils.c:1624 msgid "Set as buddy icon" msgstr "বন্ধু আইকন হিসেবে নির্ধারণ করুন" -#: ../pidgin/gtkutils.c:1605 ../pidgin/gtkutils.c:1625 msgid "Send image file" msgstr "চিত্র ফাইল পাঠান" -#: ../pidgin/gtkutils.c:1606 ../pidgin/gtkutils.c:1625 msgid "Insert in message" msgstr "বার্তায় প্রবেশ করান" -#: ../pidgin/gtkutils.c:1610 msgid "Would you like to set it as the buddy icon for this user?" msgstr "আপনি কি এটাকে এই ব্যবহারকারীর জন্য বন্ধু আইকন হিসেবে নির্ধারণ করতে চান?" -#: ../pidgin/gtkutils.c:1617 msgid "" "You can send this image as a file transfer, or use it as the buddy icon for " "this user." @@ -18880,7 +13842,6 @@ "আপনি এই চিত্রটি ফাইল স্থানান্তর হিসেবে পাঠাতে পারেন, বা এটাকে এই ব্যবহারকারীর " "জন্য বন্ধু আইকন হিসেবে ব্যবহার করতে পারেন।" -#: ../pidgin/gtkutils.c:1618 msgid "" "You can insert this image into this message, or use it as the buddy icon for " "this user" @@ -18893,11 +13854,9 @@ #. * send. The only logical one is "Application," but do we really want to send a binary and nothing else? #. * Probably not. I'll just give an error and return. #. The original patch sent the icon used by the launcher. That's probably wrong -#: ../pidgin/gtkutils.c:1677 msgid "Cannot send launcher" msgstr "প্রকাশক পাঠাতে পারে না" -#: ../pidgin/gtkutils.c:1677 msgid "" "You dragged a desktop launcher. Most likely you wanted to send whatever this " "launcher points to instead of this launcher itself." @@ -18905,7 +13864,6 @@ "আপনি একটি ডেস্কটপ প্রকাশক টেনে এনেছেন। এই প্রকাশকটি নিজেকে নির্দেশ করার পরিবর্তে " "আর যেখানে নির্দেশ করে সেখানে সম্ভবত আপনি পাঠাতে চান।" -#: ../pidgin/gtkutils.c:2415 #, c-format msgid "" "File: %s\n" @@ -18917,133 +13875,104 @@ "চিত্রের আকার: %3dx%4d" # tithi -#: ../pidgin/gtkutils.c:2717 #, c-format msgid "The file '%s' is too large for %s. Please try a smaller image.\n" msgstr "" "'%1s' ফাইলটি %2s এর জন্য অনেক বড়। অনুগ্রহ করে অপেক্ষাকৃত ছোট চিত্র ব্যবহার করুন।\n" -#: ../pidgin/gtkutils.c:2719 msgid "Icon Error" msgstr "আইকন ত্রুটি" -#: ../pidgin/gtkutils.c:2720 msgid "Could not set icon" msgstr "আইকন নির্ধারণ করা হয়নি" -#: ../pidgin/gtkutils.c:2820 #, c-format msgid "Failed to open file '%s': %s" msgstr "'%1s' ফাইলটি খুলতে ব্যর্থ: %2s" # tithi -#: ../pidgin/gtkutils.c:2869 #, c-format msgid "" "Failed to load image '%s': reason not known, probably a corrupt image file" msgstr "" "'%s' চিত্রটি লোড করতে ব্যর্থ হয়েছে। কারণ জানা নেই, সম্ভবত একটি নষ্ট চিত্রের ফাইল" -#: ../pidgin/gtkwhiteboard.c:754 ../pidgin/gtkwhiteboard.c:773 msgid "Save File" msgstr "ফাইল সংরক্ষণ করুন" -#: ../pidgin/gtkwhiteboard.c:861 msgid "Select color" msgstr "রং নির্বাচন করুন" -#: ../pidgin/pidginstock.c:88 msgid "_Alias" msgstr "উপনাম (_A)" -#: ../pidgin/pidginstock.c:90 msgid "Close _tabs" msgstr "ট্যাবসমূহ বন্ধ করুন (_t)" -#: ../pidgin/pidginstock.c:92 msgid "_Get Info" msgstr "তথ্য সংগ্রহ করুন (_G)" -#: ../pidgin/pidginstock.c:93 msgid "_Invite" msgstr "আমন্ত্রণ জানান (_I)" -#: ../pidgin/pidginstock.c:94 msgid "_Modify..." msgstr "পরিবর্তন করুন... (_M)" -#: ../pidgin/pidginstock.c:95 msgid "_Add..." msgstr "যোগ করুন... (_A)" -#: ../pidgin/pidginstock.c:96 msgid "_Open Mail" msgstr "মেইল খুলুন (_O)" -#: ../pidgin/pidginstock.c:98 msgid "_Edit" msgstr "সম্পাদনা করুন (_E)" -#: ../pidgin/pidgintooltip.c:125 msgid "Pidgin Tooltip" msgstr "পিজিন টুলের-ইঙ্গিত" # tithi -#: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:2 msgid "Pidgin smileys" msgstr "পিজিন স্মাইলীসমূহ" # tithi -#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:1 msgid "Penguin Pimps" msgstr "পেঙ্গুইন পিম্পসমূহ" # tithi -#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:2 msgid "Selecting this disables graphical emoticons." msgstr "এই নিস্ক্রিয় গ্রাফিকাল অভিব্যক্তি-আইকন নির্বাচন করছে।" -#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:3 msgid "none" msgstr "কোনটি না" -#: ../pidgin/pixmaps/emotes/small/16/small.theme.in.h:1 msgid "Small" msgstr "ছোট" -#: ../pidgin/pixmaps/emotes/small/16/small.theme.in.h:2 msgid "Smaller versions of the default smilies" msgstr "পূর্বনির্ধারিত স্মাইলীগুলোর অপেক্ষাকৃত ছোট সংস্করণ" # tithi -#: ../pidgin/plugins/cap/cap.c:441 ../pidgin/plugins/cap/cap.c:444 msgid "Response Probability:" msgstr "সাড়ার সম্ভাব্যতা:" -#: ../pidgin/plugins/cap/cap.c:769 msgid "Statistics Configuration" msgstr "পরিসংখ্যান বিন্যাসন" # tithi #. msg_difference spinner -#: ../pidgin/plugins/cap/cap.c:772 msgid "Maximum response timeout:" msgstr "সর্বোচ্চ সাড়ার সময়োত্তীর্ণ হয়েছে:" -#: ../pidgin/plugins/cap/cap.c:775 ../pidgin/plugins/cap/cap.c:782 -#: ../pidgin/plugins/cap/cap.c:789 ../pidgin/plugins/timestamp.c:148 msgid "minutes" msgstr "মিনিট" # fix me tithi #. last_seen spinner -#: ../pidgin/plugins/cap/cap.c:779 msgid "Maximum last-seen difference:" msgstr "শেষ-দেখার সর্বোচ্চ পার্থক্য:" # tithi #. threshold spinner -#: ../pidgin/plugins/cap/cap.c:786 msgid "Threshold:" msgstr "থ্রেসহোল্ড:" @@ -19054,61 +13983,49 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/cap/cap.c:894 msgid "Contact Availability Prediction" msgstr "যোগাযোগ সহজলভ্যতার ভবিষ্যৎবাণী" # tithi #. *< name #. *< version -#: ../pidgin/plugins/cap/cap.c:896 msgid "Contact Availability Prediction plugin." msgstr "যোগাযোগ সহজলভ্যতার ভবিষ্যৎবাণীর প্লাগইন।" # tithi #. * summary -#: ../pidgin/plugins/cap/cap.c:897 msgid "Displays statistical information about your buddies' availability" msgstr "আপনার বন্ধুদের সম্ভাব্যতা সম্পর্কে পরিসংখ্যান সংক্রান্ত তথ্য প্রদর্শন করে" -#: ../pidgin/plugins/contact_priority.c:61 msgid "Buddy is idle" msgstr "বন্ধু অলস" -#: ../pidgin/plugins/contact_priority.c:62 msgid "Buddy is away" msgstr "বন্ধু অনুপস্থিত" # fix me tithi -#: ../pidgin/plugins/contact_priority.c:63 msgid "Buddy is \"extended\" away" msgstr "বন্ধু অনুপস্থিত \"প্রসারিত\":" #. Not used yet. -#: ../pidgin/plugins/contact_priority.c:66 msgid "Buddy is mobile" msgstr "বন্ধু মোবাইলে" -#: ../pidgin/plugins/contact_priority.c:68 msgid "Buddy is offline" msgstr "বন্ধু অফলাইনে" -#: ../pidgin/plugins/contact_priority.c:90 msgid "Point values to use when..." msgstr "ব্যবহার করতে মানসমূহ নির্দেশ করুন যখন..." -#: ../pidgin/plugins/contact_priority.c:118 msgid "" "The buddy with the largest score is the buddy who will have priority " "in the contact.\n" msgstr "" "largest score সম্বলিত বন্ধু হলো এমন বন্ধু যার যোগাযোগে অগ্রাধিকার থাকবে।\n" -#: ../pidgin/plugins/contact_priority.c:125 msgid "Use last buddy when scores are equal" msgstr "স্কোর সমান হলে শেষ বন্ধুকে ব্যবহার করুন" -#: ../pidgin/plugins/contact_priority.c:130 msgid "Point values to use for account..." msgstr "একাউন্ট ব্যবহারের জন্য মানসমূহ নির্দেশ করুন..." @@ -19118,20 +14035,17 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/contact_priority.c:188 msgid "Contact Priority" msgstr "যোগাযোগের অগ্রাধিকার" #. *< name #. *< version #. *< summary -#: ../pidgin/plugins/contact_priority.c:191 msgid "" "Allows for controlling the values associated with different buddy states." msgstr "বিভিন্ন বন্ধুর রাজ্যের সাথে সম্পর্কিত মানসমূহ নিয়ন্ত্রণ করার জন্য অনুমতি দেয়।" #. *< description -#: ../pidgin/plugins/contact_priority.c:193 msgid "" "Allows for changing the point values of idle/away/offline states for buddies " "in contact priority computations." @@ -19139,64 +14053,50 @@ "যোগাযোগের অগ্রাধিকার নির্ণয়ে বন্ধুদের জন্য অলস/অনুপস্থিত/অফলাইন অবস্থার বিন্দু মানসমূহ " "পরিবর্তন করার জন্য অনুমোদন করে।" -#: ../pidgin/plugins/convcolors.c:23 msgid "Conversation Colors" msgstr "কথোপকথন রংসমূহ" -#: ../pidgin/plugins/convcolors.c:25 ../pidgin/plugins/convcolors.c:26 msgid "Customize colors in the conversation window" msgstr "কথোপকথন উইন্ডোটির রং পছন্দসই বিন্যাস করুন" -#: ../pidgin/plugins/convcolors.c:87 msgid "Error Messages" msgstr "ত্রুটি বার্তাসমূহ" -#: ../pidgin/plugins/convcolors.c:88 msgid "Highlighted Messages" msgstr "প্রনির্দেশিত বার্তাসমূহ" -#: ../pidgin/plugins/convcolors.c:89 msgid "System Messages" msgstr "সিস্টেম বার্তাসমূহ" -#: ../pidgin/plugins/convcolors.c:90 msgid "Sent Messages" msgstr "প্রেরিত বার্তাসমূহ" -#: ../pidgin/plugins/convcolors.c:91 msgid "Received Messages" msgstr "গৃহীত বার্তাসমূহ" -#: ../pidgin/plugins/convcolors.c:223 ../pidgin/plugins/pidginrc.c:260 #, c-format msgid "Select Color for %s" msgstr "%s এর জন্য রং নির্বাচন করুন" # tithi -#: ../pidgin/plugins/convcolors.c:372 msgid "Ignore incoming format" msgstr "আগত বিন্যাস উপেক্ষা করুন" -#: ../pidgin/plugins/convcolors.c:373 msgid "Apply in Chats" msgstr "আড্ডায় প্রয়োগ করুন" # tithi -#: ../pidgin/plugins/convcolors.c:374 msgid "Apply in IMs" msgstr "আইএম গুলোতে প্রয়োগ করুন" -#: ../pidgin/plugins/extplacement.c:80 msgid "By conversation count" msgstr "কথোপকথন গণনা অনুসারে" -#: ../pidgin/plugins/extplacement.c:101 msgid "Conversation Placement" msgstr "কথোপকথন অবস্থিতিকরণ" # fix-me tithi #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above -#: ../pidgin/plugins/extplacement.c:105 msgid "" "Note: The preference for \"New conversations\" must be set to \"By " "conversation count\"." @@ -19204,11 +14104,9 @@ "নোট: \"নতুন কথোপকথনসমূহের\" প্রাধিকার অবশ্যই \"কথোপকথন গণনার ভিত্তিতে\" নির্ধারিত " "হবে।" -#: ../pidgin/plugins/extplacement.c:111 msgid "Number of conversations per window" msgstr "প্রতি উইন্ডোতে কথোপকথনের সংখ্যা" -#: ../pidgin/plugins/extplacement.c:117 msgid "Separate IM and Chat windows when placing by number" msgstr "সংখ্যা অনুসারে সাজানোর সময় আইএম ও আড্ডার উইন্ডোগুলো আলাদা করুন" @@ -19218,19 +14116,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/extplacement.c:146 msgid "ExtPlacement" msgstr "ExtPlacement" #. *< name #. *< version -#: ../pidgin/plugins/extplacement.c:148 msgid "Extra conversation placement options." msgstr "অতিরিক্ত কথোপকথন অবস্থিতিকরণ পছন্দসমূহ।" #. *< summary #. * description -#: ../pidgin/plugins/extplacement.c:150 msgid "" "Restrict the number of conversations per windows, optionally separating IMs " "and Chats" @@ -19238,22 +14133,18 @@ "আইএম এবং আড্ডা ঐচ্ছিকভাবে আলাদা করে, প্রতিটি উইন্ডোর কথোপকথন সংখ্যা সীমিত করুন।" #. Configuration frame -#: ../pidgin/plugins/gestures/gestures.c:235 msgid "Mouse Gestures Configuration" msgstr "মাউসের ভঙ্গিমা বিন্যাসন করুন" -#: ../pidgin/plugins/gestures/gestures.c:242 msgid "Middle mouse button" msgstr "মাউসের মাঝের বোতাম" -#: ../pidgin/plugins/gestures/gestures.c:247 msgid "Right mouse button" msgstr "মাউসের ডান বোতাম" # previous: # দৃশ্যমান ভঙ্গিমা প্রদর্শন (_দ) #. "Visual gesture display" checkbox -#: ../pidgin/plugins/gestures/gestures.c:259 msgid "_Visual gesture display" msgstr "ঐক্ষিক ভঙ্গিমার প্রদর্শন (_V)" @@ -19263,19 +14154,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/gestures/gestures.c:295 msgid "Mouse Gestures" msgstr "মাউসের ভঙ্গিমা" #. *< name #. *< version #. * summary -#: ../pidgin/plugins/gestures/gestures.c:298 msgid "Provides support for mouse gestures" msgstr "মাউসের ভঙ্গিমাকে সমর্থন দেয়" #. * description -#: ../pidgin/plugins/gestures/gestures.c:300 msgid "" "Allows support for mouse gestures in conversation windows. Drag the middle " "mouse button to perform certain actions:\n" @@ -19290,35 +14178,26 @@ "•পূর্ববর্তী কথোপকথনে পরিবর্তন করতে উপরে টানুন এবং তারপর বামে টানুন।\n" "•পরবর্তী কথোপকথন পরিবর্তন করতে উপরে টানুন এবং তারপর ডানে টানুন।" -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:143 msgid "Instant Messaging" msgstr "তাৎক্ষণিক বার্তাব্যবস্থা" #. Add the label. -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:461 msgid "Select a person from your address book below, or add a new person." msgstr "" "নিম্নোক্ত ঠিকানার বই থেকে একজন ব্যক্তিকে নির্বাচন করুন, বা একজন নতুন ব্যক্তি যোগ করুন।" -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:555 -#: ../pidgin/plugins/gevolution/new_person_dialog.c:305 msgid "Group:" msgstr "গ্রুপ:" #. "New Person" button -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:580 -#: ../pidgin/plugins/gevolution/assoc-buddy.c:467 -#: ../pidgin/plugins/gevolution/new_person_dialog.c:252 msgid "New Person" msgstr "নতুন ব্যক্তি" #. "Select Buddy" button -#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:597 msgid "Select Buddy" msgstr "বন্ধু নির্বাচন করুন" #. Add the label. -#: ../pidgin/plugins/gevolution/assoc-buddy.c:343 msgid "" "Select a person from your address book to add this buddy to, or create a new " "person." @@ -19327,44 +14206,34 @@ "তৈরি করুন।" #. Add the expander -#: ../pidgin/plugins/gevolution/assoc-buddy.c:431 msgid "User _details" msgstr "ব্যবহারকারীর বিবরণ (_d)" #. "Associate Buddy" button -#: ../pidgin/plugins/gevolution/assoc-buddy.c:484 msgid "_Associate Buddy" msgstr "সম্পৃক্ত বন্ধু (_A)" -#: ../pidgin/plugins/gevolution/gevolution.c:242 -#: ../pidgin/plugins/gevolution/gevolution.c:248 msgid "Unable to send email" msgstr "ই-মেইল পাঠাতে ব্যর্থ" -#: ../pidgin/plugins/gevolution/gevolution.c:243 msgid "The evolution executable was not found in the PATH." msgstr "পথ-এর মধ্যে কার্যকরযোগ্য বিবর্তন খুঁজে পাওয়া যায়নি।" # tithi -#: ../pidgin/plugins/gevolution/gevolution.c:249 msgid "An email address was not found for this buddy." msgstr "এই বন্ধুটির জন্য একটি ই-মেইল ঠিকানা খুঁজে পাওয়া যায়নি।" -#: ../pidgin/plugins/gevolution/gevolution.c:275 msgid "Add to Address Book" msgstr "ঠিকানার বইয়ে যোগ করুন" -#: ../pidgin/plugins/gevolution/gevolution.c:287 msgid "Send Email" msgstr "ই-মেইল পাঠান" #. Configuration frame -#: ../pidgin/plugins/gevolution/gevolution.c:414 msgid "Evolution Integration Configuration" msgstr "বিবর্তন একত্রিকরণ বিন্যাসন" #. Label -#: ../pidgin/plugins/gevolution/gevolution.c:417 msgid "Select all accounts that buddies should be auto-added to." msgstr "স্বয়ংক্রিয়ভাবে সব একাউন্টগুলো নির্বাচন করুন যাতে বন্ধুরা স্বয়ং-যুক্ত হবে।" @@ -19374,7 +14243,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/gevolution/gevolution.c:529 msgid "Evolution Integration" msgstr "বিবর্তন একত্রিকরণ" @@ -19382,38 +14250,29 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/gevolution/gevolution.c:532 -#: ../pidgin/plugins/gevolution/gevolution.c:534 msgid "Provides integration with Evolution." msgstr "বিবর্তনের সঙ্গে একত্রিকরণ প্রদান করে।" -#: ../pidgin/plugins/gevolution/new_person_dialog.c:266 msgid "Please enter the person's information below." msgstr "অনুগ্রহ করে ব্যক্তির তথ্যাদি নিচে প্রবেশ করান।" -#: ../pidgin/plugins/gevolution/new_person_dialog.c:270 msgid "Please enter the buddy's username and account type below." msgstr "অনুগ্রহ করে বন্ধুর ব্যবহারকারী নাম ও একাউন্টের ধরণ নিচে প্রবেশ করান।" -#: ../pidgin/plugins/gevolution/new_person_dialog.c:290 msgid "Account type:" msgstr "একাউন্টের ধরণ:" # and this #. Optional Information section -#: ../pidgin/plugins/gevolution/new_person_dialog.c:313 msgid "Optional information:" msgstr "ঐচ্ছিক তথ্য:" -#: ../pidgin/plugins/gevolution/new_person_dialog.c:348 msgid "First name:" msgstr "প্রথম নাম:" -#: ../pidgin/plugins/gevolution/new_person_dialog.c:360 msgid "Last name:" msgstr "শেষ নাম:" -#: ../pidgin/plugins/gevolution/new_person_dialog.c:380 msgid "Email:" msgstr "ইমেইল:" @@ -19423,7 +14282,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/gtk-signals-test.c:160 msgid "GTK Signals Test" msgstr "GTK সঙ্কেতের পরীক্ষা" @@ -19431,12 +14289,9 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/gtk-signals-test.c:163 -#: ../pidgin/plugins/gtk-signals-test.c:165 msgid "Test to see that all ui signals are working properly." msgstr "সব ইউআই সঙ্কেত সঠিকভাবে কাজ করছে কিনা তা দেখার জন্য পরীক্ষা করুন।" -#: ../pidgin/plugins/gtkbuddynote.c:36 #, c-format msgid "" "\n" @@ -19445,7 +14300,6 @@ "\n" "বন্ধুর নোট: %s" -#: ../pidgin/plugins/history.c:202 msgid "History" msgstr "ইতিহাস" @@ -19455,7 +14309,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/iconaway.c:82 msgid "Iconify on Away" msgstr "অনুপস্থিত হলে আইকন দ্বারা চিহ্নিত করুন" @@ -19463,51 +14316,40 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/iconaway.c:85 ../pidgin/plugins/iconaway.c:87 msgid "Iconifies the buddy list and your conversations when you go away." msgstr "আপনার অনুপস্থিতিতে বন্ধু তালিকা ও আপনার কথোপকথন আইকন দ্বারা চিহ্নিত করুন।" -#: ../pidgin/plugins/mailchk.c:160 msgid "Mail Checker" msgstr "মেইল পরীক্ষক" -#: ../pidgin/plugins/mailchk.c:162 msgid "Checks for new local mail." msgstr "নতুন স্থানীয় মেইলের জন্য পরীক্ষা করে।" -#: ../pidgin/plugins/mailchk.c:163 msgid "Adds a small box to the buddy list that shows if you have new mail." msgstr "বন্ধু তালিকার একটি ছোট বাক্স যুক্ত করে যা আপনার নতুন মেইল এলে প্রদর্শন করে।" -#: ../pidgin/plugins/markerline.c:23 msgid "Markerline" msgstr "চিহ্নিতকারীর-রেখা" # tithi -#: ../pidgin/plugins/markerline.c:25 ../pidgin/plugins/markerline.c:26 msgid "Draw a line to indicate new messages in a conversation." msgstr "কথোপকথনে নতুন বার্তাগুলো নির্দেশ করতে একটি লাইন আঁকুন।" # fix me tithi -#: ../pidgin/plugins/markerline.c:238 msgid "Jump to markerline" msgstr "চিহ্নিতকারীর-রেখায় গমন করুন" # tithi -#: ../pidgin/plugins/markerline.c:272 msgid "Draw Markerline in " msgstr "চিহ্নিতকারীর-রেখা আঁকুন" -#: ../pidgin/plugins/markerline.c:276 ../pidgin/plugins/notify.c:694 msgid "_IM windows" msgstr "আইএম উইন্ডোজ (_I)" -#: ../pidgin/plugins/markerline.c:280 ../pidgin/plugins/notify.c:701 msgid "C_hat windows" msgstr "আড্ডার উইন্ডো (_h)" # tithi -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:44 msgid "" "A music messaging session has been requested. Please click the MM icon to " "accept." @@ -19516,39 +14358,31 @@ "আইকনটি ক্লিক করুন।" # fix me -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:45 msgid "Music messaging session confirmed." msgstr "সংগীত বার্তাকরণ অধিবেশন নিশ্চিত।" # fix me -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:430 msgid "Music Messaging" msgstr "সংগীত বার্তাকরণ" # tithi -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:431 msgid "There was a conflict in running the command:" msgstr "নির্দেশ চালাতে একটি দ্বন্দ্ব ছিল:" -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:539 msgid "Error Running Editor" msgstr "সম্পাদক চালাতে ত্রুটি" -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:540 msgid "The following error has occurred:" msgstr "নিম্নোক্ত ত্রুটি সংঘটিত হয়েছে:" #. Configuration frame -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:639 msgid "Music Messaging Configuration" msgstr "সংগীত বার্তাকরণ বিন্যাসন" # tithifix me -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:643 msgid "Score Editor Path" msgstr "সম্পাদক পাথ স্কোর" -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:644 msgid "_Apply" msgstr "প্রয়োগ করুন (_A)" @@ -19561,13 +14395,11 @@ #. *< id #. *< name #. *< version -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:685 msgid "Music Messaging Plugin for collaborative composition." msgstr "সমন্নিত রচনার জন্য সংগীত বার্তাকরণ প্লাগইন করুন।" # fix me tithi #. * summary -#: ../pidgin/plugins/musicmessaging/musicmessaging.c:687 msgid "" "The Music Messaging Plugin allows a number of users to simultaneously work " "on a piece of music by editting a common score in real-time." @@ -19576,87 +14408,70 @@ "সম্পাদনার মাধ্যমে যুগপৎভাবে এক খন্ড সংগীতের উপর কাজ করে।" #. ---------- "Notify For" ---------- -#: ../pidgin/plugins/notify.c:690 msgid "Notify For" msgstr "এর জন্য প্রজ্ঞাপন" # fix me -#: ../pidgin/plugins/notify.c:709 msgid "\t_Only when someone says your username" msgstr "" " শুধুমাত্র তখন যখন কেউ একজন আপনার ব্যবহারকারীর নাম ডাকে " "(_O)" -#: ../pidgin/plugins/notify.c:719 msgid "_Focused windows" msgstr "ফোকাসকৃত উইন্ডো (_F)" #. ---------- "Notification Methods" ---------- -#: ../pidgin/plugins/notify.c:727 msgid "Notification Methods" msgstr "প্রজ্ঞাপন পদ্ধতি" -#: ../pidgin/plugins/notify.c:734 msgid "Prepend _string into window title:" msgstr "উইন্ডোর শিরোনামে স্ট্রীং যোগ করুন (_s):" #. Count method button -#: ../pidgin/plugins/notify.c:753 msgid "Insert c_ount of new messages into window title" msgstr "উইন্ডোর শিরোনামে নতুন বার্তাসমূহের সংখ্যা প্রবেশ করান (_o)" # fix me #. Count xprop method button -#: ../pidgin/plugins/notify.c:762 msgid "Insert count of new message into _X property" msgstr "X বৈশিষ্ট্যে নতুন বার্তাসমূহের সংখ্যা প্রবেশ করান (_X)" #. Urgent method button -#: ../pidgin/plugins/notify.c:770 msgid "Set window manager \"_URGENT\" hint" msgstr "উইন্ডো ব্যবস্থাপক \"জরুরী\" ইঙ্গিতে নির্দিষ্ট করুন (_U)" -#: ../pidgin/plugins/notify.c:772 msgid "_Flash window" msgstr "ফ্ল্যাশ উইন্ডো (_F)" #. Raise window method button -#: ../pidgin/plugins/notify.c:781 msgid "R_aise conversation window" msgstr "কথোপকথন উইন্ডো বৃদ্ধি করুন (_a)" #. Present conversation method button -#: ../pidgin/plugins/notify.c:789 msgid "_Present conversation window" msgstr "বর্তমান কথোপকথন উইন্ডো (_P)" #. ---------- "Notification Removals" ---------- -#: ../pidgin/plugins/notify.c:797 msgid "Notification Removal" msgstr "প্রজ্ঞাপন অপসারক" #. Remove on focus button -#: ../pidgin/plugins/notify.c:802 msgid "Remove when conversation window _gains focus" msgstr "কথোপকথন উইন্ডোতে ফোকাস করা হলে অপসারণ করুন (_g)" #. Remove on click button -#: ../pidgin/plugins/notify.c:809 msgid "Remove when conversation window _receives click" msgstr "কথোপকথন উইন্ডোতে ক্লিক করা হলে অপসারণ করুন (_r)" #. Remove on type button -#: ../pidgin/plugins/notify.c:817 msgid "Remove when _typing in conversation window" msgstr "কথোপকথন উইন্ডোতে টাইপ করার সময় অপসারণ করুন (_t)" #. Remove on message send button -#: ../pidgin/plugins/notify.c:825 msgid "Remove when a _message gets sent" msgstr "একটি বার্তা পাঠানো হলে অপসারণ করুন (_m)" #. Remove on conversation switch button -#: ../pidgin/plugins/notify.c:834 msgid "Remove on switch to conversation ta_b" msgstr "কথোপকথন ট্যাবে পরিবর্তনের সময় অপসারণ করুন (_b)" @@ -19666,7 +14481,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/notify.c:927 msgid "Message Notification" msgstr "বার্তার প্রজ্ঞাপন" @@ -19674,7 +14488,6 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/notify.c:930 ../pidgin/plugins/notify.c:932 msgid "Provides a variety of ways of notifying you of unread messages." msgstr "আপনাকে অপঠিত বার্তাসমূহের বিভিন্ন ধরনের প্রজ্ঞাপন প্রদান করে।" @@ -19684,19 +14497,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/pidgininc.c:91 msgid "Pidgin Demonstration Plugin" msgstr "পিজিন কার্যপ্রণালী প্রদর্শন প্লাগইন" #. *< name #. *< version #. * summary -#: ../pidgin/plugins/pidgininc.c:94 msgid "An example plugin that does stuff - see the description." msgstr "একটি উদাহারণ প্লাগইন যা অনেক কিছু করে - বিবরণ দেখুন।" #. * description -#: ../pidgin/plugins/pidgininc.c:96 msgid "" "This is a really cool plugin that does a lot of stuff:\n" "- It tells you who wrote the program when you log in\n" @@ -19708,60 +14518,47 @@ "- এটা সব আগত পাঠ উল্টে দেয়\n" "- আপনার তালিকাভুক্ত ব্যক্তি সাইন অন করলেই এটা তাদেরকে একটি বার্তা পাঠায়" -#: ../pidgin/plugins/pidginrc.c:51 msgid "Cursor Color" msgstr "কার্সারের রং" -#: ../pidgin/plugins/pidginrc.c:52 msgid "Secondary Cursor Color" msgstr "গৌণ কার্সারের রং" -#: ../pidgin/plugins/pidginrc.c:53 msgid "Hyperlink Color" msgstr "হাইপারলিঙ্কের রং" -#: ../pidgin/plugins/pidginrc.c:54 msgid "Visited Hyperlink Color" msgstr "প্রনির্দেশিত হাইপারলিঙ্ক রং" -#: ../pidgin/plugins/pidginrc.c:57 msgid "Highlighted Message Name Color" msgstr "প্রনির্দেশিত বার্তার নামের রং" -#: ../pidgin/plugins/pidginrc.c:69 msgid "GtkTreeView Horizontal Separation" msgstr "GtkTreeView অনুভূমিক বিভাজন" -#: ../pidgin/plugins/pidginrc.c:84 msgid "Conversation Entry" msgstr "কথোপকথন এন্টি" -#: ../pidgin/plugins/pidginrc.c:85 msgid "Request Dialog" msgstr "অনুরোধ সংলাপ" -#: ../pidgin/plugins/pidginrc.c:86 msgid "Notify Dialog" msgstr "প্রজ্ঞাপন সংলাপ" -#: ../pidgin/plugins/pidginrc.c:262 msgid "Select Color" msgstr "রং নির্বাচন করুন" -#: ../pidgin/plugins/pidginrc.c:309 +#, c-format msgid "Select Interface Font" msgstr "ইন্টারফেসের ফন্ট নির্বাচন করুন" -#: ../pidgin/plugins/pidginrc.c:312 #, c-format msgid "Select Font for %s" msgstr "%s-এর জন্য ফন্ট নির্বাচন করুন" -#: ../pidgin/plugins/pidginrc.c:380 msgid "GTK+ Interface Font" msgstr "GTK+ ইন্টারফেসের ফন্ট" -#: ../pidgin/plugins/pidginrc.c:400 msgid "GTK+ Text Shortcut Theme" msgstr "GTK+ পাঠ শর্টকাটের থীম" @@ -19785,49 +14582,38 @@ #. widget_bool_widgets[i]); #. } #. -#: ../pidgin/plugins/pidginrc.c:437 msgid "Interface colors" msgstr "ইন্টারফেসের রং" # tithi -#: ../pidgin/plugins/pidginrc.c:461 msgid "Widget Sizes" msgstr "উইজেট আকারসমূহ" -#: ../pidgin/plugins/pidginrc.c:482 msgid "Fonts" msgstr "ফন্টসমূহ" -#: ../pidgin/plugins/pidginrc.c:506 msgid "Gtkrc File Tools" msgstr "Gtkrc ফাইলের টুলসমূহ" -#: ../pidgin/plugins/pidginrc.c:511 #, c-format msgid "Write settings to %s%sgtkrc-2.0" msgstr "%s%sgtkrc-২.০ এ লিখন বিন্যাসন" -#: ../pidgin/plugins/pidginrc.c:520 msgid "Re-read gtkrc files" msgstr "gtkrc ফাইলগুলো পুনরায় পড়ুন" -#: ../pidgin/plugins/pidginrc.c:558 msgid "Pidgin GTK+ Theme Control" msgstr "পিজিন GTK+ থীম নিয়ন্ত্রণ" -#: ../pidgin/plugins/pidginrc.c:560 ../pidgin/plugins/pidginrc.c:561 msgid "Provides access to commonly used gtkrc settings." msgstr "সাধারণত ব্যবহৃত gtkrc বিন্যাসনসমূহে প্রবেশ অনুমোদন করে।" -#: ../pidgin/plugins/raw.c:175 msgid "Raw" msgstr "নতুন" -#: ../pidgin/plugins/raw.c:177 msgid "Lets you send raw input to text-based protocols." msgstr "আপনাকে পাঠ-ভিত্তিক প্রটোকলসমূহে নতুন ইনপুট পাঠাতে দেয়।" -#: ../pidgin/plugins/raw.c:178 msgid "" "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit " "'Enter' in the entry box to send. Watch the debug window." @@ -19835,20 +14621,16 @@ "আপনাকে পাঠ-ভিত্তিক প্রটোকলসমূহে (XMPP, MSN, IRC, TOC) নতুন ইনপুট পাঠাতে দেয়। " "পাঠাতে হলে এন্ট্রি বাক্সের 'Enter' চাপুন। ডিবাগ উইন্ডোটি পর্যবেক্ষণ করুন।" -#: ../pidgin/plugins/relnot.c:111 #, c-format msgid "You can upgrade to %s %s today." msgstr "আপনি আজ %s %s এ উন্নততর করতে পারেন।" -#: ../pidgin/plugins/relnot.c:116 msgid "New Version Available" msgstr "নতুন সংস্করণ সহজলভ্য" -#: ../pidgin/plugins/relnot.c:119 msgid "Later" msgstr "পরবর্তীতে" -#: ../pidgin/plugins/relnot.c:120 msgid "Download Now" msgstr "এখন ডাউনলোড করুন" @@ -19858,19 +14640,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/relnot.c:199 msgid "Release Notification" msgstr "সংস্করণ প্রজ্ঞাপন" #. *< name #. *< version #. * summary -#: ../pidgin/plugins/relnot.c:202 msgid "Checks periodically for new releases." msgstr "পর্যায়ক্রমিকভাবে নতুন সংস্করণের জন্য পরীক্ষা করুন।" #. * description -#: ../pidgin/plugins/relnot.c:204 msgid "" "Checks periodically for new releases and notifies the user with the " "ChangeLog." @@ -19886,18 +14665,15 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/sendbutton.c:176 msgid "Send Button" msgstr "পাঠানোর বোতাম" #. *< name #. *< version -#: ../pidgin/plugins/sendbutton.c:178 msgid "Conversation Window Send Button." msgstr "কথোপকথন উইন্ডোর প্রেরণ বোতাম" #. *< summary -#: ../pidgin/plugins/sendbutton.c:179 msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for when no physical keyboard is present." @@ -19905,71 +14681,55 @@ "কথোপকথন উইন্ডোর এন্ট্রি এলাকায় একটি প্রেরণ বোতাম যোগ করুন। যখন কোনো কীবোর্ড বর্তমান " "নেই এমন উদ্দেশ্যে।" -#: ../pidgin/plugins/spellchk.c:1971 msgid "Duplicate Correction" msgstr "অনুরূপ সংশোধন" -#: ../pidgin/plugins/spellchk.c:1972 msgid "The specified word already exists in the correction list." msgstr "উল্লেখিত শব্দটি ইতোমধ্যে সংশোধন তালিকায় বিদ্যমান।" -#: ../pidgin/plugins/spellchk.c:2185 msgid "Text Replacements" msgstr "পাঠ প্রতিস্থাপন" -#: ../pidgin/plugins/spellchk.c:2208 msgid "You type" msgstr "আপনি টাইপ করুন" -#: ../pidgin/plugins/spellchk.c:2222 msgid "You send" msgstr "আপনি পাঠান" -#: ../pidgin/plugins/spellchk.c:2236 msgid "Whole words only" msgstr "শুধুমাত্র পূর্ণ শব্দ" # tithi -#: ../pidgin/plugins/spellchk.c:2248 msgid "Case sensitive" msgstr "কেস সংবেদনশীল" -#: ../pidgin/plugins/spellchk.c:2274 msgid "Add a new text replacement" msgstr "নতুন পাঠ প্রতিস্থাপন যোগ করুন" -#: ../pidgin/plugins/spellchk.c:2290 msgid "You _type:" msgstr "আপনি টাইপ করুন (_t):" -#: ../pidgin/plugins/spellchk.c:2294 msgid "You _send:" msgstr "আপনি পাঠান (_s):" # tithi #. Created here so it can be passed to whole_words_button_toggled. -#: ../pidgin/plugins/spellchk.c:2297 msgid "_Exact case match (uncheck for automatic case handling)" msgstr "যথাযথ কেস সমন্বয় (স্বয়ংক্রিয় কেস পরিচালনার জন্য অপরীক্ষীত রাখুন) (_E)" -#: ../pidgin/plugins/spellchk.c:2299 msgid "Only replace _whole words" msgstr "শুধুমাত্র পূর্ণ শব্দ প্রতিস্থাপন করুন (_w)" -#: ../pidgin/plugins/spellchk.c:2324 msgid "General Text Replacement Options" msgstr "সাধারণ পাঠ প্রতিস্থাপন পছন্দসমূহ" # tithi -#: ../pidgin/plugins/spellchk.c:2325 msgid "Enable replacement of last word on send" msgstr "পাঠানোর সময় শেষ শব্দের প্রতিস্থাপন সক্রিয় করুন" -#: ../pidgin/plugins/spellchk.c:2358 msgid "Text replacement" msgstr "পাঠ প্রতিস্থাপন" -#: ../pidgin/plugins/spellchk.c:2360 ../pidgin/plugins/spellchk.c:2361 msgid "Replaces text in outgoing messages according to user-defined rules." msgstr "ব্যবহারকারী-সুনির্দিষ্ট নীতি অনুযায়ী বহির্গমন বার্তাসমুহে পাঠ প্রতিস্থাপন করে।" @@ -19979,7 +14739,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/ticker/ticker.c:74 ../pidgin/plugins/ticker/ticker.c:356 msgid "Buddy Ticker" msgstr "বন্ধু চিহ্নিতকারী" @@ -19987,11 +14746,9 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/ticker/ticker.c:359 ../pidgin/plugins/ticker/ticker.c:361 msgid "A horizontal scrolling version of the buddy list." msgstr "বন্ধুতালিকার একটি অনুভূমিক স্ক্রলিং সংস্করণ।" -#: ../pidgin/plugins/timestamp.c:135 msgid "Display Timestamps Every" msgstr "প্রত্যেক টাইমস্টাম্প প্রদর্শন করুন" @@ -20001,7 +14758,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/timestamp.c:200 msgid "Timestamp" msgstr "টাইমস্ট্যাম্প" @@ -20009,46 +14765,36 @@ #. *< name #. *< version #. * summary -#: ../pidgin/plugins/timestamp.c:203 msgid "Display iChat-style timestamps" msgstr "আই-আড্ডা-শৈলীর টাইমস্ট্যাম্প প্রদর্শন করুন" # fix me #. * description -#: ../pidgin/plugins/timestamp.c:205 msgid "Display iChat-style timestamps every N minutes." msgstr "প্রতি N মিনিট পর আই-আড্ডা-শৈলীর টাইমস্ট্যাম্প প্রদর্শন করুন।" # tithi -#: ../pidgin/plugins/timestamp_format.c:23 msgid "Timestamp Format Options" msgstr "টাইমস্ট্যাম্প বিন্যাসের পছন্দসমূহ" # tithi -#: ../pidgin/plugins/timestamp_format.c:26 +#, c-format msgid "_Force 24-hour time format" msgstr "২৪-ঘন্টার সময় বিন্যাস নির্ধারণ করুন (_F)" -#: ../pidgin/plugins/timestamp_format.c:33 msgid "Show dates in..." msgstr "এ তারিখ প্রদর্শন করুন..." -#: ../pidgin/plugins/timestamp_format.c:38 msgid "Co_nversations:" msgstr "কথোপকথন (_n):" -#: ../pidgin/plugins/timestamp_format.c:40 -#: ../pidgin/plugins/timestamp_format.c:49 msgid "For delayed messages" msgstr "বিলম্বিত বার্তাসমূহের জন্য" # tithi -#: ../pidgin/plugins/timestamp_format.c:41 -#: ../pidgin/plugins/timestamp_format.c:50 msgid "For delayed messages and in chats" msgstr "বিলম্বিত বার্তাসমূহের জন্য এবং আড্ডায়" -#: ../pidgin/plugins/timestamp_format.c:47 msgid "_Message Logs:" msgstr "বার্তার কার্যবিবরণী (_M):" @@ -20059,7 +14805,6 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/timestamp_format.c:151 msgid "Message Timestamp Formats" msgstr "বার্তার টাইমস্ট্যাম্প বিন্যাসসমূহ" @@ -20067,13 +14812,11 @@ #. *< name #. *< version #. * summary -#: ../pidgin/plugins/timestamp_format.c:154 msgid "Customizes the message timestamp formats." msgstr "বার্তার টাইমস্টাম্প বিন্যাসসমূহ পছন্দসই বিন্যাস করে।" # tithi #. * description -#: ../pidgin/plugins/timestamp_format.c:156 msgid "" "This plugin allows the user to customize conversation and logging message " "timestamp formats." @@ -20081,44 +14824,32 @@ "এই প্লাগইন ব্য়বহারকারীকে কথোপকথন এবং যুক্তকরণ বার্তার টাইমস্টাম্প বিন্যাসসমূহ পছন্দসই " "বিন্যাস করার অনুমতি দেয়।" -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:175 -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:598 -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:645 msgid "Opacity:" msgstr "জড়তা:" #. IM Convo trans options -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:562 msgid "IM Conversation Windows" msgstr "তাৎক্ষণিক বার্তার কথোপকথন উইন্ডোজ" -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:563 msgid "_IM window transparency" msgstr "তাৎক্ষণিক বার্তা উইন্ডোর স্বচ্ছতা (_I)" -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:577 msgid "_Show slider bar in IM window" msgstr "তাৎক্ষণিক বার্তার উইন্ডোতে স্লাইডার বার প্রদর্শন করুন (_S)" -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:584 msgid "Remove IM window transparency on focus" msgstr "ফোকাসে আইএম উইন্ডোর স্বচ্ছতা অপসারন করুন" -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:587 -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:635 msgid "Always on top" msgstr "সব সময় উপরে" #. Buddy List trans options -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:619 msgid "Buddy List Window" msgstr "বন্ধু তালিকার উইন্ডো" -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:620 msgid "_Buddy List window transparency" msgstr "বন্ধু তালিকা উইন্ডোর স্বচ্ছতা (_B)" -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:633 msgid "Remove Buddy List window transparency on focus" msgstr "ফোকাসে বন্ধু তালিকার উইন্ডোর স্বচ্ছতা অপসারণ করুন" @@ -20128,19 +14859,16 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:693 msgid "Transparency" msgstr "স্বচ্ছতা" #. *< name #. *< version #. * summary -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:696 msgid "Variable Transparency for the buddy list and conversations." msgstr "বন্ধু তালিকা ও কথোপকথনের জন্য ভেরিয়েবল স্বচ্ছতা।" #. * description -#: ../pidgin/plugins/win32/transparency/win2ktrans.c:698 msgid "" "This plugin enables variable alpha transparency on conversation windows and " "the buddy list.\n" @@ -20151,55 +14879,40 @@ "\n" "* নোট: এই প্লাগইন Win2000 বা অপেক্ষাকৃত প্রয়োজন।" -#: ../pidgin/plugins/win32/winprefs/winprefs.c:303 msgid "GTK+ Runtime Version" msgstr "GTK+ চলমান সংস্করণ" #. Autostart -#: ../pidgin/plugins/win32/winprefs/winprefs.c:311 msgid "Startup" msgstr "সূচনা" -#: ../pidgin/plugins/win32/winprefs/winprefs.c:312 #, c-format msgid "_Start %s on Windows startup" msgstr "উইন্ডোজ শুরুর সময় %s কে চালু করুন (_S)" -#: ../pidgin/plugins/win32/winprefs/winprefs.c:327 msgid "_Dockable Buddy List" msgstr "ডকযোগ্য বন্ধু তালিকা (_D)" #. Blist On Top -#: ../pidgin/plugins/win32/winprefs/winprefs.c:331 msgid "_Keep Buddy List window on top:" msgstr "বন্ধু তালিকার উইন্ডো উপরে রাখুন (_K):" #. XXX: Did this ever work? -#: ../pidgin/plugins/win32/winprefs/winprefs.c:336 msgid "Only when docked" msgstr "শুধুমাত্র যখন ডক করে" -# fix me -#: ../pidgin/plugins/win32/winprefs/winprefs.c:341 -msgid "_Flash window when chat messages are received" -msgstr "আড্ডার বার্তাসমূহ গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_F)" - -#: ../pidgin/plugins/win32/winprefs/winprefs.c:371 msgid "Windows Pidgin Options" msgstr "উইন্ডোজের পিজিন পছন্দসমূহ" -#: ../pidgin/plugins/win32/winprefs/winprefs.c:373 msgid "Options specific to Pidgin for Windows." msgstr "উইন্ডোজের জন্য পিজিনে উল্লেখিত পছন্দসমূহ।" # fix me -#: ../pidgin/plugins/win32/winprefs/winprefs.c:374 msgid "" "Provides options specific to Pidgin for Windows , such as buddy list docking." msgstr "" "উইন্ডোজের জন্য পিজিনে উল্লেখিত পছন্দগুলো প্রদান করে , যেমন বন্ধু তালিকা দেখানো।" -#: ../pidgin/plugins/xmppconsole.c:670 msgid "Logged out." msgstr "লগ আউট হয়েছে।" @@ -20209,30 +14922,23 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/xmppconsole.c:749 ../pidgin/plugins/xmppconsole.c:844 -#: ../pidgin/plugins/xmppconsole.c:863 msgid "XMPP Console" msgstr "XMPP কনসোল" -#: ../pidgin/plugins/xmppconsole.c:756 msgid "Account: " msgstr "একাউন্ট:" -#: ../pidgin/plugins/xmppconsole.c:783 msgid "Not connected to XMPP" msgstr "XMPP এর সাথে সংযুক্ত নয়" # tithi -#: ../pidgin/plugins/xmppconsole.c:793 msgid "Insert an stanza." msgstr "একটি পংক্তি যুক্ত করুন।" # tithi -#: ../pidgin/plugins/xmppconsole.c:802 msgid "Insert a stanza." msgstr "একটি পংক্তি প্রবেশ করান।" -#: ../pidgin/plugins/xmppconsole.c:811 msgid "Insert a stanza." msgstr "একটি পংক্তি প্রবেশ করান।" @@ -20240,16 +14946,21 @@ #. *< name #. *< version #. * summary -#: ../pidgin/plugins/xmppconsole.c:866 msgid "Send and receive raw XMPP stanzas." msgstr "নতুন XMPP পংক্তিগুলো পাঠান এবং গ্রহণ করুন।" # tithi #. * description -#: ../pidgin/plugins/xmppconsole.c:868 msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "এই প্লাগিনটি XMPP সার্ভার বা ক্লায়েন্ট ডিবাগ করার জন্য কার্যকর।" +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "MSN ঠিকানা বই পুনরূদ্ধারে ব্যর্থ হয়েছে" + +# fix me +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "আড্ডার বার্তাসমূহ গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_F)" + # tithi #~ msgid "" #~ "You may be disconnected shortly. You may want to use TOC until this is " diff -r a0668fbf2483 -r b98519a42e53 po/ca.po --- a/po/ca.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/ca.po Mon Mar 02 22:07:59 2009 +0000 @@ -3,7 +3,7 @@ # Copyright (C) unknown, Robert Millan # Copyright (C) December 2003 (from 2003-12-12 until 2003-12-18), # January (2004-01-07,12), Xan -# Copyright (c) 2004, 2005, 2006, 2007, 2008 +# Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009 # Josep Puigdemont i Casamajó # # This file is distributed under the same license as the Pidgin package. @@ -33,8 +33,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-05 01:42+0100\n" -"PO-Revision-Date: 2009-01-05 20:36+0100\n" +"POT-Creation-Date: 2009-02-22 10:28+0100\n" +"PO-Revision-Date: 2009-02-22 15:18+0100\n" "Last-Translator: Josep Puigdemont i Casamajó \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" @@ -57,7 +57,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -66,7 +66,8 @@ "Forma d'ús: %s [OPCIÓ]...\n" "\n" " -c, --config=DIR utilitza DIR per als fitxers de configuració\n" -" -d, --debug mostra missatges de depuració a la sortida estàndard\n" +" -d, --debug mostra missatges de depuració a la sortida d'error\n" +" estàndard \n" " -h, --help mostra aquesta ajuda i surt\n" " -n, --nologin no entra automàticament\n" " -v, --version mostra la versió actual i surt\n" @@ -1198,7 +1199,6 @@ msgid "Change status to" msgstr "Canvia l'estat a" -#. Conversations msgid "Conversations" msgstr "Converses" @@ -1522,7 +1522,6 @@ "Quan s'obri una nova conversa aquest connector inserirà la darrera conversa " "en la conversa actual." -#, c-format msgid "Online" msgstr "En línia" @@ -1959,7 +1958,6 @@ msgid "Transfer of file %s complete" msgstr "S'ha completat la transferència del fitxer %s" -#, c-format msgid "File transfer complete" msgstr "S'ha completat la transferència del fitxer" @@ -1967,7 +1965,6 @@ msgid "You canceled the transfer of %s" msgstr "Heu cancel·lat la transferència de %s" -#, c-format msgid "File transfer cancelled" msgstr "S'ha cancel·lat la transferència del fitxer" @@ -2168,7 +2165,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "Esteu emprant %s, però aquest connector requereix %s." -#, c-format msgid "This plugin has not defined an ID." msgstr "Aquest connector no ha definit cap ID." @@ -2866,7 +2862,6 @@ "No s'ha pogut establir cap connexió amb el servidor local de mDNS. S'està " "executant?" -#. Creating the options for the protocol msgid "First name" msgstr "Nom" @@ -2899,6 +2894,10 @@ msgid "Purple Person" msgstr "Persona porpra" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "Port local" + msgid "Bonjour" msgstr "Bonjour" @@ -3063,7 +3062,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "Absent" @@ -3961,7 +3959,6 @@ msgid "Extended Away" msgstr "Absent des de fa una bona estona" -#, c-format msgid "Do Not Disturb" msgstr "No molesteu" @@ -4714,9 +4711,6 @@ msgid "Select an action" msgstr "Seleccioneu una acció" -msgid "Unable to retrieve MSN Address Book" -msgstr "No s'ha pogut obtenir la llibreta d'adreces MSN" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it @@ -6192,7 +6186,6 @@ msgid "Error. SSL support is not installed." msgstr "Error. No hi ha instal·lades les biblioteques per a SSL." -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "S'ha tancat aquesta conferència. No s'hi poden enviar més missatges." @@ -6459,23 +6452,18 @@ msgid "Screen Sharing" msgstr "Compartició de pantalla" -#, c-format msgid "Free For Chat" msgstr "Lliure per parlar" -#, c-format msgid "Not Available" msgstr "No disponible" -#, c-format msgid "Occupied" msgstr "Ocupat" -#, c-format msgid "Web Aware" msgstr "Conscient de la web" -#, c-format msgid "Invisible" msgstr "Invisible" @@ -7039,6 +7027,7 @@ msgid "Get AIM Info" msgstr "Obtén informació de AIM" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "Edita el comentari sobre l'amic" @@ -7150,7 +7139,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "S'està intentant connectar amb %s:%hu." -#, c-format msgid "Attempting to connect via proxy server." msgstr "S'està intentant connectar a través d'un servidor intermediari." @@ -7695,6 +7683,9 @@ msgid "Show server news" msgstr "Mostra les notícies del servidor" +msgid "Show chat room when msg comes" +msgstr "Mostra la sala de xat quan hi arribin missatges" + # FIXME: keep alive -> permanència msgid "Keep alive interval (seconds)" msgstr "Interval de permanència (en segons)" @@ -11454,6 +11445,9 @@ msgid "Macedonian" msgstr "Macedoni" +msgid "Mongolian" +msgstr "Mongol" + msgid "Bokmål Norwegian" msgstr "Noruec bokmål" @@ -11572,8 +11566,30 @@ "

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

" -msgstr "IRC: #pidgin a irc.freenode.net

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

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

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

" +msgstr "" +"Ajuda per correu electrònic: support@pidgin.im

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

" +msgstr "" +"Canal d'IRC: #pidgin a irc.freenode.net

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

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

" msgid "Current Developers" msgstr "Desenvolupadors actuals" @@ -12242,6 +12258,12 @@ msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "" +"Ara se sortirà atès que ja hi ha un altre client del libpurple executant-" +"se.\n" + msgid "Open All Messages" msgstr "Obre tots els missatges" @@ -12590,6 +12612,10 @@ msgid "No proxy" msgstr "Sense servidor intermediari" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "Empra DNS remot amb servidors intermediàris SOCKS4" + msgid "_User:" msgstr "_Usuari:" @@ -14050,9 +14076,6 @@ msgid "Only when docked" msgstr "Només si està acoblada" -msgid "_Flash window when chat messages are received" -msgstr "_Fes que la finestra parpellegi quan arribin missatges de xat" - msgid "Windows Pidgin Options" msgstr "Opcions del Pidgin per al Windows" @@ -14103,6 +14126,12 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Aquest connector és útil per a depurar servidors i clients XMPP." +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "No s'ha pogut obtenir la llibreta d'adreces MSN" + +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "_Fes que la finestra parpellegi quan arribin missatges de xat" + #~ msgid "" #~ "You may be disconnected shortly. You may want to use TOC until this is " #~ "fixed. Check %s for updates." diff -r a0668fbf2483 -r b98519a42e53 po/da.po --- a/po/da.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/da.po Mon Mar 02 22:07:59 2009 +0000 @@ -1,25 +1,32 @@ -# Pidgin Danish translation -# Copyright (C) 2003-2006, Morten Brix Pedersen -# Copyright (C) 2007-2009, Peter Bach -# +# Pidgin Danish translation. +# Copyright (C) 2003-2009 Free Software Foundation, Inc. # This file is distributed under the same license as the Pidgin package. +# Morten Brix Pedersen , 2003-2006 +# Peter Bach , 2007-2009 # # Konventioner: # Buddy list, Contact list = venneliste # Buddy pounce = overvågning (som i venneovervågning) # Away = fravær eller fraværende +# Online = tilkoblet +# Offline = afkoblet +# Join = tilslutte # IM / IMs = besked / beskeder # Mouse Gesture = Musebevægelse # Friendly Name (MSN protokollen) = synligt navn # Tray Icon = Statusikon # Ban = Udvis +# Signature = underskrift +# Link = henvisning +# web = internet +# token = nøgle (netværkstermologi) # msgid "" msgstr "" -"Project-Id-Version: Pidgin 2.0.0\n" +"Project-Id-Version: Pidgin 2.5.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-02-22 13:16-0500\n" -"PO-Revision-Date: 2009-02-22 14:04+0100\n" +"PO-Revision-Date: 2009-02-23 18:17+0100\n" "Last-Translator: Peter Bach \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" @@ -50,21 +57,15 @@ "%s\n" "Brug: %s [TILVALG]...\n" "\n" -" -c, --config=MAPPE brug MAPPE for opsætningsfiler\n" +" -c, --config=DIR brug DIR for opsætningsfiler\n" " -d, --debug udskriv fejlsøgningsbeskeder til stderr\n" -" -h, --help vis denne hjælp og afslut\n" +" -h, --help vis denne hjælp og afslut\n" " -n, --nologin log ikke ind automatisk\n" " -v, --version vis nuværende version og afslut\n" #, c-format -msgid "" -"%s encountered errors migrating your settings from %s to %s. Please " -"investigate and complete the migration by hand. Please report this error at " -"http://developer.pidgin.im" -msgstr "" -"%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg " -"og afslut migreringen manuelt. Venligst rapporter denne fejl på http://" -"developer.pidgin.im" +msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im" +msgstr "%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg og færdiggør migreringen manuelt. Venligst rapportér denne fejl på http://developer.pidgin.im" msgid "Error" msgstr "Fejl" @@ -169,7 +170,7 @@ "Online: %d\n" "Total: %d" msgstr "" -"Opkoblet: %d\n" +"Tilkoblet: %d\n" "Total: %d" #, c-format @@ -197,7 +198,7 @@ msgstr "Du skal vælge en konto." msgid "The selected account is not online." -msgstr "Den valgte konto er ikke online." +msgstr "Den valgte konto er ikke tilkoblet." msgid "Error adding buddy" msgstr "Fejl ved tilføjelse af ven" @@ -221,7 +222,7 @@ msgstr "Indtast venne-information." msgid "Chats" -msgstr "Chat-rum" +msgstr "Samtalerum" #. Extract their Name and put it in msgid "Name" @@ -234,10 +235,10 @@ msgstr "Gruppe" msgid "Auto-join" -msgstr "Auto-Deltag" +msgstr "Auto-tilslut" msgid "Add Chat" -msgstr "Tilføj chat" +msgstr "Tilføj samtale" msgid "You can edit more information from the context menu later." msgstr "Du kan redigere flere informationer fra højreklik-menuen senere." @@ -255,7 +256,7 @@ msgstr "Indtast navnet på gruppen" msgid "Edit Chat" -msgstr "Redigér chat" +msgstr "Redigér samtale" msgid "Please Update the necessary fields." msgstr "Venligst opdatér de nødvendige felter." @@ -285,7 +286,7 @@ msgstr "Blokeret" msgid "Show when offline" -msgstr "Vis når offline" +msgstr "Vis når afkoblet" #, c-format msgid "Please enter the new name for %s" @@ -295,18 +296,16 @@ msgstr "Omdøb" msgid "Set Alias" -msgstr "Sæt alias" +msgstr "Angiv alias" msgid "Enter empty string to reset the name." msgstr "Indtast tom streng for at nulstille navnet." msgid "Removing this contact will also remove all the buddies in the contact" -msgstr "" -"Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt" +msgstr "Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt" msgid "Removing this group will also remove all the buddies in the group" -msgstr "" -"Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe" +msgstr "Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe" #, c-format msgid "Are you sure you want to remove %s?" @@ -354,18 +353,16 @@ msgstr "Udvidelsesmoduler" msgid "Block/Unblock" -msgstr "Blokér/Afblokér" +msgstr "Blokér/frigiv" msgid "Block" msgstr "Blokér" msgid "Unblock" -msgstr "Afblokér" - -msgid "" -"Please enter the username or alias of the person you would like to Block/" -"Unblock." -msgstr "Indtast brugernavnet eller alias på personen du vil blokere/afblokere." +msgstr "Frigiv" + +msgid "Please enter the username or alias of the person you would like to Block/Unblock." +msgstr "Indtast brugernavnet eller alias på personen du vil blokere/frigive." #. Not multiline #. Not masked? @@ -383,39 +380,35 @@ msgstr "Kanal" msgid "Join a Chat" -msgstr "Deltag i en chat" +msgstr "Tilslut en samtale" msgid "Please enter the name of the chat you want to join." -msgstr "Indtast navnet på den chat du vil tilslutte." +msgstr "Indtast navnet på den samtale du vil tilslutte." msgid "Join" -msgstr "Deltag" - -msgid "" -"Please enter the username or alias of the person whose log you would like to " -"view." -msgstr "" -"Indtast brugernavnet eller alias på den person, hvis log du gerne vil " -"gennemse." +msgstr "Tilslut" + +msgid "Please enter the username or alias of the person whose log you would like to view." +msgstr "Indtast brugernavnet eller alias på den person, hvis log du gerne vil gennemse." #. Create the "Options" frame. msgid "Options" msgstr "Indstillinger" msgid "Send IM..." -msgstr "Send kvik-besked..." +msgstr "Send besked..." msgid "Block/Unblock..." -msgstr "Blokér/Afblokér..." +msgstr "Blokér/frigiv..." msgid "Join Chat..." -msgstr "Tilslut chat..." +msgstr "Tilslut samtale..." msgid "View Log..." msgstr "Vis log..." msgid "View All Logs" -msgstr "Vis alle logge" +msgstr "Vis alle logger" msgid "Show" msgstr "Vis" @@ -424,7 +417,7 @@ msgstr "Tomme grupper" msgid "Offline buddies" -msgstr "Offline venner" +msgstr "Afkoblede venner" msgid "Sort" msgstr "Sortér" @@ -442,7 +435,7 @@ msgstr "Ven" msgid "Chat" -msgstr "Chat" +msgstr "Samtale" msgid "Grouping" msgstr "Gruppering" @@ -478,7 +471,7 @@ "Export to file %s failed.\n" "Check that you have write permission to the target path\n" msgstr "" -"Fejl ved eksportering af filen %s.\n" +"Fejl ved eksportering til filen %s.\n" "Kontroller at du har skriverettigheder til målstien\n" msgid "Certificate Export Error" @@ -511,7 +504,7 @@ #, c-format msgid "Really delete certificate for %s?" -msgstr "Vil du slette certifikat for %s?" +msgstr "Vil du slette certifikat til %s?" msgid "Confirm certificate delete" msgstr "Bekræft sletning af certifikat" @@ -542,39 +535,32 @@ msgid "" "%s\n" "\n" -"Finch will not attempt to reconnect the account until you correct the error " -"and re-enable the account." +"Finch will not attempt to reconnect the account until you correct the error and re-enable the account." msgstr "" "%s\n" " \n" -"Finch vil ikke forsøge at genforbinde til kontoen før du retter fejlen og " -"genaktiverer kontoen." +"Finch vil ikke forsøge at genforbinde til kontoen før du retter fejlen og genaktiverer kontoen." msgid "Re-enable Account" msgstr "Slå konto til igen" -msgid "" -"The account has disconnected and you are no longer in this chat. You will be " -"automatically rejoined in the chat when the account reconnects." -msgstr "" -"Kontoen har afbrudt og du er ikke længere i denne chat. Du vil automatisk " -"blive tilsluttet til chatten igen når kontoen genforbinder." +msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects." +msgstr "Kontoen har afbrudt og du er ikke længere i denne samtale. Du vil automatisk blive tilsluttet til samtalen igen når kontoen genforbinder." msgid "No such command." msgstr "Ingen kommando ved det navn." msgid "Syntax Error: You typed the wrong number of arguments to that command." -msgstr "" -"Syntaksfejl: Du indtastede det forkert antal argumenter til den kommando." +msgstr "Syntaksfejl: Du indtastede det forkert antal argumenter til den kommando." msgid "Your command failed for an unknown reason." msgstr "Din kommando fejlede pga. en ukendt årsag." msgid "That command only works in chats, not IMs." -msgstr "Den kommando virker kun i chats, ikke i samtalevinduer." +msgstr "Den kommando virker kun i samtaler, ikke i beskeder." msgid "That command only works in IMs, not chats." -msgstr "Den besked virker kun i samtalevinduer, ikke i chats." +msgstr "Den besked virker kun i beskeder, ikke i samtaler." msgid "That command doesn't work on this protocol." msgstr "Den kommando virker ikke med denne protokol." @@ -599,15 +585,13 @@ "%s skriver..." msgid "You have left this chat." -msgstr "Du har forladt denne chat." +msgstr "Du har forladt denne samtale." msgid "Logging started. Future messages in this conversation will be logged." msgstr "Logning startet. Fremtidige beskeder i denne samtale vil blive logget." -msgid "" -"Logging stopped. Future messages in this conversation will not be logged." -msgstr "" -"Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget." +msgid "Logging stopped. Future messages in this conversation will not be logged." +msgstr "Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget." msgid "Send To" msgstr "Send til" @@ -641,7 +625,7 @@ msgstr "Invitér..." msgid "Enable Logging" -msgstr "Aktiver logning" +msgstr "Aktivér logning" msgid "Enable Sounds" msgstr "Aktivér lyde" @@ -669,34 +653,21 @@ "De følgende kommandoer er tilgængelige i dette sammenhæng:\n" #, c-format -msgid "" -"%s is not a valid message class. See '/help msgcolor' for valid message " -"classes." -msgstr "" -"%s er ikke en gyldig beskedklasse. Se \"/help msgcolor\" for gyldige " -"beskedklasser." +msgid "%s is not a valid message class. See '/help msgcolor' for valid message classes." +msgstr "%s er ikke en gyldig beskedklasse. Se \"/help msgcolor\" for gyldige beskedklasser." #, c-format msgid "%s is not a valid color. See '/help msgcolor' for valid colors." msgstr "%s er ikke gyldig farve. Se \"/help msgcolor\" for gyldige farver." -msgid "" -"say <message>: Send a message normally as if you weren't using a " -"command." -msgstr "" -"say <besked>: Send en besked som normalt hvis du ikke brugte en " -"kommando." +msgid "say <message>: Send a message normally as if you weren't using a command." +msgstr "say <besked>: Send en besked som normalt hvis du ikke brugte en kommando." msgid "me <action>: Send an IRC style action to a buddy or chat." -msgstr "" -"me <handling>: Send en IRC-lignende handling til en ven eller en chat." - -msgid "" -"debug <option>: Send various debug information to the current " -"conversation." -msgstr "" -"edbug <tilvalg>: Send forskellige fejlsøgningsoplysninger til den " -"nuværende samtale." +msgstr "me <handling>: Send en IRC-lignende handling til en ven eller samtale." + +msgid "debug <option>: Send various debug information to the current conversation." +msgstr "edbug <tilvalg>: Send forskellige fejlsøgningsoplysninger til den nuværende samtale." msgid "clear: Clears the conversation scrollback." msgstr "clear: Rydder samtalevinduet for tekst." @@ -705,38 +676,28 @@ msgstr "help <kommando>: Hjælp til en specifik kommando." msgid "users: Show the list of users in the chat." -msgstr "brugere: Vis listen over brugere i chatten." +msgstr "users: Vis listen over brugere i samtalen." msgid "plugins: Show the plugins window." -msgstr "udvidelsesmoduler: Vis udvidelsesmodul-vinduet." +msgstr "plugins: Vis vinduet for udvidelsesmoduler." msgid "buddylist: Show the buddylist." -msgstr "venneliste: Vis vennelisten." +msgstr "buddylist: Vis vennelisten." msgid "accounts: Show the accounts window." -msgstr "konti: Vis konto-vinduet." +msgstr "accounts: Vis konto-vinduet." msgid "debugwin: Show the debug window." -msgstr "fejlsøgningsvin: Vis fejlsøgningsvinduet." +msgstr "debugwin: Vis fejlsøgningsvinduet." msgid "prefs: Show the preference window." -msgstr "indst: Vis indstillingsvinduet." +msgstr "prefs: Vis indstillingsvinduet." msgid "statuses: Show the savedstatuses window." -msgstr "status: Vis gemte statuser-vinduet." - -msgid "" -"msgcolor <class> <foreground> <background>: Set the color " -"for different classes of messages in the conversation window.
<" -"class>: receive, send, highlight, action, timestamp
<foreground/" -"background>: black, red, green, blue, white, gray, darkgray, magenta, " -"cyan, default

EXAMPLE:
msgcolor send cyan default" -msgstr "" -"msgcolor <klasse> <forgrund> <baggrund;: Sæt farven for de " -"forskellige klasser af beskeder i samtalevinduet.
<klasse>: " -"modtag, send, markér, handling, tidsstempel
<forgrund/" -"baggrund>: sort, rød, grøn, blå, hvid, grå, mørkegrå, magenta, cyan, " -"standard

EKSEMPEL:
msgcolor send cyan standard" +msgstr "statuses: Vis gemte statuser-vinduet." + +msgid "msgcolor <class> <foreground> <background>: Set the color for different classes of messages in the conversation window.
<class>: receive, send, highlight, action, timestamp
<foreground/background>: black, red, green, blue, white, gray, darkgray, magenta, cyan, default

EXAMPLE:
msgcolor send cyan default" +msgstr "msgcolor <klasse> <forgrund> <baggrund;: Sæt farven for de forskellige klasser af beskeder i samtalevinduet.
<klasse>: modtag, send, markér, handling, tidsstempel
<forgrund/baggrund>: sort, rød, grøn, blå, hvid, grå, mørkegrå, magenta, cyan, standard

EKSEMPEL:
msgcolor send cyan standard" msgid "Unable to open file." msgstr "Kunne ikke åbne fil." @@ -806,7 +767,7 @@ #, c-format msgid "%.2f KiB/s" -msgstr "%.2f KB/s" +msgstr "%.2f KiB/s" msgid "Sent" msgstr "Sendt" @@ -838,25 +799,14 @@ msgid "%B %Y" msgstr "%B %Y" -msgid "" -"System events will only be logged if the \"Log all status changes to system " -"log\" preference is enabled." -msgstr "" -"System handlinger vil kun blive logget hvis \"Log alle status ændringer til " -"system log\" indstillingen er slået til." - -msgid "" -"Instant messages will only be logged if the \"Log all instant messages\" " -"preference is enabled." -msgstr "" -"Beskeder vil kun blive logget hvis \"Log alle beskeder\" indstillingen er " -"slået til." - -msgid "" -"Chats will only be logged if the \"Log all chats\" preference is enabled." -msgstr "" -"Chats vil kun blive logget hvis \"Log alle chats\" indstillingen er slået " -"til." +msgid "System events will only be logged if the \"Log all status changes to system log\" preference is enabled." +msgstr "System handlinger vil kun blive logget hvis \"Log alle status ændringer til system log\" indstillingen er slået til." + +msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled." +msgstr "Beskeder vil kun blive logget hvis \"Log alle beskeder\" indstillingen er slået til." + +msgid "Chats will only be logged if the \"Log all chats\" preference is enabled." +msgstr "Samtaler vil kun blive logget hvis \"Log alle samtaler\" indstillingen er slået til." msgid "No logs were found" msgstr "Ingen logs blev fundet" @@ -901,7 +851,7 @@ msgstr[1] "%s (%s) har %d nye beskeder." msgid "New Mail" -msgstr "Ny email" +msgstr "Ny post" #, c-format msgid "Info for %s" @@ -929,7 +879,7 @@ msgstr "fejl ved indlæsning af udvidelsesmodul" msgid "unloading plugin failed" -msgstr "afmontering af udvidelsesmodul fejlede" +msgstr "udlæsning af udvidelsesmodul fejlede" #, c-format msgid "" @@ -951,7 +901,7 @@ msgstr "Udvidelsesmodul skal indlæses før du kan konfigurere det." msgid "No configuration options for this plugin." -msgstr "Ingen konfigurationsmuligheder for dette udvidelsesmodul." +msgstr "Ingen konfigurationsindstillinger for dette udvidelsesmodul." msgid "Error loading plugin" msgstr "Fejl ved indlæsning af udvidelsesmodul" @@ -959,16 +909,14 @@ msgid "The selected file is not a valid plugin." msgstr "Den valgte fil er ikke et gyldigt udvidelsesmodul." -msgid "" -"Please open the debug window and try again to see the exact error message." -msgstr "" -"Åben fejlsøgningsvinduet og prøv igen for at se den eksakte fejlbesked." +msgid "Please open the debug window and try again to see the exact error message." +msgstr "Åben fejlsøgningsvinduet og prøv igen for at se den eksakte fejlbesked." msgid "Select plugin to install" msgstr "Vælg udvidelsesmodul som skal installeres" msgid "You can (un)load plugins from the following list." -msgstr "Du kan (af)koble udvidelsesmoduler fra følgende liste." +msgstr "Du kan (ud)læse udvidelsesmoduler fra følgende liste." msgid "Install Plugin..." msgstr "Installér udvidelsesmodul..." @@ -1045,7 +993,7 @@ msgstr "Åbn et beskedvindue" msgid "Pop up a notification" -msgstr "Popup en påmindelse" +msgstr "Pop op en påmindelse" msgid "Send a message" msgstr "Send en besked" @@ -1120,7 +1068,7 @@ #, c-format msgid "Unknown pounce event. Please report this!" -msgstr "Ukendt handling ved overvågning. Venligst rapportér dette!" +msgstr "Ukendt hændelse ved overvågning. Venligst rapportér dette!" msgid "Based on keyboard use" msgstr "Baseret på keyboardbrug" @@ -1144,10 +1092,10 @@ msgstr "Log-format" msgid "Log IMs" -msgstr "Log kvik-beskeder" +msgstr "Log beskeder" msgid "Log chats" -msgstr "Log chats" +msgstr "Log samtaler" msgid "Log status change events" msgstr "Log status-ændringer handlinger" @@ -1156,13 +1104,13 @@ msgstr "Rapportér inaktiv tid" msgid "Change status when idle" -msgstr "Skift status ved inaktivitet" +msgstr "Ændr status ved inaktivitet" msgid "Minutes before changing status" msgstr "Minutter før ændring af status" msgid "Change status to" -msgstr "Skift status til" +msgstr "Ændr status til" msgid "Conversations" msgstr "Samtaler" @@ -1171,10 +1119,10 @@ msgstr "Logning" msgid "You must fill all the required fields." -msgstr "Du skal udfylde alle de påkrævede felter." +msgstr "Du skal udfylde alle de krævede felter." msgid "The required fields are underlined." -msgstr "De påkrævede felter er understreget." +msgstr "De felter som kræves er understreget." msgid "Not implemented yet." msgstr "Ikke implementeret endnu." @@ -1186,7 +1134,7 @@ msgstr "Åbn fil..." msgid "Choose Location..." -msgstr "Bestem placering..." +msgstr "Vælg placering..." msgid "Hit 'Enter' to find more rooms of this category." msgstr "Tryk \"Retur\" for at finde flere rum af denne kategori." @@ -1214,19 +1162,19 @@ msgstr "Besked sendt" msgid "Person enters chat" -msgstr "Person kommer ind i chat" +msgstr "Person kommer ind i samtale" msgid "Person leaves chat" -msgstr "Person forlader chat" +msgstr "Person forlader samtale" msgid "You talk in chat" -msgstr "Du taler i chat" +msgstr "Du taler i samtale" msgid "Others talk in chat" -msgstr "Andre snakker i chat" +msgstr "Andre taler i samtale" msgid "Someone says your username in chat" -msgstr "Nogle siger dit navn i en chat" +msgstr "Nogle siger dit brugernavn i en samtale" msgid "GStreamer Failure" msgstr "GStreamer fejl" @@ -1351,7 +1299,7 @@ msgstr "Dublet titel" msgid "Please enter a different title for the status." -msgstr "Brug en anden titel for statussen." +msgstr "Brug en anden titel for den status." msgid "Substatus" msgstr "Understatus" @@ -1391,22 +1339,16 @@ msgstr "Kan ikke finde vindue" msgid "This plugin cannot be loaded because it was not built with X11 support." -msgstr "" -"Udvidelsesmodulet kan ikke indlæses, fordi det ikke er bygget med X11-" -"understøttelse." +msgstr "Udvidelsesmodulet kan ikke indlæses, fordi det ikke er bygget med X11-understøttelse." msgid "GntClipboard" msgstr "GntClipboard" msgid "Clipboard plugin" -msgstr "Udklipsholder-udvidelsesmodul" - -msgid "" -"When the gnt clipboard contents change, the contents are made available to " -"X, if possible." -msgstr "" -"Når gnt-udklipsbordrets indhold ændrer sig, bliver indholdet gjort " -"tilgængelig for X, hvis det er muligt." +msgstr "Klippebords-udvidelsesmodul" + +msgid "When the gnt clipboard contents change, the contents are made available to X, if possible." +msgstr "Når gnt-klippebordets indhold ændrer sig, bliver indholdet gjort tilgængelig for X, hvis det er muligt." #, c-format msgid "%s just signed on" @@ -1432,13 +1374,13 @@ msgstr "Ven logger ind/ud" msgid "You receive an IM" -msgstr "Du har modtaget en kvik-besked" +msgstr "Du har modtaget en besked" msgid "Someone speaks in a chat" -msgstr "Nogle taler i en chat" +msgstr "Nogle taler i en samtale" msgid "Someone says your name in a chat" -msgstr "Nogle siger dit navn i en chat" +msgstr "Nogle siger dit navn i en samtale" msgid "Notify with a toaster when" msgstr "Påmind med en toaster når" @@ -1460,18 +1402,16 @@ msgstr "Samtale med %s på %s
" msgid "History Plugin Requires Logging" -msgstr "Historik modul kræver logning" +msgstr "Historikmodul kræver logning" msgid "" "Logging can be enabled from Tools -> Preferences -> Logging.\n" "\n" -"Enabling logs for instant messages and/or chats will activate history for " -"the same conversation type(s)." +"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)." msgstr "" "Logning kan slås til i Værktøjer -> Indstillinger -> Logning.\n" "\n" -"Ved at slå logs til for beskeder og/eller chats, vil det aktivere " -"historikken for de samme samtale typer." +"Ved at slå logs til for beskeder og/eller samtaler, vil det aktivere historikken for de samme samtale typer." msgid "GntHistory" msgstr "GntHistorik" @@ -1479,27 +1419,23 @@ msgid "Shows recently logged conversations in new conversations." msgstr "Viser tidligere loggede samtaler i nye samtaler." -msgid "" -"When a new conversation is opened this plugin will insert the last " -"conversation into the current conversation." -msgstr "" -"Når en ny samtale bliver åbnet, vil dette modul indsætte den sidste samtale " -"ind i den nye samtale." +msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation." +msgstr "Når en ny samtale bliver åbnet, vil dette modul indsætte den sidste samtale ind i den nye samtale." msgid "Online" -msgstr "Logget ind" +msgstr "Tilkoblet" msgid "Offline" -msgstr "Offline" +msgstr "Afkoblet" msgid "Online Buddies" -msgstr "Online venner" +msgstr "Tilkoblede venner" msgid "Offline Buddies" -msgstr "Offline venner" +msgstr "Afkoblede venner" msgid "Online/Offline" -msgstr "Online/Offline" +msgstr "Til-/Afkoblede" msgid "Meebo" msgstr "Meebo" @@ -1514,7 +1450,7 @@ msgstr "Indlejret gruppering (eksperimentel)" msgid "Provides alternate buddylist grouping options." -msgstr "Giver alternativ venneliste grupperingsmuligheder." +msgstr "Giver alternative grupperingsindstillinger for venneliste." msgid "Lastlog" msgstr "Lastlog" @@ -1569,14 +1505,14 @@ #, c-format msgid "Change password for %s" -msgstr "Skift adgangskode for %s" +msgstr "Ændr adgangskode for %s" msgid "Please enter your current password and your new password." msgstr "Indtast din nuværende og nye adgangskode." #, c-format msgid "Change user information for %s" -msgstr "Skift bruger oplysninger for %s" +msgstr "Ændr brugeroplysninger for %s" msgid "Set User Info" msgstr "Ret brugeroplysninger" @@ -1623,7 +1559,7 @@ #. Make messages #, c-format msgid "Accept certificate for %s?" -msgstr "Acceptér certifikat for %s?" +msgstr "Acceptér certifikat til %s?" #. TODO: Find what the handle ought to be msgid "SSL Certificate Verification" @@ -1637,17 +1573,13 @@ msgstr "Afvis" msgid "_View Certificate..." -msgstr "_Se certifikat..." +msgstr "_Vis certifikat..." #. Prompt the user to authenticate the certificate #. vrq will be completed by user_auth #, c-format -msgid "" -"The certificate presented by \"%s\" is self-signed. It cannot be " -"automatically checked." -msgstr "" -"Certifikatet præsenteret af \"%s\" er selvsigneret. Det kan ikke blive " -"kontrolleret automatisk." +msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked." +msgstr "Certifikatet præsenteret af \"%s\" er selv underskrevet. Det kan ikke kontrolleres automatisk." #, c-format msgid "The certificate chain presented for %s is not valid." @@ -1665,42 +1597,27 @@ msgstr "Ugyldig certifikatkæde" #. vrq will be completed by user_auth -msgid "" -"You have no database of root certificates, so this certificate cannot be " -"validated." -msgstr "" -"Du har ingen database med rodcertifikater, så dette certifikat kan ikke " -"godkendes." +msgid "You have no database of root certificates, so this certificate cannot be validated." +msgstr "Du har ingen database med rodcertifikater, så dette certifikat kan ikke kontrolleres." #. vrq will be completed by user_auth -msgid "" -"The root certificate this one claims to be issued by is unknown to Pidgin." -msgstr "" -"Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin." - -#, c-format -msgid "" -"The certificate chain presented by %s does not have a valid digital " -"signature from the Certificate Authority from which it claims to have a " -"signature." -msgstr "" -"Certifikatkæden, præsenteret af %s, har ikke et gyldigt digitalt signatur " -"fra den certificerende myndighed, som den påstår at have et signatur fra." +msgid "The root certificate this one claims to be issued by is unknown to Pidgin." +msgstr "Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin." + +#, c-format +msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature." +msgstr "Certifikatkæden, præsenteret af %s, har ikke en gyldig digital underskrift fra den certificerende myndighed, som den påstår at have en underskrift fra." msgid "Invalid certificate authority signature" -msgstr "Ugyldig signatur fra certificerende myndighed" +msgstr "Ugyldig underskrift fra certificerende myndighed" #. Prompt the user to authenticate the certificate #. TODO: Provide the user with more guidance about why he is #. being prompted #. vrq will be completed by user_auth #, c-format -msgid "" -"The certificate presented by \"%s\" claims to be from \"%s\" instead. This " -"could mean that you are not connecting to the service you believe you are." -msgstr "" -"Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette " -"kunne tyde på, at du ikke er forbundet til den service du tror du er." +msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead. This could mean that you are not connecting to the service you believe you are." +msgstr "Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette kunne tyde på, at du ikke er forbundet til den tjeneste du tror du er." #. Make messages #, c-format @@ -1802,17 +1719,17 @@ msgstr "Intet navn" msgid "Unable to create new resolver process\n" -msgstr "Kunne ikke oprette ny opløsningsproces\n" +msgstr "Kunne ikke oprette ny løsningsproces\n" msgid "Unable to send request to resolver process\n" -msgstr "Kunne ikke sende forespørgelse til opløsningsproces\n" +msgstr "Kunne ikke sende forespørgsel til løsningsproces\n" #, c-format msgid "" "Error resolving %s:\n" "%s" msgstr "" -"Fejl ved opløsning af %s:\n" +"Fejl ved løsning af %s:\n" "%s" #, c-format @@ -1824,12 +1741,12 @@ "Error reading from resolver process:\n" "%s" msgstr "" -"Fejl ved indlæsning fra opløsningsproces:\n" +"Fejl ved indlæsning fra løsningsproces:\n" "%s" #, c-format msgid "Resolver process exited without answering our request" -msgstr "Opløsningsprocess afsluttede uden svar på vores forespørgelse" +msgstr "Løsningsprocess afsluttede uden svar på vores forespørgsel" #, c-format msgid "Thread creation failure: %s" @@ -1994,68 +1911,32 @@ msgid "The handler for \"ymsgr\" URLs" msgstr "Håndteringen af \"ymsgr\"-adresser" -msgid "" -"True if the command specified in the \"command\" key should handle \"aim\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"aim\"-" -"adresser." - -msgid "" -"True if the command specified in the \"command\" key should handle \"gg\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"gg\"-" -"adresser." - -msgid "" -"True if the command specified in the \"command\" key should handle \"icq\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"icq\"-" -"adresser." - -msgid "" -"True if the command specified in the \"command\" key should handle \"irc\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"irc\"-" -"adresser." - -msgid "" -"True if the command specified in the \"command\" key should handle \"msnim\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"msnim\"-" -"adresser." - -msgid "" -"True if the command specified in the \"command\" key should handle \"sip\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"sip\"-" -"adresser." - -msgid "" -"True if the command specified in the \"command\" key should handle \"xmpp\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"xmpp\"-" -"adresser." - -msgid "" -"True if the command specified in the \"command\" key should handle \"ymsgr\" " -"URLs." -msgstr "" -"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"ymsgr\"-" -"adresser." - -msgid "" -"True if the command used to handle this type of URL should be run in a " -"terminal." -msgstr "" -"Sand hvis kommandoen brugt til at håndtere denne type af adresse skal køres " -"i en terminal." +msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"aim\"-adresser." + +msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"gg\"-adresser." + +msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"icq\"-adresser." + +msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"irc\"-adresser." + +msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"msnim\"-adresser." + +msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"sip\"-adresser." + +msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"xmpp\"-adresser." + +msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs." +msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"ymsgr\"-adresser." + +msgid "True if the command used to handle this type of URL should be run in a terminal." +msgstr "Sand hvis kommandoen brugt til at håndtere denne type af adresse skal køres i en terminal." msgid "Whether the specified command should handle \"aim\" URLs" msgstr "Hvorledes den angivne kommando skal håndtere \"aim\"-adresser" @@ -2088,10 +1969,10 @@ msgstr "HTML" msgid "Plain text" -msgstr "Ren tekst" +msgstr "Klartekst" msgid "Old flat format" -msgstr "Gammel fladformat" +msgstr "Gammelt fladt format" msgid "Logging of this conversation failed." msgstr "Logning af denne samtale fejlede." @@ -2100,20 +1981,12 @@ msgstr "XML" #, c-format -msgid "" -"(%s) %s <AUTO-" -"REPLY>: %s
\n" -msgstr "" -"(%s) %s <AUTO-SVAR>:" -" %s
\n" - -#, c-format -msgid "" -"(%s) %s <AUTO-" -"REPLY>: %s
\n" -msgstr "" -"(%s) %s <AUTO-SVAR>:" -" %s
\n" +msgid "(%s) %s <AUTO-REPLY>: %s
\n" +msgstr "(%s) %s <AUTO-SVAR>: %s
\n" + +#, c-format +msgid "(%s) %s <AUTO-REPLY>: %s
\n" +msgstr "(%s) %s <AUTO-SVAR>: %s
\n" msgid "Unable to find log path!" msgstr "Kunne ikke finde logsti!" @@ -2131,7 +2004,7 @@ msgstr "Du bruger %s, men dette udvidelsesmodul kræver %s." msgid "This plugin has not defined an ID." -msgstr "Dette udvidelsesmodul har ikke defineret et ID." +msgstr "Dette udvidelsesmodul har ikke defineret et id." #, c-format msgid "Plugin magic mismatch %d (need %d)" @@ -2141,19 +2014,12 @@ msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" msgstr "ABI versions fejl %d.%d.x (kræver %d.%d.x)" -msgid "" -"Plugin does not implement all required functions (list_icon, login and close)" -msgstr "" -"Udvidelsesmodul implementerer ikke alle de krævede funktioner (list_icon, " -"login og luk)" - -#, c-format -msgid "" -"The required plugin %s was not found. Please install this plugin and try " -"again." -msgstr "" -"Det krævede udvidelsesmodul %s blev ikke fundet. Installér modulet og prøv " -"igen." +msgid "Plugin does not implement all required functions (list_icon, login and close)" +msgstr "Udvidelsesmodul implementerer ikke alle de krævede funktioner (list_icon, logind og luk)" + +#, c-format +msgid "The required plugin %s was not found. Please install this plugin and try again." +msgstr "Det krævede udvidelsesmodul %s blev ikke fundet. Installér modulet og prøv igen." msgid "Unable to load the plugin" msgstr "Kan ikke indlæse udvidelsesmodulet" @@ -2187,7 +2053,7 @@ msgstr "Når der ankommer en filoverførselsanmodning fra %s" msgid "Set Autoaccept Setting" -msgstr "Sæt automatisk accept indstillinger" +msgstr "Indstil automatisk accept indstillinger" msgid "_Save" msgstr "_Gem" @@ -2226,7 +2092,7 @@ "(kun hvis der ikke er nogen konversation med senderen)" msgid "Create a new directory for each user" -msgstr "Opret et nyt bibliotek for hver bruger" +msgstr "Opret et nyt katalog for hver bruger" msgid "Notes" msgstr "Noter" @@ -2314,7 +2180,7 @@ msgstr "Inaktivs opsætter" msgid "Set Account Idle Time" -msgstr "Sæt inaktiv tid for konto" +msgstr "Indstil inaktiv tid for konto" msgid "_Set" msgstr "_Sæt" @@ -2329,13 +2195,13 @@ msgstr "_Fjern" msgid "Set Idle Time for All Accounts" -msgstr "Sæt inaktiv tid for alle konti" +msgstr "Indstil inaktiv tid for alle konti" msgid "Unset Idle Time for All Idled Accounts" msgstr "Fjern inaktiv tid fra alle inaktive konti" msgid "Allows you to hand-configure how long you've been idle" -msgstr "Tillader dig at manuelt sætte op hvor lang tid du har været inaktiv" +msgstr "Tillader dig at indstille hvor lang tid du har været inaktiv" #. *< type #. *< ui_requirement @@ -2353,12 +2219,8 @@ msgstr "Test modul IPC understøttelse, som en klient." #. * description -msgid "" -"Test plugin IPC support, as a client. This locates the server plugin and " -"calls the commands registered." -msgstr "" -"Test modul IPC understøttelse, som en klient. Dette finder server modulet og " -"kalder den registrerede kommando." +msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered." +msgstr "Test modul IPC understøttelse, som en klient. Dette finder server modulet og kalder den registrerede kommando." #. *< type #. *< ui_requirement @@ -2377,12 +2239,10 @@ #. * description msgid "Test plugin IPC support, as a server. This registers the IPC commands." -msgstr "" -"Test modul IPC understøttelse, som en server. Dette registrerer IPC " -"kommandoerne." +msgstr "Test modul IPC understøttelse, som en server. Dette registrerer IPC kommandoerne." msgid "Join/Part Hiding Configuration" -msgstr "Tilslut/Del skjult konfiguration" +msgstr "Tilslut/Deltag skjult konfiguration" msgid "Minimum Room Size" msgstr "Mindste rumstørrelse" @@ -2400,7 +2260,7 @@ #. *< priority #. *< id msgid "Join/Part Hiding" -msgstr "Tilslut/del skjul" +msgstr "Skjul tilslut/deltag" #. *< name #. *< version @@ -2409,12 +2269,8 @@ msgstr "Skjuler overflødige tilslut/deltag-beskeder." #. * description -msgid "" -"This plugin hides join/part messages in large rooms, except for those users " -"actively taking part in a conversation." -msgstr "" -"Dette udvidelsesmodul skjuler tilslut/deltag-beskeder i store rum, undtager " -"de brugere der aktivt tager del i en samtale." +msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation." +msgstr "Dette udvidelsesmodul skjuler tilslut/deltag-beskeder i store rum, undtagen de brugere der aktivt tager del i en samtale." #. This is used in the place of a timezone abbreviation if the #. * offset is way off. The user should never really see it, but @@ -2424,7 +2280,7 @@ msgstr "(UTC)" msgid "User is offline." -msgstr "Bruger er offline." +msgstr "Bruger er afkoblet." msgid "Auto-response sent:" msgstr "Auto-svar sendt:" @@ -2439,12 +2295,8 @@ msgid "You were disconnected from the server." msgstr "Din forbindelse til serveren blev afbrudt." -msgid "" -"You are currently disconnected. Messages will not be received unless you are " -"logged in." -msgstr "" -"Du er ikke forbunddet. Beskeder vil ikke blive modtaget medmindre du er " -"logged ind." +msgid "You are currently disconnected. Messages will not be received unless you are logged in." +msgstr "Du er ikke forbunddet. Beskeder vil ikke blive modtaget medmindre du er logged ind." msgid "Message could not be sent because the maximum length was exceeded." msgstr "Besked kunne ikke sendes, fordi maksimum længden var overskredet." @@ -2525,18 +2377,13 @@ #. * description msgid "" -"When viewing logs, this plugin will include logs from other IM clients. " -"Currently, this includes Adium, MSN Messenger, and Trillian.\n" +"When viewing logs, this plugin will include logs from other IM clients. Currently, this includes Adium, MSN Messenger, and Trillian.\n" "\n" -"WARNING: This plugin is still alpha code and may crash frequently. Use it " -"at your own risk!" -msgstr "" -"Når der vises logs, vil dette udvidelsesmodul inkludere logs fra andre kvik-" -"beskedklienter. På nuværende tidspunkt, er dette Adium, MSN Messenger og " -"Trillian.\n" +"WARNING: This plugin is still alpha code and may crash frequently. Use it at your own risk!" +msgstr "" +"Når der vises logs, vil dette udvidelsesmodul inkludere logs fra andre beskedklienter. På nuværende tidspunkt, er dette Adium, MSN Messenger og Trillian.\n" "\n" -"ADVARSEL: Dette udvidelsesmodul er stadig alfa-kode og kan bryde ned " -"jævnligt. Brug det på eget ansvar!" +"ADVARSEL: Dette udvidelsesmodul er stadig alfa-kode og kan bryde ned jævnligt. Brug det på eget ansvar!" msgid "Mono Plugin Loader" msgstr "Mono-udvidelsesmodul indlæser" @@ -2545,10 +2392,10 @@ msgstr "Indlæser .NET moduler med Mono." msgid "Add new line in IMs" -msgstr "Tilføj ny linje i kvikbeskeder" +msgstr "Tilføj ny linje i beskeder" msgid "Add new line in Chats" -msgstr "Tilføj ny line i chat" +msgstr "Tilføj ny line i samtaler" #. *< magic #. *< major version @@ -2568,35 +2415,21 @@ msgstr "Indskyder en ny linje i viste besked." #. *< summary -msgid "" -"Prepends a newline to messages so that the rest of the message appears below " -"the username in the conversation window." -msgstr "" -"Indskyder en ny linje til beskederne så resten af beskederne optræder " -"nedenunder skærmnavnet i samtalevinduet." +msgid "Prepends a newline to messages so that the rest of the message appears below the username in the conversation window." +msgstr "Indskyder en ny linje til beskederne så resten af beskederne optræder nedenunder skærmnavnet i samtalevinduet." msgid "Offline Message Emulation" msgstr "Afkoblet besked-emulering" msgid "Save messages sent to an offline user as pounce." -msgstr "" -"Gem beskeder sendt til en afkoblet bruger som automatisk praj ved indlogning." - -msgid "" -"The rest of the messages will be saved as pounce. You can edit/delete the " -"pounce from the `Buddy Pounce' dialog." -msgstr "" -"Resten af beskeden vil blive gemt som automatisk praj ved indlogning. Du kan " -"redigere/slette automatisk praj ved indlogning fra venne-automatisk praj ved " -"indlogning-vinduet." - -#, c-format -msgid "" -"\"%s\" is currently offline. Do you want to save the rest of the messages in " -"a pounce and automatically send them when \"%s\" logs back in?" -msgstr "" -"\"%s\" er afkoblet. Vil du gemme testen af beskeden i en automatisk praj ved " -"indlogning og automatisk sende dem når \"%s\" logger på igen?" +msgstr "Gem beskeder sendt til en afkoblet bruger som automatisk praj ved indlogning." + +msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog." +msgstr "Resten af beskeden vil blive gemt som automatisk praj ved indlogning. Du kan redigere/slette automatisk praj ved indlogning fra venne-automatisk praj ved indlogning-vinduet." + +#, c-format +msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?" +msgstr "\"%s\" er afkoblet. Vil du gemme testen af beskeden i en automatisk praj ved indlogning og automatisk sende dem når \"%s\" logger på igen?" msgid "Offline Message" msgstr "Besked når afkoblet" @@ -2637,12 +2470,8 @@ msgid "Psychic mode for incoming conversation" msgstr "Synsk tilstand for indgående samtaler" -msgid "" -"Causes conversation windows to appear as other users begin to message you. " -"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" -msgstr "" -"Får samtalevinduerne til at dukke frem når andre brugere begynder at skrive " -"til dig. Dette virker med AIM, ICQ, XMPP, Sametime og Yahoo!" +msgid "Causes conversation windows to appear as other users begin to message you. This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" +msgstr "Får samtalevinduerne til at dukke frem når andre brugere begynder at skrive til dig. Dette virker med AIM, ICQ, XMPP, Sametime og Yahoo!" msgid "You feel a disturbance in the force..." msgstr "Du føler en ændring i kraften..." @@ -2693,7 +2522,7 @@ #. Scheme name msgid "X.509 Certificates" -msgstr "X.509 certifikater" +msgstr "X.509-certifikater" #. *< type #. *< ui_requirement @@ -2741,7 +2570,7 @@ #. * summary #. * description msgid "Provides a wrapper around SSL support libraries." -msgstr "En \"wrapper\" omkring SSL understøttelses biblioteker." +msgstr "Giver et omslag omkring SSL-understøttelses biblioteker." #, c-format msgid "%s is no longer away." @@ -2788,11 +2617,8 @@ #. *< version #. * summary #. * description -msgid "" -"Notifies in a conversation window when a buddy goes or returns from away or " -"idle." -msgstr "" -"Fortæller i en samtale når en ven bliver fraværende eller kommer tilbage." +msgid "Notifies in a conversation window when a buddy goes or returns from away or idle." +msgstr "Fortæller i en samtale når en ven bliver fraværende eller kommer tilbage." msgid "Tcl Plugin Loader" msgstr "Tcl-udvidelsesmodul indlæser" @@ -2800,25 +2626,16 @@ msgid "Provides support for loading Tcl plugins" msgstr "Giver understøttelse af Tcl-udvidelsesmoduler" -msgid "" -"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, " -"install ActiveTCL from http://www.activestate.com\n" -msgstr "" -"Ikke i stand til at opdage ActiveTCL installation. Hvis du ønsker at bruge " -"TCL-udvidelsesmoduler, installér ActiveTCL fra http://www.activestate.com\n" - -msgid "" -"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d." -"pidgin.im/BonjourWindows for more information." -msgstr "" -"Apple Bonjour værktøjssættet til Windows lbev ikke fundet, se oss på: http://" -"d.pidgin.im/BonjourWindows for more information." +msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n" +msgstr "Ikke i stand til at opdage ActiveTCL installation. Hvis du ønsker at bruge TCL-udvidelsesmoduler, installér ActiveTCL fra http://www.activestate.com\n" + +msgid "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d.pidgin.im/BonjourWindows for more information." +msgstr "Apple Bonjour-værktøjssættet til Windows blev ikke fundet, se oss på: http://d.pidgin.im/BonjourWindows for mere information." msgid "Unable to listen for incoming IM connections\n" msgstr "Ude af stand til at lytte for indgående beskeder\n" -msgid "" -"Unable to establish connection with the local mDNS server. Is it running?" +msgid "Unable to establish connection with the local mDNS server. Is it running?" msgstr "Kunne ikke etablerede forbindelse til lokal mDNS server. Kører den?" msgid "First name" @@ -2828,7 +2645,7 @@ msgstr "Efternavn" msgid "Email" -msgstr "Email" +msgstr "E-post" msgid "AIM Account" msgstr "AIM-konto" @@ -2853,16 +2670,15 @@ msgstr "Lilla person" #. Creating the options for the protocol -#, fuzzy msgid "Local Port" -msgstr "Lokalitet" +msgstr "Lokal port" msgid "Bonjour" msgstr "Bonjour" #, c-format msgid "%s has closed the conversation." -msgstr "%s har lukket samtalen." +msgstr "%s har afsluttet samtalen." msgid "Unable to send the message, the conversation couldn't be started." msgstr "Kunne ikke sende beskedn; samtalen kunne ikke startes." @@ -2880,19 +2696,16 @@ msgstr "Fejl under kommunikation med lokal mDNSResponder." msgid "Invalid proxy settings" -msgstr "Ugyldige mellemværts indstillinger" - -msgid "" -"Either the host name or port number specified for your given proxy type is " -"invalid." -msgstr "" -"Enten værtsnavnet eller porten der er angivet for din mellemvært er ugyldig." +msgstr "Ugyldige proxyindstillinger" + +msgid "Either the host name or port number specified for your given proxy type is invalid." +msgstr "Enten er værtsnavnet eller porten der er angivet for din proxytype ugyldig." msgid "Token Error" -msgstr "Token fejl" +msgstr "Nøgle fejl" msgid "Unable to fetch the token.\n" -msgstr "Ikke i stand til at få fat i token.\n" +msgstr "Ikke i stand til at få fat i nøgle.\n" msgid "Save Buddylist..." msgstr "Gem venneliste..." @@ -2944,10 +2757,10 @@ msgstr "Adgangskode (tast igen)" msgid "Enter current token" -msgstr "Indtast nuværende symbol" +msgstr "Indtast nuværende nøgle" msgid "Current token" -msgstr "Nuværende symbol" +msgstr "Nuværende nøgle" msgid "Register New Gadu-Gadu Account" msgstr "Registrér ny Gadu-Gadu konto" @@ -2974,7 +2787,7 @@ msgstr "Kvinde" msgid "Only online" -msgstr "Kun online" +msgstr "Kun tilkoblede" msgid "Find buddies" msgstr "Find venner" @@ -2992,7 +2805,7 @@ msgstr "Kunne ikke ændre adgangskode. En fejl skete.\n" msgid "Change password for the Gadu-Gadu account" -msgstr "Skift adgangskode for Gadu-Gadu kontoen" +msgstr "Ændr adgangskode for Gadu-Gadu-kontoen" msgid "Password was changed successfully!" msgstr "Adgangskoden blev ændret!" @@ -3004,14 +2817,14 @@ msgstr "Indtast din nuværende og nye adgangskode til UIN: " msgid "Change Gadu-Gadu Password" -msgstr "Skift Gadu-Gadu adgangskode" +msgstr "Ændr Gadu-Gadu-adgangskode" #, c-format msgid "Select a chat for buddy: %s" -msgstr "Vælg en chat for ven: %s" +msgstr "Vælg en samtale for ven: %s" msgid "Add to chat..." -msgstr "Tilføj til chat..." +msgstr "Tilføj til samtale..." msgid "Available" msgstr "Tilgængelig" @@ -3062,19 +2875,19 @@ msgstr "Din venneliste blev gemt på serveren." msgid "Connection failed." -msgstr "Forbindelse mislykkedes." +msgstr "Forbindelse fejlede." msgid "Add to chat" -msgstr "Tilføj til chat" +msgstr "Tilføj til samtale" msgid "Chat _name:" -msgstr "Chat _navn:" +msgstr "Samtale_navn:" msgid "Chat error" -msgstr "Chat fejl" +msgstr "Fejl i samtale" msgid "This chat name is already in use" -msgstr "Dette chatnavn eksisterer allerede" +msgstr "Dette samtalenavn eksisterer allerede" msgid "Not connected to the server." msgstr "Ikke forbundet til serveren." @@ -3083,7 +2896,7 @@ msgstr "Find venner..." msgid "Change password..." -msgstr "Skift adgangskode..." +msgstr "Ændr adgangskode..." msgid "Upload buddylist to Server" msgstr "Overfør venneliste til server" @@ -3142,7 +2955,7 @@ msgstr "Ingen MOTD tilgængelig" msgid "There is no MOTD associated with this connection." -msgstr "Der er ingen MOTD associeret med denne forbindelse." +msgstr "Der er ingen MOTD tilknyttet denne forbindelse." #, c-format msgid "MOTD for %s" @@ -3266,7 +3079,7 @@ msgstr "Inaktiv i" msgid "Online since" -msgstr "Online siden" +msgstr "Tilkoblet siden" msgid "Defining adjective:" msgstr "Definerende adjektiv:" @@ -3324,7 +3137,7 @@ #, c-format msgid "Joining %s requires an invitation." -msgstr "Det kræver en invitation for at deltage i %s." +msgstr "Det kræver en invitation for at tilslutte %s." msgid "Invitation only" msgstr "Kun invitation" @@ -3345,19 +3158,11 @@ msgid "Invalid nickname" msgstr "Ugyldigt brugernavn" -msgid "" -"Your selected nickname was rejected by the server. It probably contains " -"invalid characters." -msgstr "" -"Dit valgte brugernavn blev nægtet af serveren. Det indeholder sikkert " -"ugyldige bogstaver." - -msgid "" -"Your selected account name was rejected by the server. It probably contains " -"invalid characters." -msgstr "" -"Dit valgte konto navn blev nægtet af serveren. Det indeholder sikkert " -"ugyldige bogstaver." +msgid "Your selected nickname was rejected by the server. It probably contains invalid characters." +msgstr "Dit valgte brugernavn blev nægtet af serveren. Det indeholder sikkert ugyldige bogstaver." + +msgid "Your selected account name was rejected by the server. It probably contains invalid characters." +msgstr "Dit valgte konto navn blev nægtet af serveren. Det indeholder sikkert ugyldige bogstaver." msgid "Cannot change nick" msgstr "Kan ikke ændre navn" @@ -3381,7 +3186,7 @@ msgstr "Kan ikke tilslutte %s: Registrering krævet." msgid "Cannot join channel" -msgstr "Kan ikke deltage i kanalen" +msgstr "Kan ikke tilslutte kanalen" msgid "Nick or channel is temporarily unavailable." msgstr "Navn eller kanal er midlertidigt utilgængelig." @@ -3391,183 +3196,109 @@ msgstr "Wallops fra %s" msgid "action <action to perform>: Perform an action." -msgstr "action <handling at udføre>: Udfør en handling." - -msgid "" -"away [message]: Set an away message, or use no message to return from being " -"away." -msgstr "" -"away [besked]: Sæt en fraværsbesked. Hvis ingen besked angives, så returnes " -"du fra fravær." +msgstr "action <handling at udføre>: Udfør en handling." + +msgid "away [message]: Set an away message, or use no message to return from being away." +msgstr "away [besked]: Indstil en fraværsbesked. Hvis ingen besked angives, så returnes du fra fravær." msgid "ctcp : sends ctcp msg to nick." -msgstr "ctcp : sender ctcp besked til kælenavn." +msgstr "ctcp : sender ctcp-besked til kælenavn." msgid "chanserv: Send a command to chanserv" msgstr "chanserv: Send en kommando til chanserv" -msgid "" -"deop <nick1> [nick2] ...: Remove channel operator status from " -"someone. You must be a channel operator to do this." -msgstr "" -"deop <navn1> [navn2] ...: Fjern kanal operatør status fra en. Du skal " -"være kanal operatør for at gøre dette." - -msgid "" -"devoice <nick1> [nick2] ...: Remove channel voice status from " -"someone, preventing them from speaking if the channel is moderated (+m). You " -"must be a channel operator to do this." -msgstr "" -"devoice <navn1> [navn2] ...: Fjern kanal 'voice' status fra en. Det " -"forhindrer dem i at snakke hvis kanalen er modereret (+m). Du skal være " -"kanal operatør for at gøre dette." - -msgid "" -"invite <nick> [room]: Invite someone to join you in the specified " -"channel, or the current channel." -msgstr "" -"invite <navn> [rum]: Invitér nogle til den angivne kanal, eller den " -"nuværende kanal." - -msgid "" -"j <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " -"channels, optionally providing a channel key for each if needed." -msgstr "" -"j <rum1>[,rum2][,...] [nøgle1[,nøgle2][,...]]: Deltag i en eller flere " -"kanaler. Du kan angive en adgangsnøgle hvis det er krævet." - -msgid "" -"join <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " -"channels, optionally providing a channel key for each if needed." -msgstr "" -"join <rum1>[,rum2][,...] [nøgle1[,nøgle2][,...]]: Deltag i en eller " -"flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet." - -msgid "" -"kick <nick> [message]: Remove someone from a channel. You must be a " -"channel operator to do this." -msgstr "" -"kick <nick> [besked]: Fjern nogle fra kanalen. Du skal have kanal " -"operatør status for at gøre dette." - -msgid "" -"list: Display a list of chat rooms on the network. Warning, some servers " -"may disconnect you upon doing this." -msgstr "" -"list: Vis en liste over chatrum på netværket. Advarsel, nogle servere kan " -"afbryde forbindelsen når du gør dette." +msgid "deop <nick1> [nick2] ...: Remove channel operator status from someone. You must be a channel operator to do this." +msgstr "deop <navn1> [navn2] ...: Fjern kanal operatør status fra en. Du skal være kanal operatør for at gøre dette." + +msgid "devoice <nick1> [nick2] ...: Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this." +msgstr "devoice <navn1> [navn2] ...: Fjern kanal 'voice' status fra en. Det forhindrer dem i at snakke hvis kanalen er modereret (+m). Du skal være kanal operatør for at gøre dette." + +msgid "invite <nick> [room]: Invite someone to join you in the specified channel, or the current channel." +msgstr "invite <navn> [rum]: Invitér nogle til den angivne kanal, eller den nuværende kanal." + +msgid "j <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more channels, optionally providing a channel key for each if needed." +msgstr "j <rum1>[,rum2][,...] [nøgle1[,nøgle2][,...]]: Deltag i en eller flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet." + +msgid "join <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more channels, optionally providing a channel key for each if needed." +msgstr "join <rum1>[,rum2][,...] [nøgle1[,nøgle2][,...]]: Tilslut en eller flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet." + +msgid "kick <nick> [message]: Remove someone from a channel. You must be a channel operator to do this." +msgstr "kick <nick> [besked]: Fjern nogle fra kanalen. Du skal have kanal operatør status for at gøre dette." + +msgid "list: Display a list of chat rooms on the network. Warning, some servers may disconnect you upon doing this." +msgstr "list: Vis en liste over samtalerum på netværket. Advarsel, nogle servere kan afbryde forbindelsen når du gør dette." msgid "me <action to perform>: Perform an action." -msgstr "me <handling at udføre>: Udfør en handling." +msgstr "me <handling at udføre>: Udfør en handling." msgid "memoserv: Send a command to memoserv" msgstr "memoserv: Send en kommando til memoserv" -msgid "" -"mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel " -"or user mode." -msgstr "" -"mode <+|-><A-Za-Z> <nick|kanal>: Sæt eller fjern en kanal " -"eller bruger tilstand." - -msgid "" -"msg <nick> <message>: Send a private message to a user (as " -"opposed to a channel)." -msgstr "" -"msg <navn> <besked>: Send en privat besked til en bruger " -"(istedet for en kanal)." +msgid "mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel or user mode." +msgstr "mode <+|-><A-Za-Z> <nick|kanal>: Sæt eller fjern en kanal eller bruger tilstand." + +msgid "msg <nick> <message>: Send a private message to a user (as opposed to a channel)." +msgstr "msg <navn> <besked>: Send en privat besked til en bruger (istedet for en kanal)." msgid "names [channel]: List the users currently in a channel." -msgstr "names [kanal]: Vis brugerne der er på kanalen lige nu." +msgstr "names [kanal]: Vis brugerne der er på kanalen lige nu." msgid "nick <new nickname>: Change your nickname." -msgstr "nick <nyt navn>: Skift dit navn." +msgstr "nick <nyt navn>: Ændr dit navn." msgid "nickserv: Send a command to nickserv" msgstr "nickserv: Send en kommando til nickserv" msgid "notice <target<: Send a notice to a user or channel." -msgstr "påmind <targetl<: Send en påmindelse til en bruger eller kanal." - -msgid "" -"op <nick1> [nick2] ...: Grant channel operator status to someone. You " -"must be a channel operator to do this." -msgstr "" -"op <navn1> [navn2] ...: Giv kanal operatør status til en. Du skal selv " -"være kanal operatør for at gøre dette." - -msgid "" -"operwall <message>: If you don't know what this is, you probably " -"can't use it." -msgstr "" -"operwall <message>: Hvis du ikke ved hvad dette er, så kan du sikkert " -"ikke bruge det." +msgstr "notice <targetl<: Send en påmindelse til en bruger eller kanal." + +msgid "op <nick1> [nick2] ...: Grant channel operator status to someone. You must be a channel operator to do this." +msgstr "op <navn1> [navn2] ...: Giv kanal operatør status til en. Du skal selv være kanal operatør for at gøre dette." + +msgid "operwall <message>: If you don't know what this is, you probably can't use it." +msgstr "operwall <message>: Hvis du ikke ved hvad dette er, så kan du sikkert ikke bruge det." msgid "operserv: Send a command to operserv" msgstr "operserv: Send en kommando til operserv" -msgid "" -"part [room] [message]: Leave the current channel, or a specified channel, " -"with an optional message." -msgstr "" -"part [rum] [besked]: Forlad den nuværende kanal, eller angiv en kanal med en " -"eventuel fraværsbesked." - -msgid "" -"ping [nick]: Asks how much lag a user (or the server if no user specified) " -"has." -msgstr "" -"ping [navn]: Spørger hvor meget lag (tidsforsinkelse) en bruger (eller " -"serveren hvis ingen bruger angivet) har." - -msgid "" -"query <nick> <message>: Send a private message to a user (as " -"opposed to a channel)." -msgstr "" -"query <navn> <besked>: Send en privat besked til en bruger " -"(istedet for en kanal)." +msgid "part [room] [message]: Leave the current channel, or a specified channel, with an optional message." +msgstr "part [rum] [besked]: Forlad den nuværende kanal, eller angiv en kanal med en eventuel fraværsbesked." + +msgid "ping [nick]: Asks how much lag a user (or the server if no user specified) has." +msgstr "ping [navn]: Spørger hvor meget lag (tidsforsinkelse) en bruger (eller serveren hvis ingen bruger angivet) har." + +msgid "query <nick> <message>: Send a private message to a user (as opposed to a channel)." +msgstr "query <navn> <besked>: Send en privat besked til en bruger (istedet for en kanal)." msgid "quit [message]: Disconnect from the server, with an optional message." -msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked." +msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked." msgid "quote [...]: Send a raw command to the server." -msgstr "quote [...]: Sender en rå kommando til serveren." - -msgid "" -"remove <nick> [message]: Remove someone from a room. You must be a " -"channel operator to do this." -msgstr "" -"remove <nick> [besked]: Fjern nogen fra et rum. Du skal have kanal " -"operatør status for at gøre dette." +msgstr "quote [...]: Sender en rå kommando til serveren." + +msgid "remove <nick> [message]: Remove someone from a room. You must be a channel operator to do this." +msgstr "remove <nick> [besked]: Fjern nogen fra et rum. Du skal have kanal operatør status for at gøre dette." msgid "time: Displays the current local time at the IRC server." msgstr "time: Viser den lokale tid på IRC-serveren." msgid "topic [new topic]: View or change the channel topic." -msgstr "topic [nyt emne]: Vis eller skift kanalens emne." +msgstr "topic [nyt emne]: Vis eller ændr kanalens emne." msgid "umode <+|-><A-Za-z>: Set or unset a user mode." -msgstr "umode <+|-><A-Za-z>: Sæt eller fjern en bruger tilstand." +msgstr "umode <+|-><A-Za-z>: Sæt eller fjern en bruger tilstand." msgid "version [nick]: send CTCP VERSION request to a user" msgstr "version [nick]: send CTCP VERSION forspørgelse til en bruger" -msgid "" -"voice <nick1> [nick2] ...: Grant channel voice status to someone. You " -"must be a channel operator to do this." -msgstr "" -"voice <navn1> [navn2] ...: Giv kanal 'voice' status til en. Du skal " -"havekanal operatør status for at gøre dette." - -msgid "" -"wallops <message>: If you don't know what this is, you probably can't " -"use it." -msgstr "" -"wallops <besked>: Hvis du ikke ved hvad dette er, så kan du sikkert " -"ikke bruge det." +msgid "voice <nick1> [nick2] ...: Grant channel voice status to someone. You must be a channel operator to do this." +msgstr "voice <navn1> [navn2] ...: Giv kanal 'voice' status til en. Du skal havekanal operatør status for at gøre dette." + +msgid "wallops <message>: If you don't know what this is, you probably can't use it." +msgstr "wallops <besked>: Hvis du ikke ved hvad dette er, så kan du sikkert ikke bruge det." msgid "whois [server] <nick>: Get information on a user." -msgstr "whois [server] <navn>: Hent oplysninger om en bruger." +msgstr "whois [server] <navn>: Hent oplysninger om en bruger." msgid "whowas <nick>: Get information on a user that has logged off." msgstr "whowas <nick>: Hent oplysninger om en bruger som er logget af." @@ -3589,10 +3320,10 @@ msgstr "Ukendt fejl" msgid "Ad-Hoc Command Failed" -msgstr "Ad-Hoc kommando fejlede" +msgstr "Ad-Hoc-kommando fejlede" msgid "execute" -msgstr "udfør" +msgstr "kør" msgid "Server requires TLS/SSL for login. No TLS/SSL support found." msgstr "Server kræver SSL til logind. Ingen TLS/SSL-understøttelse fundet." @@ -3601,18 +3332,14 @@ msgstr "Du kræver kryptering, men ingen TLS/SSL-understøttelse blev fundet." msgid "Server requires plaintext authentication over an unencrypted stream" -msgstr "Server kræver ren tekst godkendelse over en ukrypteret strøm" - -#, c-format -msgid "" -"%s requires plaintext authentication over an unencrypted connection. Allow " -"this and continue authentication?" -msgstr "" -"%s kræver ren tekst godkendelse over en ukrypteret forbindelse. Tillad dette " -"og fortsæt godkendelse?" +msgstr "Server kræver godkendelse i klartekst over en ukrypteret strøm" + +#, c-format +msgid "%s requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?" +msgstr "%s kræver godkendelse i klartekst over en ukrypteret forbindelse. Tillad dette og fortsæt godkendelse?" msgid "Plaintext Authentication" -msgstr "Ren tekst godkendelse" +msgstr "Godkendelse i klartekst" msgid "Invalid response from server." msgstr "Ugyldigt svar fra server." @@ -3679,12 +3406,8 @@ msgid "Edit XMPP vCard" msgstr "Redigér XMPP vCard" -msgid "" -"All items below are optional. Enter only the information with which you feel " -"comfortable." -msgstr "" -"Alle oplysninger er valgfri. Skriv kun de ting, du ønsker andre skal vide om " -"dig." +msgid "All items below are optional. Enter only the information with which you feel comfortable." +msgstr "Alle elementerne nedenfor er valgfrie. Skriv kun de ting, du ønsker andre skal vide om dig." msgid "Client" msgstr "Klient" @@ -3696,37 +3419,37 @@ msgstr "Sidste aktivitet" msgid "Service Discovery Info" -msgstr "Serviceopdagelsesbesked" +msgstr "Besked ved tjenesteopdagelse" msgid "Service Discovery Items" -msgstr "Punkter for serviceopdagelse" +msgstr "Elementer for tjenesteopdagelse" msgid "Extended Stanza Addressing" msgstr "Udvidet Stanza-adressering" msgid "Multi-User Chat" -msgstr "Flerbruger chat" +msgstr "Flerbrugersamtale" msgid "Multi-User Chat Extended Presence Information" -msgstr "Udvidet oplysning om multibruger samtale tilstedeværelse" +msgstr "Flerbrugersamtale udvidede tilstedeværelsesinformation" msgid "In-Band Bytestreams" msgstr "In-Band-bytestrømme" msgid "Ad-Hoc Commands" -msgstr "Ad-Hoc kommandoer" +msgstr "Ad-Hoc-kommandoer" msgid "PubSub Service" -msgstr "PubSub-service" +msgstr "PubSub-tjeneste" msgid "SOCKS5 Bytestreams" msgstr "SOCKS5-bytestrømme" msgid "Out of Band Data" -msgstr "Løbet tør for Band-data" +msgstr "Out of Band Data" msgid "XHTML-IM" -msgstr "XHTML-kvikbesked" +msgstr "XHTML-besked" msgid "In-Band Registration" msgstr "In-Band-registrering" @@ -3738,7 +3461,7 @@ msgstr "Brugeravatar" msgid "Chat State Notifications" -msgstr "Chat status påmindelser" +msgstr "Samtalestatus påmindelser" msgid "Software Version" msgstr "Software version" @@ -3756,7 +3479,7 @@ msgstr "Brugeraktivitet" msgid "Entity Capabilities" -msgstr "Entitetskapabiliteter" +msgstr "Enhedsegenskaber" msgid "Encrypted Session Negotiations" msgstr "Krypterede sessionsforhandlinger" @@ -3765,7 +3488,7 @@ msgstr "Brugermelodi" msgid "Roster Item Exchange" -msgstr "Mønstring af elementudveksling" +msgstr "Navneliste over elementudveksling" msgid "Reachability Address" msgstr "E-post-adresse" @@ -3801,13 +3524,13 @@ msgstr "Beskedmodtagere" msgid "Public Key Publishing" -msgstr "Udgivelse af offentlige nøgle" +msgstr "Udgivelse af offentlig nøgle" msgid "User Chatting" -msgstr "Bruger chatter" +msgstr "Bruger samtaler" msgid "User Browsing" -msgstr "Bruger surfer" +msgstr "Bruger browser" msgid "User Gaming" msgstr "Bruger spiller" @@ -3819,7 +3542,7 @@ msgstr "Ping" msgid "Stanza Encryption" -msgstr "Stanza kryptering" +msgstr "Stanza-kryptering" msgid "Entity Time" msgstr "Tidsenhed" @@ -3831,16 +3554,16 @@ msgstr "Samarbejdende dataobjekter" msgid "File Repository and Sharing" -msgstr "Filarkiv og deling" +msgstr "Filarkiv og -deling" msgid "STUN Service Discovery for Jingle" -msgstr "STUN-serviceopdagelse for Jingle" +msgstr "STUN-tjenesteopdagelse for Jingle" msgid "Simplified Encrypted Session Negotiation" msgstr "Simplificeret krypteret sessionsforhandling" msgid "Hop Check" -msgstr "Hop kontrol" +msgstr "Hop-kontrol" msgid "Capabilities" msgstr "Klient understøtter" @@ -3892,7 +3615,7 @@ msgstr "Log af" msgid "Chatty" -msgstr "Vil gerne chatte" +msgstr "Vil gerne samtale" msgid "Extended Away" msgstr "Totalt fraværende" @@ -3910,15 +3633,11 @@ msgstr "Det følgende er resultaterne på din søgning" #. current comment from Jabber User Directory users.jabber.org -msgid "" -"Find a contact by entering the search criteria in the given fields. Note: " -"Each field supports wild card searches (%)" -msgstr "" -"Find en kontakt ved at indtaste søgekriterien i de givne felter. Bemærk: " -"Hver felt understøtter joker-søgninger (%)" +msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)" +msgstr "Find en kontakt ved at indtaste søgekriterien i de givne felter. Bemærk: Hver felt understøtter joker-søgninger (%)" msgid "Directory Query Failed" -msgstr "Mappe forespørgelse fejlede" +msgstr "Mappe forespørgsel fejlede" msgid "Could not query the directory server." msgstr "Kunne ikke forespørge mappe-serveren." @@ -3933,10 +3652,10 @@ msgstr "Udfyld et eller flere felter for at søge efter XMPP-brugere." msgid "Email Address" -msgstr "Email adresse" +msgstr "E-postadresse" msgid "Search for XMPP users" -msgstr "Søg efter en XMPP-brugere" +msgstr "Søg efter XMPP-brugere" #. "Search" msgid "Search" @@ -4000,7 +3719,7 @@ msgstr "Fejl under registrering" msgid "Nick changing not supported in non-MUC chatrooms" -msgstr "Ændring af navn ikke understøttet i ikke-MUC chatrum" +msgstr "Ændring af navn ikke understøttet i ikke-MUC samtalerum" msgid "Error retrieving room list" msgstr "Fejl ved modtagelse af rumliste" @@ -4018,7 +3737,7 @@ msgstr "Find rum" msgid "You require encryption, but it is not available on this server." -msgstr "Du kræver kryptering, men det er ikke muligt på denne server." +msgstr "Du kræver kryptering, men det er ikke tilrådighed på denne server." msgid "Write error" msgstr "Fejl ved skrivning" @@ -4044,7 +3763,7 @@ msgstr "Ugyldigt XMPP-id" msgid "Invalid XMPP ID. Domain must be set." -msgstr "Ugyldigt XMPP ID. Domæne skal angives." +msgstr "Ugyldigt XMPP-id. Domæne skal angives." #, c-format msgid "Registration of %s@%s successful" @@ -4088,9 +3807,8 @@ msgid "Unregister" msgstr "Afregistrér" -msgid "" -"Please fill out the information below to change your account registration." -msgstr "Udfyld oplysninger forneden for at ændre kontoregistrering." +msgid "Please fill out the information below to change your account registration." +msgstr "Udfyld oplysninger forneden for at ændre din kontoregistrering." msgid "Please fill out the information below to register your new account." msgstr "Udfyld oplysninger forneden for at registrere din nye konto." @@ -4103,14 +3821,14 @@ #, c-format msgid "Change Account Registration at %s" -msgstr "Skift brugerregistrering på %s" +msgstr "Ændr brugerregistrering på %s" #, c-format msgid "Register New Account at %s" msgstr "Registrér ny konto på %s" msgid "Change Registration" -msgstr "Skift registrering" +msgstr "Ændr registrering" msgid "Error unregistering account" msgstr "Fejl ved afregistrering af konto" @@ -4209,7 +3927,7 @@ msgstr "Adgangskode (igen)" msgid "Change XMPP Password" -msgstr "Skift XMPP-adgangskode" +msgstr "Ændr XMPP-adgangskode" msgid "Please enter your new password" msgstr "Indtast din nye adgangskode" @@ -4219,7 +3937,7 @@ #. if (js->protocol_options & CHANGE_PASSWORD) { msgid "Change Password..." -msgstr "Skift adgangskode..." +msgstr "Ændr adgangskode..." #. } msgid "Search for Users..." @@ -4247,7 +3965,7 @@ msgstr "Punkt ikke fundet" msgid "Malformed XMPP ID" -msgstr "Ugyldigt XMPP-id" +msgstr "Misdannet XMPP-id" msgid "Not Acceptable" msgstr "Ikke acceptabel" @@ -4274,7 +3992,7 @@ msgstr "Server overbelastet" msgid "Service Unavailable" -msgstr "Service ikke tilgængelig" +msgstr "Tjeneste ikke tilgængelig" msgid "Subscription Required" msgstr "Abonement krævet" @@ -4325,7 +4043,7 @@ msgstr "Forkert addressering" msgid "Invalid ID" -msgstr "Ugyldigt ID" +msgstr "Ugyldigt id" msgid "Invalid Namespace" msgstr "Ugyldigt navnerum" @@ -4402,11 +4120,11 @@ #, c-format msgid "Unable to buzz, because there is nothing known about user %s." -msgstr "Kan ikke bippe, fordi der ikke er noget kendt om brugeren %s." +msgstr "Kan ikke bippe, fordi der ikke er noget kendt om bruger %s." #, c-format msgid "Unable to buzz, because user %s might be offline." -msgstr "Kan ikke bippe, fordi brugeren %s måske er offline." +msgstr "Kan ikke bippe, fordi bruger %s måske er afkoblet." #, c-format msgid "Unable to buzz, because the user %s does not support it." @@ -4423,59 +4141,49 @@ #, c-format msgid "Buzzing %s..." -msgstr "Kalder %s..." +msgstr "Bipper %s..." msgid "config: Configure a chat room." -msgstr "config: Sæt et chatrum op." +msgstr "config: Sæt et samtalerum op." msgid "configure: Configure a chat room." -msgstr "configure: Sæt et chatrum op." +msgstr "configure: Sæt et samtalerum op." msgid "part [room]: Leave the room." -msgstr "part [rum]: Forlad rummet." +msgstr "part [rum]: Forlad rummet." msgid "register: Register with a chat room." -msgstr "register: Registrér med et chatrum." +msgstr "register: Registrér med et samtalerum." msgid "topic [new topic]: View or change the topic." -msgstr "topic [nyt emne]: Vis eller skift emnet." +msgstr "topic [nyt emne]: Vis eller ændr emnet." msgid "ban <user> [reason]: Ban a user from the room." -msgstr "udvis <user> [reason]: Udvis en bruger fra rummet." - -msgid "" -"affiliate <user> <owner|admin|member|outcast|none>: Set a user's " -"affiliation with the room." -msgstr "" -"affiliate <bruger> <owner|admin|member|outcast|none>: Sæt en " -"brugerstilknytning til rummet." - -msgid "" -"role <user> <moderator|participant|visitor|none>: Set a user's " -"role in the room." -msgstr "" -"role <bruger> <moderator|participant|visitor|none>: Sæt en " -"brugers rolle i rummet." +msgstr "ban <user> [reason]: Udvis en bruger fra rummet." + +msgid "affiliate <user> <owner|admin|member|outcast|none>: Set a user's affiliation with the room." +msgstr "affiliate <bruger> <owner|admin|member|outcast|none>: Indstil en brugerstilknytning til rummet." + +msgid "role <user> <moderator|participant|visitor|none>: Set a user's role in the room." +msgstr "role <bruger> <moderator|participant|visitor|none>: Indstil en brugers rolle i rummet." msgid "invite <user> [message]: Invite a user to the room." -msgstr "invite <bruger> [besked]: Invitér en bruger til rummet." +msgstr "invite <bruger> [besked]: Invitér en bruger til rummet." msgid "join: <room> [password]: Join a chat on this server." -msgstr "deltag: <room> [password]: Deltag i chatrum på denne server." +msgstr "join: <room> [password]: Tilslut samtalerum på denne server." msgid "kick <user> [reason]: Kick a user from the room." -msgstr "spark <user> [reason]: Spark en bruger fra rummet." - -msgid "" -"msg <user> <message>: Send a private message to another user." -msgstr "" -"msg <bruger> <besked>: Send en privat besked til en anden bruger." +msgstr "kick <user> [reason]: Spark en bruger fra rummet." + +msgid "msg <user> <message>: Send a private message to another user." +msgstr "msg <bruger> <besked>: Send en privat besked til en anden bruger." msgid "ping <jid>:\tPing a user/component/server." msgstr "ping <jid>:\tPing en bruger/komponent/server." msgid "buzz: Buzz a user to get their attention" -msgstr "buzz: Buzz en kontakt for at få deres opmærksomhed" +msgstr "buzz: Bip en kontakt for at få deres opmærksomhed" #. *< type #. *< ui_requirement @@ -4488,7 +4196,7 @@ #. * summary #. * description msgid "XMPP Protocol Plugin" -msgstr "XMPP-protokolmodul" +msgstr "XMPP-protokoludvidelsesmodul" #. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im msgid "Domain" @@ -4501,7 +4209,7 @@ msgstr "Tving gammel (port 5223) SSL" msgid "Allow plaintext auth over unencrypted streams" -msgstr "Tillad ren tekst godkendelse over ukrypterede strømme" +msgstr "Tillad godkendelse i klartekst over ukrypterede strømme" msgid "Connect port" msgstr "Tilslutningsport" @@ -4518,7 +4226,7 @@ #. this should probably be part of global smiley theme settings later on, #. shared with MSN msgid "Show Custom Smileys" -msgstr "Vis brugerdefinerede smileys" +msgstr "Vis tilpassede smileyer" #, c-format msgid "%s has left the conversation." @@ -4541,7 +4249,7 @@ msgstr "Beskedlevering til %s fejlede: %s" msgid "XMPP Message Error" -msgstr "XMPP beskedfejl" +msgstr "Fejl i XMPP-besked" #, c-format msgid "(Code %s)" @@ -4556,12 +4264,8 @@ msgid "Create New Room" msgstr "Opret nyt rum" -msgid "" -"You are creating a new room. Would you like to configure it, or accept the " -"default settings?" -msgstr "" -"Du opretter et nyt rum. Vil du konfigurere det, eller bruge " -"standardindstillingerne?" +msgid "You are creating a new room. Would you like to configure it, or accept the default settings?" +msgstr "Du opretter et nyt rum. Vil du konfigurere det, eller bruge standardindstillingerne?" msgid "_Configure Room" msgstr "_Konfigurér rum" @@ -4571,17 +4275,15 @@ #, c-format msgid "Error joining chat %s" -msgstr "Fejl ved deltagelse i chat %s" +msgstr "Fejl ved tilslutning til samtale %s" #, c-format msgid "Error in chat %s" -msgstr "Fejl i chat %s" +msgstr "Fejl i samtale %s" #, c-format msgid "Unable to send file to %s, user does not support file transfers" -msgstr "" -"Ikke i stand til at sende fil til %s, brugeren understøtter ikke " -"filoverførsler" +msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler" msgid "File Send Failed" msgstr "Afsendelse af fil fejlede" @@ -4592,13 +4294,11 @@ #, c-format msgid "Unable to send file to %s, user is not online" -msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke online" +msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke tilkoblet" #, c-format msgid "Unable to send file to %s, not subscribed to user presence" -msgstr "" -"Ikke i stand til at sende fil til %s, brugeren understøtter ikke " -"filoverførsler" +msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler" #, c-format msgid "Please select the resource of %s to which you would like to send a file" @@ -4614,26 +4314,22 @@ msgstr "Vælg dit humør fra listen." msgid "Set" -msgstr "Sæt" +msgstr "Indstil" msgid "Set Mood..." -msgstr "Sæt humør..." +msgstr "Indstil humør..." msgid "Set User Nickname" -msgstr "Sæt brugerkælenavn" +msgstr "Indstil brugerkælenavn" msgid "Please specify a new nickname for you." -msgstr "Indtast dit nye navn for dig." - -msgid "" -"This information is visible to all contacts on your contact list, so choose " -"something appropriate." -msgstr "" -"Denne information er synlig for alle kontakter på din kontaktliste, så vælg " -"noget passende." +msgstr "Indtast dit nye kælenavn for dig." + +msgid "This information is visible to all contacts on your contact list, so choose something appropriate." +msgstr "Denne information er synlig for alle kontakter på din kontaktliste, så vælg noget passende." msgid "Set Nickname..." -msgstr "Sæt kælenavn..." +msgstr "Indstil kælenavn..." msgid "Actions" msgstr "Handlinger" @@ -4649,7 +4345,7 @@ msgstr "Kunne ikke tilføje \"%s\"." msgid "Buddy Add error" -msgstr "Tilføj ven fejl" +msgstr "Fejl ved tilføj ven" msgid "The username specified does not exist." msgstr "Brugernavnet du angav findes ikke." @@ -4659,20 +4355,12 @@ msgstr "Problemer med synkronisering af venneliste i %s (%s)" #, c-format -msgid "" -"%s on the local list is inside the group \"%s\" but not on the server list. " -"Do you want this buddy to be added?" -msgstr "" -"%s på den lokale liste er i gruppen \"%s\" men ikke på serverlisten. Vil du " -"have denne ven tilføjet?" - -#, c-format -msgid "" -"%s is on the local list but not on the server list. Do you want this buddy " -"to be added?" -msgstr "" -"%s er på den lokale liste men ikke på serverlisten. Vil du have denne ven " -"tilføjet?" +msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?" +msgstr "%s på den lokale liste er i gruppen \"%s\" men ikke på serverlisten. Vil du have denne ven tilføjet?" + +#, c-format +msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?" +msgstr "%s er på den lokale liste men ikke på serverlisten. Vil du have denne ven tilføjet?" #, c-format msgid "Unable to parse message" @@ -4684,7 +4372,7 @@ #, c-format msgid "Invalid email address" -msgstr "Ugyldig email adresse" +msgstr "Ugyldig e-postadresse" #, c-format msgid "User does not exist" @@ -4720,7 +4408,7 @@ #, c-format msgid "User is offline" -msgstr "Bruger er offline" +msgstr "Bruger er afkoblet" #, c-format msgid "Already in the mode" @@ -4844,7 +4532,7 @@ #, c-format msgid "Passport not verified" -msgstr "Passport konto endnu ikke godkendt" +msgstr "Passport-konto endnu ikke godkendt" #, c-format msgid "Bad friend file" @@ -4868,7 +4556,7 @@ #, c-format msgid "Not allowed when offline" -msgstr "Ikke tilladt når du er offline" +msgstr "Ikke tilladt når du er afkoblet" #, c-format msgid "Not accepting new users" @@ -4880,10 +4568,10 @@ #, c-format msgid "Passport account not yet verified" -msgstr "Passport konto endnu ikke godkendt" +msgstr "Passport-konto endnu ikke godkendt" msgid "Passport account suspended" -msgstr "Passport konto suspenderet" +msgstr "Passport-konto suspenderet" #, c-format msgid "Bad ticket" @@ -4901,24 +4589,24 @@ msgstr "Andre kontakter" msgid "Non-IM Contacts" -msgstr "Ikke-kvikbesked kontakter" +msgstr "Ikke-besked kontakter" msgid "Nudge" -msgstr "Prik" +msgstr "Flirt" #, c-format msgid "%s has nudged you!" -msgstr "%s har prikket til dig!" +msgstr "%s flirter med dig!" #, c-format msgid "Nudging %s..." -msgstr "Prikker %s..." +msgstr "Flirter med %s..." msgid "Email Address..." -msgstr "Email adresser..." +msgstr "E-postadresser..." msgid "Your new MSN friendly name is too long." -msgstr "Dit nye MSN synlige navn er for langt." +msgstr "Dit nye synlige MSN-navn er for langt." msgid "Set your friendly name." msgstr "Sæt dit synlige navn." @@ -4938,12 +4626,8 @@ msgid "Allow MSN Mobile pages?" msgstr "Tillad MSN mobiltelefon sider?" -msgid "" -"Do you want to allow or disallow people on your buddy list to send you MSN " -"Mobile pages to your cell phone or other mobile device?" -msgstr "" -"Vil du tillade eller nægte folk på din venneliste at sende dig MSN " -"mobiltelefon sider til din mobiltelefon eller andre mobilenheder?" +msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?" +msgstr "Vil du tillade eller nægte folk på din venneliste at sende dig MSN mobiltelefon sider til din mobiltelefon eller andre mobilenheder?" msgid "Allow" msgstr "Tillad" @@ -4959,9 +4643,8 @@ msgstr "Ingen tekst er blokeret for denne konto." #, c-format -msgid "" -"MSN servers are currently blocking the following regular expressions:
%s" -msgstr "MSN servere blokerer følgende regulære udtryk:
%s" +msgid "MSN servers are currently blocking the following regular expressions:
%s" +msgstr "MSN-servere blokerer følgende regulære udtryk:
%s" msgid "This account does not have email enabled." msgstr "Denne konto har ikke e-post aktiveret." @@ -5018,7 +4701,7 @@ msgstr "Spiltitel" msgid "Office Title" -msgstr "Kontor titel" +msgstr "Kontortitel" msgid "Set Friendly Name..." msgstr "Sæt synligt navn..." @@ -5048,12 +4731,10 @@ msgstr "Send til mobiltelefon" msgid "Initiate _Chat" -msgstr "Åbn _chat" +msgstr "Åbn _samtale" msgid "SSL support is needed for MSN. Please install a supported SSL library." -msgstr "" -"SSL-understøttelse skal bruges til MSN. Installér et understøttet SSL-" -"bibliotek." +msgstr "SSL-understøttelse er krævet til MSN. Installér et understøttet SSL-bibliotek." msgid "Failed to connect to server." msgstr "Kunne ikke forbinde til server." @@ -5134,10 +4815,10 @@ msgstr "Hjemmefax" msgid "Personal Email" -msgstr "Personlig email" +msgstr "Personlig e-post" msgid "Personal IM" -msgstr "Personlig kvik-besked" +msgstr "Personlig besked" msgid "Anniversary" msgstr "Jubilæum" @@ -5177,10 +4858,10 @@ msgstr "Arbejdsfax" msgid "Work Email" -msgstr "Arbejds email" +msgstr "Arbejds e-post" msgid "Work IM" -msgstr "Arbejd kvik-besked" +msgstr "Arbejd besked" msgid "Start Date" msgstr "Startdato" @@ -5197,24 +4878,14 @@ msgid "The user has not created a public profile." msgstr "Brugeren har ikke oprettet en offentlig profil." -msgid "" -"MSN reported not being able to find the user's profile. This either means " -"that the user does not exist, or that the user exists but has not created a " -"public profile." -msgstr "" -"MSN rapporterede tilbage, at den ikke kunne finde brugerens profil. Dette " -"betyder enten at brugeren ikke eksisterer, eller at brugeren ikke har " -"oprettet en offentlig profil." - -msgid "" -"Could not find any information in the user's profile. The user most likely " -"does not exist." -msgstr "" -"Kunne ikke finde nogle oplysninger i brugerens profil. Brugeren eksisterer " -"højst sandsynligt ikke." +msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile." +msgstr "MSN rapporterede tilbage, at den ikke kunne finde brugerens profil. Dette betyder enten at brugeren ikke eksisterer, eller at brugeren ikke har oprettet en offentlig profil." + +msgid "Could not find any information in the user's profile. The user most likely does not exist." +msgstr "Kunne ikke finde nogle oplysninger i brugerens profil. Brugeren eksisterer højst sandsynligt ikke." msgid "View web profile" -msgstr "Se web-profil" +msgstr "Se internet-profil" #. *< type #. *< ui_requirement @@ -5235,16 +4906,16 @@ msgstr "HTTP-metodeserver" msgid "Show custom smileys" -msgstr "Vis brugerdefinerede smileys" +msgstr "Vis tilpassede smileyer" msgid "nudge: nudge a user to get their attention" msgstr "vink: vink en bruger for at få deres opmærksomhed" msgid "Windows Live ID authentication:Unable to connect" -msgstr "Windows Live ID godkendelse:Kunne ikke forbinde" +msgstr "Godkendelse af Windows Live-id:Kunne ikke forbinde" msgid "Windows Live ID authentication:Invalid response" -msgstr "Windows Live ID godkendelse:Ugyldigt svar" +msgstr "Godkendelse af Windows Live-id:Ugyldigt svar" #, c-format msgid "%s is not a valid group." @@ -5290,10 +4961,10 @@ #, c-format msgid "%s is not a valid passport account." -msgstr "%s er ikke en gyldig passport konto." +msgstr "%s er ikke en gyldig passport-konto." msgid "Service Temporarily Unavailable." -msgstr "Service midlertidigt utilgængelig." +msgstr "Tjeneste midlertidigt utilgængelig." msgid "Mobile message was not sent because it was too long." msgstr "Mobilbesked blev ikke sendt, fordi den var for lang." @@ -5306,38 +4977,24 @@ #, c-format msgid "" -"The MSN server will shut down for maintenance in %d minute. You will " -"automatically be signed out at that time. Please finish any conversations " -"in progress.\n" +"The MSN server will shut down for maintenance in %d minute. You will automatically be signed out at that time. Please finish any conversations in progress.\n" "\n" -"After the maintenance has been completed, you will be able to successfully " -"sign in." +"After the maintenance has been completed, you will be able to successfully sign in." msgid_plural "" -"The MSN server will shut down for maintenance in %d minutes. You will " -"automatically be signed out at that time. Please finish any conversations " -"in progress.\n" +"The MSN server will shut down for maintenance in %d minutes. You will automatically be signed out at that time. Please finish any conversations in progress.\n" "\n" -"After the maintenance has been completed, you will be able to successfully " -"sign in." +"After the maintenance has been completed, you will be able to successfully sign in." msgstr[0] "" -"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minut. Du vil " -"automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende " -"samtaler.\n" +"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minut. Du vil automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende samtaler.\n" "\n" "Efter vedligeholdelsen er blevet gennemført, kan du logge ind igen." msgstr[1] "" -"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minutter. Du vil " -"automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende " -"samtaler.\n" +"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minutter. Du vil automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende samtaler.\n" "\n" "Efter vedligeholdelsen er blevet gennemført, kan du logge ind igen." -msgid "" -"Message was not sent because the system is unavailable. This normally " -"happens when the user is blocked or does not exist." -msgstr "" -"Besked blev ikke sendt, fordi systemet ikke er tilgængelig. Dette sker " -"normalt når brugeren er blokeret eller ikke findes." +msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist." +msgstr "Besked blev ikke sendt, fordi systemet ikke er tilgængeligt. Dette sker normalt når brugeren er blokeret eller ikke findes." msgid "Message was not sent because messages are being sent too quickly." msgstr "Besked blev ikke sendt, fordi beskederne sendes for hurtigt." @@ -5375,20 +5032,17 @@ msgstr "Du er logget ind fra en anden maskine." msgid "The MSN servers are temporarily unavailable. Please wait and try again." -msgstr "" -"MSN serverne er midlertidigt utilgængelige. Vent og forsøg igen senere." +msgstr "MSN-serverne er midlertidigt utilgængelige. Vent og forsøg igen senere." msgid "The MSN servers are going down temporarily." -msgstr "MSN serverne lukkes midlertidigt." +msgstr "MSN-serverne lukkes midlertidigt." #, c-format msgid "Unable to authenticate: %s" msgstr "Kunne ikke godkende: %s" -msgid "" -"Your MSN buddy list is temporarily unavailable. Please wait and try again." -msgstr "" -"Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere." +msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again." +msgstr "Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere." msgid "Handshaking" msgstr "Forhandler" @@ -5418,15 +5072,13 @@ msgstr "Ude til frokost" msgid "Message may have not been sent because a timeout occurred:" -msgstr "" -"Besked er måske ikke blevet sendt på grund af et tidsudløb der overskred " -"grænsen:" +msgstr "Besked er måske ikke blevet sendt på grund af et tidsudløb der overskred grænsen:" msgid "Message could not be sent, not allowed while invisible:" msgstr "Besked kunne ikke sendes, ikke tilladt imens du er usynlig:" msgid "Message could not be sent because the user is offline:" -msgstr "Besked kunne ikke sendes, fordi brugeren er offline:" +msgstr "Besked kunne ikke sendes, fordi brugeren er afkoblet:" msgid "Message could not be sent because a connection error occurred:" msgstr "Besked kunne ikke sendes på grund af en forbindelsesfejl:" @@ -5434,16 +5086,10 @@ msgid "Message could not be sent because we are sending too quickly:" msgstr "Besked kunne ikke sendes, fordi vi sender for hurtigt:" -msgid "" -"Message could not be sent because we were unable to establish a session with " -"the server. This is likely a server problem, try again in a few minutes:" -msgstr "" -"Besked kunne ikke sendes, fordi vi ikke kunne etablere en session med " -"serveren. Dette er højst sandsynligt et server problem, prøv igen om nogle " -"få minutter:" - -msgid "" -"Message could not be sent because an error with the switchboard occurred:" +msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:" +msgstr "Besked kunne ikke sendes, fordi vi ikke kunne etablere en session med serveren. Dette er højst sandsynligt et server problem, prøv igen om nogle få minutter:" + +msgid "Message could not be sent because an error with the switchboard occurred:" msgstr "Besked kunne ikke sendes på grund af en fejl med switchboard:" msgid "Message may have not been sent because an unknown error occurred:" @@ -5483,7 +5129,7 @@ #. * summary #. * description msgid "MSN Protocol Plugin" -msgstr "MSN-protokol udvidelsesmodul" +msgstr "MSN-protokoludvidelsesmodul" #, c-format msgid "No such user: %s" @@ -5493,10 +5139,10 @@ msgstr "Opslag af bruger" msgid "Reading challenge" -msgstr "Læsesvar" +msgstr "Reading challenge" msgid "Unexpected challenge length from server" -msgstr "Uventet svarlængde fra server" +msgstr "Unexpected challenge length from server" msgid "Logging in" msgstr "Logger ind" @@ -5515,16 +5161,16 @@ #. Can't write _()'d strings in array initializers. Workaround. msgid "New mail messages" -msgstr "Nye mail-beskeder" +msgstr "Nye postbeskeder" msgid "New blog comments" -msgstr "Ny blog-kommentarer" +msgstr "Nye blog-kommentarer" msgid "New profile comments" msgstr "Nye profilkommentarer" msgid "New friend requests!" -msgstr "Ny venneforspørgsel!" +msgstr "Ny venneanmodning!" msgid "New picture comments" msgstr "Nye billedkommentarer" @@ -5536,18 +5182,10 @@ msgstr "IM-venner" #, c-format -msgid "" -"%d buddy was added or updated from the server (including buddies already on " -"the server-side list)" -msgid_plural "" -"%d buddies were added or updated from the server (including buddies already " -"on the server-side list)" -msgstr[0] "" -"%d ven blev tilføjet eller opdateret fra serveren (inkluderet venner som " -"allerede findes på serverlisten)" -msgstr[1] "" -"%d venner blev tilføjet eller opdateret fra serveren (inkluderet venner som " -"allerede findes på serverlisten)" +msgid "%d buddy was added or updated from the server (including buddies already on the server-side list)" +msgid_plural "%d buddies were added or updated from the server (including buddies already on the server-side list)" +msgstr[0] "%d ven blev tilføjet eller opdateret fra serveren (inkluderet venner som allerede findes på serverlisten)" +msgstr[1] "%d venner blev tilføjet eller opdateret fra serveren (inkluderet venner som allerede findes på serverlisten)" msgid "Add contacts from server" msgstr "Tilføj kontakter fra server" @@ -5563,18 +5201,11 @@ msgstr "Protokol fejlkode %d: %s" #, c-format -msgid "" -"%s Your password is %d characters, greater than the expected maximum length " -"of %d for MySpaceIM. Please shorten your password at http://profileedit." -"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try " -"again." -msgstr "" -"%s Din adgangskode er %d karakterer og dermed større end det forventede " -"maksimum på %d for MySpaceIM. Forkort din adgangskode på http://profileedit." -"myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv igen." +msgid "%s Your password is %d characters, greater than the expected maximum length of %d for MySpaceIM. Please shorten your password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again." +msgstr "%s Din adgangskode er %d karakterer og dermed større end det forventede maksimum på %d for MySpaceIM. Forkort din adgangskode på http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv igen." msgid "MySpaceIM Error" -msgstr "MySpaceIM fejl" +msgstr "MySpaceIM-fejl" msgid "Invalid input condition" msgstr "Ugyldig indtastningsbetingelse" @@ -5590,7 +5221,7 @@ msgstr "Kunne ikke forbinde til vært: %s (%d)" msgid "Failed to add buddy" -msgstr "Kunne ikke tilføje en ven" +msgstr "Kunne ikke tilføje ven" msgid "'addbuddy' command failed." msgstr "\"addbuddy\"-kommando fejlede." @@ -5613,12 +5244,8 @@ msgid "The RC4 cipher could not be found" msgstr "RC4 cipher kunne ikke findes" -msgid "" -"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " -"not be loaded." -msgstr "" -"Opgrader til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-" -"udvidelsesmodul vil ikke blive indlæst." +msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded." +msgstr "Opgradér til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-udvidelsesmodul vil ikke blive indlæst." msgid "Add friends from MySpace.com" msgstr "Tilføj venner fra MySpace.com" @@ -5631,18 +5258,16 @@ msgstr "Find folk..." msgid "Change IM name..." -msgstr "Skift IM-navn..." +msgstr "Ændr beskednavn..." msgid "myim URL handler" msgstr "myim URL-håndtering" msgid "No suitable MySpaceIM account could be found to open this myim URL." -msgstr "" -"Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim " -"URL." +msgstr "Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim URL." msgid "Enable the proper MySpaceIM account and try again." -msgstr "Aktiver korrekte MySpaceIM-konto og prøv igen." +msgstr "Aktivér den korrekte MySpaceIM-konto og prøv igen." msgid "Show display name in status text" msgstr "Vis synligt navn i statustekst" @@ -5657,7 +5282,7 @@ msgstr "Skærmopløsning (punkter pr. tomme)" msgid "Base font size (points)" -msgstr "Basal striftstørrelse (punkter)" +msgstr "Basal skrifttypestørrelse (punkter)" msgid "User" msgstr "Bruger" @@ -5706,15 +5331,15 @@ #. * connotation, for example, "he was zapped by electricity when #. * he put a fork in the toaster." msgid "Zap" -msgstr "Zap" +msgstr "Slå" #, c-format msgid "%s has zapped you!" -msgstr "%s har zappet dig!" +msgstr "%s har slået dig!" #, c-format msgid "Zapping %s..." -msgstr "Zapper %s..." +msgstr "Slår %s..." #. Whack means "to hit or strike someone with a sharp blow" msgid "Whack" @@ -5776,7 +5401,7 @@ #, c-format msgid "Slapping %s..." -msgstr "Slår %s..." +msgstr "Giver kindhest til %s..." #. Goose means "to pinch someone on their butt" msgid "Goose" @@ -5891,17 +5516,13 @@ msgstr "Hoved-arkiv er konfigureret forkert" msgid "Incorrect username or password" -msgstr "Forkert brugernavn eller kodeord" +msgstr "Forkert brugernavn eller adgangskode" msgid "Could not recognize the host of the username you entered" msgstr "Kunne ikke genkende værten på brugernavnet du indtastede" -msgid "" -"Your account has been disabled because too many incorrect passwords were " -"entered" -msgstr "" -"Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev " -"indtastet" +msgid "Your account has been disabled because too many incorrect passwords were entered" +msgstr "Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev indtastet" msgid "You cannot add the same person twice to a conversation" msgstr "Du kan ikke tilføje den samme person to gange til en samtale" @@ -5921,14 +5542,11 @@ msgid "The user has blocked you" msgstr "Brugeren har blokeret dig" -msgid "" -"This evaluation version does not allow more than ten users to log in at one " -"time" -msgstr "" -"Denne prøve-version tillader ikke mere end 10 brugere logget ind på samme tid" +msgid "This evaluation version does not allow more than ten users to log in at one time" +msgstr "Denne prøve-version tillader ikke mere end 10 brugere logget ind på samme tid" msgid "The user is either offline or you are blocked" -msgstr "Brugeren er enten offline, eller du er blokeret" +msgstr "Brugeren er enten afkoblet, eller du er blokeret" #, c-format msgid "Unknown error: 0x%X" @@ -5964,20 +5582,12 @@ msgstr "Kunne ikke sende besked. Kunne ikke oprette konferencen (%s)." #, c-format -msgid "" -"Unable to move user %s to folder %s in the server side list. Error while " -"creating folder (%s)." -msgstr "" -"Kunne ikke flytte bruger %s til mappe %s i serverlisten. Fejl skete, da " -"mappe skulle oprettes (%s)." - -#, c-format -msgid "" -"Unable to add %s to your buddy list. Error creating folder in server side " -"list (%s)." -msgstr "" -"Kunne ikke tilføje %s til din venneliste. Fejl ved opretning af mappe i " -"serverliste (%s)." +msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)." +msgstr "Kunne ikke flytte bruger %s til mappe %s i serverlisten. Fejl skete, da mappe skulle oprettes (%s)." + +#, c-format +msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)." +msgstr "Kunne ikke tilføje %s til din venneliste. Fejl ved opretning af mappe i serverliste (%s)." #, c-format msgid "Could not get details for user %s (%s)." @@ -6020,7 +5630,7 @@ msgstr "Poststop" msgid "User ID" -msgstr "Bruger ID" +msgstr "Bruger id" #. tag = _("DN"); #. value = nm_user_record_get_dn(user_record); @@ -6062,29 +5672,23 @@ "Sendt: %s" msgid "Would you like to join the conversation?" -msgstr "Vil du deltage i samtalen?" +msgstr "Vil du tilslutte samtalen?" msgid "You have been logged out because you logged in at another workstation." msgstr "Du er blevet logget af, fordi du er logget på en anden maskine." #, c-format -msgid "" -"%s appears to be offline and did not receive the message that you just sent." -msgstr "" -"%s ser ud til at være offline, og har ikke modtaget beskeden du har sendt." - -msgid "" -"Unable to connect to server. Please enter the address of the server you wish " -"to connect to." -msgstr "" -"Kunne ikke forbinde til server. Indtast adressen på serveren du vil forbinde " -"til." +msgid "%s appears to be offline and did not receive the message that you just sent." +msgstr "%s ser ud til at være afkoblet, og har ikke modtaget beskeden du har sendt." + +msgid "Unable to connect to server. Please enter the address of the server you wish to connect to." +msgstr "Kunne ikke forbinde til server. Indtast adressen på serveren du vil forbinde til." msgid "Error. SSL support is not installed." msgstr "Fejl. SSL-understøttelse er ikke installeret." msgid "This conference has been closed. No more messages can be sent." -msgstr "Konferencen er blevet lukket. Der kan ikke sendes flere beskeder." +msgstr "Konferencen er blevet afsluttet. Der kan ikke sendes flere beskeder." #. *< type #. *< ui_requirement @@ -6106,10 +5710,10 @@ msgstr "Server port" msgid "Could not join chat room" -msgstr "Kunne ikke tilslutte chatrum" +msgstr "Kunne ikke tilslutte samtalerum" msgid "Invalid chat room name" -msgstr "Ugyldigt navn på chatrum" +msgstr "Ugyldigt navn på samtalerum" msgid "Server closed the connection." msgstr "Server lukkede forbindelsen." @@ -6119,7 +5723,7 @@ "Lost connection with server:\n" "%s" msgstr "" -"Mistede forbindelsen med server:\n" +"Mistede forbindelsen til server:\n" "%s" msgid "Received invalid data on connection with server." @@ -6165,7 +5769,7 @@ #, c-format msgid "Lost connection with the remote user:
%s" -msgstr "Mistede forbindelse med fjernbrugeren:
%s" +msgstr "Mistede forbindelse til fjernbrugeren:
%s" msgid "Received invalid data on connection with remote user." msgstr "Modtog ugyldige data ved forbindelse til fjern bruger." @@ -6174,15 +5778,11 @@ msgstr "Kunne ikke etablere en forbindelse til en fjernbruger." msgid "Direct IM established" -msgstr "Direkte kvikbesked etableret" - -#, c-format -msgid "" -"%s tried to send you a %s file, but we only allow files up to %s over Direct " -"IM. Try using file transfer instead.\n" -msgstr "" -"%s forsøgte at sende dig en %s fil, men vi tillader kun filer op til %s over " -"direkte kvikbesked. Prøv at bruge filoverførelse i stedet for.\n" +msgstr "Direkte besked etableret" + +#, c-format +msgid "%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n" +msgstr "%s forsøgte at sende dig en %s fil, men vi tillader kun filer op til %s over direkte besked. Prøv at bruge filoverførelse i stedet for.\n" #, c-format msgid "File %s is %s, which is larger than the maximum size of %s." @@ -6201,7 +5801,7 @@ msgstr "Grænse til klient" msgid "Service unavailable" -msgstr "Service ikke tilgængelig" +msgstr "Tjeneste ikke tilgængelig" msgid "Service not defined" msgstr "Tjeneste ikke defineret" @@ -6260,24 +5860,12 @@ msgid "Not while on AOL" msgstr "Ikke samtidig med AOL" -msgid "" -"(There was an error receiving this message. The buddy you are speaking with " -"is probably using a different encoding than expected. If you know what " -"encoding he is using, you can specify it in the advanced account options for " -"your AIM/ICQ account.)" -msgstr "" -"(Der opstod en fejl ved modtagelse af denne besked. Vennen du taler med " -"bruger måske en anden indkodning end forventet. Hvis du kender indkodningen, " -"som han bruger, kan du angive den i avancerede kontovalgmuligheder for din " -"AIM/ICQ-konto.)" - -#, c-format -msgid "" -"(There was an error receiving this message. Either you and %s have " -"different encodings selected, or %s has a buggy client.)" -msgstr "" -"(Der opstod en fejl ved modtagelse af denne besked. Enten har du eller %s " -"valgt forskellige indkodninger, eller har %s en fejlramt klient.)" +msgid "(There was an error receiving this message. The buddy you are speaking with is probably using a different encoding than expected. If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)" +msgstr "(Der opstod en fejl ved modtagelse af denne besked. Vennen du taler med bruger måske en anden indkodning end forventet. Hvis du kender indkodningen, som han bruger, kan du angive den i avancerede kontoindstillinger for din AIM/ICQ-konto.)" + +#, c-format +msgid "(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)" +msgstr "(Der opstod en fejl ved modtagelse af denne besked. Enten har du eller %s valgt forskellige indkodninger, eller har %s en fejlramt klient.)" #. Label msgid "Buddy Icon" @@ -6332,7 +5920,7 @@ msgstr "Sikkerhedsaktiveret" msgid "Video Chat" -msgstr "Video chat" +msgstr "Videosamtale" msgid "iChat AV" msgstr "iChat AV" @@ -6347,7 +5935,7 @@ msgstr "Skærmdeling" msgid "Free For Chat" -msgstr "Fri til chat" +msgstr "Fri til samtale" msgid "Not Available" msgstr "Ikke tilgængelig" @@ -6356,7 +5944,7 @@ msgstr "Optaget" msgid "Web Aware" -msgstr "Web-opmærksom" +msgstr "Internet-opmærksom" msgid "Invisible" msgstr "Usynlig" @@ -6394,18 +5982,11 @@ #. TODO: Don't call this with ssi msgid "Finalizing connection" -msgstr "Færddiggører opkobling" - -#, c-format -msgid "" -"Unable to login: Could not 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 "" -"Kunne ikke logge ind: Kunne ikke logge på som %s, fordi brugernavnet er " -"ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med et " -"bogstav og kun indeholde bogstaver, tal eller mellemrum, eller kun indeholde " -"tal." +msgstr "Færddiggører forbindelse" + +#, c-format +msgid "Unable to login: Could not 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 "Kunne ikke logge ind: Kunne ikke logge på som %s, fordi brugernavnet er ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med et bogstav og kun indeholde bogstaver, tal eller mellemrum, eller kun indeholde tal." #. Unregistered screen name #. uid is not exist @@ -6425,12 +6006,8 @@ #. screen name connecting too frequently #. IP address connecting too frequently -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 "" -"Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti " -"minutter og prøv så igen, for ellers skal du bare vente endnu længere." +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 "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere." #, c-format msgid "The client version you are using is too old. Please upgrade at %s" @@ -6459,19 +6036,17 @@ #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." -msgstr "" -"Du vil måske blive frakoblet snart. Hvis tilfældet, kontrollér %s for " -"opdateringer." +msgstr "Du vil måske blive frakoblet snart. Hvis tilfældet, kontrollér %s for opdateringer." msgid "Unable to get a valid AIM login hash." -msgstr "Kunne ikke opnå et gyldigt AIM-logindhash." +msgstr "Kunne ikke hente et gyldigt AIM-logindhash." #, c-format msgid "You may be disconnected shortly. Check %s for updates." msgstr "Du vil måske blive frakoblet snart. Kontrollér %s for opdateringer." msgid "Unable to get a valid login hash." -msgstr "Kunne ikke opnå et gyldigt loginhash." +msgstr "Kunne ikke hente et gyldigt loginhash." msgid "Password sent" msgstr "Adgangskode sendt" @@ -6496,12 +6071,10 @@ #, c-format msgid "" -"The user %u has denied your request to add them to your buddy list for the " -"following reason:\n" +"The user %u has denied your request to add them to your buddy list for the following reason:\n" "%s" msgstr "" -"Brugeren %u har nægtet din anmodning om at tilføje sig til din venneliste, " -"af den følgende grund:\n" +"Brugeren %u har nægtet din anmodning om at tilføje sig til din venneliste, af den følgende grund:\n" "%s" msgid "ICQ authorization denied." @@ -6543,7 +6116,7 @@ "Message is:\n" "%s" msgstr "" -"Du har modtaget en ICQ email fra %s [%s]\n" +"Du har modtaget en ICQ e-post fra %s [%s]\n" "\n" "Beskeden er:\n" "%s" @@ -6574,37 +6147,22 @@ msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi de var for store." #, 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] "" -"Du har ikke modtaget %hu besked fra %s, fordi den blev sendt for hurtigt." -msgstr[1] "" -"Du har ikke modtaget %hu beskeder fra %s, fordi de blev sendt for hurtigt." - -#, c-format -msgid "" -"You missed %hu message from %s because his/her warning level is too high." -msgid_plural "" -"You missed %hu messages from %s because his/her warning level is too high." -msgstr[0] "" -"Du har ikke modtaget %hu besked fra %s, fordi hans/hendes advarselsniveau er " -"for højt." -msgstr[1] "" -"Du har ikke modtaget %hu beskeder fra %s, fordi hans/hendes advarselsniveau " -"er for højt." +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] "Du har ikke modtaget %hu besked fra %s, fordi den blev sendt for hurtigt." +msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi de blev sendt for hurtigt." + +#, c-format +msgid "You missed %hu message from %s because his/her warning level is too high." +msgid_plural "You missed %hu messages from %s because his/her warning level is too high." +msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi hans/hendes advarselsniveau er for højt." +msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi hans/hendes advarselsniveau er for højt." #, 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] "" -"Du har ikke modtaget %hu besked fra %s, fordi dit advarselsniveau er for " -"højt." -msgstr[1] "" -"Du har ikke modtaget %hu beskeder fra %s, fordi dit advarselsniveau er for " -"højt." +msgid_plural "You missed %hu messages from %s because your warning level is too high." +msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi dit advarselsniveau er for højt." +msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi dit advarselsniveau er for højt." #, c-format msgid "You missed %hu message from %s for an unknown reason." @@ -6629,7 +6187,7 @@ msgstr "Bruger oplysninger er ikke tilgængelige: %s" msgid "Online Since" -msgstr "Online siden" +msgstr "Tilkoblet siden" msgid "Member Since" msgstr "Medlem siden" @@ -6641,23 +6199,15 @@ msgstr "Din AIM forbindelse kan være afbrudt." #. The conversion failed! -msgid "" -"[Unable to display a message from this user because it contained invalid " -"characters.]" -msgstr "" -"[Ude af stand til at vise en besked fra denne bruger, fordi den indeholdte " -"ugyldige bogstaver.]" - -msgid "" -"The last action you attempted could not be performed because you are over " -"the rate limit. Please wait 10 seconds and try again." -msgstr "" -"Den sidste handling blev ikke udført, fordi du har overskredet grænsen. Vent " -"i 10 sekunder og prøv igen." +msgid "[Unable to display a message from this user because it contained invalid characters.]" +msgstr "[Ude af stand til at vise en besked fra denne bruger, fordi den indeholdte ugyldige bogstaver.]" + +msgid "The last action you attempted could not be performed because you are over the rate limit. Please wait 10 seconds and try again." +msgstr "Den sidste handling blev ikke udført, fordi du har overskredet grænsen. Vent i 10 sekunder og prøv igen." #, c-format msgid "You have been disconnected from chat room %s." -msgstr "Forbindelse til chat-rum %s afbrudt." +msgstr "Forbindelse til samtalerum %s afbrudt." msgid "Mobile Phone" msgstr "Mobiltelefon" @@ -6691,139 +6241,88 @@ #, c-format msgid "The following username is associated with %s" msgid_plural "The following usernames are associated with %s" -msgstr[0] "Følgende brugernavn er associeret med %s" -msgstr[1] "Følgende brugernavne er associeret med %s" +msgstr[0] "Følgende brugernavn er tilknyttet %s" +msgstr[1] "Følgende brugernavne er tilknyttet %s" #, c-format msgid "No results found for email address %s" -msgstr "Ingen resultater fundet for post-adressen %s" +msgstr "Ingen resultater fundet for e-postadressen %s" #, c-format msgid "You should receive an email asking to confirm %s." -msgstr "Du bør modtage en email for at acceptere %s." +msgstr "Du bør modtage en e-post for at acceptere %s." msgid "Account Confirmation Requested" msgstr "Der er anmodet om konto bekræftelse" #, c-format -msgid "" -"Error 0x%04x: Unable to format username because the requested name differs " -"from the original." -msgstr "" -"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn " -"er forskelligt fra det oprindelige." +msgid "Error 0x%04x: Unable to format username because the requested name differs from the original." +msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn er forskelligt fra det oprindelige." #, c-format msgid "Error 0x%04x: Unable to format username because it is invalid." msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det er ugyldigt." #, c-format -msgid "" -"Error 0x%04x: Unable to format username because the requested name is too " -"long." -msgstr "" -"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for " -"langt." - -#, c-format -msgid "" -"Error 0x%04x: Unable to change email address because there is already a " -"request pending for this username." -msgstr "" -"Fejl 0x%04x: Ikke i stand til at ændre e-post adresse, fordi der allerede er " -"en anmodning ventende for dette brugernavn." - -#, c-format -msgid "" -"Error 0x%04x: Unable to change email address because the given address has " -"too many usernames associated with it." -msgstr "" -"Fejl 0x%04x: Ikke i stand til at ændre e-post adresse, fordi den angivne " -"adresse har for mange brugernavne knyttet til sig." - -#, c-format -msgid "" -"Error 0x%04x: Unable to change email address because the given address is " -"invalid." -msgstr "" -"Fejl 0x%04x: Ikke i stand til at ændre email adresse, fordi den angivne " -"adresse er ugyldig." +msgid "Error 0x%04x: Unable to format username because the requested name is too long." +msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for langt." + +#, c-format +msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this username." +msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi der allerede er en anmodning ventende for dette brugernavn." + +#, c-format +msgid "Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it." +msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse har for mange brugernavne tilknyttet sig." + +#, c-format +msgid "Error 0x%04x: Unable to change email address because the given address is invalid." +msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse er ugyldig." #, c-format msgid "Error 0x%04x: Unknown error." msgstr "Fejl 0x%04x: Ukendt fejl." msgid "Error Changing Account Info" -msgstr "Fejl ved ændring af konto oplysninger" +msgstr "Fejl ved ændring af kontooplysninger" #, c-format msgid "The email address for %s is %s" -msgstr "%s's post-adresse er %s" +msgstr "%s's e-postadresse er %s" msgid "Account Info" msgstr "Konto Oplysninger" -msgid "" -"Your IM Image was not sent. You must be Direct Connected to send IM Images." -msgstr "" -"Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende " -"billeder." +msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images." +msgstr "Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende billeder." msgid "Unable to set AIM profile." msgstr "Kunne ikke ændre AIM profil." -msgid "" -"You have probably requested to set your profile before the login procedure " -"completed. Your profile remains unset; try setting it again when you are " -"fully connected." -msgstr "" -"Du har sikkert anmodet om at sætte din profil før login-processen er blevet " -"færdig. Din profil er ikke sat; prøv at sætte den igen når du er færdig med " -"at forbinde til serveren." - -#, c-format -msgid "" -"The maximum profile length of %d byte has been exceeded. It has been " -"truncated for you." -msgid_plural "" -"The maximum profile length of %d bytes has been exceeded. It has been " -"truncated for you." -msgstr[0] "" -"Profil-længdens maksimale størrelse på %d byte er blevet overskredet. Den " -"er blevet forkortet for dig." -msgstr[1] "" -"Profil-længdens maksimale størrelse på %d bytes er blevet overskredet. Den " -"er blevet forkortet for dig." +msgid "You have probably requested to set your profile before the login procedure completed. Your profile remains unset; try setting it again when you are fully connected." +msgstr "Du har sikkert anmodet om at sætte din profil før login-processen er blevet færdig. Din profil er ikke sat; prøv at sætte den igen når du er færdig med at forbinde til serveren." + +#, c-format +msgid "The maximum profile length of %d byte has been exceeded. It has been truncated for you." +msgid_plural "The maximum profile length of %d bytes has been exceeded. It has been truncated for you." +msgstr[0] "Profil-længdens maksimale størrelse på %d byte er blevet overskredet. Den er blevet forkortet for dig." +msgstr[1] "Profil-længdens maksimale størrelse på %d bytes er blevet overskredet. Den er blevet forkortet for dig." msgid "Profile too long." msgstr "Profil for lang." #, c-format -msgid "" -"The maximum away message length of %d byte has been exceeded. It has been " -"truncated for you." -msgid_plural "" -"The maximum away message length of %d bytes has been exceeded. It has been " -"truncated for you." -msgstr[0] "" -"Fraværsbeskedens maksimale længde på %d byte er blevet overskredet. Den er " -"blevet forkortet for dig." -msgstr[1] "" -"Fraværsbeskedens maksimale længde på %d bytes er blevet overskredet. Den er " -"blevet forkortet for dig." +msgid "The maximum away message length of %d byte has been exceeded. It has been truncated for you." +msgid_plural "The maximum away message length of %d bytes has been exceeded. It has been truncated for you." +msgstr[0] "Fraværsbeskedens maksimale længde på %d byte er blevet overskredet. Den er blevet forkortet for dig." +msgstr[1] "Fraværsbeskedens maksimale længde på %d bytes er blevet overskredet. Den er blevet forkortet for dig." msgid "Away message too long." msgstr "Fraværsbesked for lang." #, c-format -msgid "" -"Could not 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 "" -"Kunne ikke tilføje vennen %s, fordi brugernavnet er ugyldigt. Brugernavne " -"skal være en gyldig e-postadresse, eller starte med ét bogstav og kun " -"indeholde bogstaver, tal og mellemrum, eller kun indeholde tal." +msgid "Could not 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 "Kunne ikke tilføje vennen %s, fordi brugernavnet er ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med ét bogstav og kun indeholde bogstaver, tal og mellemrum, eller kun indeholde tal." msgid "Unable to Add" msgstr "Ikke i stand til at tilføje" @@ -6831,24 +6330,15 @@ msgid "Unable to Retrieve Buddy List" msgstr "Kunne ikke hente venneliste" -msgid "" -"The AIM servers were temporarily unable to send your buddy list. Your buddy " -"list is not lost, and will probably become available in a few minutes." -msgstr "" -"AIM-serverne var midlertidigt ude af stand til at hente din venneliste. Din " -"venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par " -"minutter." +msgid "The AIM servers were temporarily unable to send your buddy list. Your buddy list is not lost, and will probably become available in a few minutes." +msgstr "AIM-serverne var midlertidigt ude af stand til at sende din venneliste. Din venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par minutter." msgid "Orphans" msgstr "Tabte" #, c-format -msgid "" -"Could not add the buddy %s because you have too many buddies in your buddy " -"list. Please remove one and try again." -msgstr "" -"Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste." -"Fjern en, og prøv igen." +msgid "Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again." +msgstr "Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste.Fjern en, og prøv igen." msgid "(no name)" msgstr "(intet navn)" @@ -6858,12 +6348,8 @@ msgstr "Kunne ikke tilføje vennen %s af en ukendt årsag." #, c-format -msgid "" -"The user %s has given you permission to add him or her to your buddy list. " -"Do you want to add this user?" -msgstr "" -"Brugeren %s har givet dig lov til at tilføje dig til din venneliste. Vil du " -"tilføje brugeren?" +msgid "The user %s has given you permission to add him or her to your buddy list. Do you want to add this user?" +msgstr "Brugeren %s har givet dig lov til at tilføje dig til din venneliste. Vil du tilføje brugeren?" msgid "Authorization Given" msgstr "Godkendelse Givet" @@ -6871,9 +6357,7 @@ #. Granted #, c-format msgid "The user %s has granted your request to add them to your buddy list." -msgstr "" -"Brugeren %s har givet lov til din anmodning om at tilføje dem til din " -"venneliste." +msgstr "Brugeren %s har givet lov til din anmodning om at tilføje dem til din venneliste." msgid "Authorization Granted" msgstr "Godkendelse Givet" @@ -6881,12 +6365,10 @@ #. Denied #, c-format msgid "" -"The user %s has denied your request to add them to your buddy list for the " -"following reason:\n" +"The user %s has denied your request to add them to your buddy list for the following reason:\n" "%s" msgstr "" -"Brugeren %s har nægtet din anmodning om at tilføje dem til din venneliste af " -"følgende grund:\n" +"Brugeren %s har nægtet din anmodning om at tilføje dem til din venneliste af følgende grund:\n" "%s" msgid "Authorization Denied" @@ -6896,10 +6378,10 @@ msgstr "_Udveksl:" msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats." -msgstr "Dit billede blev ikke sendt. Du kan ikke sende billeder i AIM chats." +msgstr "Dit billede blev ikke sendt. Du kan ikke sende billeder i AIM-samtaler." msgid "iTunes Music Store Link" -msgstr "iTunes Music Store link" +msgstr "Henvisning til iTunes Music Store" #, c-format msgid "Buddy Comment for %s" @@ -6912,12 +6394,8 @@ msgid "You have selected to open a Direct IM connection with %s." msgstr "Du har valgt at åbne en direkte besked-forbindelse med %s." -msgid "" -"Because this reveals your IP address, it may be considered a security risk. " -"Do you wish to continue?" -msgstr "" -"Fordi dette afslører din IP-adresse, ses det som en privatlivs-risiko. Vil " -"du fortsætte?" +msgid "Because this reveals your IP address, it may be considered a security risk. Do you wish to continue?" +msgstr "Fordi dette afslører din IP-adresse, ses det som en privatlivs-risiko. Vil du fortsætte?" msgid "C_onnect" msgstr "_Tilslut" @@ -6942,7 +6420,7 @@ msgstr "Kræv godkendelse" msgid "Web aware (enabling this will cause you to receive SPAM!)" -msgstr "Web tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)" +msgstr "Internet tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)" msgid "ICQ Privacy Options" msgstr "ICQ privatlivsindstillinger" @@ -6954,7 +6432,7 @@ msgstr "Brugernavn formatering kan kun ændre store/små bogstaver og mellemrum." msgid "Change Address To:" -msgstr "Skift adresse til:" +msgstr "Ændr adresse til:" msgid "you are not waiting for authorization" msgstr "du venter ikke på godkendelse" @@ -6962,33 +6440,29 @@ msgid "You are awaiting authorization from the following buddies" msgstr "Du afventer godkendelse fra følgende venner" -msgid "" -"You can re-request authorization from these buddies by right-clicking on " -"them and selecting \"Re-request Authorization.\"" -msgstr "" -"Du kan anmode om ny godkendelse fra disse venner ved at højreklikke på dem " -"og vælge \"Anmod om ny godkendelse\"." +msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\"" +msgstr "Du kan anmode om ny godkendelse fra disse venner ved at højreklikke på dem og vælge \"Anmod om ny godkendelse\"." msgid "Find Buddy by Email" -msgstr "Find ven udfra email adresse" +msgstr "Find ven udfra e-postadresse" msgid "Search for a buddy by email address" -msgstr "Søg efter en ven udfra email adresse" +msgstr "Søg efter en ven udfra e-postadresse" msgid "Type the email address of the buddy you are searching for." -msgstr "Indtast email adressen på vennen du søger efter." +msgstr "Indtast e-postadressen på vennen du søger efter." msgid "_Search" msgstr "_Søg" msgid "Set User Info (web)..." -msgstr "Sæt brugeroplysninger (web)..." +msgstr "Indstil brugeroplysninger (internet)..." msgid "Change Password (web)" -msgstr "Skift adgangskode (web)" +msgstr "Ændr adgangskode (internet)" msgid "Configure IM Forwarding (web)" -msgstr "Konfigurér kvikbesked-videresendelse (web)" +msgstr "Konfigurér beskedvideresendelse (internet)" #. ICQ actions msgid "Set Privacy Options..." @@ -6999,16 +6473,16 @@ msgstr "Bekræft Konto" msgid "Display Currently Registered Email Address" -msgstr "Vis nuværende registrede e-post adresse" +msgstr "Vis nuværende registrede e-postadresse" msgid "Change Currently Registered Email Address..." -msgstr "Skift nuværende registrede e-post adresse..." +msgstr "Ændr nuværende registrede e-postadresse..." msgid "Show Buddies Awaiting Authorization" msgstr "Vis venner der afventer godkendelse" msgid "Search for Buddy by Email Address..." -msgstr "Søg efter ven udfra e-post adresse..." +msgstr "Søg efter ven udfra e-postadresse..." msgid "Search for Buddy by Information" msgstr "Søg efter ven udfra oplysninger" @@ -7018,8 +6492,8 @@ "file transfers and direct IM (slower,\n" "but does not reveal your IP address)" msgstr "" -"Brug altid AIM/ICQ-mellemværtsserver til\n" -"filoverførsler og direkte besked (langsommere,\n" +"Brug altid AIM/ICQ-proxyserver til\n" +"filoverførsler og kvikbesked (langsommere,\n" "men afslører ikke din IP-adresse)" msgid "Allow multiple simultaneous logins" @@ -7034,20 +6508,14 @@ msgstr "Prøver at forbinde til %s:%hu." msgid "Attempting to connect via proxy server." -msgstr "Forsøger at forbinde via mellemværtsserver." +msgstr "Forsøger at forbinde via proxy-server." #, c-format msgid "%s has just asked to directly connect to %s" msgstr "%s har lige spurgt om at forbinde direkte til %s" -msgid "" -"This requires a direct connection between the two computers and is necessary " -"for IM Images. Because your IP address will be revealed, this may be " -"considered a privacy risk." -msgstr "" -"Dette kræver en direkte forbindelse imellem to computere og er nødvendigt " -"for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en " -"privatlivs risiko." +msgid "This requires a direct connection between the two computers and is necessary for IM Images. Because your IP address will be revealed, this may be considered a privacy risk." +msgstr "Dette kræver en direkte forbindelse imellem to computere og er nødvendigt for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en privatlivs risiko." msgid "Aquarius" msgstr "Vandmand" @@ -7131,7 +6599,7 @@ msgstr "Kun ven" msgid "Private" -msgstr "Privatliv" +msgstr "Privat" msgid "QQ Number" msgstr "QQ-nummer" @@ -7149,7 +6617,7 @@ msgstr "Telefonnummer" msgid "Authorize adding" -msgstr "Godkend ven" +msgstr "Godkend tilføjelse" msgid "Cellphone Number" msgstr "Mobilnummer" @@ -7161,10 +6629,10 @@ msgstr "By/område" msgid "Publish Mobile" -msgstr "Udgiv mobil" +msgstr "Offentliggør mobil" msgid "Publish Contact" -msgstr "Udgiv kontakt" +msgstr "Offentliggør kontakt" msgid "College" msgstr "Fold sammen" @@ -7185,16 +6653,16 @@ msgstr "Falsk" msgid "Modify Contact" -msgstr "Ændrer kontakt" +msgstr "Ændr kontakt" msgid "Modify Address" -msgstr "Ændre addresse" +msgstr "Ændr adresse" msgid "Modify Extended Information" -msgstr "Ændre udvidet information" +msgstr "Ændr udvidet information" msgid "Modify Information" -msgstr "Ændre information" +msgstr "Ændr information" msgid "Update" msgstr "Opdatér" @@ -7232,13 +6700,13 @@ msgstr "Tilføj vennegodkendelse" msgid "Enter request here" -msgstr "Indtast forespørgelse her" +msgstr "Indtast anmodning her" msgid "Would you be my friend?" msgstr "Vil du være min ven?" msgid "QQ Buddy" -msgstr "QQ ven" +msgstr "QQ-ven" msgid "Add buddy" msgstr "Tilføj ven" @@ -7307,10 +6775,10 @@ msgstr "Admin" msgid "Notice" -msgstr "Note" +msgstr "Bemærk" msgid "Detail" -msgstr "Detaljer" +msgstr "Detalje" msgid "Creator" msgstr "Opretter" @@ -7322,13 +6790,13 @@ msgstr "Kategori" msgid "The Qun does not allow others to join" -msgstr "Qun'en tillader ikke andre at blive medlem" +msgstr "Qun'en tillader ikke andre at tilslutte" msgid "Join QQ Qun" -msgstr "Deltag QQ Qun" +msgstr "Tilslut QQ Qun" msgid "Input request here" -msgstr "Indtast forespørgelse her" +msgstr "Indtast forespørgsel her" #, c-format msgid "Successfully joined Qun %s (%u)" @@ -7361,13 +6829,13 @@ "vil denne operation måske fjerne denne Qun." msgid "Sorry, you are not our style" -msgstr "Beklager, du er ikke min type" +msgstr "Beklager, du er ikke vores type" msgid "Successfully changed Qun members" -msgstr "Ændret Qun-medlemmer problemfrit" +msgstr "Ændrede Qun-medlemmer problemfrit" msgid "Successfully changed Qun information" -msgstr "Ændret Qun-information problemfrit" +msgstr "Ændrede Qun-information problemfrit" msgid "You have successfully created a Qun" msgstr "Du har oprettet en Qun" @@ -7380,15 +6848,15 @@ #, c-format msgid "%u requested to join Qun %u for %s" -msgstr "%u anmoder om at blive medlem af Qun %u for %s" +msgstr "%u anmoder om at tilslutte Qun %u for %s" #, c-format msgid "%u request to join Qun %u" -msgstr "%u anmoder om at blive medlem af Qun %u" +msgstr "%u anmoder om at tilslutte Qun %u" #, c-format msgid "Failed to join Qun %u, operated by admin %u" -msgstr "Kunne ikke deltage i Qun %u, styret af admin %u" +msgstr "Kunne ikke tilslutte Qun %u, styret af admin %u" #, c-format msgid "Joining Qun %u is approved by admin %u for %s" @@ -7400,7 +6868,7 @@ #, c-format msgid "New buddy %u joined." -msgstr "Nu ven %u deltager." +msgstr "Ny ven %u tilsluttet." #, c-format msgid "Unknown-%d" @@ -7416,10 +6884,10 @@ msgstr " TCP" msgid " FromMobile" -msgstr " FraMobil" +msgstr " FromMobile" msgid " BindMobile" -msgstr " BindMobil" +msgstr " BindMobile" msgid " Video" msgstr " Video" @@ -7441,11 +6909,11 @@ #, c-format msgid "Login time: %d-%d-%d, %d:%d:%d
\n" -msgstr "Login tid: %d-%d-%d, %d:%d:%d
\n" +msgstr "Logind tid: %d-%d-%d, %d:%d:%d
\n" #, c-format msgid "Total Online Buddies: %d
\n" -msgstr "Totale venner online: %d
\n" +msgstr "Totale venner tilkoblet: %d
\n" #, c-format msgid "Last Refresh: %d-%d-%d, %d:%d:%d
\n" @@ -7473,7 +6941,7 @@ #, c-format msgid "Resend: %lu
\n" -msgstr "Gensendt: %lu
\n" +msgstr "Gensend: %lu
\n" #, c-format msgid "Lost: %lu
\n" @@ -7485,7 +6953,7 @@ #, c-format msgid "Received Duplicate: %lu
\n" -msgstr "Modtagede duplikater: %lu
\n" +msgstr "Modtaget duplikat: %lu
\n" #, c-format msgid "Time: %d-%d-%d, %d:%d:%d
\n" @@ -7502,13 +6970,13 @@ msgstr "

Oprindelig forfatter:
\n" msgid "

Code Contributors:
\n" -msgstr "

Kode bidragere:
\n" +msgstr "

Kode bidragydere:
\n" msgid "

Lovely Patch Writers:
\n" msgstr "

Elskede programrettelsesskrivere:
\n" msgid "

Acknowledgement:
\n" -msgstr "

Bekræft erkendelse:
\n" +msgstr "

Bekræft anerkendelse:
\n" msgid "

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

Og alle drengene i baggrunden...
\n" @@ -7521,10 +6989,10 @@ msgstr "Om OpenQ %s" msgid "Change Icon" -msgstr "Ændre ikon" +msgstr "Ændr ikon" msgid "Change Password" -msgstr "Skift adgangskode" +msgstr "Ændr adgangskode" msgid "Account Information" msgstr "Kontoinformation" @@ -7567,13 +7035,13 @@ msgstr "Tilslut med TCP" msgid "Show server notice" -msgstr "Vis servernote" +msgstr "Vis serverbemærkning" msgid "Show server news" msgstr "Vis servernyheder" msgid "Show chat room when msg comes" -msgstr "Vis chatrum når besked kommer" +msgstr "Vis samtalerum når besked kommer" msgid "Keep alive interval (seconds)" msgstr "Hold i live interval (sekunder)" @@ -7582,15 +7050,15 @@ msgstr "Opdateringsinterval (sekunder)" msgid "Cannot decrypt server reply" -msgstr "Kan ikke afkode serversvar" +msgstr "Kan ikke afkryptere serversvar" #, c-format msgid "Failed requesting token, 0x%02X" -msgstr "Fejl ved forespørgelse efter symbol, 0x%02X" +msgstr "Fejl ved forespørgsel efter nøgle, 0x%02X" #, c-format msgid "Invalid token len, %d" -msgstr "Ugyldigt symbollængde, %d" +msgstr "Ugyldig nøglelængde, %d" #. extend redirect used in QQ2006 msgid "Redirect_EX is not currently supported" @@ -7600,14 +7068,14 @@ #. need activation #. need activation msgid "Activation required" -msgstr "Registrering krævet" +msgstr "Aktivering krævet" #, c-format msgid "Unknown reply code when logging in (0x%02X)" msgstr "Ukendt svarkode ved indlogning i (0x%02X)" msgid "Could not decrypt server reply" -msgstr "Kunne ikke afkode serversvar" +msgstr "Kunne ikke afkryptere serversvar" msgid "Requesting captcha" msgstr "Anmoder om captcha" @@ -7625,7 +7093,7 @@ msgstr "Indtast kode" msgid "QQ Captcha Verification" -msgstr "QQ Captcha-efterprøvning" +msgstr "QQ Captcha-godkendelse" msgid "Enter the text from the image" msgstr "Indtast teksten fra billedet" @@ -7659,10 +7127,10 @@ msgstr "Forbindelse mistet" msgid "Getting server" -msgstr "Henter server" +msgstr "Finder server" msgid "Requesting token" -msgstr "Anmoder om symbol" +msgstr "Anmoder om nøgle" msgid "Couldn't resolve host" msgstr "Kunne ikke slå vært op" @@ -7683,7 +7151,7 @@ "%s\n" "%s" msgstr "" -"Servernyt:\n" +"Servernyheder:\n" "%s\n" "%s\n" "%s" @@ -7719,7 +7187,7 @@ msgstr "QQ Qun-kommando" msgid "Could not decrypt login reply" -msgstr "Kan ikke dekryptere logindsvar" +msgstr "Kan ikke afkryptere logindsvar" msgid "Unknown LOGIN CMD" msgstr "Ukendt LOGIN CMD" @@ -7784,13 +7252,11 @@ msgstr "Login godkendt" msgid "Starting Services" -msgstr "Starter services" - -#, c-format -msgid "" -"A Sametime administrator has issued the following announcement on server %s" -msgstr "" -"En Sametime administrator har sendt den følgende annoncering på server %s" +msgstr "Starter tjenester" + +#, c-format +msgid "A Sametime administrator has issued the following announcement on server %s" +msgstr "En Sametime administrator har sendt den følgende annoncering på server %s" msgid "Sametime Administrator Announcement" msgstr "Sametime administrator annoncering" @@ -7811,7 +7277,7 @@ msgstr "Annoncering fra %s" msgid "Conference Closed" -msgstr "Konference lukket" +msgstr "Konference afsluttet" msgid "Unable to send message: " msgstr "Kunne ikke sende besked: " @@ -7838,12 +7304,8 @@ msgstr "Opret konference med bruger" #, c-format -msgid "" -"Please enter a topic for the new conference, and an invitation message to be " -"sent to %s" -msgstr "" -"Indtast et emne for den nye konference, og en invitationsbesked der skal " -"sendes til %s" +msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s" +msgstr "Indtast et emne for den nye konference, og en invitationsbesked der skal sendes til %s" msgid "New Conference" msgstr "Ny konference" @@ -7861,14 +7323,8 @@ msgstr "Invitér bruger til en konference" #, c-format -msgid "" -"Select a conference from the list below to send an invite to user %s. Select " -"\"Create New Conference\" if you'd like to create a new conference to invite " -"this user to." -msgstr "" -"Vælg en konference fra listen forneden for at sende en invitation til bruger " -"%s. Vælg \"Opret ny konference\" hvis du vil oprette en ny konference at " -"invitere denne bruger til." +msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to." +msgstr "Vælg en konference fra listen forneden for at sende en invitation til bruger %s. Vælg \"Opret ny konference\" hvis du vil oprette en ny konference at invitere denne bruger til." msgid "Invite to Conference" msgstr "Invitér til konference" @@ -7886,12 +7342,8 @@ msgstr "Ingen Sametime community server angivet" #, c-format -msgid "" -"No host or IP address has been configured for the Meanwhile account %s. " -"Please enter one below to continue logging in." -msgstr "" -"Ingen vært eller IP-adresse er blevet sat op for Meanwhile-kontoen %s. " -"Indtast en forneden for at fortsætte med at logge ind." +msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in." +msgstr "Ingen vært eller IP-adresse er blevet sat op for Meanwhile-kontoen %s. Indtast en forneden for at fortsætte med at logge ind." msgid "Meanwhile Connection Setup" msgstr "Meanwhile forbindelsesopsætning" @@ -7913,19 +7365,14 @@ msgstr "Brugernavn" msgid "Sametime ID" -msgstr "Sametime ID" +msgstr "Sametime-id" msgid "An ambiguous user ID was entered" -msgstr "Et ugyldigt bruger ID blev indtastet" - -#, c-format -msgid "" -"The identifier '%s' may possibly refer to any of the following users. Please " -"select the correct user from the list below to add them to your buddy list." -msgstr "" -"Identificeringen '%s' kan henvise til hvilken som helst af de følgende " -"brugere. Vælg den korrekte bruger fra listen forneden for at tilføje dem til " -"din venneliste." +msgstr "Et ugyldigt bruger id blev indtastet" + +#, c-format +msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list." +msgstr "Identificeringen '%s' kan henvise til hvilken som helst af de følgende brugere. Vælg den korrekte bruger fra listen forneden for at tilføje dem til din venneliste." msgid "Select User" msgstr "Vælg bruger" @@ -7934,12 +7381,8 @@ msgstr "Kunne ikke tilføje bruger: bruger ikke fundet" #, c-format -msgid "" -"The identifier '%s' did not match any users in your Sametime community. This " -"entry has been removed from your buddy list." -msgstr "" -"Identificeringen '%s' matchede ikke nogle brugere i dit Sametime fællesskab. " -"Denne post er blevet fjernet fra din venneliste." +msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list." +msgstr "Identificeringen '%s' matchede ikke nogle brugere i dit Sametime fællesskab. Denne post er blevet fjernet fra din venneliste." #, c-format msgid "" @@ -7992,14 +7435,8 @@ msgstr "Notes adressebog grupperesultater" #, c-format -msgid "" -"The identifier '%s' may possibly refer to any of the following Notes Address " -"Book groups. Please select the correct group from the list below to add it " -"to your buddy list." -msgstr "" -"Identificeringen '%s' kan henvise til hvilken som helst af de følgende Notes " -"adressebogsgrupper. Vælg den korrekte gruppe fra listen forneden for at " -"tilføje den til din venneliste." +msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list." +msgstr "Identificeringen '%s' kan henvise til hvilken som helst af de følgende Notes adressebogsgrupper. Vælg den korrekte gruppe fra listen forneden for at tilføje den til din venneliste." msgid "Select Notes Address Book" msgstr "Vælg Notes adressebog" @@ -8008,36 +7445,22 @@ msgstr "Kunne ikke tilføje gruppe: gruppe ikke fundet" #, c-format -msgid "" -"The identifier '%s' did not match any Notes Address Book groups in your " -"Sametime community." -msgstr "" -"Identificeringen '%s' matchede ikke nogle Notes adressebogsgrupper i dit " -"Sametime fællesskab." +msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community." +msgstr "Identificeringen '%s' matchede ikke nogle Notes adressebogsgrupper i dit Sametime fællesskab." msgid "Notes Address Book Group" msgstr "Notes adressebogsgruppe" -msgid "" -"Enter the name of a Notes Address Book group in the field below to add the " -"group and its members to your buddy list." -msgstr "" -"Indtast navnet på en Notes adressebogsgruppe i feltet forneden for at " -"tilføje gruppen og dens medlemmer til din venneliste." +msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list." +msgstr "Indtast navnet på en Notes adressebogsgruppe i feltet forneden for at tilføje gruppen og dens medlemmer til din venneliste." #, c-format msgid "Search results for '%s'" msgstr "Søgeresultater for '%s'" #, c-format -msgid "" -"The identifier '%s' may possibly refer to any of the following users. You " -"may add these users to your buddy list or send them messages with the action " -"buttons below." -msgstr "" -"Identificeringen '%s' kan muligvis henvise til hvilken som helst af de " -"følgende brugere. Du kan tilføje disse brugere til din venneliste eller " -"sende dem beskeder med handlingsknapperne forneden." +msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below." +msgstr "Identificeringen '%s' kan muligvis henvise til hvilken som helst af de følgende brugere. Du kan tilføje disse brugere til din venneliste eller sende dem beskeder med handlingsknapperne forneden." msgid "Search Results" msgstr "Søgeresultater" @@ -8047,8 +7470,7 @@ #, c-format msgid "The identifier '%s' did not match any users in your Sametime community." -msgstr "" -"Identificeringen '%s' matchede ingen brugere i dit Sametime fællesskab." +msgstr "Identificeringen '%s' matchede ingen brugere i dit Sametime fællesskab." msgid "No Matches" msgstr "Ingen fundne" @@ -8056,12 +7478,8 @@ msgid "Search for a user" msgstr "Søg efter en bruger" -msgid "" -"Enter a name or partial ID in the field below to search for matching users " -"in your Sametime community." -msgstr "" -"Indtast et navn eller delvist ID i feltet forneden for at søge efter " -"matchende brugere i dit Sametime fællesskab." +msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community." +msgstr "Indtast et navn eller delvist id i feltet forneden for at søge efter matchende brugere i dit Sametime fællesskab." msgid "User Search" msgstr "Brugersøgning" @@ -8117,9 +7535,7 @@ msgstr "Brugeren er ikke til stede i netværket længere" #, c-format -msgid "" -"Key agreement request received from %s. Would you like to perform the key " -"agreement?" +msgid "Key agreement request received from %s. Would you like to perform the key agreement?" msgstr "Anmodning om nøgle enighed modtaget %s. Vil du udføre nøgle enigheden?" #, c-format @@ -8166,13 +7582,8 @@ msgid "The %s buddy is not trusted" msgstr "Vennen %s er ikke betroet" -msgid "" -"You cannot receive buddy notifications until you import his/her public key. " -"You can use the Get Public Key command to get the public key." -msgstr "" -"Du kan ikke modtage venne-påmindelser før du importerer hans/hendes " -"offentlige nøgle. Du kan bruge \"Hent offentlig nøgle\" kommandoen for at " -"hente den offentlige nøgle." +msgid "You cannot receive buddy notifications until you import his/her public key. You can use the Get Public Key command to get the public key." +msgstr "Du kan ikke modtage venne-påmindelser før du importerer hans/hendes offentlige nøgle. Du kan bruge \"Hent offentlig nøgle\" kommandoen for at hente den offentlige nøgle." #. Open file selector to select the public key. msgid "Open..." @@ -8182,12 +7593,8 @@ msgid "The %s buddy is not present in the network" msgstr "%s vennen er ikke til stede på netværket" -msgid "" -"To add the buddy you must import his/her public key. Press Import to import " -"a public key." -msgstr "" -"For at tilføje en ven, skal du importere hendes/hans offentlige nøgle. Tryk " -"Importér for at importere en offentlig nøgle." +msgid "To add the buddy you must import his/her public key. Press Import to import a public key." +msgstr "For at tilføje vennen, skal du importere hendes/hans offentlige nøgle. Tryk Importér for at importere en offentlig nøgle." msgid "_Import..." msgstr "_Importér..." @@ -8195,19 +7602,11 @@ msgid "Select correct user" msgstr "Vælg en korrekt bruger" -msgid "" -"More than one user was found with the same public key. Select the correct " -"user from the list to add to the buddy list." -msgstr "" -"Mere end én bruger blev fundet med den samme offentlige nøgle. Vælg den " -"korrekte bruger fra listen som du vil tilføje til din venneliste." - -msgid "" -"More than one user was found with the same name. Select the correct user " -"from the list to add to the buddy list." -msgstr "" -"Mere end én bruger blev fundet med det samme navn. Vælg den korrekte bruger " -"fra listen, som du vil tilføje til din venneliste." +msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list." +msgstr "Mere end én bruger blev fundet med den samme offentlige nøgle. Vælg den korrekte bruger fra listen som du vil tilføje til din venneliste." + +msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list." +msgstr "Mere end én bruger blev fundet med det samme navn. Vælg den korrekte bruger fra listen, som du vil tilføje til din venneliste." msgid "Detached" msgstr "Ikke koblet på" @@ -8357,18 +7756,8 @@ msgstr "Kanalens liste med offentlige nøgler" #, c-format -msgid "" -"Channel authentication is used to secure the channel from unauthorized " -"access. The authentication may be based on passphrase and digital " -"signatures. If passphrase is set, it is required to be able to join. If " -"channel public keys are set then only users whose public keys are listed are " -"able to join." -msgstr "" -"Kanal godkendelse brugeres til at sikre kanalen fra uønsket adgang. " -"Godkendelsen kan være baseret på en adgangssætning og digitale signaturer. " -"Hvis adgangssætningen er sat, er den krævet for at deltage. Hvis kanalens " -"offentlige nøgler er sat, så er det kun brugere hvis offentlige nøgler der " -"er nævnt, som kan deltage." +msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join." +msgstr "Kanal godkendelse brugeres til at sikre kanalen fra uønsket adgang. Godkendelsen kan være baseret på en adgangssætning og digitale underskrifter. Hvis adgangssætningen er angivet, er den påkrævet for at tilslutte. Hvis kanalens offentlige nøgler er angivet, så er det kun brugere hvis offentlige nøgler der er nævnt, som kan deltage." msgid "Channel Authentication" msgstr "Kanal godkendelse" @@ -8432,15 +7821,14 @@ msgstr "Sæt hemmelig kanal" #, c-format -msgid "" -"You have to join the %s channel before you are able to join the private group" -msgstr "Du skal deltage i %s kanalen før du kan deltage i den private gruppe" +msgid "You have to join the %s channel before you are able to join the private group" +msgstr "Du skal tilslutte %s kanalen før du kan tilslutte den private gruppe" msgid "Join Private Group" -msgstr "Deltag i privat gruppe" +msgstr "Tilslut privat gruppe" msgid "Cannot join private group" -msgstr "Kan ikke deltage i privat gruppe" +msgstr "Kan ikke tilslutte privat gruppe" msgid "Call Command" msgstr "Kald kommando" @@ -8458,7 +7846,7 @@ msgstr "Fejl under filoverførsel" msgid "Remote disconnected" -msgstr "Fjerndel afbrudt" +msgstr "Fjernvært afbrød" msgid "Permission denied" msgstr "Adgang nægtet" @@ -8547,7 +7935,7 @@ msgstr "Note" msgid "Join Chat" -msgstr "Deltag i chat" +msgstr "Tilslut samtale" #, c-format msgid "You are channel founder on %s" @@ -8567,7 +7955,7 @@ msgstr "Offentlig nøgle fingeraftryk" msgid "Public Key Babbleprint" -msgstr "Offentlige nøgle \"babbleprint\"" +msgstr "Offentlig nøgle \"babbleprint\"" msgid "_More..." msgstr "_Mere..." @@ -8673,12 +8061,8 @@ msgstr "Adgangssætning krævet" #, c-format -msgid "" -"Received %s's public key. Your local copy does not match this key. Would you " -"still like to accept this public key?" -msgstr "" -"Modtog %s's offentlige nøgle. Din lokale kopi passer ikke med denne nøgle. " -"Vil du stadig acceptere den?" +msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?" +msgstr "Modtog %s's offentlige nøgle. Din lokale kopi passer ikke med denne nøgle. Vil du stadig acceptere den?" #, c-format msgid "Received %s's public key. Would you like to accept this public key?" @@ -8709,16 +8093,13 @@ msgstr "Afbrudt af server" msgid "Error during connecting to SILC Server" -msgstr "Fejl ved forbindelse til SILC server" +msgstr "Fejl ved forbindelse til SILC-server" msgid "Key Exchange failed" msgstr "Nøgle udveksling fejlede" -msgid "" -"Resuming detached session failed. Press Reconnect to create new connection." -msgstr "" -"Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at " -"trykke på gentabler forbindelse." +msgid "Resuming detached session failed. Press Reconnect to create new connection." +msgstr "Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at trykke på gentabler forbindelse." msgid "Connection failed" msgstr "Forbindelse fejlede" @@ -8730,20 +8111,20 @@ msgstr "Kunne ikke oprette forbindelse" msgid "Could not load SILC key pair" -msgstr "Kunne ikke indlæse SILC nøglepar" +msgstr "Kunne ikke indlæse SILC-nøglepar" #. Progress msgid "Connecting to SILC Server" -msgstr "Tilslutter til SILC server" +msgstr "Tilslutter til SILC-server" msgid "Out of memory" msgstr "Løb tør for hukommelse" msgid "Cannot initialize SILC protocol" -msgstr "Kan ikke initialisere SILC protokol" +msgstr "Kan ikke initialisere SILC-protokol" msgid "Error loading SILC key pair" -msgstr "Fejl ved indlæsning af SILC nøglepar" +msgstr "Fejl ved indlæsning af SILC-nøglepar" #, c-format msgid "Download %s: %s" @@ -8794,16 +8175,10 @@ msgstr "Tidszone (UTC)" msgid "User Online Status Attributes" -msgstr "Online bruger status-attributter" - -msgid "" -"You can let other users see your online status information and your personal " -"information. Please fill the information you would like other users to see " -"about yourself." -msgstr "" -"Du kan lade andre brugere se dine online status oplysninger og dine " -"personlige oplysninger. Udfyld de oplysninger, du gerne vil have at folk kan " -"se om dig." +msgstr "Status-attributter for tilkoblet bruger" + +msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself." +msgstr "Du kan lade andre brugere se dine tilkoblede statusoplysninger og dine personlige oplysninger. Udfyld de oplysninger, du gerne vil have at folk kan se om dig." msgid "Message of the Day" msgstr "Dagens besked (MOTD)" @@ -8812,10 +8187,10 @@ msgstr "Ingen MOTD tilgængelig" msgid "There is no Message of the Day associated with this connection" -msgstr "Der er ingen MOTD associeret med denne forbindelse" +msgstr "Der er ingen MOTD tilknyttet denne forbindelse" msgid "Create New SILC Key Pair" -msgstr "Opret nyt SILC nøglepar" +msgstr "Opret nyt SILC-nøglepar" msgid "Passphrases do not match" msgstr "Adgangskoder passer ikke" @@ -8839,13 +8214,13 @@ msgstr "Generér nøglepar" msgid "Online Status" -msgstr "Online status" +msgstr "Tilkoblet status" msgid "View Message of the Day" msgstr "Vis dagens besked (MOTD)" msgid "Create SILC Key Pair..." -msgstr "Opret SILC nøglepar..." +msgstr "Opret SILC-nøglepar..." #, c-format msgid "User %s is not present in the network" @@ -8878,107 +8253,88 @@ msgstr "Ukendt kommando: %s, (måske er det en klientfejl)" msgid "part [channel]: Leave the chat" -msgstr "part [kanal]: Forlad chatten" +msgstr "part [kanal]: Forlad samtalen" msgid "leave [channel]: Leave the chat" -msgstr "leave [kanal]: Forlad chatten" +msgstr "leave [kanal]: Forlad samtalen" msgid "topic [<new topic>]: View or change the topic" -msgstr "topic [<nyt emne>]: Vis eller skift emnet" +msgstr "topic [<nyt emne>]: Vis eller ændr emnet" msgid "join <channel> [<password>]: Join a chat on this network" -msgstr "" -"join <kanal> [<adgangskode>]: Deltag i chat på dette netværk" +msgstr "join <kanal> [<adgangskode>]: Tilslut samtale på dette netværk" msgid "list: List channels on this network" -msgstr "list: Vis kanaler på dette netværk" +msgstr "list: Vis kanaler på dette netværk" msgid "whois <nick>: View nick's information" -msgstr "whois <navn>: Vis brugerens oplysninger" +msgstr "whois <navn>: Vis brugerens oplysninger" msgid "msg <nick> <message>: Send a private message to a user" -msgstr "msg <navn> <besked>: Send en privat besked til en bruger" +msgstr "msg <navn> <besked>: Send en privat besked til en bruger" msgid "query <nick> [<message>]: Send a private message to a user" -msgstr "" -"query <navn> [<besked>]: Send en privat besked til en bruger" +msgstr "query <navn> [<besked>]: Send en privat besked til en bruger" msgid "motd: View the server's Message Of The Day" -msgstr "motd: Vis dagens besked (MOTD)" +msgstr "motd: Vis dagens besked (MOTD)" msgid "detach: Detach this session" msgstr "detach: Gå væk fra denne session" msgid "quit [message]: Disconnect from the server, with an optional message" -msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked" +msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked" msgid "call <command>: Call any silc client command" -msgstr "call <kommando>: Kald en vilkårlig silc klient kommando" +msgstr "call <kommando>: Kald en vilkårlig silc-klient kommando" msgid "kill <nick> [-pubkey|<reason>]: Kill nick" -msgstr "kill <kælenavn> [-pubkey|<begrundelse>]: Dræb kælenavn" +msgstr "kill <kælenavn> [-pubkey|<begrundelse>]: Dræb kælenavn" msgid "nick <newnick>: Change your nickname" -msgstr "nick <nyt navn>: Skift dit navn" +msgstr "nick <nyt navn>: Ændr dit kælenavn" msgid "whowas <nick>: View nick's information" -msgstr "whowas <navn>: Vis brugerens oplysninger" - -msgid "" -"cmode <channel> [+|-<modes>] [arguments]: Change or display " -"channel modes" -msgstr "" -"cmode <kanal> [+|-<tilstande>] [argumenter]: Sæt eller fjern en " -"kanal tilstand" - -msgid "" -"cumode <channel> +|-<modes> <nick>: Change nick's modes " -"on channel" -msgstr "" -"cumode <kanal> +|-<tilstande> <navn>: Sæt brugerens " -"tilstande på kanal" +msgstr "whowas <navn>: Vis brugerens oplysninger" + +msgid "cmode <channel> [+|-<modes>] [arguments]: Change or display channel modes" +msgstr "cmode <kanal> [+|-<tilstande>] [argumenter]: Ændre eller vis kanaltilstande" + +msgid "cumode <channel> +|-<modes> <nick>: Change nick's modes on channel" +msgstr "cumode <kanal> +|-<tilstande> <navn>: Ændre brugerens tilstande på kanal" msgid "umode <usermodes>: Set your modes in the network" -msgstr "umode <brugertilstande>: Sæt dine tilstande på netværket" +msgstr "umode <brugertilstande>: Angiv dine tilstande på netværket" msgid "oper <nick> [-pubkey]: Get server operator privileges" msgstr "oper <navn> [-pubkey]: Få server operatør privilegier" -msgid "" -"invite <channel> [-|+]<nick>: invite nick or add/remove from " -"channel invite list" -msgstr "" -"invite <kanal> [-|+]<navn>: invitér navn eller tilføj/fjern fra " -"kanal invitationsliste" +msgid "invite <channel> [-|+]<nick>: invite nick or add/remove from channel invite list" +msgstr "invite <kanal> [-|+]<navn>: invitér navn eller tilføj/fjern fra kanal invitationsliste" msgid "kick <channel> <nick> [comment]: Kick client from channel" msgstr "kick <kanal> <navn> [comment]: Spark klient fra kanal" msgid "info [server]: View server administrative details" -msgstr "info [server]: Vis serverens administrative detaljer" +msgstr "info [server]: Vis serverens administrative detaljer" msgid "ban [<channel> +|-<nick>]: Ban client from channel" msgstr "ban [<kanal> +|-<navn>]: Udvis klient fra kanal" msgid "getkey <nick|server>: Retrieve client's or server's public key" -msgstr "" -"getkey <navn|server>: Hent klient eller servers offentlige nøgle" +msgstr "getkey <navn|server>: Hent klientens eller serverens offentlige nøgle" msgid "stats: View server and network statistics" -msgstr "stats: Vis server- og netværksstatistik" +msgstr "stats: Vis server- og netværksstatistik" msgid "ping: Send PING to the connected server" -msgstr "ping: Send PING til den forbundne server" +msgstr "ping: Send PING til den forbundne server" msgid "users <channel>: List users in channel" -msgstr "users <kanal>: Vis brugere på kanalen lige nu" - -msgid "" -"names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: List " -"specific users in channel(s)" -msgstr "" -"names [-count|-ops|-halfops|-voices|-normal] <kanal(er)>: Vis angivne " -"brugere på kanal(er)" +msgstr "users <kanal>: Vis brugere på kanalen" + +msgid "names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: List specific users in channel(s)" +msgstr "names [-count|-ops|-halfops|-voices|-normal] <kanal(er)>: Vis angivne brugere på kanal(er)" #. *< type #. *< ui_requirement @@ -8990,11 +8346,11 @@ #. *< version #. * summary msgid "SILC Protocol Plugin" -msgstr "SILC prokotolmodul" +msgstr "SILC-prokotolmodul" #. * description msgid "Secure Internet Live Conferencing (SILC) Protocol" -msgstr "Secure Internet Live Conferencing (SILC) protokol" +msgstr "Secure Internet Live Conferencing (SILC)-protokol" msgid "Network" msgstr "Netværk" @@ -9018,7 +8374,7 @@ msgstr "Offentlig nøgle godkendelse" msgid "Block IMs without Key Exchange" -msgstr "Blokér kvikbeskeder uden nøgleudveksling" +msgstr "Blokér beskeder uden nøgleudveksling" msgid "Block messages to whiteboard" msgstr "Blokér beskeder til tavle" @@ -9027,13 +8383,13 @@ msgstr "Åbn automatisk tavle" msgid "Digitally sign and verify all messages" -msgstr "Skriv alle beskeder under med digital signatur og godkend dem" +msgstr "Skriv alle beskeder under med digital underskrift og godkend dem" msgid "Creating SILC key pair..." -msgstr "Opretter SILC nøglepar..." +msgstr "Opretter SILC-nøglepar..." msgid "Cannot create SILC key pair\n" -msgstr "Kan ikke oprette SILC nøglepar\n" +msgstr "Kan ikke oprette SILC-nøglepar\n" #. Hint for translators: Please check the tabulator width here and in #. the next strings (short strings: 2 tabs, longer strings 1 tab, @@ -9048,7 +8404,7 @@ #, c-format msgid "Email: \t\t%s\n" -msgstr "Email: \t\t%s\n" +msgstr "E-post: \t\t%s\n" #, c-format msgid "Host Name: \t%s\n" @@ -9115,9 +8471,7 @@ msgstr "%s sendte besked til tavle. Vil du åbne tavlen?" #, c-format -msgid "" -"%s sent message to whiteboard on %s channel. Would you like to open the " -"whiteboard?" +msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?" msgstr "%s sendte besked til tavle på kanalen %s. Vil du åbne tavlen?" msgid "Whiteboard" @@ -9156,7 +8510,7 @@ #, c-format msgid "Failure: Incorrect signature" -msgstr "Fejl: Ugyldig signatur" +msgstr "Fejl: Ugyldig underskrift" #, c-format msgid "Failure: Invalid cookie" @@ -9167,14 +8521,14 @@ msgstr "Fejl: Godkendelse fejlede" msgid "Cannot initialize SILC Client connection" -msgstr "Kan ikke initialisere SILC klient forbindelse" +msgstr "Kan ikke initialisere SILC-klient forbindelse" msgid "John Noname" msgstr "Intet navn" #, c-format msgid "Could not load SILC key pair: %s" -msgstr "Kunne ikke indlæse SILC nøglepar: %s" +msgstr "Kunne ikke indlæse SILC-nøglepar: %s" msgid "Could not write" msgstr "Kunne ikke skrive" @@ -9219,10 +8573,10 @@ msgstr "Brug UDP" msgid "Use proxy" -msgstr "Brug mellemvært" +msgstr "Brug proxy" msgid "Proxy" -msgstr "Mellemvært" +msgstr "Proxy" msgid "Auth User" msgstr "Autentificering bruger" @@ -9268,7 +8622,7 @@ #, c-format msgid "Chat in %s is not available." -msgstr "Chat i %s er ikke muligt." +msgstr "Samtale i %s er ikke muligt." #, c-format msgid "You are sending messages too fast to %s." @@ -9280,8 +8634,7 @@ #, c-format msgid "You missed an IM from %s because it was sent too fast." -msgstr "" -"Du har ikke modtaget en besked fra %s, fordi den blev sendt for hurtigt." +msgstr "Du har ikke modtaget en besked fra %s, fordi den blev sendt for hurtigt." #, c-format msgid "Failure." @@ -9301,7 +8654,7 @@ #, c-format msgid "Email lookup restricted." -msgstr "Email søgning er begrænset." +msgstr "E-post søgning er begrænset." #, c-format msgid "Keyword ignored." @@ -9336,12 +8689,8 @@ msgstr "Du har for mange advarsler i øjeblikket til at kunne logge ind." #, c-format -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 "" -"Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti " -"minutter og prøv så igen, for ellers skal du bare vente endnu længere." +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 "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere." #, c-format msgid "An unknown signon error has occurred: %s." @@ -9364,7 +8713,7 @@ msgstr "TOC er blevet tilgængelig. Du kan nu sende beskeder igen." msgid "Password Change Successful" -msgstr "Adgangskode skiftet" +msgstr "Adgangskode ændret" msgid "_Group:" msgstr "_Gruppe:" @@ -9426,53 +8775,38 @@ msgstr "Yahoo! systembesked til %s:" #, c-format -msgid "" -"%s has (retroactively) denied your request to add them to your list for the " -"following reason: %s." -msgstr "" -"%s har nægtet din anmodning om at tilføje dem til din venneliste af følgende " -"grund:\n" +msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s." +msgstr "" +"%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din venneliste af følgende grund:\n" "%s." #, c-format msgid "%s has (retroactively) denied your request to add them to your list." -msgstr "%s har nægtet din anmodning om at tilføje dem til din venneliste." +msgstr "%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din venneliste." msgid "Add buddy rejected" msgstr "Vennetilføjelse nægtet" #, c-format -msgid "" -"The Yahoo server has requested the use of an unrecognized authentication " -"method. You will probably not be able to successfully sign on to Yahoo. " -"Check %s for updates." -msgstr "" -"Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode. Du " -"vil højst sandsynligt ikke kunne logge problemfrit på Yahoo. Kontrollér %s " -"for opdateringer." +msgid "The Yahoo server has requested the use of an unrecognized authentication method. You will probably not be able to successfully sign on to Yahoo. Check %s for updates." +msgstr "Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode. Du vil højst sandsynligt ikke kunne logge problemfrit på Yahoo. Kontrollér %s for opdateringer." msgid "Failed Yahoo! Authentication" msgstr "Fejlede Yahoo! godkendelse" #, c-format -msgid "" -"You have tried to ignore %s, but the user is on your buddy list. Clicking " -"\"Yes\" will remove and ignore the buddy." -msgstr "" -"Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du " -"klikker på \"Ja\" vil det fjerne og ignorere vennen." +msgid "You have tried to ignore %s, but the user is on your buddy list. Clicking \"Yes\" will remove and ignore the buddy." +msgstr "Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du klikker på \"Ja\" vil det fjerne og ignorere vennen." msgid "Ignore buddy?" msgstr "Ignorér ven?" msgid "Your account is locked, please log in to the Yahoo! website." -msgstr "Din konto er låst. Log ind på Yahoo! websitet." +msgstr "Din konto er låst. Log ind på Yahoo!-webstedet." #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." -msgstr "" -"Ukendt fejl nummer %d. Prøv at logge ind på Yahoo! websitet for at fixe " -"dette." +msgstr "Ukendt fejl nummer %d. Prøv at logge ind på Yahoo!webstedet for at fixe dette." #, c-format msgid "Could not add buddy %s to group %s to the server list on account %s." @@ -9496,7 +8830,7 @@ "Lost connection with %s:\n" "%s" msgstr "" -"Mistede forbindelsen %s:\n" +"Mistede forbindelsen til %s:\n" "%s" #, c-format @@ -9526,22 +8860,22 @@ msgstr "Ikke på server liste" msgid "Appear Online" -msgstr "Virk offline" +msgstr "Virk tilkoblet" msgid "Appear Permanently Offline" -msgstr "Virk permanent offline" +msgstr "Virk permanent afkoblet" msgid "Presence" msgstr "Tilstedeværelse" msgid "Appear Offline" -msgstr "Virk offline" +msgstr "Virk afkoblet" msgid "Don't Appear Permanently Offline" -msgstr "Virk ikke permanent offline" +msgstr "Virk ikke permanent afkoblet" msgid "Join in Chat" -msgstr "Deltag i chat" +msgstr "Tilslut samtale" msgid "Initiate Conference" msgstr "Start konference" @@ -9553,22 +8887,22 @@ msgstr "Start med at \"Doodle\"" msgid "Activate which ID?" -msgstr "Aktivér hvilket ID?" +msgstr "Aktivér hvilket id?" msgid "Join whom in chat?" -msgstr "Deltag med hvem i chat?" +msgstr "Tilslut hvem i samtale?" msgid "Activate ID..." -msgstr "Aktivér ID..." +msgstr "Aktivér id..." msgid "Join User in Chat..." -msgstr "Deltag med bruger i chat..." +msgstr "Tilslut bruger i samtale..." msgid "Open Inbox" msgstr "Åbn indbakke" msgid "join <room>: Join a chat room on the Yahoo network" -msgstr "join <rum>: Deltag i chatrum på Yahoo-netværket" +msgstr "join <rum>: Tilslut samtalerum på Yahoo-netværket" msgid "list: List rooms on the Yahoo network" msgstr "list: Vis rum på Yahoo-netværket" @@ -9577,7 +8911,7 @@ msgstr "doodle: Anmod en bruger om at starte en \"Doodle\"-session" msgid "Yahoo ID..." -msgstr "Yahoo ID..." +msgstr "Yahoo-id..." #. *< type #. *< ui_requirement @@ -9614,19 +8948,19 @@ msgstr "Filoverførsel port" msgid "Chat room locale" -msgstr "Chatrum tegnsæt" +msgstr "Samtalerum tegnsæt" msgid "Ignore conference and chatroom invitations" -msgstr "Ignorér konference og chatrum invitationer" +msgstr "Ignorér konference og samtalerum invitationer" msgid "Chat room list URL" -msgstr "Chatrumsliste adresse" +msgstr "Adresse på liste over samtalerum" msgid "Yahoo Chat server" -msgstr "Yahoo Chat-server" +msgstr "Yahoo-samtaleserver" msgid "Yahoo Chat port" -msgstr "Yahoo chat-port" +msgstr "Yahoo-samtaleport" #. Write a local message to this conversation showing that a request for a #. * Doodle session has been made @@ -9647,17 +8981,11 @@ msgid "Yahoo! Profile" msgstr "Yahoo! profil" -msgid "" -"Sorry, profiles marked as containing adult content are not supported at this " -"time." -msgstr "" -"Desværre, profiler der er markeret som indeholdende indhold der ikke er for " -"børn, er ikke understøttet." - -msgid "" -"If you wish to view this profile, you will need to visit this link in your " -"web browser:" -msgstr "Vis du vil se denne profil, skal du besøge dette link i din netlæser:" +msgid "Sorry, profiles marked as containing adult content are not supported at this time." +msgstr "Desværre, profiler der er markeret som indeholdende indhold der ikke er for børn, er ikke understøttet." + +msgid "If you wish to view this profile, you will need to visit this link in your web browser:" +msgstr "Vis du vil se denne profil, skal du besøge denne henvisning i din netlæser:" msgid "Yahoo! ID" msgstr "Yahoo! ID" @@ -9672,53 +9000,38 @@ msgstr "Hjemmeside" msgid "Cool Link 1" -msgstr "Sejt link 1" +msgstr "Sej henvisning 1" msgid "Cool Link 2" -msgstr "Sejt link 2" +msgstr "Sej henvisning 2" msgid "Cool Link 3" -msgstr "Sejt link 3" +msgstr "Sej henvisning 3" msgid "Last Update" msgstr "Sidst opdateret" -msgid "" -"This profile is in a language or format that is not supported at this time." -msgstr "" -"Denne profil er i et sprog eller format som ikke er understøttet på " -"nuværende tidspunkt." - -msgid "" -"Could not retrieve the user's profile. This most likely is a temporary " -"server-side problem. Please try again later." -msgstr "" -"Kunne ikke modtage brugerens profil. Dette er højst sandsynligt et " -"midlertidigt server problem. Prøv igen senere." - -msgid "" -"Could not retrieve the user's profile. This most likely means that the user " -"does not exist; however, Yahoo! sometimes does fail to find a user's " -"profile. If you know that the user exists, please try again later." -msgstr "" -"Kunne ikke modtage brugerens profil. Dette betyder højst sandsynligt at " -"brugeren ikke eksisterer; men Yahoo! tager nogen gange fejl og kan ikke " -"finde en brugers profil. Hvis du ved at brugeren eksisterer, så prøv igen " -"senere." +msgid "This profile is in a language or format that is not supported at this time." +msgstr "Denne profil er i et sprog eller format som ikke er understøttet på nuværende tidspunkt." + +msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later." +msgstr "Kunne ikke modtage brugerens profil. Dette er højst sandsynligt et midlertidigt server problem. Prøv igen senere." + +msgid "Could not retrieve the user's profile. This most likely means that the user does not exist; however, Yahoo! sometimes does fail to find a user's profile. If you know that the user exists, please try again later." +msgstr "Kunne ikke modtage brugerens profil. Dette betyder højst sandsynligt at brugeren ikke eksisterer; men Yahoo! tager nogen gange fejl og kan ikke finde en brugers profil. Hvis du ved at brugeren eksisterer, så prøv igen senere." msgid "The user's profile is empty." msgstr "Brugerens profil er tom." #, c-format msgid "%s declined your conference invitation to room \"%s\" because \"%s\"." -msgstr "" -"%s sagde nej til din konference-invitiation til rum \"%s\" pga. \"%s\"." +msgstr "%s sagde nej til din konference-invitiation til rum \"%s\" pga. \"%s\"." msgid "Invitation Rejected" msgstr "Invitation afvist" msgid "Failed to join chat" -msgstr "Kunne ikke deltage i chat" +msgstr "Kunne ikke tilslutte samtale" #. -6 msgid "Unknown room" @@ -9732,22 +9045,18 @@ msgid "Not available" msgstr "Ikke tilgængelig" -msgid "" -"Unknown error. You may need to logout and wait five minutes before being " -"able to rejoin a chatroom" -msgstr "" -"Ukendt fejl. Det kræver måske at du logger ud og venter fem minutter før du " -"kan joine chatrummet igen" +msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom" +msgstr "Ukendt fejl. Det kræver måske at du logger ud og venter fem minutter før du kan tilslutte samtalerummet igen" #, c-format msgid "You are now chatting in %s." -msgstr "Du er nu kendt som %s." +msgstr "Du samtaler nu i %s." msgid "Failed to join buddy in chat" -msgstr "Kunne ikke deltage med ven i chat" +msgstr "Kunne ikke tilslutte ven i samtale" msgid "Maybe they're not in a chat?" -msgstr "Måske er de ikke i en chat?" +msgstr "Måske er de ikke i en samtale?" msgid "Fetching the room list failed." msgstr "Hentning af rumliste fejlede." @@ -9775,16 +9084,12 @@ "Mistede forbindelsen til server\n" "%s" -msgid "" -"(There was an error converting this message.\t Check the 'Encoding' option " -"in the Account Editor)" -msgstr "" -"(Der opstod en fejl, da denne besked skulle konverteres.\t Tjek 'Tegnsæt'-" -"indstillingen i Konto-redigeringen)" +msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)" +msgstr "(Der opstod en fejl, da denne besked skulle konverteres.\t Tjek 'Tegnsæt'-indstillingen i Konto-redigeringen)" #, c-format msgid "Unable to send to chat %s,%s,%s" -msgstr "Kunne ikke sende til chat %s,%s,%s" +msgstr "Kunne ikke sende til samtale %s,%s,%s" msgid "Hidden or not logged-in" msgstr "Skjult eller ikke logget ind" @@ -9825,33 +9130,19 @@ msgstr "topic <instans>: Sæt instans der skal bruges på denne class" msgid "sub <class> <instance> <recipient>: Join a new chat" -msgstr "" -"sub <class> <instans> <modtager>: Deltag i en ny chat" - -msgid "" -"zi <instance>: Send a message to <message,instance,*>" +msgstr "sub <class> <instans> <modtager>: Tilslut en ny samtale" + +msgid "zi <instance>: Send a message to <message,instance,*>" msgstr "zi <instans>: Send en besked til <besked,instans,*>" -msgid "" -"zci <class> <instance>: Send a message to <class," -"instance,*>" -msgstr "" -"zci <klasse> <instans>: Send en besked til <klasse," -"instans,*>" - -msgid "" -"zcir <class> <instance> <recipient>: Send a message to <" -"class,instance,recipient>" -msgstr "" -"zcir <klasse> <instans> <modtager>: Send en besked til <" -"klasse,instans,modtager>" - -msgid "" -"zir <instance> <recipient>: Send a message to <MESSAGE," -"instance,recipient>" -msgstr "" -"zir <instans> <modtager>: Send en besked til <MESSAGE," -"instans,modtager>" +msgid "zci <class> <instance>: Send a message to <class,instance,*>" +msgstr "zci <klasse> <instans>: Send en besked til <klasse,instans,*>" + +msgid "zcir <class> <instance> <recipient>: Send a message to <class,instance,recipient>" +msgstr "zcir <klasse> <instans> <modtager>: Send en besked til <klasse,instans,modtager>" + +msgid "zir <instance> <recipient>: Send a message to <MESSAGE,instance,recipient>" +msgstr "zir <instans> <modtager>: Send en besked til <MESSAGE,instans,modtager>" msgid "zc <class>: Send a message to <class,PERSONAL,*>" msgstr "zc <klasse>: Send en besked til <klasse,PERSONAL,*>" @@ -9909,15 +9200,15 @@ #, c-format msgid "Unable to parse response from HTTP proxy: %s\n" -msgstr "Kunne ikke fortolke svar fra HTTP-mellemvært: %s\n" +msgstr "Kunne ikke fortolke svar fra HTTP-proxy: %s\n" #, c-format msgid "HTTP proxy connection error %d" -msgstr "HTTP-mellemvært forbindelsesfejl %d" +msgstr "HTTP-proxy forbindelsesfejl %d" #, c-format msgid "Access denied: HTTP proxy server forbids port %d tunneling." -msgstr "Adgang nægtet: HTTP-mellemværtsserver tillader ikke port %d tunnel." +msgstr "Adgang nægtet: HTTP-proxyserver tillader ikke port %d tunnel." #, c-format msgid "Error resolving %s" @@ -9928,7 +9219,7 @@ #, c-format msgid "Requesting %s's attention..." -msgstr "Påkræver %s's opmærksomhed..." +msgstr "Anmoder om %s's opmærksomhed..." #, c-format msgid "%s has requested your attention!" @@ -9967,15 +9258,15 @@ "%s has invited %s to the chat room %s:\n" "%s" msgstr "" -"%s har inviteret %s til chatrummet %s:\n" +"%s har inviteret %s til samtalerummet %s:\n" "%s" #, c-format msgid "%s has invited %s to the chat room %s\n" -msgstr "%s har inviteret %s til chatrummet %s\n" +msgstr "%s har inviteret %s til samtalerummet %s\n" msgid "Accept chat invitation?" -msgstr "Accepter chat invitation?" +msgstr "Accepter samtaleinvitation?" #. Shortcut msgid "Shortcut" @@ -9989,10 +9280,10 @@ msgstr "Gemt billede" msgid "Stored Image. (that'll have to do for now)" -msgstr "Gemt billede. (det må udgøre det indtil videre)" +msgstr "Gemt billede. (det må gøre det indtil videre)" msgid "SSL Connection Failed" -msgstr "SSL-forbindelse mislykkedes" +msgstr "SSL-forbindelse fejlede" msgid "SSL Handshake Failed" msgstr "SSL-håndtryk fejlede" @@ -10061,12 +9352,8 @@ msgstr "Fejl ved læsning af %s" #, c-format -msgid "" -"An error was encountered reading your %s. They have not been loaded, and " -"the old file has been renamed to %s~." -msgstr "" -"En fejl opstod ved læsning af din %s. De er ikke blevet indlæst, og den " -"gamle fil er blevet omdøbt til %s~." +msgid "An error was encountered reading your %s. They have not been loaded, and the old file has been renamed to %s~." +msgstr "En fejl opstod ved læsning af din %s. De er ikke blevet indlæst, og den gamle fil er blevet omdøbt til %s~." msgid "Calculating..." msgstr "Udregner..." @@ -10123,12 +9410,8 @@ msgstr "Fejl ved læsning fra %s: svar for langt (%d bytes grænse)" #, c-format -msgid "" -"Unable to allocate enough memory to hold the contents from %s. The web " -"server may be trying something malicious." -msgstr "" -"Ikke i stand til at allokere nok hukommelse til at holde indholdet fra %s. " -"Webserveren prøver måske noget ondskabsfuldt." +msgid "Unable to allocate enough memory to hold the contents from %s. The web server may be trying something malicious." +msgstr "Ikke i stand til at allokere nok hukommelse til at holde indholdet fra %s. Internetserveren prøver måske noget ondskabsfuldt." #, c-format msgid "Error reading from %s: %s" @@ -10158,7 +9441,7 @@ #. 10054 #, c-format msgid "Remote host closed connection." -msgstr "Fjernbrugeren har lukket forbindelsen." +msgstr "Fjernværten har lukket forbindelsen." #. 10060 #, c-format @@ -10168,7 +9451,7 @@ #. 10061 #, c-format msgid "Connection refused." -msgstr "Forbindelse afslået." +msgstr "Forbindelse afvist." #. 10048 #, c-format @@ -10179,10 +9462,10 @@ msgstr "Internet beskeder" msgid "Pidgin Internet Messenger" -msgstr "Pidgin Internet Kvikbesked" +msgstr "Pidgin Internet Besked" msgid "Send instant messages over multiple protocols" -msgstr "Send kvik-beskeder over flere protokoller" +msgstr "Send kvikbeskeder over flere protokoller" msgid "Orientation" msgstr "Placering" @@ -10215,7 +9498,7 @@ #. Buddy icon msgid "Use this buddy _icon for this account:" -msgstr "Brug dette venne_ikon for denne konto:" +msgstr "Brug dette venne_ikon til denne konto:" #. Build the protocol options frame. #, c-format @@ -10223,13 +9506,13 @@ msgstr "%s indstillinger" msgid "Use GNOME Proxy Settings" -msgstr "Brug GNOME-mellemværts indstillinger" +msgstr "Brug GNOME-proxy indstillinger" msgid "Use Global Proxy Settings" -msgstr "Brug globale mellemværts indstillinger" +msgstr "Brug globale proxy-indstillinger" msgid "No Proxy" -msgstr "Ingen mellemvært" +msgstr "Ingen proxy" msgid "HTTP" msgstr "HTTP" @@ -10256,10 +9539,10 @@ msgstr "du kan se sommerfuglene parre sig" msgid "Proxy Options" -msgstr "Indstillinger for mellemvært" +msgstr "Indstillinger for proxy" msgid "Proxy _type:" -msgstr "Mellemværts_type:" +msgstr "Proxy_type:" msgid "_Host:" msgstr "_Værtsnavn:" @@ -10298,39 +9581,24 @@ msgid "" "Welcome to %s!\n" "\n" -"You have no IM accounts configured. To start connecting with %s press the " -"Add... button below and configure your first account. If you want %s " -"to connect to multiple IM accounts, press Add... again to configure " -"them all.\n" +"You have no IM accounts configured. To start connecting with %s press the Add... button below and configure your first account. If you want %s to connect to multiple IM accounts, press Add... again to configure them all.\n" "\n" -"You can come back to this window to add, edit, or remove accounts from " -"Accounts->Manage Accounts in the Buddy List window" +"You can come back to this window to add, edit, or remove accounts from Accounts->Manage Accounts in the Buddy List window" msgstr "" "Velkommen til %s!\n" "\n" -"Du har ingen kvikbesked-konti konfigureret. For at komme i gang med at " -"forbinde med %s tryk Tilføj...-knappen nedenfor og konfigurer din " -"første konto. Hvis du vil have %s til at forbinde til flere kvikbesked-" -"konti, tryk Tilføj... igen for at konfigurer dem alle.\n" +"Du har ingen besked-konti konfigureret. For at komme i gang med at forbinde med %s tryk Tilføj...-knappen nedenfor og konfigurér din første konto. Hvis du vil have %s til at forbinde til flere besked-konti, tryk Tilføj... igen for at konfigurere dem alle.\n" "\n" -"Du kan vende tilbage til dette vindue for at tilføje, redigere eller fjerne " -"konti fra Konti->Kontihåndtering i venneliste-vinduet" +"Du kan vende tilbage til dette vindue for at tilføje, redigere eller fjerne konti fra Konti->Kontihåndtering i venneliste-vinduet" #, c-format msgid "You have %d contact named %s. Would you like to merge them?" -msgid_plural "" -"You currently have %d contacts named %s. Would you like to merge them?" +msgid_plural "You currently have %d contacts named %s. Would you like to merge them?" msgstr[0] "Du har %d kontakt navngivet %s. Vil du slå dem sammen?" msgstr[1] "Du har %d kontakter navngivet %s. Vil du slå dem sammen?" -msgid "" -"Merging these contacts will cause them to share a single entry on the buddy " -"list and use a single conversation window. You can separate them again by " -"choosing 'Expand' from the contact's context menu" -msgstr "" -"Slås disse kontakter sammen, vil de dele et enkelt element på vennelisten, " -"og bruge et enkelt samtalevindue. Du kan adskille dem igen, ved at vælge " -"\"Udvid\" fra i kontekstmenuen for kontakten" +msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu" +msgstr "Slås disse kontakter sammen, vil de dele et enkelt element på vennelisten, og bruge et enkelt samtalevindue. Du kan adskille dem igen, ved at vælge \"Udvid\" i kontekstmenuen for kontakten" msgid "Please update the necessary fields." msgstr "Opdatér de nødvendige felter." @@ -10338,11 +9606,8 @@ msgid "Room _List" msgstr "Rum_liste" -msgid "" -"Please enter the appropriate information about the chat you would like to " -"join.\n" -msgstr "" -"Indtast den nødvendige information om den chat du gerne vil deltage i.\n" +msgid "Please enter the appropriate information about the chat you would like to join.\n" +msgstr "Indtast den nødvendige information om den samtale du gerne vil tilslutte.\n" msgid "_Account:" msgstr "_Konto:" @@ -10372,7 +9637,7 @@ msgstr "Vis _log" msgid "Hide when offline" -msgstr "Skjul når offline" +msgstr "Skjul når afkoblet" msgid "_Alias..." msgstr "_Alias..." @@ -10381,7 +9646,7 @@ msgstr "_Fjern" msgid "Set Custom Icon" -msgstr "Sæt tilpasset ikon" +msgstr "Indstil tilpasset ikon" msgid "Remove Custom Icon" msgstr "Fjern tilpasset ikon" @@ -10390,7 +9655,7 @@ msgstr "Tilføj _ven..." msgid "Add C_hat..." -msgstr "Tilføj _chat..." +msgstr "Tilføj _samtale..." msgid "_Delete Group" msgstr "_Slet gruppe" @@ -10400,10 +9665,10 @@ #. join button msgid "_Join" -msgstr "_Deltag" +msgstr "_Tilslut" msgid "Auto-Join" -msgstr "Auto-Deltag" +msgstr "Auto-tilslut" msgid "Persistent" msgstr "Vedvarende" @@ -10420,11 +9685,8 @@ msgid "/Tools/Mute Sounds" msgstr "/Værktøjer/Slå lyde fra" -msgid "" -"You are not currently signed on with an account that can add that buddy." -msgstr "" -"Du er på nuværende tidspunkt ikke logget på nogen konti som kan tilføje en " -"ven." +msgid "You are not currently signed on with an account that can add that buddy." +msgstr "Du er på nuværende tidspunkt ikke logget på nogen konti som kan tilføje denne ven." #. I don't believe this can happen currently, I think #. * everything that calls this function checks for one of the @@ -10440,7 +9702,7 @@ msgstr "/Venner/Ny _besked..." msgid "/Buddies/Join a _Chat..." -msgstr "/Venner/_Deltag i chat..." +msgstr "/Venner/_Tilslut en samtale..." msgid "/Buddies/Get User _Info..." msgstr "/Venner/_Hent brugeroplysninger..." @@ -10452,19 +9714,19 @@ msgstr "/Venner/_Vis" msgid "/Buddies/Show/_Offline Buddies" -msgstr "/Venner/Vis/_offline venner" +msgstr "/Venner/Vis/_Afkoblede venner" msgid "/Buddies/Show/_Empty Groups" -msgstr "/Venner/Vis/_tomme grupper" +msgstr "/Venner/Vis/_Tomme grupper" msgid "/Buddies/Show/Buddy _Details" -msgstr "/Venner/Vis/venne_detaljer" +msgstr "/Venner/Vis/Venne_detaljer" msgid "/Buddies/Show/Idle _Times" -msgstr "/Venner/Vis/inaktiv _tider" +msgstr "/Venner/Vis/Inaktiv _tider" msgid "/Buddies/Show/_Protocol Icons" -msgstr "/Venner/Vis/_tomme grupper" +msgstr "/Venner/Vis/_Protokolikoner" msgid "/Buddies/_Sort Buddies" msgstr "/Venner/_Sortér venner" @@ -10473,7 +9735,7 @@ msgstr "/Venner/Tilføj _ven..." msgid "/Buddies/Add C_hat..." -msgstr "/Venner/Tilføj _chat..." +msgstr "/Venner/Tilføj _samtale..." msgid "/Buddies/Add _Group..." msgstr "/Venner/Tilføj _gruppe..." @@ -10508,7 +9770,7 @@ msgstr "/Værktøjer/_Privatliv" msgid "/Tools/Smile_y" -msgstr "/Værktøjer/Smile_ys" +msgstr "/Værktøjer/Smile_y" msgid "/Tools/_File Transfers" msgstr "/Værktøjer/_Filoverførsler" @@ -10527,7 +9789,7 @@ msgstr "/_Hjælp" msgid "/Help/Online _Help" -msgstr "/Hjælp/Online _hjælp" +msgstr "/Hjælp/Tilkoblet _hjælp" msgid "/Help/_Debug Window" msgstr "/Hjælp/Vis _fejlsøgningsvindue" @@ -10556,7 +9818,7 @@ "Emne: %s" msgid "(no topic set)" -msgstr "(Intet emne sat)" +msgstr "(Intet emne angivet)" msgid "Buddy Alias" msgstr "Vennealias" @@ -10595,7 +9857,7 @@ msgstr "/Venner/Ny besked..." msgid "/Buddies/Join a Chat..." -msgstr "/Venner/Deltag i chat..." +msgstr "/Venner/Tilslut en samtale..." msgid "/Buddies/Get User Info..." msgstr "/Venner/Hent brugeroplysninger..." @@ -10604,7 +9866,7 @@ msgstr "/Venner/Tilføj ven..." msgid "/Buddies/Add Chat..." -msgstr "/Venner/Tilføj chat..." +msgstr "/Venner/Tilføj samtale..." msgid "/Buddies/Add Group..." msgstr "/Venner/Tilføj gruppe..." @@ -10649,12 +9911,9 @@ #, c-format msgid "%d account was disabled because you signed on from another location:" -msgid_plural "" -"%d accounts were disabled because you signed on from another location:" -msgstr[0] "" -"%d-konto blev deaktiveret, fordi du loggede ind fra en anden lokation:" -msgstr[1] "" -"%d-kontiene blev deaktiveret, fordi du loggede ind fra en anden lokation:" +msgid_plural "%d accounts were disabled because you signed on from another location:" +msgstr[0] "%d-konto blev deaktiveret, fordi du loggede ind fra en anden lokation:" +msgstr[1] "%d-kontiene blev deaktiveret, fordi du loggede ind fra en anden lokation:" msgid "Username:" msgstr "Brugernavn:" @@ -10673,21 +9932,17 @@ msgid "" "Welcome to %s!\n" "\n" -"You have no accounts enabled. Enable your IM accounts from the Accounts window at Accounts->Manage Accounts. Once you enable accounts, " -"you'll be able to sign on, set your status, and talk to your friends." +"You have no accounts enabled. Enable your IM accounts from the Accounts window at Accounts->Manage Accounts. Once you enable accounts, you'll be able to sign on, set your status, and talk to your friends." msgstr "" "Velkommen til %s!\n" "\n" -"Du har ingen aktive konti. Aktivér dine kvikbesked-konti fra Konti-" -"vinduet Konti->Kontihåndtering. Når du har aktiveret konti, vil du " -"være i stand til at logge på, sætte din status og tale med dine venner." +"Du har ingen aktive konti. Aktivér dine besked-konti fra Konti-vinduet Konti->Kontihåndtering. Når du har aktiveret konti, vil du være i stand til at logge på, sætte din status og tale med dine venner." #. set the Show Offline Buddies option. must be done #. * after the treeview or faceprint gets mad. -Robot101 #. msgid "/Buddies/Show/Offline Buddies" -msgstr "/Venner/Vis/Offline venner" +msgstr "/Venner/Vis/Afkoblede venner" msgid "/Buddies/Show/Empty Groups" msgstr "/Venner/Vis/Tomme grupper" @@ -10714,30 +9969,22 @@ msgstr "Tilføj ven til _gruppe:" msgid "This protocol does not support chat rooms." -msgstr "Denne protokol understøtter ikke chatrum." - -msgid "" -"You are not currently signed on with any protocols that have the ability to " -"chat." -msgstr "" -"Du er på nuværende tidspunkt ikke logget på nogen protokoller som har evnen " -"til at chatte." - -msgid "" -"Please enter an alias, and the appropriate information about the chat you " -"would like to add to your buddy list.\n" -msgstr "" -"Indtast et alias og den nødvendige information om den chat du vil tilføje " -"til din venneliste.\n" +msgstr "Denne protokol understøtter ikke samtalerum." + +msgid "You are not currently signed on with any protocols that have the ability to chat." +msgstr "Du er på nuværende tidspunkt ikke logget på nogen protokoller som har evnen til at samtale." + +msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n" +msgstr "Indtast et alias og den nødvendige information om den samtale du vil tilføje til din venneliste.\n" msgid "A_lias:" msgstr "A_lias:" msgid "Auto_join when account becomes online." -msgstr "_Tilslut automatisk når en konto kommer online." +msgstr "_Tilslut automatisk når en konto tilkobles." msgid "_Remain in chat after window is closed." -msgstr "_Forbliv i chat efter vinduet er lukket." +msgstr "_Forbliv i samtale efter vinduet er lukket." msgid "Please enter the name of the group to be added." msgstr "Indtast navnet på gruppen der skal tilføjes." @@ -10774,24 +10021,17 @@ msgstr "Ukendt kommando." msgid "That buddy is not on the same protocol as this chat." -msgstr "Vennen er ikke på den samme protokol som denne chat." - -msgid "" -"You are not currently signed on with an account that can invite that buddy." -msgstr "" -"Du er på nuværende tidspunkt ikke logget på nogen konti som kan invitere den " -"ven." +msgstr "Vennen er ikke på den samme protokol som denne samtale." + +msgid "You are not currently signed on with an account that can invite that buddy." +msgstr "Du er på nuværende tidspunkt ikke logget på nogen konti som kan invitere den ven." msgid "Invite Buddy Into Chat Room" -msgstr "Invitér ven med i chat-rum" +msgstr "Invitér ven med i samtalerum" #. Put our happy label in it. -msgid "" -"Please enter the name of the user you wish to invite, along with an optional " -"invite message." -msgstr "" -"Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-" -"besked." +msgid "Please enter the name of the user you wish to invite, along with an optional invite message." +msgstr "Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-besked." msgid "_Buddy:" msgstr "_Ven:" @@ -10840,10 +10080,10 @@ msgstr "Gem ikon som..." msgid "Set Custom Icon..." -msgstr "Sæt tilpasset ikon..." +msgstr "Indstil tilpasset ikon..." msgid "Change Size" -msgstr "Skift størrelse" +msgstr "Ændr størrelse" msgid "Show All" msgstr "Vis alle" @@ -10889,7 +10129,7 @@ msgstr "/Samtale/_Blokér..." msgid "/Conversation/_Unblock..." -msgstr "/Samtale/_Afblokering..." +msgstr "/Samtale/_Frigiv..." msgid "/Conversation/_Add..." msgstr "/Samtale/_Tilføj..." @@ -10908,25 +10148,25 @@ #. Options msgid "/_Options" -msgstr "/_Valgmuligheder" +msgstr "/_Indstillinger" msgid "/Options/Enable _Logging" -msgstr "/Valgmuligheder/Aktiver _logning" +msgstr "/Indstillinger/Aktivér _logning" msgid "/Options/Enable _Sounds" -msgstr "/Valgmuligheder/Brug _lyde" +msgstr "/Indstillinger/Brug _lyde" msgid "/Options/Show Formatting _Toolbars" -msgstr "/Valgmuligheder/Vis _formatteringslinjer" +msgstr "/Indstillinger/Vis _formatteringslinjer" msgid "/Options/Show Ti_mestamps" -msgstr "/Valgmuligheder/Vis _tidsstempler" +msgstr "/Indstillinger/Vis _tidsstempler" msgid "/Conversation/More" msgstr "/Samtale/Mere" msgid "/Options" -msgstr "/Valgmuligheder" +msgstr "/Indstillinger" #. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time #. * the 'Conversation' menu pops up. @@ -10958,7 +10198,7 @@ msgstr "/Samtale/Blokér..." msgid "/Conversation/Unblock..." -msgstr "/Samtale/Afblokering..." +msgstr "/Samtale/Frigivelse..." msgid "/Conversation/Add..." msgstr "/Samtale/Tilføj..." @@ -10967,22 +10207,22 @@ msgstr "/Samtale/Fjern..." msgid "/Conversation/Insert Link..." -msgstr "/Samtale/Indsæt link..." +msgstr "/Samtale/Indsæt henvisning..." msgid "/Conversation/Insert Image..." msgstr "/Samtale/Indsæt billede..." msgid "/Options/Enable Logging" -msgstr "/Valgmuligheder/Aktiver logning" +msgstr "/Indstillinger/Aktivér logning" msgid "/Options/Enable Sounds" -msgstr "/Valgmuligheder/Brug lyde" +msgstr "/Indstillinger/Brug lyde" msgid "/Options/Show Formatting Toolbars" -msgstr "/Valgmuligheder/Vis formatteringslinjer" +msgstr "/Indstillinger/Vis formatteringslinjer" msgid "/Options/Show Timestamps" -msgstr "/Valgmuligheder/Vis tidsstempler" +msgstr "/Indstillinger/Vis tidsstempler" msgid "User is typing..." msgstr "Bruger skriver..." @@ -11004,7 +10244,7 @@ #. Setup the label telling how many people are in the room. msgid "0 people in room" -msgstr "Ingen chattere i rummet" +msgstr "Ingen samtalere i rummet" #, c-format msgid "%d person in room" @@ -11055,7 +10295,7 @@ msgstr "Sidst oprettede vindue" msgid "Separate IM and Chat windows" -msgstr "Seperate samtale- og chatvinduer" +msgstr "Seperate besked- og samtalevinduer" msgid "New window" msgstr "Nyt vindue" @@ -11088,7 +10328,7 @@ msgstr "Filter" msgid "Right click for more options." -msgstr "Højreklik for flere muligheder." +msgstr "Højreklik for flere indstillinger." msgid "Level " msgstr "Niveau " @@ -11125,7 +10365,7 @@ msgstr "support" msgid "webmaster" -msgstr "webmaster" +msgstr "internetudvikler" msgid "Senior Contributor/QA" msgstr "Seniorbidrager/QA" @@ -11162,7 +10402,7 @@ msgstr "Arabisk" msgid "Belarusian Latin" -msgstr "Belarusian Latin" +msgstr "Hviderussisk latinsk" msgid "Bulgarian" msgstr "Bulgarsk" @@ -11261,10 +10501,10 @@ msgstr "Georgiske Ubuntu-oversættere" msgid "Kannada" -msgstr "Kannada" +msgstr "Kanada" msgid "Kannada Translation team" -msgstr "Kannada oversættelseshold" +msgstr "Kanadiske oversættelseshold" msgid "Korean" msgstr "Koreansk" @@ -11285,7 +10525,7 @@ msgstr "Mongolsk" msgid "Bokmål Norwegian" -msgstr "Bokmål" +msgstr "Norsk" msgid "Nepali" msgstr "Nepali" @@ -11363,7 +10603,7 @@ msgstr "Simpelt kinesisk" msgid "Hong Kong Chinese" -msgstr "Hong Kong Chinese" +msgstr "Kinesisk" msgid "Traditional Chinese" msgstr "Traditionelt kinesisk" @@ -11376,45 +10616,19 @@ msgstr "Om %s" #, c-format -msgid "" -"%s is a graphical modular messaging client based on libpurple which is " -"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, " -"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and " -"QQ all at once. It is written using GTK+.

You may modify and " -"redistribute the program under the terms of the GPL (version 2 or later). A " -"copy of the GPL is contained in the 'COPYING' file distributed with %s. %s " -"is copyrighted by its contributors. See the 'COPYRIGHT' file for the " -"complete list of contributors. We provide no warranty for this program." -"

" -msgstr "" -"%s er en grafisk modulær kvikbeskeds-klient baseret på libpurple, der " -"understøtter AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell " -"GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu og QQ på " -"samme tid. Det er skrevet i GTK+.

Du må modificere og redistribuere " -"programmet under de betingelser givet af GPL (version 2 eller senere). En " -"kopi af GPL er indeholdt i 'COPYING' filen som blev distribueret med %s. %s " -"er ophavsret af dens bidragsydere. Se 'COPYRIGHT' filen for den komplette " -"liste af bidragsydere. Vi giver ingen garanti for dette program.

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

" -msgstr "" -"OSS: http://developer.pidgin.im/wiki/FAQ

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

" -msgstr "" -"Hjælp via e-post: support@pidgin.im

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

" +msgid "%s is a graphical modular messaging client based on libpurple which is capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ all at once. It is written using GTK+.

You may modify and redistribute the program under the terms of the GPL (version 2 or later). A copy of the GPL is contained in the 'COPYING' file distributed with %s. %s is copyrighted by its contributors. See the 'COPYRIGHT' file for the complete list of contributors. We provide no warranty for this program.

" +msgstr "%s er en grafisk modulær beskedklient baseret på libpurple, der understøtter AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu og QQ på samme tid. Det er skrevet i GTK+.

Du må modificere og redistribuere programmet under de betingelser givet af GPL (version 2 eller senere). En kopi af GPL er indeholdt i 'COPYING' filen som blev distribueret med %s. %s er ophavsret af dens bidragydere. Se 'COPYRIGHT' filen for den komplette liste af bidragydere. Vi giver ingen garanti for dette program.

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

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

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

" +msgstr "Hjælp via e-post: support@pidgin.im

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

" msgstr "IRC-kanal: #pidgin on irc.freenode.net

" #, c-format @@ -11425,13 +10639,13 @@ msgstr "Nuværende udviklere" msgid "Crazy Patch Writers" -msgstr "Vilde patch-skrivere" +msgstr "Vilde fejlrettere" msgid "Retired Developers" msgstr "Tidligere udviklere" msgid "Retired Crazy Patch Writers" -msgstr "Tidligere Vilde patch-skrivere" +msgstr "Tidligere Vilde fejlrettere" msgid "Current Translators" msgstr "Nuværende oversættere" @@ -11451,12 +10665,8 @@ msgid "Get User Info" msgstr "Hent brugeroplysninger" -msgid "" -"Please enter the username or alias of the person whose info you would like " -"to view." -msgstr "" -"Indtast brugernavnet eller alias på den person, hvis oplysninger du gerne " -"vil se." +msgid "Please enter the username or alias of the person whose info you would like to view." +msgstr "Indtast brugernavnet eller alias på den person, hvis oplysninger du gerne vil se." msgid "View User Log" msgstr "Vis bruger log" @@ -11475,24 +10685,16 @@ msgstr "Lav alias for ven" msgid "Alias Chat" -msgstr "Alias chat" +msgstr "Samtalealias" msgid "Enter an alias for this chat." -msgstr "Indtast et alias for denne chat." - -#, c-format -msgid "" -"You are about to remove the contact containing %s and %d other buddy from " -"your buddy list. Do you want to continue?" -msgid_plural "" -"You are about to remove the contact containing %s and %d other buddies from " -"your buddy list. Do you want to continue?" -msgstr[0] "" -"Du skal til at fjerne kontakten indeholdende %s og %d anden ven fra din " -"venneliste. Vil du fortsætte?" -msgstr[1] "" -"Du skal til at fjerne kontakten indeholdende %s og %d andre venner fra din " -"venneliste. Vil du fortsætte?" +msgstr "Indtast et alias for denne samtale." + +#, c-format +msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list. Do you want to continue?" +msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list. Do you want to continue?" +msgstr[0] "Du skal til at fjerne kontakten indeholdende %s og %d anden ven fra din venneliste. Vil du fortsætte?" +msgstr[1] "Du skal til at fjerne kontakten indeholdende %s og %d andre venner fra din venneliste. Vil du fortsætte?" msgid "Remove Contact" msgstr "Fjern kontakt" @@ -11501,9 +10703,7 @@ msgstr "_Fjern kontakt" #, c-format -msgid "" -"You are about to merge the group called %s into the group called %s. Do you " -"want to continue?" +msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?" msgstr "Du er ved at slå gruppen %s sammen med gruppen %s. Vil du fortsætte?" msgid "Merge Groups" @@ -11513,12 +10713,8 @@ msgstr "_Slå grupper sammen" #, c-format -msgid "" -"You are about to remove the group %s and all its members from your buddy " -"list. Do you want to continue?" -msgstr "" -"Du skal til at fjerne gruppen %s og alle den indeholder fra din venneliste. " -"Vil du fortsætte?" +msgid "You are about to remove the group %s and all its members from your buddy list. Do you want to continue?" +msgstr "Du skal til at fjerne gruppen %s og alle den indeholder fra din venneliste. Vil du fortsætte?" msgid "Remove Group" msgstr "Fjern gruppe" @@ -11527,8 +10723,7 @@ msgstr "_Fjern gruppe" #, c-format -msgid "" -"You are about to remove %s from your buddy list. Do you want to continue?" +msgid "You are about to remove %s from your buddy list. Do you want to continue?" msgstr "Du skal til at slette %s fra din venneliste. Vil du fortsætte?" msgid "Remove Buddy" @@ -11538,22 +10733,20 @@ msgstr "_Fjern ven" #, c-format -msgid "" -"You are about to remove the chat %s from your buddy list. Do you want to " -"continue?" -msgstr "Du skal til at fjerne chatten %s fra din venneliste. Vil du fortsætte?" +msgid "You are about to remove the chat %s from your buddy list. Do you want to continue?" +msgstr "Du skal til at fjerne samtalen %s fra din venneliste. Vil du fortsætte?" msgid "Remove Chat" -msgstr "Fjern chat" +msgstr "Fjern samtale" msgid "_Remove Chat" -msgstr "_Fjern chat" +msgstr "_Fjern samtale" msgid "Right-click for more unread messages...\n" msgstr "Højreklik for flere ulæste beskeder...\n" msgid "_Change Status" -msgstr "_Skift status" +msgstr "_Ændr status" msgid "Show Buddy _List" msgstr "Vis venne_liste" @@ -11655,57 +10848,56 @@ msgstr "_Nulstil formattering" msgid "Disable _smileys in selected text" -msgstr "Deaktivér _smileys i valgt tekst" +msgstr "Deaktivér _smileyer i valgt tekst" msgid "Hyperlink color" -msgstr "Link farve" +msgstr "Farve på henvisning" msgid "Color to draw hyperlinks." -msgstr "Farve som hyperlinks skal være." +msgstr "Farve på henvisninger." msgid "Hyperlink visited color" -msgstr "Link farve ved besøgt link" +msgstr "Farve på besøgt henvisning" msgid "Color to draw hyperlinks after it has been visited (or activated)." -msgstr "" -"Farve som hyperlinks skal være efter de er blevet besøgt (eller aktiveret)." +msgstr "Farve på henvisning efter at de er blevet besøgt (eller aktiveret)." # virkelig dårlig oversættelse! msgid "Hyperlink prelight color" -msgstr "Hyperlink præ-lys farve" +msgstr "Farve på ubrugte henvisninger" msgid "Color to draw hyperlinks when mouse is over them." -msgstr "Farve som hyperlinks skal være når musen er over dem." +msgstr "Farve på henvisning når musen er over dem." msgid "Sent Message Name Color" msgstr "Farve på sendte beskeder" msgid "Color to draw the name of a message you sent." -msgstr "Farvelæg navnet på den besked du sendte." +msgstr "Farve som bruges på navnet til den besked du sendte." msgid "Received Message Name Color" -msgstr "Farve på medtagede beskeder" +msgstr "Farve som bruges på navnet til modtagne beskeder" msgid "Color to draw the name of a message you received." -msgstr "Farvelæg navnet på den besked du modtog." +msgstr "Farve som bruges på navnet til den besked du modtog." msgid "\"Attention\" Name Color" -msgstr "\"Opmærksomhed\"-farvenavn" +msgstr "\"Opmærksomhed\" farvenavn" msgid "Color to draw the name of a message you received containing your name." -msgstr "Farvelæg navnet på den besked du modtog indholdende dit navn." +msgstr "Farve som bruges på navnet til den besked du modtog indeholdende dit navn." msgid "Action Message Name Color" -msgstr "Farvenavn for handlingsbesked" +msgstr "Farve som bruges på navnet til handlingsbesked" msgid "Color to draw the name of an action message." -msgstr "Farvelæg navnet på en handlingsbesked." +msgstr "Farve som bruges på navnet til en handlingsbesked." msgid "Action Message Name Color for Whispered Message" -msgstr "Farvenavn for handlingsbesked ved hvisket besked" +msgstr "Farve som bruges på navnet til hvisket handlingsbesked" msgid "Whisper Message Name Color" -msgstr "Farvenavn for hviskebesked" +msgstr "Farve som bruges på navnet til hviskebesked" msgid "Typing notification color" msgstr "Farve på påmindelse af indtastning" @@ -11723,13 +10915,13 @@ msgstr "Aktivér påmindelse om indtastning" msgid "_Copy Email Address" -msgstr "_Kopier email adresse" +msgstr "_Kopier e-postadresse" msgid "_Open Link in Browser" -msgstr "Åbn link i br_owser" +msgstr "Åbn henvisning i br_owser" msgid "_Copy Link Location" -msgstr "_Kopiér link adresse" +msgstr "_Kopiér henvisningsadresse" msgid "" "Unrecognized file type\n" @@ -11778,7 +10970,7 @@ #, c-format msgid "_Add Custom Smiley..." -msgstr "_Tilføj brugerdefinerede smileys..." +msgstr "_Tilføj tilpasset smiley..." msgid "Select Font" msgstr "Vælg skrifttype" @@ -11795,18 +10987,14 @@ msgid "_Description" msgstr "_Beskrivelse" -msgid "" -"Please enter the URL and description of the link that you want to insert. " -"The description is optional." -msgstr "" -"Indtast URL'en og beskrivelsen på det link du vil indsætte. Beskrivelsen er " -"ikke krævet." +msgid "Please enter the URL and description of the link that you want to insert. The description is optional." +msgstr "Indtast adressen og beskrivelsen på den henvisning du vil indsætte. Beskrivelsen er ikke krævet." msgid "Please enter the URL of the link that you want to insert." -msgstr "Indtast adressen på henvisningen du vil indsætet." +msgstr "Indtast adressen på henvisningen du vil indsætte." msgid "Insert Link" -msgstr "Indsæt link" +msgstr "Indsæt henvisning" msgid "_Insert" msgstr "_Indsæt" @@ -11823,24 +11011,23 @@ "This smiley is disabled because a custom smiley exists for this shortcut:\n" " %s" msgstr "" -"Denne smiley er deaktiveret, fordi tilpasset smiley findes for denne " -"genvej:\n" +"Denne smiley er deaktiveret, fordi en tilpasset smiley findes for denne genvej:\n" "%s" msgid "Smile!" msgstr "Smil!" msgid "_Manage custom smileys" -msgstr "_Håndtér brugerdefinerede smileys" +msgstr "_Håndtér tilpassede smileyer" msgid "This theme has no available smileys." -msgstr "Dette tema har ingen tilgængelige smileys." +msgstr "Dette tema har ingen tilgængelige smileyer." msgid "_Font" msgstr "_Skrifttype" msgid "Group Items" -msgstr "Gruppér punkter" +msgstr "Gruppér elementer" msgid "Ungroup Items" msgstr "Afgruppér elementer" @@ -11855,7 +11042,7 @@ msgstr "Understregning" msgid "Strikethrough" -msgstr "Gennemstreget" +msgstr "Gennemstreg" msgid "Increase Font Size" msgstr "Forøg skriftstørrelse" @@ -11864,7 +11051,7 @@ msgstr "Formindsk skriftstørrelse" msgid "Font Face" -msgstr "Skriftsnit" +msgstr "Skrifttype-familie" msgid "Background Color" msgstr "Baggrundsfarve" @@ -11885,13 +11072,13 @@ msgstr "_Fed" msgid "_Italic" -msgstr "_Kursivt" +msgstr "_Kursiv" msgid "_Underline" -msgstr "_Understregning" +msgstr "_Understreg" msgid "Strikethrough" -msgstr "Gennemstreget" +msgstr "Gennemstreg" msgid "_Larger" msgstr "_Større" @@ -11906,7 +11093,7 @@ #. * need to update them when formatting changes. The above items don't need #. * no updating nor nothin' msgid "_Font face" -msgstr "_Skriftsnit" +msgstr "_Skrifttype-familie" msgid "Foreground _color" msgstr "_Forgrundsfarve" @@ -11918,42 +11105,31 @@ msgstr "Bi_llede" msgid "_Link" -msgstr "_Link" +msgstr "_Henvisning" msgid "_Horizontal rule" -msgstr "_Horisontal regel" +msgstr "_Vandret regel" msgid "_Smile!" msgstr "S_mil!" msgid "Log Deletion Failed" -msgstr "Sletning af log mislykkedes" +msgstr "Sletning af log fejlede" msgid "Check permissions and try again." msgstr "Kontrollér rettigheder og prøv igen." #, c-format -msgid "" -"Are you sure you want to permanently delete the log of the conversation with " -"%s which started at %s?" -msgstr "" -"Er du sikker på at du permanent vil slette loggen over samtaler med %s som " -"startede %s?" - -#, c-format -msgid "" -"Are you sure you want to permanently delete the log of the conversation in %" -"s which started at %s?" -msgstr "" -"Er du sikker på at du permanent vil slette loggen over samtalen i %s som er " -"startet %s?" - -#, c-format -msgid "" -"Are you sure you want to permanently delete the system log which started at %" -"s?" -msgstr "" -"Er du sikker på at du permanent vil slette systemloggen som er startet %s?" +msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?" +msgstr "Er du sikker på at du permanent vil slette loggen over samtaler med %s som startede %s?" + +#, c-format +msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?" +msgstr "Er du sikker på at du permanent vil slette loggen over samtalen i %s som er startet %s?" + +#, c-format +msgid "Are you sure you want to permanently delete the system log which started at %s?" +msgstr "Er du sikker på at du permanent vil slette systemloggen som er startet ved %s?" msgid "Delete Log?" msgstr "Slet log?" @@ -11996,15 +11172,15 @@ "%s %s\n" "Brug: %s [TILVALG]...\n" "\n" -" -c, --config=MAPPE brug MAPPE for opsætningsfiler\n" +" -c, --config=DIR brug DIR for opsætningsfiler\n" " -d, --debug udskriv fejlsøgningsbeskeder til stdout\n" " -h, --help vis denne hjælp og afslut\n" -" -m, --multiple tillad flere instanser\n" +" -m, --multiple tillad flere instanser\n" " -n, --nologin log ikke ind automatisk\n" " -l, --login[=NAVN] aktivér angivede konti (valgfrit argument NAVN\n" " angiver konti der skal benyttes, adskilt af kommaer.\n" -" Uden dette vil den første konto blive aktiveret.\n" -" --display=SKÆRM X-skærm der skal benyttes\n" +" Uden dette vil kun den første konto blive aktiveret.\n" +" --display=SKÆRM X-skærm der skal benyttes\n" " -v, --version vis nuværende version og afslut\n" #, c-format @@ -12028,12 +11204,12 @@ " -c, --config=MAPPE brug MAPPE for opsætningsfiler\n" " -d, --debug udskriv fejlsøgningsbeskeder til stdout\n" " -h, --help vis denne hjælp og afslut\n" -" -m, --multiple tillad flere instanser\n" +" -m, --multiple tillad flere instanser\n" " -n, --nologin log ikke ind automatisk\n" " -l, --login[=NAVN] aktivér angivede konti (valgfrit argument NAVN\n" " angiver konti der skal benyttes, adskilt af kommaer.\n" -" Uden dette vil den første konto blive aktiveret.\n" -" --display=SKÆRM X-skærm der skal benyttes\n" +" Uden dette vil kun den første konto blive aktiveret.\n" +" --display=SKÆRM X-skærm der skal benyttes\n" " -v, --version vis nuværende version og afslut\n" #, c-format @@ -12087,8 +11263,8 @@ #, c-format msgid "%d new email." msgid_plural "%d new emails." -msgstr[0] "%d ny breve." -msgstr[1] "%d nye breve." +msgstr[0] "%d ny e-breve." +msgstr[1] "%d nye e-breve." #, c-format msgid "The browser command \"%s\" is invalid." @@ -12101,11 +11277,8 @@ msgid "Error launching \"%s\": %s" msgstr "Fejl ved kørsel af \"%s\": %s" -msgid "" -"The 'Manual' browser command has been chosen, but no command has been set." -msgstr "" -"\"Manuel\" browser-kommandoen er blevet valgt, men ingen kommando er blevet " -"sat." +msgid "The 'Manual' browser command has been chosen, but no command has been set." +msgstr "\"Manuel\" browser-kommandoen er blevet valgt, men ingen kommando er blevet angivet." msgid "The following plugins will be unloaded." msgstr "De følgende moduler kunne ikke udlæses." @@ -12117,14 +11290,10 @@ msgstr "Udlæs udvidelsesmoduler" msgid "Could not unload plugin" -msgstr "Kunne ikke deaktivere udvidelsesmodul" - -msgid "" -"The plugin could not be unloaded now, but will be disabled at the next " -"startup." -msgstr "" -"Udvidelsesmodulet kunne ikke blive deaktiveret nu, men vil blive deaktiveret " -"ved den næste opstart." +msgstr "Kunne ikke udlæse udvidelsesmodul" + +msgid "The plugin could not be unloaded now, but will be disabled at the next startup." +msgstr "Udvidelsesmodulet kunne ikke blive udlæst nu, men vil blive slået fra ved den næste opstart." #, c-format msgid "" @@ -12132,16 +11301,16 @@ "Check the plugin website for an update." msgstr "" "Fejl: %s\n" -"Kontrollér udvidelsesmodul-websiden for en opdatering." +"Kontrollér udvidelsesmodul-netstedet for en opdatering." msgid "Author" -msgstr "Udvikler" +msgstr "Forfatter" msgid "Written by:" msgstr "Skrevet af:" msgid "Web site:" -msgstr "Websted:" +msgstr "Netsted:" msgid "Filename:" msgstr "Filnavn:" @@ -12223,7 +11392,7 @@ msgstr "_Gentages" msgid "Pounce Target" -msgstr "Overvågningsmål" +msgstr "Overvåg mål" msgid "Smiley theme failed to unpack." msgstr "Smiley-tema kunne ikke udpakkes." @@ -12231,12 +11400,8 @@ msgid "Install Theme" msgstr "Installér tema" -msgid "" -"Select a smiley theme that you would like to use from the list below. New " -"themes can be installed by dragging and dropping them onto the theme list." -msgstr "" -"Vælg et smiley-tema som du gerne vil bruge fra listen forneden. Nye temaer " -"kan installeres ved at træk-og-slippe dem ind i tema listen." +msgid "Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list." +msgstr "Vælg et smiley-tema som du gerne vil bruge fra listen forneden. Nye temaer kan installeres ved at træk-og-slippe dem ind i tema listen." msgid "Icon" msgstr "Ikon" @@ -12245,7 +11410,7 @@ msgstr "Tastaturgenveje" msgid "Cl_ose conversations with the Escape key" -msgstr "_Luk samtaler med Escape-tasten" +msgstr "_Afslut samtaler med Escape-tasten" msgid "System Tray Icon" msgstr "Statusområde ikon" @@ -12270,7 +11435,7 @@ msgstr "Faner" msgid "Show IMs and chats in _tabbed windows" -msgstr "Vis beskeder og chats i _fanebladsvinduer" +msgstr "Vis beskeder og samtaler i _fanebladsvinduer" msgid "Show close b_utton on tabs" msgstr "Vis _luk knapper på faneblade" @@ -12303,7 +11468,7 @@ msgstr "Vis _formatteringslinje på nye beskeder" msgid "Close IMs immediately when the tab is closed" -msgstr "Luk kvikbeskeder straks når fanebladet lukkes" +msgstr "Afslut beskeder straks når fanebladet lukkes" msgid "Show _detailed information" msgstr "Vis _detaljeret information" @@ -12344,18 +11509,14 @@ msgid "Default Formatting" msgstr "Standard formattering" -msgid "" -"This is how your outgoing message text will appear when you use protocols " -"that support formatting." -msgstr "" -"Sådan vil din udgående besked se ud når du bruger protokoller, der " -"understøtter formattering." +msgid "This is how your outgoing message text will appear when you use protocols that support formatting." +msgstr "Sådan vil din udgående besked se ud når du bruger protokoller, der understøtter formattering." msgid "Cannot start proxy configuration program." msgstr "Kan ikke starte proxy-konfigurationsprogram." msgid "Cannot start browser configuration program." -msgstr "Kan ikke starte konfigurationsprogram for browser." +msgstr "Kan ikke starte konfigurationsprogram til browser." msgid "ST_UN server:" msgstr "ST_UN server:" @@ -12397,7 +11558,7 @@ "Proxy & Browser preferences are configured\n" "in GNOME Preferences" msgstr "" -"Proxy & Browser indstillinger konfigureres\n" +"Proxy- og Browserindstillinger konfigureres\n" "i GNOME-indstillinger" msgid "Configure _Proxy" @@ -12410,11 +11571,11 @@ msgstr "Server" msgid "No proxy" -msgstr "Ingen mellemvært" +msgstr "Ingen proxy" #. This is a global option that affects SOCKS4 usage even with account-specific proxy settings msgid "Use remote DNS with SOCKS4 proxies" -msgstr "Benyt fjern-DNS med SOCKS4-mellemværter" +msgstr "Benyt fjern-DNS med SOCKS4-proxyer" msgid "_User:" msgstr "_Bruger:" @@ -12435,7 +11596,7 @@ msgstr "Konqueror" msgid "Desktop Default" -msgstr "Skrivebordsstandard" +msgstr "Standardskrivebord" msgid "GNOME Default" msgstr "GNOME standard" @@ -12462,7 +11623,7 @@ msgstr "_Browser:" msgid "_Open link in:" -msgstr "_Åbn link i:" +msgstr "_Åbn henvisning i:" msgid "Browser default" msgstr "Browser standard" @@ -12544,7 +11705,7 @@ msgstr "Lyde når samtale har _fokus" msgid "_Enable sounds:" -msgstr "_Aktivér lyde:" +msgstr "_Slå lyde til:" msgid "V_olume:" msgstr "L_ydstyrke:" @@ -12553,7 +11714,7 @@ msgstr "Afspil" msgid "_Browse..." -msgstr "_Gennemse..." +msgstr "_Browse..." msgid "_Reset" msgstr "_Nulstil" @@ -12575,13 +11736,13 @@ msgstr "Automatisk fraværende" msgid "Change status when _idle" -msgstr "Skift status ved _inaktivitet" +msgstr "Ændr status ved _inaktivitet" msgid "_Minutes before becoming idle:" msgstr "_Minutter før du bliver inaktiv:" msgid "Change _status to:" -msgstr "Skift _status til:" +msgstr "Ændr _status til:" #. Signon status stuff msgid "Status at Startup" @@ -12591,7 +11752,7 @@ msgstr "Brug status fra sidste _afslutning ved opstart" msgid "Status to a_pply at startup:" -msgstr "Status som skal _anvendes ved opstart:" +msgstr "Status som skal _bruges ved opstart:" msgid "Interface" msgstr "Grænseflade" @@ -12631,7 +11792,7 @@ #. Remove All button msgid "Remove Al_l" -msgstr "Slet _alt" +msgstr "Slet _alle" msgid "Permit User" msgstr "Tillad bruger" @@ -12694,7 +11855,7 @@ #. add button msgid "_Add Chat" -msgstr "_Tilføj chat" +msgstr "_Tilføj samtale" msgid "Are you sure you want to delete the selected saved statuses?" msgstr "Er du sikker på at du vil slette de valgte gemte statusser?" @@ -12731,23 +11892,19 @@ msgstr "Tilpasset smiley" msgid "More Data needed" -msgstr "Flere data kræves" +msgstr "Der er behov for flere data" msgid "Please provide a shortcut to associate with the smiley." -msgstr "Angiv en genvej der skal associeres med smileyen." +msgstr "Angiv en genvej der skal tilknyttes smileyen." msgid "Duplicate Shortcut" msgstr "Dublet genvej" -msgid "" -"A custom smiley for the selected shortcut already exists. Please specify a " -"different shortcut." -msgstr "" -"En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden " -"genvej." +msgid "A custom smiley for the selected shortcut already exists. Please specify a different shortcut." +msgstr "En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden genvej." msgid "Please select an image for the smiley." -msgstr "Vælg et billede til smiley'en." +msgstr "Vælg et billede til smileyen." msgid "Edit Smiley" msgstr "Redigér smiley" @@ -12766,13 +11923,13 @@ msgstr "Smiley" msgid "Custom Smiley Manager" -msgstr "Brugertilpasset Smiley-håndtering" +msgstr "Brugertilpasset håndtering af smiley" msgid "Click to change your buddyicon for this account." -msgstr "Klik for at ændre dit venneikon for denne konto." +msgstr "Klik for at ændre dit venneikon til denne konto." msgid "Click to change your buddyicon for all accounts." -msgstr "Klik for at ændre dit venneikon for alle konti." +msgstr "Klik for at ændre dit venneikon til alle konti." msgid "Waiting for network connection" msgstr "Venter på netværksforbindelse" @@ -12781,7 +11938,7 @@ msgstr "Ny status..." msgid "Saved statuses..." -msgstr "Gemte statuser..." +msgstr "Gemte statusser..." msgid "Status Selector" msgstr "Statusvælger" @@ -12801,20 +11958,14 @@ msgstr "Kan ikke sende mappe %s." #, c-format -msgid "" -"%s cannot transfer a folder. You will need to send the files within " -"individually." -msgstr "%s kan ikke overføre en mappe. Du skal sende filerne individuelt." +msgid "%s cannot transfer a folder. You will need to send the files within individually." +msgstr "%s kan ikke overføre en mappe. Du skal sende filerne i denne individuelt." msgid "You have dragged an image" msgstr "Du har trukket et billede" -msgid "" -"You can send this image as a file transfer, embed it into this message, or " -"use it as the buddy icon for this user." -msgstr "" -"Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, " -"eller bruge det som venneikonet for denne bruger." +msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user." +msgstr "Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, eller bruge det som venneikonet til denne bruger." msgid "Set as buddy icon" msgstr "Sæt som venneikon" @@ -12828,19 +11979,11 @@ msgid "Would you like to set it as the buddy icon for this user?" msgstr "Vil du sætte det som venneikon for denne bruger?" -msgid "" -"You can send this image as a file transfer, or use it as the buddy icon for " -"this user." -msgstr "" -"Du kan sende dette billede som en filoverførsel, eller bruge det som " -"venneikonet for denne bruger." - -msgid "" -"You can insert this image into this message, or use it as the buddy icon for " -"this user" -msgstr "" -"Du kan indsætte dette billede i beskeden, eller bruge det som venneikon for " -"denne bruger" +msgid "You can send this image as a file transfer, or use it as the buddy icon for this user." +msgstr "Du kan sende dette billede som en filoverførsel, eller bruge det som venneikonet for denne bruger." + +msgid "You can insert this image into this message, or use it as the buddy icon for this user" +msgstr "Du kan indsætte dette billede i beskeden, eller bruge det som venneikon for denne bruger" #. I don't know if we really want to do anything here. Most of the desktop item types are crap like #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really @@ -12850,12 +11993,8 @@ msgid "Cannot send launcher" msgstr "Kan ikke sende starter" -msgid "" -"You dragged a desktop launcher. Most likely you wanted to send whatever this " -"launcher points to instead of this launcher itself." -msgstr "" -"Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad " -"starteren peger på og ikke starten selv." +msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself." +msgstr "Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad starteren peger på og ikke starten selv." #, c-format msgid "" @@ -12882,11 +12021,8 @@ msgstr "Kunne ikke åbne fil \"%s\": %s" #, c-format -msgid "" -"Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "" -"Kunne ikke indlæse billeder \"%s\": årsag ikke kendt, måske en ødelagt " -"billedefil" +msgid "Failed to load image '%s': reason not known, probably a corrupt image file" +msgstr "Kunne ikke indlæse billeder \"%s\": årsag ikke kendt, måske en ødelagt billedefil" msgid "Save File" msgstr "Gem fil" @@ -12907,7 +12043,7 @@ msgstr "_Invitér" msgid "_Modify..." -msgstr "_Ændre..." +msgstr "_Ændr..." msgid "_Add..." msgstr "_Tilføj..." @@ -12922,13 +12058,13 @@ msgstr "Pidgin værktøjstip" msgid "Pidgin smileys" -msgstr "Pidgin smiley'er" +msgstr "Pidgin smileyer" msgid "Penguin Pimps" msgstr "Penguin Pimps" msgid "Selecting this disables graphical emoticons." -msgstr "Deaktiverer grafiske humørikoner." +msgstr "Slår grafiske humørikoner fra." msgid "none" msgstr "intet" @@ -12937,7 +12073,7 @@ msgstr "Lille" msgid "Smaller versions of the default smilies" -msgstr "Mindre udgaver af standard smiley'erne" +msgstr "Mindre udgaver af standardsmileyerne" msgid "Response Probability:" msgstr "Svar sandsynlighed:" @@ -12992,17 +12128,13 @@ msgstr "Ven er mobil" msgid "Buddy is offline" -msgstr "Ven er offline" +msgstr "Ven er afkoblet" msgid "Point values to use when..." msgstr "Værdier der skal bruges når..." -msgid "" -"The buddy with the largest score is the buddy who will have priority " -"in the contact.\n" -msgstr "" -"Vennen med den højeste score er den ven som vil have prioritet i " -"kontakten.\n" +msgid "The buddy with the largest score is the buddy who will have priority in the contact.\n" +msgstr "Vennen med den højeste score er den ven som vil have prioritet i kontakten.\n" msgid "Use last buddy when scores are equal" msgstr "Brug den sidste ven når score er lige" @@ -13022,19 +12154,12 @@ #. *< name #. *< version #. *< summary -msgid "" -"Allows for controlling the values associated with different buddy states." -msgstr "" -"Giver mulighed for at kontrollere værdierne associeret med venners " -"forskellige status." +msgid "Allows for controlling the values associated with different buddy states." +msgstr "Giver mulighed for at kontrollere værdierne tilknyttet venners forskellige status." #. *< description -msgid "" -"Allows for changing the point values of idle/away/offline states for buddies " -"in contact priority computations." -msgstr "" -"Giver mulighed for at ændre værdierne af inaktiv/fraværende/offline status " -"for venner i kontaktprioritets beregninger." +msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations." +msgstr "Giver mulighed for at ændre værdierne af inaktiv/fraværende/afkoblet status for venner i kontaktprioritets beregninger." msgid "Conversation Colors" msgstr "Samtalefarver" @@ -13065,10 +12190,10 @@ msgstr "Ignorér indkomne format" msgid "Apply in Chats" -msgstr "Anvend i chat" +msgstr "Anvend i samtaler" msgid "Apply in IMs" -msgstr "Tilføj i kvik-beskeder" +msgstr "Tilføj i beskeder" msgid "By conversation count" msgstr "Efter antallet af samtaler" @@ -13077,18 +12202,14 @@ msgstr "Samtale placering" #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above -msgid "" -"Note: The preference for \"New conversations\" must be set to \"By " -"conversation count\"." -msgstr "" -"Bemærk: Indstillingerne for \"Nye samtaler\" skal sættes til \"Efter samtale " -"antal\"." +msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"." +msgstr "Bemærk: Indstillingerne for \"Nye samtaler\" skal sættes til \"Efter samtale antal\"." msgid "Number of conversations per window" msgstr "Antal af samtaler pr. vindue" msgid "Separate IM and Chat windows when placing by number" -msgstr "Seperate besked- og chatvinduer når der placeres med tal" +msgstr "Seperate besked- og samtalevinduer når der placeres efter tal" #. *< type #. *< ui_requirement @@ -13102,16 +12223,12 @@ #. *< name #. *< version msgid "Extra conversation placement options." -msgstr "Ekstra placeringsmuligheder for samtaler." +msgstr "Ekstra placeringsindstillinger for samtaler." #. *< summary #. * description -msgid "" -"Restrict the number of conversations per windows, optionally separating IMs " -"and Chats" -msgstr "" -"Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- " -"og chatvinduer" +msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats" +msgstr "Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- og samtalevinduer" #. Configuration frame msgid "Mouse Gestures Configuration" @@ -13144,15 +12261,13 @@ #. * description msgid "" -"Allows support for mouse gestures in conversation windows. Drag the middle " -"mouse button to perform certain actions:\n" +"Allows support for mouse gestures in conversation windows. Drag the middle mouse button to perform certain actions:\n" " • Drag down and then to the right to close a conversation.\n" " • 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 "" -"Giver understøttelse for musebevægelser i samtalevinduer. Træk i den " -"midterste knap for at udføre forskellige handlinger:\n" -" • Træk ned og derefter til højre, for at lukke en samtale.\n" +"Giver understøttelse for musebevægelser i samtalevinduer. Træk i den midterste knap for at udføre forskellige handlinger:\n" +" • Træk ned og derefter til højre, for at afslutte en samtale.\n" " • Træk op og derefter til venstre, for at skifte til den forrige samtale.\n" " • Træk op og derefter til højre, for at skifte til den næste samtale." @@ -13175,12 +12290,8 @@ msgstr "Vælg ven" #. Add the label. -msgid "" -"Select a person from your address book to add this buddy to, or create a new " -"person." -msgstr "" -"Vælg en person fra din adressebog at tilføje denne ven til, eller tilføj en " -"ny person." +msgid "Select a person from your address book to add this buddy to, or create a new person." +msgstr "Vælg en person fra din adressebog at tilføje denne ven til, eller tilføj en ny person." #. Add the expander msgid "User _details" @@ -13188,7 +12299,7 @@ #. "Associate Buddy" button msgid "_Associate Buddy" -msgstr "_Associér ven" +msgstr "_Tilknyt ven" msgid "Unable to send email" msgstr "Kunne ikke sende e-post" @@ -13197,13 +12308,13 @@ msgstr "Den ekskvebar Evolution fil blev ikke fundet i PATH." msgid "An email address was not found for this buddy." -msgstr "En e-post-adresse blev ikke fundet for denne ven." +msgstr "En e-postadresse blev ikke fundet for denne ven." msgid "Add to Address Book" msgstr "Tilføj til adressebog" msgid "Send Email" -msgstr "Send email" +msgstr "Send e-post" #. Configuration frame msgid "Evolution Integration Configuration" @@ -13249,7 +12360,7 @@ msgstr "Efternavn:" msgid "Email:" -msgstr "Email:" +msgstr "E-post:" #. *< type #. *< ui_requirement @@ -13298,7 +12409,7 @@ msgstr "Post-overvåger" msgid "Checks for new local mail." -msgstr "Tjekker for lokal post." +msgstr "Kontrollerer for lokal post." msgid "Adds a small box to the buddy list that shows if you have new mail." msgstr "Tilføjer en lille boks til vennelisten der viser om du har ny post." @@ -13321,12 +12432,8 @@ msgid "C_hat windows" msgstr "C_hat-vinduer" -msgid "" -"A music messaging session has been requested. Please click the MM icon to " -"accept." -msgstr "" -"En musik-beskeds session er blevet anmodet. Klik på MM-ikonet for at " -"acceptere." +msgid "A music messaging session has been requested. Please click the MM icon to accept." +msgstr "En musik-beskeds session er blevet anmodet. Klik på MM-ikonet for at acceptere." msgid "Music messaging session confirmed." msgstr "Musik beskeds-session bekræftet." @@ -13362,15 +12469,11 @@ #. *< name #. *< version msgid "Music Messaging Plugin for collaborative composition." -msgstr "Musik besked modul for samarbejdskomposition." +msgstr "Musik besked udvidelsesmodul for samarbejdskomposition." #. * summary -msgid "" -"The Music Messaging Plugin allows a number of users to simultaneously work " -"on a piece of music by editting a common score in real-time." -msgstr "" -"Musik beskeds modulet tillader flere bruger af gangen, til samtidig at " -"arbejde på et stykke musik ved at redigere en fælles score i real-time." +msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time." +msgstr "Musik beskeds udvidelsesmodulet tillader flere bruger af gangen, til samtidig at arbejde på et stykke musik ved at redigere en fælles score i real-time." #. ---------- "Notify For" ---------- msgid "Notify For" @@ -13450,8 +12553,7 @@ #. * summary #. * description msgid "Provides a variety of ways of notifying you of unread messages." -msgstr "" -"Giver mulighed for at påminde dig om ulæste beskeder på forskellige måder." +msgstr "Giver mulighed for at påminde dig om ulæste beskeder på forskellige måder." #. *< type #. *< ui_requirement @@ -13460,13 +12562,13 @@ #. *< priority #. *< id msgid "Pidgin Demonstration Plugin" -msgstr "Pidgin demonstrations-modul" +msgstr "Pidgin demonstrationsudvidelsesmodul" #. *< name #. *< version #. * summary msgid "An example plugin that does stuff - see the description." -msgstr "Et eksempels-modul der gør forskellige ting - se beskrivelsen." +msgstr "Et eksempel-udvidelsesmodul der gør forskellige ting - se beskrivelsen." #. * description msgid "" @@ -13487,13 +12589,13 @@ msgstr "Sekundær markør farve" msgid "Hyperlink Color" -msgstr "Link farve" +msgstr "Farve på henvisning" msgid "Visited Hyperlink Color" -msgstr "Farve for besøgt hyperlink" +msgstr "Farve på besøgt henvisning" msgid "Highlighted Message Name Color" -msgstr "Farvenavn for fremhævede beskeder" +msgstr "Farve som bruges til fremhævede beskednavne" msgid "GtkTreeView Horizontal Separation" msgstr "GtkTreeView horisontal separering" @@ -13564,25 +12666,19 @@ msgstr "Genindlæs gtkrc filer" msgid "Pidgin GTK+ Theme Control" -msgstr "Pidgin GTK+ tema kontrol" +msgstr "Temakontrol til Pidgin GTK+" msgid "Provides access to commonly used gtkrc settings." -msgstr "Giver adgang til fælles brugte gtkrc-indstillinger." +msgstr "Giver adgang til normalt brugte gtkrc-indstillinger." msgid "Raw" msgstr "Rå" msgid "Lets you send raw input to text-based protocols." -msgstr "" -"Giver dig mulighed for at sende rå inddata til text-baserede protokoller." - -msgid "" -"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit " -"'Enter' in the entry box to send. Watch the debug window." -msgstr "" -"Giver dig mulighed for at sende rå inddata til tekstbaserede protokoller " -"(XMPP, MSN, IRC, TOC). Tryk \"Enter\" i indtastningsfeltet for at sende. " -"Hold øje med fejlsøgningsvinduet." +msgstr "Giver dig mulighed for at sende rå inddata til text-baserede protokoller." + +msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window." +msgstr "Giver dig mulighed for at sende rå inddata til tekstbaserede protokoller (XMPP, MSN, IRC, TOC). Tryk \"Enter\" i indtastningsfeltet for at sende. Hold øje med fejlsøgningsvinduet." #, c-format msgid "You can upgrade to %s %s today." @@ -13613,12 +12709,8 @@ msgstr "Tjekker periodisk efter nye udgivelser." #. * description -msgid "" -"Checks periodically for new releases and notifies the user with the " -"ChangeLog." -msgstr "" -"Tjeker periodisk efter nye udgivelser og viser brugeren hvilke ændringer der " -"er i den nye udgivelse." +msgid "Checks periodically for new releases and notifies the user with the ChangeLog." +msgstr "Tjeker periodisk efter nye udgivelser og viser brugeren hvilke ændringer der er i den nye udgivelse." #. *< major version #. *< minor version @@ -13629,23 +12721,19 @@ #. *< priority #. *< id msgid "Send Button" -msgstr "Send knap" +msgstr "Sendknap" #. *< name #. *< version msgid "Conversation Window Send Button." -msgstr "Samtalevindue send knap." +msgstr "Samtalevindue sendknap." #. *< summary -msgid "" -"Adds a Send button to the entry area of the conversation window. Intended " -"for when no physical keyboard is present." -msgstr "" -"Tilføjer en send-knappe til indtastningsområdet i samtalevinduet. Beregnet " -"til når der ikke er noget fysisk tastatur tilstede." +msgid "Adds a Send button to the entry area of the conversation window. Intended for when no physical keyboard is present." +msgstr "Tilføjer en sendknap til indtastningsområdet i samtalevinduet. Beregnet til når der ikke er noget fysisk tastatur tilstede." msgid "Duplicate Correction" -msgstr "Dublet rettelse" +msgstr "Duplikér rettelse" msgid "The specified word already exists in the correction list." msgstr "Det angivne ord findes allerede i rettelseslisten." @@ -13682,7 +12770,7 @@ msgstr "Erstat kun _hele ord" msgid "General Text Replacement Options" -msgstr "Generelle indstillinger for teksterstatning" +msgstr "Generelle indstillinger til teksterstatning" msgid "Enable replacement of last word on send" msgstr "Slå erstatning af sidste ord ved send på" @@ -13748,7 +12836,7 @@ msgstr "For forsinkede beskeder" msgid "For delayed messages and in chats" -msgstr "For forsinkede beskeder og i chats" +msgstr "For forsinkede beskeder og i samtaler" msgid "_Message Logs:" msgstr "_Besked logs:" @@ -13766,15 +12854,11 @@ #. *< version #. * summary msgid "Customizes the message timestamp formats." -msgstr "Definerer formatet på tidsstempler i beskeder." +msgstr "Tilpasser formatet på tidsstempler i beskeder." #. * description -msgid "" -"This plugin allows the user to customize conversation and logging message " -"timestamp formats." -msgstr "" -"Dette modul tillader brugeren selv at definere formatet på tidsstempler i " -"samtaler og logs." +msgid "This plugin allows the user to customize conversation and logging message timestamp formats." +msgstr "Dette modul tillader brugeren selv at tilpasse formatet på tidsstempler i samtaler og logs." msgid "Opacity:" msgstr "Ugennemsigtighed:" @@ -13784,7 +12868,7 @@ msgstr "Beskedsamtalevinduer" msgid "_IM window transparency" -msgstr "_Beskedvinduer gennemsigtighed" +msgstr "_Gennemsigtighed af beskedvindue" msgid "_Show slider bar in IM window" msgstr "_Vis rullebjælke i beskedvindue" @@ -13800,7 +12884,7 @@ msgstr "Venneliste vindue" msgid "_Buddy List window transparency" -msgstr "Venne_liste vindue gennemsigtighed" +msgstr "Gennemsigtighed af venne_liste vindue" msgid "Remove Buddy List window transparency on focus" msgstr "Fjern venneliste vindue gennemsigtighed ved fokus" @@ -13822,13 +12906,11 @@ #. * description msgid "" -"This plugin enables variable alpha transparency on conversation windows and " -"the buddy list.\n" +"This plugin enables variable alpha transparency on conversation windows and the buddy list.\n" "\n" "* Note: This plugin requires Win2000 or greater." msgstr "" -"Dette modul giver dig mulighed variabel alpha gennemsigtighed i samtale-" -"vinduer og vennelisten.\n" +"Dette modul giver dig mulighed variabel alpha gennemsigtighed i samtale-vinduer og vennelisten.\n" "\n" "* Bemærk: Dette modul kræver Win2000 eller bedre." @@ -13855,15 +12937,13 @@ msgstr "Kun når docked" msgid "Windows Pidgin Options" -msgstr "Indstillinger for Windows Pidgin" +msgstr "Indstillinger for Pidgin til Windows" msgid "Options specific to Pidgin for Windows." -msgstr "Specifikke indstillinger for Windows Pidgin." - -msgid "" -"Provides options specific to Pidgin for Windows , such as buddy list docking." -msgstr "" -"Giver muligheder specifikt til Windows Pidgin, såsom venneliste dokning." +msgstr "Specifikke indstillinger for Pidgin til Windows." + +msgid "Provides options specific to Pidgin for Windows , such as buddy list docking." +msgstr "Indstillinger specifikt for Pidgin for Windows, såsom venneliste dokning." msgid "Logged out." msgstr "Loggede ud." @@ -13900,13 +12980,10 @@ #. * description msgid "This plugin is useful for debbuging XMPP servers or clients." -msgstr "" -"Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller " -"klienter." +msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller klienter." #~ msgid "Unable to retrieve MSN Address Book" #~ msgstr "Ikke i stand til at hente MSN-adressebog" - #~ msgid "" #~ "You may be disconnected shortly. You may want to use TOC until this is " #~ "fixed. Check %s for updates." @@ -13941,19 +13018,14 @@ #, fuzzy #~ msgid "Failed to send IM." #~ msgstr "Kunne ikke hente navn: %s" - #~ msgid "User information for %s unavailable" #~ msgstr "Bruger oplysninger for %s er ikke tilgængelige" - #~ msgid "_Flash window when chat messages are received" -#~ msgstr "_Blink vindue når chat-beskeder modtages" - +#~ msgstr "_Blink vindue når samtalebeskeder modtages" #~ msgid "A group with the name already exists." #~ msgstr "En mappe med det navn eksisterer allerede." - #~ msgid "Primary Information" #~ msgstr "Primær-information" - #~ msgid "Blood Type" #~ msgstr "Blodtype" @@ -13972,13 +13044,10 @@ #~ msgstr "" #~ "Du prøver at opsætte et ansigt. Pidgin tillader, på nuværende tidspunkt, " #~ "kun standard ansigterne. Vælg venligst et billede fra " - #~ msgid "Invalid QQ Face" #~ msgstr "Ugyldigt QQ-ansigt" - #~ msgid "You rejected %d's request" #~ msgstr "Du afviste %d's anmodning" - #~ msgid "Reject request" #~ msgstr "Afvis anmodning" @@ -13993,20 +13062,17 @@ #, fuzzy #~ msgid "QQ Number Error" #~ msgstr "QQ-nummer" - #~ msgid "Group Description" #~ msgstr "Gruppebeskrivelse" - #~ msgid "Auth" #~ msgstr "Godkend" - #~ msgid "Approve" #~ msgstr "Godkend" #, fuzzy #~ msgid "Successed to join Qun %d, operated by admin %d" #~ msgstr "" -#~ "Din forspørgelse om at blive medlem af gruppen %d er blevet afslået af " +#~ "Din forspørgelse om at tilslutte gruppen %d er blevet afslået af " #~ "administrator %d" #, fuzzy @@ -14016,17 +13082,14 @@ #, fuzzy #~ msgid "[%d] added to Qun \"%d\"" #~ msgstr "Du [%d] er blevet tilføjet af gruppe \"%d\"" - #~ msgid "I am a member" #~ msgstr "Jeg er medlem" #, fuzzy #~ msgid "I am requesting" #~ msgstr "Ugyldig anmodning" - #~ msgid "I am the admin" #~ msgstr "Jeg er administratoren" - #~ msgid "Unknown status" #~ msgstr "Ukendt status" @@ -14044,7 +13107,7 @@ #, fuzzy #~ msgid "Do you want to approve the request?" -#~ msgstr "Vil du godkende denne forespørgelse?" +#~ msgstr "Vil du godkende denne forespørgsel?" #, fuzzy #~ msgid "Change Qun member" @@ -14053,13 +13116,10 @@ #, fuzzy #~ msgid "Change Qun information" #~ msgstr "Kanal oplysninger" - #~ msgid "System Message" #~ msgstr "Systembesked" - #~ msgid "Last Login IP: %s
\n" #~ msgstr "Sidste logind IP: %s
\n" - #~ msgid "Last Login Time: %s\n" #~ msgstr "Sidste logind tid: %s\n" @@ -14091,7 +13151,7 @@ #, fuzzy #~ msgid "Do you approve the requestion?" -#~ msgstr "Vil du godkende denne forespørgelse?" +#~ msgstr "Vil du godkende denne forespørgsel?" #, fuzzy #~ msgid "Do you add the buddy?" @@ -14124,13 +13184,12 @@ #, fuzzy #~ msgid "Network disconnected" #~ msgstr "%s afbrudt" - #~ msgid "developer" #~ msgstr "udvikler" #, fuzzy #~ msgid "XMPP developer" -#~ msgstr "udvikler" +#~ msgstr "XMPP-udvikler" #, fuzzy #~ msgid "Artists" @@ -14147,105 +13206,78 @@ #~ msgstr "" #~ "Ændringer:\n" #~ "%s

" - #~ msgid "Screen name:" #~ msgstr "Brugernavn:" #, fuzzy #~ msgid "Show offline buddies" #~ msgstr "Vis afkoblede venner" - #~ msgid "Sort by status" #~ msgstr "Sorter efter status" - #~ msgid "Sort alphabetically" #~ msgstr "Sorter alfabetisk" - #~ msgid "Sort by log size" #~ msgstr "Sorter efter logstørrelse" #, fuzzy #~ msgid "Pounce only when my status is not available" #~ msgstr "Over_våg kun når min status er ikke tilgængelig" - #~ msgid "Someone says your screen name in chat" -#~ msgstr "Nogle siger dit brugernavn i chat" - +#~ msgstr "Nogle siger dit brugernavn i samtale" #~ msgid "EOF while reading from resolver process" #~ msgstr "EOF ved læsning fra resolver-proces" #, fuzzy #~ msgid "There were errors unloading the plugin." #~ msgstr "Pidgin kunne ikke udlæse modulet." - #~ msgid "Error setting socket options" #~ msgstr "Fejl ved opsætning af socket indstillinger" - #~ msgid "Couldn't open file" #~ msgstr "Kan ikke åbne fil" - #~ msgid "" #~ "This server requires plaintext authentication over an unencrypted " #~ "connection. Allow this and continue authentication?" #~ msgstr "" -#~ "Denne server kræver at godkendelse sker ved ren tekst (uden kryptering). " +#~ "Denne server kræver at godkendelse sker i klartekst (uden kryptering). " #~ "Tillad dette og fortsæt godkendelse?" - #~ msgid "Error initializing session" #~ msgstr "Fejl ved initialisering af session" - #~ msgid "Invalid screen name" #~ msgstr "Ugyldigt skærmnavn" - #~ msgid "Unable to make SSL connection to server." #~ msgstr "Kunne ikke skabe SSL-forbindelse til server." - #~ msgid "Too evil (sender)" #~ msgstr "For ond (afsender)" - #~ msgid "Too evil (receiver)" #~ msgstr "For ond (modtager)" - #~ msgid "Screen name sent" #~ msgstr "Brugernavn sendt" - #~ msgid "Invalid screen name." #~ msgstr "Ugyldigt skærmnavn." - #~ msgid "Available Message" #~ msgstr "Tilgængelig besked" - #~ msgid "Screen name" #~ msgstr "Skærmnavn" - #~ msgid "Invalid chat name specified." -#~ msgstr "Ugyldigt chatnavn angivet." - +#~ msgstr "Ugyldigt samtalenavn angivet." #~ msgid "Away Message" #~ msgstr "Fraværs-besked" - #~ msgid "(retrieving)" #~ msgstr " (modtager)" - #~ msgid "Use recent buddies group" #~ msgstr "Brug seneste vennegruppe" - #~ msgid "Show how long you have been idle" #~ msgstr "Vis hvor lang tid du har været inaktiv" - #~ msgid "" #~ "Always use ICQ proxy server for file transfers\n" #~ "(slower, but does not reveal your IP address)" #~ msgstr "" #~ "Brug altid ICQ-mellemværtssever til filoverførelser\n" #~ "(langsommere, men afslører ikke din IP-adresse)" - #~ msgid "Your information has been updated" #~ msgstr "Din information er blevet opdateret" - #~ msgid "Input your reason:" #~ msgstr "Angiv din grund:" - #~ msgid "You have successfully removed a buddy" #~ msgstr "Du har fjernet en ven." @@ -14256,43 +13288,36 @@ #, fuzzy #~ msgid "You have added %d to buddy list" #~ msgstr "Du har tilføjet %d i vennelisten" - #~ msgid "Invalid QQid" #~ msgstr "Ugyldigt QQid" #, fuzzy #~ msgid "Please enter external group ID" #~ msgstr "Venligt indtast en ekstern gruppe-ID" - #~ msgid "Reason: %s" #~ msgstr "Grund: %s" #, fuzzy #~ msgid "Your request to join group %d has been approved by admin %d" #~ msgstr "" -#~ "Din forespørgelse om at blive medlem af gruppen %d er blevet godkendt af " +#~ "Din forespørgsel om at tilslutte gruppen %d er blevet godkendt af " #~ "administrator %d" - #~ msgid "This group has been added to your buddy list" #~ msgstr "Denne gruppe er blevet tilføjet til din venneliste" - #~ msgid "I am applying to join" -#~ msgstr "Jeg prøver at blive medlem" +#~ msgstr "Jeg prøver at tilslutte" #, fuzzy #~ msgid "You have successfully left the group" #~ msgstr "Du har forladt gruppen" - #~ msgid "QQ Group Auth" #~ msgstr "QQ gruppe autorisation" #, fuzzy #~ msgid "Your authorization request has been accepted by the QQ server" #~ msgstr "Din autorisations-operation er blevet accepteret af QQ-serveren" - #~ msgid "Code [0x%02X]: %s" #~ msgstr "Kode [0x%02X]: %s" - #~ msgid "Group Operation Error" #~ msgstr "Gruppe-operationsfejl" @@ -14303,7 +13328,6 @@ #, fuzzy #~ msgid "Error requesting login token" #~ msgstr "Fejl ved oprettelse af forbindelse" - #~ msgid "Unable to login, check debug log" #~ msgstr "Kunne ikke logge ind, kontrollér fejlsøgningslog" @@ -14314,29 +13338,22 @@ #, fuzzy #~ msgid "UDP Address" #~ msgstr "IP-adresse" - #~ msgid "Show Login Information" #~ msgstr "Vis logind information" - #~ msgid "Login failed, no reply" #~ msgstr "Logind slog fejl, intet svar" - #~ msgid "User %s rejected your request" -#~ msgstr "Bruger %s afslog din forespørgelse" +#~ msgstr "Bruger %s afslog din forespørgsel" #, fuzzy #~ msgid "User %s approved your request" -#~ msgstr "Bruger %s har godkendt din forespørgelse" - +#~ msgstr "Bruger %s har godkendt din forespørgsel" #~ msgid "Cannot find/access ~/.silc directory" #~ msgstr "Kan ikke finde eller tilgå ~/.silc mappe" - #~ msgid "%s changed status from %s to %s" #~ msgstr "%s ændrede status fra %s til %s" - #~ msgid "%s is now %s" #~ msgstr "%s er nu %s" - #~ msgid "%s is no longer %s" #~ msgstr "%s er ikke længere %s" @@ -14351,16 +13368,12 @@ #, fuzzy #~ msgid "Add Buddy _Pounce" #~ msgstr "Tilføj overvågning" - #~ msgid "Add a C_hat" -#~ msgstr "Tilføj en _chat" - +#~ msgstr "Tilføj en _samtale" #~ msgid "/Accounts/Add\\/Edit" #~ msgstr "/Konti/Tilføj\\/Redigér" - #~ msgid "%s disconnected: %s" #~ msgstr "%s afbrudt: %s" - #~ msgid "" #~ "Please enter the screen name of the person you would like to add to your " #~ "buddy list. You may optionally enter an alias, or nickname, for the " @@ -14386,36 +13399,30 @@ #~ " \n" #~ "Pidgin vil ikke forsøge at genforbinde til kontoen før du retter fejlen " #~ "og genaktiverer kontoen." - #~ msgid "User has typed something and stopped" #~ msgstr "Bruger har skrevet noget, og stoppet" #, fuzzy #~ msgid "_Send To" #~ msgstr "_Send til" - #~ msgid "" #~ "%s%sWritten by:\t%s\n" #~ "Website:\t\t%s\n" #~ "Filename:\t\t%s" #~ msgstr "" #~ "%s%sSkrevet af:\t%s\n" -#~ "Web site:\t\t%s\n" +#~ "Websted:\t\t%s\n" #~ "Filnavn:\t\t%s" - #~ msgid "Display Statistics" #~ msgstr "Vis statistikker" - #~ msgid "" #~ "The contact availability plugin (cap) is used to display statistical " #~ "information about buddies in a users contact list." #~ msgstr "" #~ "Tilgængelighedsforudsigelses-udvidelsesmodulet (cap) bruges til at vise " #~ "statistik-information om venner i en brugers kontaktliste." - #~ msgid "Conversation History" #~ msgstr "Samtale historik" - #~ msgid "Log Viewer" #~ msgstr "Loglæser" @@ -14425,7 +13432,7 @@ #, fuzzy #~ msgid "Current media" -#~ msgstr "Nuværende symbol" +#~ msgstr "Nuværende medie" #, fuzzy #~ msgid "Unable to connect to OIM server" @@ -14438,88 +13445,64 @@ #, fuzzy #~ msgid "A_ccount:" #~ msgstr "Konto:" - #~ msgid "Toggle offline buddies" #~ msgstr "Afkoblet venner til/fra" - #~ msgid "" #~ "%s was disconnected due to the following error:\n" #~ "%s" #~ msgstr "" #~ "%s blev afbrudt grundet følgende fejl:\n" #~ "%s" - #~ msgid "Commands are not supported yet. Message was NOT sent." #~ msgstr "Kommandoer er ikke understøttet endnu. Besked blev IKKE sendt." - #~ msgid "Timestamps" #~ msgstr "Tidsstempler" - #~ msgid "..." #~ msgstr "..." - #~ msgid "Still need to do something about this." #~ msgstr "Mangler stadig at gøre noget ved dette." - #~ msgid "Alias..." #~ msgstr "Alias..." - #~ msgid "/Tools/Buddy Pounces" #~ msgstr "/Værktøjer/Venneovervågning" - #~ msgid "/Options/Show Buddy _Icon" -#~ msgstr "/Valgmuligheder/Vis venne_ikoner" - +#~ msgstr "/Indstillinger/Vis venne_ikoner" #~ msgid "/Options/Show Buddy Icon" -#~ msgstr "/Valgmuligheder/Vis venne_ikoner" - +#~ msgstr "/Indstillinger/Vis venne_ikoner" #~ msgid "Jabber developer" #~ msgstr "Jabber udvikler" - #~ msgid "IRC: #winPidgin on irc.freenode.net

" #~ msgstr "IRC: #winPidgin på irc.freenode.net

" - #~ msgid "Smaller font size" #~ msgstr "Mindre skriftstørrelse" - #~ msgid "Insert link" -#~ msgstr "Indsæt link" - +#~ msgstr "Indsæt henvisning" #~ msgid "Insert image" #~ msgstr "Indsæt billede" - #~ msgid "Pidgin %s. Try `%s -h' for more information.\n" #~ msgstr "Pidgin %s. Prøv `%s -h' for flere oplysninger.\n" - #~ msgid "Show buddy _icons" #~ msgstr "Vis venne_ikoner" - #~ msgid "" #~ "You can send this image as a file transfer or embed it into this message, " #~ "or use it as the buddy icon for this user." #~ msgstr "" #~ "Du kan sende dette billede som en filoverførsel, vedlægge det til en " #~ "besked, eller bruge det som venneikonet for denne bruger." - #~ msgid "GtkTreeView Expander Size" #~ msgstr "GtkTreeView udfoldelses-pil størrelse" - #~ msgid "GtkTreeView Indent Expanders" #~ msgstr "GtkTreeView indryknings pile" - #~ msgid "Tools" #~ msgstr "Værktøjer" - #~ msgid "" #~ "You can get version %s from:
http://Pidgin.sourceforge.net." #~ msgstr "" #~ "Du kan få version %s fra:
http://Pidgin.sourceforge.net." - #~ msgid "WinPidgin Options" #~ msgstr "WinPidgin Indstillinger" - #~ msgid "" #~ "%d buddy from group %s was not removed because it belongs to an account " #~ "which is disabled or offline. This buddy and the group were not " @@ -14530,23 +13513,18 @@ #~ "were not removed.\n" #~ msgstr[0] "" #~ "%d ven fra gruppe %s blev ikke fjernet fordi den tilhører en konto som er " -#~ "slået fra eller offline. Denne ven og gruppen blev ikke flyttet.\n" +#~ "slået fra eller afkoblet. Denne ven og gruppen blev ikke flyttet.\n" #~ msgstr[1] "" #~ "%d venner fra gruppe %s blev ikke fjernet fordi de tilhører en konto som " -#~ "er slået fra eller offline. Disse venner og gruppen blev ikke flyttet.\n" - +#~ "er slået fra eller afkoblet. Disse venner og gruppen blev ikke flyttet.\n" #~ msgid "Group not removed" #~ msgstr "Gruppe ikke fjernet" - #~ msgid "Old Pidgin" #~ msgstr "Gammel Pidgin" - #~ msgid "Autoreply" #~ msgstr "Automatisk svar" - #~ msgid "Autoreply for all the protocols" #~ msgstr "Automatisk svar for alle protokollerne" - #~ msgid "" #~ "This plugin lets you set autoreply message for any protocol. You can set " #~ "the global autoreply message from the Plugin-options dialog. To set some " @@ -14560,112 +13538,80 @@ #~ "automatisk svarbesked for en bestemt ven, højreklik på vennen i " #~ "venneliste-vinduet. For at sætte en automatisk svarbesked for bestemte " #~ "konti, gå til \"Avanceret\"-fanen i Konto-redigér-vinduet." - #~ msgid "Set autoreply message for %s" #~ msgstr "Sæt automatisk svarbesked for %s" - #~ msgid "Set Autoreply Message" #~ msgstr "Sæt automatisk svarbesked" - #~ msgid "" #~ "The following message will be sent to the buddy when the buddy sends you " #~ "a message and autoreply is enabled." #~ msgstr "" #~ "Følgende besked vil blive sendt til vennen når vennen sender dig en " #~ "besked og automatisk svarbesked er aktiveret." - #~ msgid "Set _Autoreply Message" #~ msgstr "Sæt _automatisk svarbesked" - #~ msgid "Autoreply message" #~ msgstr "Automatisk svarbesked" - #~ msgid "Send autoreply messages when" #~ msgstr "Send automatisk svarbesked når" - #~ msgid "When my account is _away" #~ msgstr "Når min konto er _væk" - #~ msgid "When my account is _idle" #~ msgstr "Når min konto er _fraværende" - #~ msgid "_Default reply" #~ msgstr "_Standard-svar" - #~ msgid "Status message" #~ msgstr "Status-besked" - #~ msgid "Autoreply with status message" #~ msgstr "Automatisk svar med statusbesked" - #~ msgid "Always when there is a status message" #~ msgstr "Altid når der er en statusbesked" - #~ msgid "Only when there's no autoreply message" #~ msgstr "Kun når der ikke er nogen automatisk svarbesked" - #~ msgid "Delay between autoreplies" #~ msgstr "Forsinkelse mellem automatisk svar" - #~ msgid "_Minimum delay (mins)" #~ msgstr "_Mindste forsinkelse (mins)" - #~ msgid "Times to send autoreplies" #~ msgstr "Antal gange der sendes automatisk svar" - #~ msgid "Ma_ximum count" #~ msgstr "Maksimum tæller" - #~ msgid "" #~ "I am currently not available. Please leave your message, and I will get " #~ "back to you as soon as possible." #~ msgstr "" #~ "Jeg er ikke til stede. Vær venlig at efterlade en besked, og jeg vil " #~ "vende tilbage til dig hurtigst muligt." - #~ msgid "Pidgin User" #~ msgstr "Pidgin bruger" - #~ msgid "Jabber Account" #~ msgstr "Jabber-konto" - #~ msgid "Server couldn't authenticate you without a password" #~ msgstr "Server kunne ikke godkende dig uden en adgangskode" - #~ msgid "Search for Jabber users" #~ msgstr "Søg efter Jabber brugere" - #~ msgid "Invalid Jabber ID" #~ msgstr "Ugyldigt Jabber ID" - #~ msgid "Change Jabber Password" -#~ msgstr "Skift Jabber adgangskode" - +#~ msgstr "Ændr Jabber adgangskode" #~ msgid "Jabber Protocol Plugin" #~ msgstr "Jabber protokolmodul" - #~ msgid "You have just sent a Nudge!" #~ msgstr "Du har sendt et vink!" - #~ msgid "SNAC threw error: %s\n" #~ msgstr "SNAC gav fejlen: %s\n" - #~ msgid "User information for %s unavailable:" #~ msgstr "Bruger oplysninger for %s er ikke tilgængelige:" - #~ msgid "Rate limiting error." #~ msgstr "Grænsefejl." - #~ msgid "You have been signed off for an unknown reason." #~ msgstr "Du er blevet logget af pga. en ukendt årsag." - #~ msgid "" #~ "Your screen name is currently formatted as follows:\n" #~ "%s" #~ msgstr "" #~ "Dit brugernavn er formatter således på nuværende tidspunkt:\n" #~ "%s" - #~ msgid "" #~ "Could not add the buddy %s for an unknown reason. The most common reason " #~ "for this is that you have the maximum number of allowed buddies in your " @@ -14673,73 +13619,50 @@ #~ msgstr "" #~ "Kunne ikke tilføje vennen %s pga. en ukendt årsag. Den normale grund for " #~ "dette er at du har det maskimale antal tilladte venner i din venneliste." - #~ msgid "New screen name formatting:" #~ msgstr "Ny brugernavn formatering:" - #~ msgid "Format Screen Name..." #~ msgstr "Formatér brugernavn..." - #~ msgid "_Connect" #~ msgstr "_Tilslut" - #~ msgid "Are you sure to exit this Qun?" #~ msgstr "Er du sikker på at du vil forlade denne Qun?" - #~ msgid "Go ahead" #~ msgstr "Fortsæt" - #~ msgid "Server ACK" #~ msgstr "Server-ACK" - #~ msgid "Send IM fail\n" -#~ msgstr "Send kvik-besked fejlede\n" - +#~ msgstr "Send besked fejlede\n" #~ msgid "Keep alive error, seems connection lost!" #~ msgstr "Hold i live fejl, lader til at forbindelsen er tabt!" - #~ msgid "Request login token error!" #~ msgstr "Login forespørgelesmærke-fejl!" - #~ msgid "%s Address" #~ msgstr "%s-adresse" - #~ msgid "QQ: Available" #~ msgstr "QQ: Tilgængelig" - #~ msgid "QQ: Away" #~ msgstr "QQ: Fraværende" - #~ msgid "QQ: Invisible" #~ msgstr "QQ: Usynlig" - #~ msgid "QQ: Offline" -#~ msgstr "QQ: Offline" - +#~ msgstr "QQ: Afkoblet" #~ msgid "Login in TCP" #~ msgstr "Logind i TCP" - #~ msgid "Login Hidden" #~ msgstr "Skjult logind" - #~ msgid "Socket send error" #~ msgstr "Sokkel sendefejl" - #~ msgid "Would like to add him?" #~ msgstr "Vil du tilføje ham?" - #~ msgid "Reject watching by other users" #~ msgstr "Nægt andre brugere at kigge på" - #~ msgid "Block invites" #~ msgstr "Blokér invitationer" - #~ msgid "Reject online status attribute requests" #~ msgstr "Nægt anmodning om online status-attributter" - #~ msgid "TOC has sent a PAUSE command." #~ msgstr "TOC har sendt en PAUSE kommando." - #~ msgid "" #~ "When this happens, TOC ignores any messages sent to it, and may kick you " #~ "off if you send a message. Pidgin will prevent anything from going " @@ -14749,10 +13672,8 @@ #~ "risikere at blive logget af, hvis du forsøger at sende en besked. Pidgin " #~ "vil derfor tilbageholde alle beskeder. Dette er kun midlertidigt, så hav " #~ "tålmodighed." - #~ msgid "Pidgin - Save As..." #~ msgstr "Pidgin - Gem som..." - #~ msgid "" #~ "The normal authentication method has failed. This means either your " #~ "password is incorrect, or Yahoo!'s authentication scheme has changed. " @@ -14763,48 +13684,34 @@ #~ "adgangskode er forkert, eller at Yahoo!'s godkendelsesmetode er blevet " #~ "ændret. Pidgin vil nu forsøge at logge ind via Web Messenger-" #~ "godkendelsesmetoden, som vil resultere i begrænset funktionalitet." - #~ msgid "Unavailable" #~ msgstr "Ikke tilgængelig" - #~ msgid "Crazychat" #~ msgstr "Skørchat" - #~ msgid "Plugin to establish a Crazychat session." #~ msgstr "Plugin til at etablere en skørchat session." - #~ msgid "Uses Pidgin to obtain buddy ips to connect for a Crazychat session" #~ msgstr "" #~ "Bruger Pidgin til at finde venners ip-adresser til at forbinde til en " #~ "skørchat session" - #~ msgid "Network Configuration" #~ msgstr "Netværksopsætning" - #~ msgid "TCP port" #~ msgstr "TCP port" - #~ msgid "UDP port" #~ msgstr "UDP port" - #~ msgid "Feature Calibration" #~ msgstr "Funktionalitets justering" - #~ msgid "DBus" #~ msgstr "DBus" - #~ msgid "Blink tray icon for unread..." #~ msgstr "Blink statusikon for ulæste..." - #~ msgid "_Instant Messages:" #~ msgstr "_Kvikbeskeder:" - #~ msgid "C_hat Messages:" #~ msgstr "C_hat beskeder:" - #~ msgid "Displays an icon for Pidgin in the system tray." #~ msgstr "Viser et Pidgin-ikon i statusområdet." - #~ msgid "" #~ "Displays a system tray icon (in GNOME, KDE, or Windows for example) to " #~ "show the current status of Pidgin, allow fast access to commonly used " @@ -14815,74 +13722,60 @@ #~ "vise Pidgins nuværende status. Det tillader hurtig adgang til ofte brugte " #~ "funktioner, og du kan hurtigt skjule/vise vennelisten. Det giver også " #~ "mulighed for at blinke når der er ulæste beskeder." - #~ msgid "The specified buddy was not found in the Evolution Contacts." #~ msgstr "Den angivne ven blev ikke fundet i Evolution kontakter" - #~ msgid "Delay" #~ msgstr "Forsinkelse" - #~ msgid "Buddy icon:" #~ msgstr "Venneikon:" - #~ msgid "" #~ "\n" #~ "Nickname: %s" #~ msgstr "" #~ "\n" #~ "Kælenavn: %s" - #~ msgid "" #~ "\n" #~ "Logged In: %s" #~ msgstr "" #~ "\n" #~ "Logget ind: %s" - #~ msgid "" #~ "\n" #~ "Idle: %s" #~ msgstr "" #~ "\n" #~ "Inaktiv: %s" - #~ msgid "" #~ "\n" #~ "Status: Offline" #~ msgstr "" #~ "\n" -#~ "Status: Offline" - +#~ "Status: Afkoblet" #~ msgid "" #~ "\n" #~ "Description: Spooky" #~ msgstr "" #~ "\n" #~ "Beskrivelse: Skræmmende" - #~ msgid "" #~ "\n" #~ "Status: Awesome" #~ msgstr "" #~ "\n" #~ "Status: Enestående" - #~ msgid "" #~ "\n" #~ "Status: Rockin'" #~ msgstr "" #~ "\n" #~ "Status: Fantastisk" - #~ msgid "IM the user" #~ msgstr "Send besked til bruger" - #~ msgid "Ignore the user" #~ msgstr "Ignorér brugeren" - #~ msgid "Get the user's information" #~ msgstr "Hent brugerens oplysninger" - #~ msgid "" #~ "You have mail!\n" #~ "\n" @@ -14891,161 +13784,120 @@ #~ "Du har fået post!\n" #~ "\n" #~ "%s" - #~ msgid "Send unknown \"_slash\" commands as messages" #~ msgstr "Send ukendte \"_skråstreg\" kommandoer som beskeder" - #~ msgid "Tab Options" #~ msgstr "Faneblad indstillinger" - #~ msgid "_Sounds while away" #~ msgstr "Afspil _lyde under fravær" - #~ msgid "" #~ "Unable to play sound because the 'Command' sound method has been chosen, " #~ "but no command has been set." #~ msgstr "" #~ "Kunne ikke afspille lyd fordi 'Kommando' lydmetoden er blevet valgt, men " #~ "ingen kommando er blevet sat." - #~ msgid "" #~ "Unable to play sound because the configured sound command could not be " #~ "launched: %s" #~ msgstr "" #~ "Ikke i stand til at afspille lyd fordi den opsatte lydkommando ikke kunne " #~ "køres: %s" - #~ msgid "" #~ "\n" #~ "Status: %s" #~ msgstr "" #~ "\n" #~ "Status: %s" - #~ msgid "" #~ "\n" #~ "Message: %s" #~ msgstr "" #~ "\n" #~ "Besked: %s" - #~ msgid "Unable to initiate a new search" #~ msgstr "Kunne ikke lave en ny søgning" - #~ msgid "You have a pending search. Please wait for it to finish." #~ msgstr "Du har en søgning i gang. Vent til den afslutter." - #~ msgid "%s: %s" #~ msgstr "%s: %s" - #~ msgid "" #~ "Server requires TLS/SSL for login. Select \"Use TLS if available\" in " #~ "account properties" #~ msgstr "" #~ "Server kræevr TLS/SSL til logind. Vælg \"Brug TLS hvis tilgængeligt\" i " #~ "kontoegenskaber" - #~ msgid "Use TLS if available" #~ msgstr "Brug TLS hvis tilgængelig" - #~ msgid "The user %s wants to add %s to his or her buddy list." #~ msgstr "Brugeren %s vil tilføje %s til sin venneliste." - #~ msgid "_Authorize" #~ msgstr "_Godkend" - #~ msgid "_Deny" #~ msgstr "_Nægt" - #~ msgid "%sGeneral
%s" #~ msgstr "%sGenerelt
%s" - #~ msgid "%sSocial
%s" #~ msgstr "%sSocial
%s" - #~ msgid "
Personal
%s" #~ msgstr "
Personlig
%s" - #~ msgid "
Business
%s" #~ msgstr "
Erhverv
%s" - #~ msgid "


Contact Info%s%s" #~ msgstr "
Kontaktoplysninger%s%s" - #~ msgid "
%s: " #~ msgstr "
%s: " - #~ msgid "Login server" #~ msgstr "Indlogningsserver" - #~ msgid "The user %s (%s) wants to add %s to his or her buddy list." #~ msgstr "Brugeren %s (%s) vil tilføje %s til sin venneliste." - #~ msgid "Unable to read header from server" #~ msgstr "Kunne ikke hente hoved fra server" - #~ msgid "" #~ "Unable to read message from server: %s. Command is %hd, length is %hd." #~ msgstr "" #~ "Kunne ikke læse besked fra server: %s. Kommando er %hd, længde er %hd." - #~ msgid "users: %s, files: %s, size: %sGB" #~ msgstr "brugere: %s, filer: %s, størrelse: %sGB" - #~ msgid "Unable to add \"%s\" to your Napster hotlist" #~ msgstr "Kunne ikke tilføje \"%s\" til din Napster hotlist" - #~ msgid "%s requested a PING" #~ msgstr "%s anmodede om PING" - #~ msgid "NAPSTER Protocol Plugin" #~ msgstr "NAPSTER protokolmodul" - #~ msgid "Direct IM with %s closed" #~ msgstr "Direkte forbindelse til %s lukket" - #~ msgid "Direct IM with %s failed" #~ msgstr "Direkte forbindelse til %s fejlede" - #~ msgid "Unable to open Direct IM" #~ msgstr "Kunne ikke oprette direkte forbindelse" - #~ msgid "You have lost your connection to chat room %s." -#~ msgstr "Du har tabt forbindelsen til chatrummet %s." - +#~ msgstr "Du har tabt forbindelsen til samtalerummet %s." #~ msgid "Chat is currently unavailable" -#~ msgstr "Chat er ikke tilgængelig nu" - +#~ msgstr "Samtale er ikke tilgængelig nu" #~ msgid "" #~ "Transfer of file %s timed out.\n" #~ " Try enabling proxy servers for file transfers in Accounts -> %s -> Edit " #~ "Account -> Advanced." #~ msgstr "" #~ "Overførsel af fil %s overløb tidsgrænsen.\n" -#~ " Prøv at aktivere proxy servere for filoverførsler i Konti -> %s -> " +#~ " Prøv at aktivere proxyservere for filoverførsler i Konti -> %s -> " #~ "Redigér konto -> Avanceret." - #~ msgid "Unable to log into file transfer proxy." #~ msgstr "Kunne ikke logge ind til filoverførselsproxy." - #~ msgid "" #~ "Unable to establish listener socket or no AOL proxy connection present." #~ msgstr "" #~ "Kan ikke etablere lytte sokkel eller ingen AOL proxy forbindelse tilstede." - #~ msgid "" #~ "The user %s requires authorization before being added to a buddy list. " #~ "Do you want to send an authorization request?" #~ msgstr "" #~ "Brugeren %s kræver godkendelse for at blive tilføjet til en venneliste." #~ "Vil du sende en anmodning om godkendelse?" - #~ msgid "Request Authorization" #~ msgstr "Anmod om godkendelse" - #~ msgid "_Request Authorization" #~ msgstr "_Anmod om godkendelse" - #~ msgid "" #~ "The user %u wants to add %s to their buddy list for the following " #~ "reason:\n" @@ -15053,55 +13905,40 @@ #~ msgstr "" #~ "Brugeren %u vil tilføje %s til sin venneliste af følgende grund:\n" #~ "%s" - #~ msgid "Authorization Request" #~ msgstr "Godkendelse anmodning" - #~ msgid "UIN: %s
Status: %s
%s" #~ msgstr "UIN: %s
Status: %s
%s" - #~ msgid "Auth host" #~ msgstr "Godkendelses server" - #~ msgid "Auth port" #~ msgstr "Godkendelses port" - #~ msgid "" #~ "\n" #~ "Supports: %s" #~ msgstr "" #~ "\n" #~ "Understøtter:: %s" - #~ msgid "Full Name: %s
" #~ msgstr "Fulde navn: %s
" - #~ msgid "Supports: %s
" #~ msgstr "Understøtter: %s
" - #~ msgid "Status: %s" #~ msgstr "Status: %s" - #~ msgid "Wrong Password" #~ msgstr "Forkert adgangskode" - #~ msgid "TOC host" #~ msgstr "TOC Vært" - #~ msgid "TOC port" #~ msgstr "TOC Port" - #~ msgid "Unable to read" #~ msgstr "Kunne ikke læse" - #~ msgid "Pager host" #~ msgstr "Bipper vært" - #~ msgid "YCHT host" #~ msgstr "YCHT vært" - #~ msgid "YCHT port" #~ msgstr "YCHT port" - #~ msgid "g003: Error opening connection.\n" #~ msgstr "g003: Fejl ved oprettelse af forbindelse\n" + diff -r a0668fbf2483 -r b98519a42e53 po/de.po --- a/po/de.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/de.po Mon Mar 02 22:07:59 2009 +0000 @@ -11,9 +11,9 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-02-23 20:26+0100\n" -"PO-Revision-Date: 2009-02-23 19:55+0100\n" -"Last-Translator: Bjoern Voigt \n" +"POT-Creation-Date: 2009-02-25 17:28+0100\n" +"PO-Revision-Date: 2009-02-25 17:28+0100\n" +"Last-Translator: Jochen Kemnade \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7563,6 +7563,9 @@ msgid "

Acknowledgement:
\n" msgstr "

Bestätigung:
\n" +msgid "

Scrupulous Testers:
\n" +msgstr "

Gewissenhafte Tester:
\n" + msgid "

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

Und all die Jungs im Hinterzimmer...
\n" @@ -7588,6 +7591,9 @@ msgid "About OpenQ" msgstr "Über OpenQ" +msgid "Modify Buddy Memo" +msgstr "Buddy-Notiz bearbeiten" + #. *< type #. *< ui_requirement #. *< flags diff -r a0668fbf2483 -r b98519a42e53 po/et.po --- a/po/et.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/et.po Mon Mar 02 22:07:59 2009 +0000 @@ -2258,7 +2258,7 @@ #. * summary #. * description msgid "Tests the ciphers that ship with libpurple." -msgstr "Libpurple'ga kaasasolevate šifrite testimine." +msgstr "libpurple'ga kaasasolevate šifrite testimine." #. *< type #. *< ui_requirement diff -r a0668fbf2483 -r b98519a42e53 po/hu.po --- a/po/hu.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/hu.po Mon Mar 02 22:07:59 2009 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: pidgin 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-04 22:44+0100\n" -"PO-Revision-Date: 2009-01-04 22:42+0100\n" +"POT-Creation-Date: 2009-02-25 03:23+0100\n" +"PO-Revision-Date: 2009-02-25 03:21+0100\n" "Last-Translator: Gabor Kelemen \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" @@ -34,7 +34,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -42,8 +42,8 @@ "%s\n" "Használat: %s [KAPCSOLÓ]…\n" "\n" -" -c, --config=KÖNYVTÁR A KÖNYVTÁR használata a beállítófájlokhoz\n" -" -d, --debug hibakereső üzenetek kiírása a szabványos kimenetre\n" +" -c, --config=KÖNYVTÁR A KÖNYVTÁR használata a beállítófájlokhoz\n" +" -d, --debug hibakereső üzenetek kiírása a szabványos hibakimenetre\n" " -h, --help ezen súgó megjelenítése és kilépés\n" " -n, --nologin ne jelentkezzen be automatikusan\n" " -v, --version az aktuális verzió megjelenítése és kilépés\n" @@ -1163,7 +1163,6 @@ msgid "Change status to" msgstr "Állapot módosítása a következőre" -#. Conversations msgid "Conversations" msgstr "Társalgások" @@ -1485,7 +1484,6 @@ "Ez a bővítmény új társalgás megnyitásakor beszúrja az utolsó társalgást az " "aktuális társalgásba." -#, c-format msgid "Online" msgstr "Elérhető" @@ -1918,7 +1916,6 @@ msgid "Transfer of file %s complete" msgstr "%s fájl átvitele befejeződött" -#, c-format msgid "File transfer complete" msgstr "A fájlátvitel befejeződött" @@ -1926,7 +1923,6 @@ msgid "You canceled the transfer of %s" msgstr "Megszakította %s átvitelét" -#, c-format msgid "File transfer cancelled" msgstr "Fájlátvitel megszakítva" @@ -2134,7 +2130,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "A(z) %s programot használja, de a bővítmény a következőt igényli: %s." -#, c-format msgid "This plugin has not defined an ID." msgstr "A bővítmény nem adott meg azonosítót." @@ -2832,7 +2827,6 @@ msgstr "" "Nem hozható létre kapcsolat a helyi mDNS kiszolgálóval. Egyáltalán fut?" -#. Creating the options for the protocol msgid "First name" msgstr "Utónév" @@ -2864,6 +2858,10 @@ msgid "Purple Person" msgstr "Purple személy" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "Helyi port" + msgid "Bonjour" msgstr "Bonjour" @@ -3027,7 +3025,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "Távol" @@ -3921,7 +3918,6 @@ msgid "Extended Away" msgstr "Nem vagyok a gépnél" -#, c-format msgid "Do Not Disturb" msgstr "Ne zavarjanak" @@ -4668,9 +4664,6 @@ msgid "Select an action" msgstr "Válasszon műveletet" -msgid "Unable to retrieve MSN Address Book" -msgstr "Az MSN címjegyzék nem kérhető le" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it @@ -6124,7 +6117,6 @@ msgid "Error. SSL support is not installed." msgstr "Hiba: az SSL támogatás nincs telepítve." -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "Ez a konferencia le lett zárva. További üzenetek már nem küldhetőek." @@ -6388,23 +6380,18 @@ msgid "Screen Sharing" msgstr "Képernyőmegosztás" -#, c-format msgid "Free For Chat" msgstr "Ráérek csevegni" -#, c-format msgid "Not Available" msgstr "Nem érhető el" -#, c-format msgid "Occupied" msgstr "Elfoglalt" -#, c-format msgid "Web Aware" msgstr "A weben" -#, c-format msgid "Invisible" msgstr "Láthatatlan" @@ -6986,6 +6973,7 @@ msgid "Get AIM Info" msgstr "AIM információk lekérése" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "Partnermegjegyzés szerkesztése" @@ -7096,7 +7084,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "Kapcsolódási kísérlet a következőhöz: %s:%hu." -#, c-format msgid "Attempting to connect via proxy server." msgstr "Kapcsolódási kísérlet proxy kiszolgálón keresztül." @@ -7574,6 +7561,9 @@ msgid "

Acknowledgement:
\n" msgstr "

Köszönetnyilvánítás:
\n" +msgid "

Scrupulous Testers:
\n" +msgstr "

Lelkiismeretes tesztelők:
\n" + msgid "

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

és a háttéremberek...
\n" @@ -7599,6 +7589,9 @@ msgid "About OpenQ" msgstr "Az OpenQ névjegye" +msgid "Modify Buddy Memo" +msgstr "Partnerfeljegyzés módosítása" + #. *< type #. *< ui_requirement #. *< flags @@ -7636,6 +7629,9 @@ msgid "Show server news" msgstr "Kiszolgálóhírek megjelenítése" +msgid "Show chat room when msg comes" +msgstr "Csevegőszoba megjelenítése ha üzenet jön" + msgid "Keep alive interval (seconds)" msgstr "Kapcsolat-fenntartási időköz (mp)" @@ -11390,6 +11386,9 @@ msgid "Macedonian" msgstr "macedón" +msgid "Mongolian" +msgstr "Mongol" + msgid "Bokmål Norwegian" msgstr "Norvég Bokmål" @@ -11504,9 +11503,31 @@ "fájlban. A programra nem biztosítunk garanciát.

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

" -msgstr "" -"IRC: #pidgin az irc.freenode.net hálózaton

" +msgid "" +"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 "" +"Segítség e-mailben (angol): support@pidgin.im

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

" +msgstr "" +"IRC csatorna: #pidgin az irc.freenode.net " +"hálózaton

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

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

" msgid "Current Developers" msgstr "Jelenlegi fejlesztők" @@ -12155,6 +12176,10 @@ msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "Kilépés, mert már fut egy másik libpurple kliens.\n" + msgid "Open All Messages" msgstr "Összes üzenet megnyitása" @@ -12493,6 +12518,10 @@ msgid "No proxy" msgstr "Nincs Proxy" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "Távoli DNS használata SOCKS4 proxykkal" + msgid "_User:" msgstr "_Felhasználó:" @@ -13947,9 +13976,6 @@ msgid "Only when docked" msgstr "Csak ha dokkolt" -msgid "_Flash window when chat messages are received" -msgstr "_Villogtassa az ablakot új csevegésüzenetek fogadásakor" - msgid "Windows Pidgin Options" msgstr "A windowsos Pidin beállításai" diff -r a0668fbf2483 -r b98519a42e53 po/km.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/po/km.po Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,13636 @@ +# translation of pidgin.po to Khmer +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Khoem Sokhem , 2009. +msgid "" +msgstr "" +"Project-Id-Version: pidgin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-27 16:37-0800\n" +"PO-Revision-Date: 2009-02-25 11:49+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: KBabel 1.11.4\n" + +#. Translators may want to transliterate the name. +#. It is not to be translated. +msgid "Finch" +msgstr "បក្សី" + +#, c-format +msgid "%s. Try `%s -h' for more information.\n" +msgstr "%s. Try `%s -h' សម្រាប់​ព័ត៌មានបន្ថែម ។\n" + +#, c-format +msgid "" +"%s\n" +"Usage: %s [OPTION]...\n" +"\n" +" -c, --config=DIR use DIR for config files\n" +" -d, --debug print debugging messages to stderr\n" +" -h, --help display this help and exit\n" +" -n, --nologin don't automatically login\n" +" -v, --version display the current version and exit\n" +msgstr "" +"%s\n" +"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n" +"\n" +" -c, --config=DIR ប្រើ DIR សម្រាប់​ឯកសារ config\n" +" -d, --debug បោះពុម្ព​សារ​បំបាត់​ទៅ stderr\n" +" -h, --help បង្ហាញ​ជំនួយ​នេះ ហើយ​ចេញ\n" +" -n, --nologin កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n" +" -v, --version បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n" + +#, c-format +msgid "" +"%s encountered errors migrating your settings from %s to %s. Please " +"investigate and complete the migration by hand. Please report this error at " +"http://developer.pidgin.im" +msgstr "" +"កំហុស​ដែល​បានជួប​ប្រទះ %s ប្ដូរ​ទៅ​កា​រកំណត់​របស់​អ្នកពី %s ទៅ %s ។ សូម​អង្កេត​ និង​បំពេញ​ការ​ប្ដូរ​ដោយ​ដៃ ។ " +"សូម​រាយការណ៍​កំហុស​នេះ​តាម http://developer.pidgin.im" + +msgid "Error" +msgstr "កំហុស" + +msgid "Account was not added" +msgstr "គណនី​មិន​ត្រូវ​បាន​បន្ថែម​ទេ" + +msgid "Username of an account must be non-empty." +msgstr "ឈ្មោះអ្នក​ប្រើ​របស់​គណនី​​មិនអាច​ទទេ​​នោះទេ ។" + +msgid "New mail notifications" +msgstr "ការ​ជូនដំណឹង​សំបុត្រ​ថ្មី" + +msgid "Remember password" +msgstr "ចងចាំ​ពាក្យ​សម្ងាត់" + +msgid "There are no protocol plugins installed." +msgstr "គ្មានកម្មវិធី​ជំនួយ​ពិធីការ​ត្រូវ​បាន​ដំឡើង​នោះ​ទេ ។" + +msgid "(You probably forgot to 'make install'.)" +msgstr "(អ្នកប្រហែលជា​ភ្លេច 'make install' ។)" + +msgid "Modify Account" +msgstr "កែប្រែ​គណនី" + +msgid "New Account" +msgstr "គណនី​ថ្មី" + +msgid "Protocol:" +msgstr "ពិធីការ ៖" + +msgid "Username:" +msgstr "ឈ្មោះ​អ្នក​ប្រើ ៖" + +msgid "Password:" +msgstr "ពាក្យ​សម្ងាត់ ៖" + +msgid "Alias:" +msgstr "ឈ្មោះ​ក្លែងក្លាយ ៖" + +#. Register checkbox +msgid "Create this account on the server" +msgstr "បង្កើត​គណនី​នេះ​នៅ​លើ​ម៉ាស៊ីនបម្រើ" + +#. Cancel button +#. Cancel +msgid "Cancel" +msgstr "បោះបង់" + +#. Save button +#. Save +msgid "Save" +msgstr "រក្សា​​ទុក​​" + +#, c-format +msgid "Are you sure you want to delete %s?" +msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប %s?" + +msgid "Delete Account" +msgstr "លុប​គណនី" + +#. Delete button +msgid "Delete" +msgstr "លុប" + +msgid "Accounts" +msgstr "គណនី" + +msgid "You can enable/disable accounts from the following list." +msgstr "អ្នក​អាច​បិទ/បើក​គណនី​ពី​បញ្ជីដូច​ខាងក្រោម ។" + +#. Add button +msgid "Add" +msgstr "បន្ថែម" + +#. Modify button +msgid "Modify" +msgstr "កែប្រែ" + +#, c-format +msgid "%s%s%s%s has made %s his or her buddy%s%s" +msgstr "%s%s%s%s បាន​ធ្វើ %s មិត្តភក្ដិ​​របស់​គាត់ %s%s" + +msgid "Add buddy to your list?" +msgstr "បន្ថែម​មិត្តភក្ដិ​ទៅ​កាន់​បញ្ជីរបស់​អ្នក ?" + +#, c-format +msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s" +msgstr "%s%s%s%s ចង់​បន្ថែម %s ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​គាត់ %s%s" + +msgid "Authorize buddy?" +msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់មិត្តភក្ដិ ?" + +msgid "Authorize" +msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Deny" +msgstr "បដិសេធ" + +#, c-format +msgid "" +"Online: %d\n" +"Total: %d" +msgstr "" +"លើ​បណ្ដាញ ៖ %d\n" +"សរុប ៖ %d" + +#, c-format +msgid "Account: %s (%s)" +msgstr "គណនី ៖ %s (%s)" + +#, c-format +msgid "" +"\n" +"Last Seen: %s ago" +msgstr "" +"\n" +"បានឃើញចុងក្រោយ ៖ %s ago" + +msgid "Default" +msgstr "លំនាំដើម" + +msgid "You must provide a username for the buddy." +msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ឈ្មោះ​អ្នក​ប្រោះ​សម្រាប់​មិត្តភក្ដិ ។" + +msgid "You must provide a group." +msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ក្រុម​មួយ ។" + +msgid "You must select an account." +msgstr "អ្នក​ត្រូវតែ​ជ្រើស​គណនី​មួយ ។" + +msgid "The selected account is not online." +msgstr "គណនី​ដែល​បាន​ជ្រើស​មិននៅ​លើបណ្ដាញទេ ។" + +msgid "Error adding buddy" +msgstr "កំហុ​សក្នុងកា​របន្ថែម​មិត្តភក្ដិ" + +msgid "Username" +msgstr "ឈ្មោះ​អ្នក​ប្រើ" + +msgid "Alias (optional)" +msgstr "ឈ្មោះ​ក្លែងក្លាយ (ជម្រើស)" + +msgid "Add in group" +msgstr "បន្ថែម​ក្នុងក្រុម" + +msgid "Account" +msgstr "គណនី" + +msgid "Add Buddy" +msgstr "បន្ថែម​មិត្តភក្ដិ" + +msgid "Please enter buddy information." +msgstr "សូម​បញ្ចូល​ព័ត៌មាន​របស់មិត្តភក្ដិ ។" + +msgid "Chats" +msgstr "ជជែក" + +#. Extract their Name and put it in +msgid "Name" +msgstr "ឈ្មោះ" + +msgid "Alias" +msgstr "ឈ្មោះ​ក្លែងក្លាយ" + +msgid "Group" +msgstr "ក្រុម" + +msgid "Auto-join" +msgstr "ចូល​ស្វ័យ​ប្រវត្តិ" + +msgid "Add Chat" +msgstr "បន្ថែម​ការ​ជជែក" + +msgid "You can edit more information from the context menu later." +msgstr "អ្នក​អាច​កែសម្រួល​ព័ត៌មាន​បន្ថែម​ពី​ម៉ឺនុយ​បរិបទ​នៅ​ពេល​ក្រោយ ។" + +msgid "Error adding group" +msgstr "កំហុស​ក្នុងការ​បន្ថែម​ក្រុម" + +msgid "You must give a name for the group to add." +msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ឈ្មោះ​សម្រាប់​ក្រុម​ដែល​ត្រូវ​បន្ថែម ។" + +msgid "Add Group" +msgstr "បន្ថែម​ក្រុម" + +msgid "Enter the name of the group" +msgstr "បញ្ចូល​ឈ្មោះ​​ក្រុម" + +msgid "Edit Chat" +msgstr "កែ​សម្រួល​ការ​ជជែក" + +msgid "Please Update the necessary fields." +msgstr "សូម​ធ្វើ​ឲ្យ​វាល​ដែល​ចាំបាច់​ទាន់សម័យ ។" + +msgid "Edit" +msgstr "កែ​សម្រួល" + +msgid "Edit Settings" +msgstr "កែសម្រួល​ការ​កំណត់" + +msgid "Information" +msgstr "ព័ត៌មាន" + +msgid "Retrieving..." +msgstr "កំពុង​ទៅ​យក..." + +msgid "Get Info" +msgstr "យក​ព័ត៌មាន" + +msgid "Add Buddy Pounce" +msgstr "បន្ថែមក្រុម​មិត្តភក្ដិ​" + +msgid "Send File" +msgstr "ផ្ញើ​ឯកសារ" + +msgid "Blocked" +msgstr "បានទប់ស្កាត់" + +msgid "Show when offline" +msgstr "បង្ហាញ​​នៅពេល​នៅ​ក្រៅបណ្ដាញ" + +#, c-format +msgid "Please enter the new name for %s" +msgstr "សូម​បញ្ចូល​ឈ្មោះថ្មី​សម្រាប់ %s" + +msgid "Rename" +msgstr "ប្តូរ​​ឈ្មោះ​" + +msgid "Set Alias" +msgstr "កំណត់​ឈ្មោះ​ក្លែងក្លាយ" + +msgid "Enter empty string to reset the name." +msgstr "បញ្ចូល​ខ្សែអក្សរ​ទទេ​ ដើម្បី​កំណត់​ឈ្មោះ​ឡើង​វិញ ។" + +msgid "Removing this contact will also remove all the buddies in the contact" +msgstr "យក​ទំនាក់ទំនង​នេះ​ចេញ នឹង​យក​មិត្តភក្ដិ​ទាំង​អស់​ចេញ​នៅ​ក្នុង​ទំនាក់ទំនង" + +msgid "Removing this group will also remove all the buddies in the group" +msgstr "យក​ក្រុម​នេះ​ចេញនឹង​យក​មិត្តភក្ដិ​ទាំង​អស់​ចេញ​នៅ​ក្នុង​ក្រុម" + +#, c-format +msgid "Are you sure you want to remove %s?" +msgstr "តើ​​អ្នក​ប្រាកដ​ជា​ចង់​យក %s ចេញ​ឬ ?" + +#. XXX: anything to do with the returned ui-handle? +msgid "Confirm Remove" +msgstr "អះអាង​ការ​យក​ចេញ" + +msgid "Remove" +msgstr "យក​ចេញ" + +#. Buddy List +msgid "Buddy List" +msgstr "បញ្ជី​មិត្តភក្ដិ" + +msgid "Place tagged" +msgstr "បានដាក់​ស្លាក​កន្លែង" + +msgid "Toggle Tag" +msgstr "បិទ/បើក​ស្លាក" + +msgid "View Log" +msgstr "មើល​កំណត់ហេតុ" + +#. General +msgid "Nickname" +msgstr "សម្មតិនាម" + +#. Never know what those translations might end up like... +#. Idle stuff +msgid "Idle" +msgstr "ទំនេរ" + +msgid "On Mobile" +msgstr "នៅពេល​ចល័ត" + +msgid "New..." +msgstr "ថ្មី​..." + +msgid "Saved..." +msgstr "បាន​រក្សាទុក..." + +msgid "Plugins" +msgstr "កម្មវិធី​ជំនួយ" + +msgid "Block/Unblock" +msgstr "ទប់ស្កាត់/មិនទប់ស្កាត់" + +msgid "Block" +msgstr "ទប់ស្កាត់" + +msgid "Unblock" +msgstr "មិនទប់ស្កាត់" + +msgid "" +"Please enter the username or alias of the person you would like to Block/" +"Unblock." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះក្លែងក្លាយ​​របស់មនុស្ស ដែល​អ្នក​ចង់​ទប់ស្កាត់/មិនទប់ស្កាត់ ។" + +#. Not multiline +#. Not masked? +#. No hints? +msgid "OK" +msgstr "យល់ព្រម" + +msgid "New Instant Message" +msgstr "សារ​បន្ទាន់​ថ្មី" + +msgid "Please enter the username or alias of the person you would like to IM." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ ដែលអ្នក​ចង់​ IM ។" + +msgid "Channel" +msgstr "ឆានែល" + +msgid "Join a Chat" +msgstr "ចូលរួម​ក្នុងការ​ជជែក" + +msgid "Please enter the name of the chat you want to join." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​នៃ​ការ​ជជែក​ដែល​អ្នកចង់​ចូលរួម ។" + +msgid "Join" +msgstr "ចូលរួម" + +msgid "" +"Please enter the username or alias of the person whose log you would like to " +"view." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ដែល​អ្នក​ចង់​មើល ។" + +#. Create the "Options" frame. +msgid "Options" +msgstr "ជម្រើស​" + +msgid "Send IM..." +msgstr "ផ្ញើ IM..." + +msgid "Block/Unblock..." +msgstr "ទប់ស្កាត់/មិនទប់ស្កាត់..." + +msgid "Join Chat..." +msgstr "ចូលរួមការ​​ជជែក..." + +msgid "View Log..." +msgstr "មើល​កំណត់​ហេតុ..." + +msgid "View All Logs" +msgstr "មើល​កំណត់ហេតុ​ទាំង​អស់" + +msgid "Show" +msgstr "បង្ហាញ​" + +msgid "Empty groups" +msgstr "សម្អាត​ក្រុម" + +msgid "Offline buddies" +msgstr "មិត្តភក្ដិ​ក្រៅ​បណ្តាញ" + +msgid "Sort" +msgstr "ត​ម្រៀប​" + +msgid "By Status" +msgstr "តាម​ស្ថានភាព" + +msgid "Alphabetically" +msgstr "តាម​អក្ខរក្រម" + +msgid "By Log Size" +msgstr "តាម​ទំហំ​កំណត់​ហេតុ" + +msgid "Buddy" +msgstr "មិត្តភក្ដិ" + +msgid "Chat" +msgstr "ជជែក" + +msgid "Grouping" +msgstr "ការ​ដាក់ជា​ក្រុម" + +msgid "Certificate Import" +msgstr "នាំចូល​វិញ្ញាបនបត្រ" + +msgid "Specify a hostname" +msgstr "បញ្ជាក់​ឈ្មោះ​ម៉ាស៊ីន" + +msgid "Type the host name this certificate is for." +msgstr "វាយ​ឈ្មោះ​ម៉ាស៊ីន​នៃ​វិញ្ញាបនបត្រ​នេះ​គឺ​សម្រាប់ ។" + +#, c-format +msgid "" +"File %s could not be imported.\n" +"Make sure that the file is readable and in PEM format.\n" +msgstr "" +"ឯកសារ %s មិនអាច​ត្រូវ​បាននាំចូល​ទេ ។\n" +"សូម​ប្រាកដ​ថា​ឯកសារ​អាច​អាន​បាន ហើយ​មាន​ទ្រង់ទ្រាយជា PEM ។\n" + +msgid "Certificate Import Error" +msgstr "កំហុស​ក្នុងកា​រនាំ​វិញ្ញាបនបត្រ​ចូល" + +msgid "X.509 certificate import failed" +msgstr "បានបរាជ័យ​ក្នុង​ការ​នាំចូល​វិញ្ញាបនបត្រ X.509" + +msgid "Select a PEM certificate" +msgstr "ជ្រើស​វិញ្ញាបនបត្រ PEM" + +#, c-format +msgid "" +"Export to file %s failed.\n" +"Check that you have write permission to the target path\n" +msgstr "" +"បានបរាជ័យ​ក្នុងការនាំចេញ %s ។\n" +"ពិនិត្យ​ថា អ្នក​មាន​សិទ្ធិ​សរសេរ​ទៅ​កាន់​ផ្លូវគោលដៅ\n" + +msgid "Certificate Export Error" +msgstr "កំហុស​ក្នុងការ​នាំវិញ្ញាបនបត្រ​ចេញ" + +msgid "X.509 certificate export failed" +msgstr "បាន​បរាជ័យ​ក្នុងការ​នាំវិញ្ញាបនបត្រ X.509 ចេញ" + +msgid "PEM X.509 Certificate Export" +msgstr "នាំវិញ្ញាបនបត្រ PEM X.509 ចេញ" + +#, c-format +msgid "Certificate for %s" +msgstr "វិញ្ញាបនបត្រ %s" + +#, c-format +msgid "" +"Common name: %s\n" +"\n" +"SHA1 fingerprint:\n" +"%s" +msgstr "" +"ឈ្មោះ​ធម្មតា ៖ %s\n" +"\n" +"ស្នាម្រាមដៃ SHA1 ៖\n" +"%s" + +msgid "SSL Host Certificate" +msgstr "វិញ្ញាបនបត្រ SSL Host" + +#, c-format +msgid "Really delete certificate for %s?" +msgstr "ពិតជា​ចង់​លុប​វិញ្ញាបនបត្រសម្រាប់ %s ឬ ?" + +msgid "Confirm certificate delete" +msgstr "អះអាង​ការ​លុប​វិញ្ញាបនបត្រ" + +msgid "Certificate Manager" +msgstr "កម្មវិធី​គ្រប់គ្រង​វិញ្ញាបនបត្រ" + +#. Creating the user splits +msgid "Hostname" +msgstr "ឈ្មោះ​ម៉ាស៊ីន" + +msgid "Info" +msgstr "ព័ត៌មាន" + +#. Close button +msgid "Close" +msgstr "បិទ​" + +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#, c-format +msgid "%s disconnected." +msgstr "បាន​ផ្ដាច់ %s ។" + +#, c-format +msgid "" +"%s\n" +"\n" +"Finch will not attempt to reconnect the account until you correct the error " +"and re-enable the account." +msgstr "" +"%s\n" +"\n" +"បក្សី​នឹង​មិន​ប៉ុនប៉ង​តភ្ជាប់​គណនី​ឡើង​វិញ រហូត​ដល់​អ្នក​កែ​ និង​បើក​គណនី​ឡើង​វិញ ។" + +msgid "Re-enable Account" +msgstr "បើក​គណនី​ឡើង​វិញ" + +msgid "" +"The account has disconnected and you are no longer in this chat. You will be " +"automatically rejoined in the chat when the account reconnects." +msgstr "" +"គណនី​​បាន​ផ្ដាច់ ហើយ​អ្នក​មិន​នៅ​ក្នុង​ការ​ជជែក​នេះ​ទៀតទេ ។ អ្នក​នឹង​ត្រូវ​បានចូល​ឡើង​វិញ​ដោយ​ស្វ័យ​ប្រវត្តិ​នៅ​" +"ក្នុងការ​ជជែក នៅពេល​អ្នក​តភ្ជាប់គណនី​នេះ​ឡើង​វិញ ។" + +msgid "No such command." +msgstr "គ្មានពាក្យ​បញ្ជា​បែបនេះទេ ។" + +msgid "Syntax Error: You typed the wrong number of arguments to that command." +msgstr "កំហុស​វាក្យសម្ព័ន្ធ ៖ អ្នកបានវាយ​​ចំនួន​អាគុយម៉ង់​មិន​ត្រឹមត្រូវ​ចំពោះ​ពាក្យ​បញ្ជា​នោះ​ទេ ។" + +msgid "Your command failed for an unknown reason." +msgstr "ពាក្យ​បញ្ជា​របស់​អ្នកបានបរាជ័យ​ដោយ​សារ​មិនស្គាល់​ហេតុផល ។" + +msgid "That command only works in chats, not IMs." +msgstr "ពាក្យ​បញ្ជា​នោះ​ដំណើរតែ​នៅក្នុងការ​ជជែក​ប៉ុណ្ណោះ មិនមែន IMs ។" + +msgid "That command only works in IMs, not chats." +msgstr "ពាក្យ​បញ្ជា​នោះ​ដំណើរការ​តែ​នៅ​ក្នុង IMs ប៉ុណ្ណោះ មិននៅ​ក្នុងកា​រជជែក​ទេ ។" + +msgid "That command doesn't work on this protocol." +msgstr "ពាក្យ​បញ្ជា​នោះ​មិនដំណើរការ​នៅ​លើ​ពិធីការ​នេះ​ទេ ។" + +msgid "Message was not sent, because you are not signed on." +msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​អ្នក​មិនបាន​ចូលទេ ។" + +#, c-format +msgid "%s (%s -- %s)" +msgstr "%s (%s -- %s)" + +#, c-format +msgid "%s [%s]" +msgstr "%s [%s]" + +#, c-format +msgid "" +"\n" +"%s is typing..." +msgstr "" +"\n" +"%s កំពុង​វាយ..." + +msgid "You have left this chat." +msgstr "អ្នក​បាន​ចេញ​ពី​កា​រជជែក​នេះ​ហើយ ។" + +msgid "Logging started. Future messages in this conversation will be logged." +msgstr "បាន​ចាប់ផ្ដើម​ចុះ​កំណត់ហេតុ ។ សារ​បន្តទៀត​នៅ​ក្នុង​ការ​សន្ទនា​នឹង​ត្រូវ​បាន​ចុះ​កំណត់ហេតុ ។" + +msgid "" +"Logging stopped. Future messages in this conversation will not be logged." +msgstr "បានបញ្ចប់​ការ​ចុះ​កំណត់ហេតុ ។ សារ​បន្តបន្ទាប់​ទៀត​នៅ​ក្នុងកា​រសន្ទនា​នឹង​មិន​ត្រូវ​បាន​ចុះកំណត់ហេតុទេ ។" + +msgid "Send To" +msgstr "ផ្ញើ​ទៅ" + +msgid "Invite message" +msgstr "សារ​អញ្ជើញ" + +msgid "Invite" +msgstr "អញ្ជើញ" + +msgid "" +"Please enter the name of the user you wish to invite,\n" +"along with an optional invite message." +msgstr "" +"សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នកចង់​អញ្ជើញ\n" +"រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។" + +msgid "Conversation" +msgstr "ការ​សន្ទនា" + +msgid "Clear Scrollback" +msgstr "ជម្រះ​ការ​រមូរ​ថយក្រោយ" + +msgid "Show Timestamps" +msgstr "បង្ហាញ​​ត្រាពេលវេលា" + +msgid "Add Buddy Pounce..." +msgstr "បន្ថែម​ក្រុម​មិត្តភក្ដិ..." + +msgid "Invite..." +msgstr "អញ្ជើញ..." + +msgid "Enable Logging" +msgstr "បើក​ការ​ចុះកំណត់ហេតុ" + +msgid "Enable Sounds" +msgstr "បើក​សំឡេង" + +msgid " " +msgstr " " + +#, c-format +msgid "List of %d user:\n" +msgid_plural "List of %d users:\n" +msgstr[0] "បញ្ជី​អ្នកប្រើ %d ៖\n" + +msgid "Supported debug options are: version" +msgstr "ជម្រើស​បំបាត់កំហុស​ដែល​បានគាំទ្រ​គឺ ៖ កំណែ" + +msgid "No such command (in this context)." +msgstr "គ្មានពាក្យ​បញ្ជា​បែបនេះ​ទេ (នៅ​ក្នុង​បរិបទ​នេះ) ។" + +msgid "" +"Use \"/help <command>\" for help on a specific command.\n" +"The following commands are available in this context:\n" +msgstr "" +"ប្រើ \"/help <command>\" សម្រាប់​ជំនួយ​អំពី​ពាក្យបញ្ជា​ជាក់លាក់ ។\n" +"ពាក្យ​បញ្ជា​ដូច​ខាងក្រោម​អាច​ប្រើ​នៅ​ក្នុង​បរិបទ​នេះ ៖\n" + +#, c-format +msgid "" +"%s is not a valid message class. See '/help msgcolor' for valid message " +"classes." +msgstr "" +"%s មិនមែន​ជា​ថ្នាក់​សារ​ត្រឹមត្រូវ​តែ ។ សូមមើល '/help msgcolor' សម្រាប់ថ្នាក់សារ​ដែល​ត្រឹមត្រូវ ។" + +#, c-format +msgid "%s is not a valid color. See '/help msgcolor' for valid colors." +msgstr "%s មិនមែន​ជា​ពណ៌​ត្រឹមត្រូវ​ទែ ។ សូមមើល '/help msgcolor' សម្រាប់​ពណ៌​ដែល​ត្រឹមត្រូវ ។" + +msgid "" +"say <message>: Send a message normally as if you weren't using a " +"command." +msgstr "និយាយ <message> ៖ ផ្ញើ​សារ​តាម​ធម្មតា ដូច​​ដែល​អ្នក​មិនកំពុង​ប្រើ​ពាក្យ​បញ្ជា ។" + +msgid "me <action>: Send an IRC style action to a buddy or chat." +msgstr "ខ្ញុំ <action> ៖ ផ្ញើ​សកម្មភាព​រចនាប័ទ្ម IRC ទៅកាន់មិត្តភក្ដិ ឬ​ការ​ជជែក ។" + +msgid "" +"debug <option>: Send various debug information to the current " +"conversation." +msgstr "បំបាត់​កំហុស <option> ៖ ផ្ញើ​ព័ត៌មាន​បំបាត់​កំហុស​ផ្សេងៗ​ទៅកាន់​ការ​សន្ទនា​បច្ចុប្បន្ន ។" + +msgid "clear: Clears the conversation scrollback." +msgstr "ជម្រះ ៖ ជម្រះ​ការ​សន្ទនា ។" + +msgid "help <command>: Help on a specific command." +msgstr "ជំនួយ <command> ៖ ជួយពាក្យ​បញ្ជាក់ជាក់លាក់ ។" + +msgid "users: Show the list of users in the chat." +msgstr "អ្នកប្រើ ៖ បង្ហាញ​បញ្ជីអ្នក​ប្រើ​នៅ​ក្នុងកា​រជជែក ។" + +msgid "plugins: Show the plugins window." +msgstr "កម្មវិធី​ ៖ បង្ហាញ​បង្អួច​កម្មវិធីជំនួយ ។" + +msgid "buddylist: Show the buddylist." +msgstr "បញ្ជីមិត្តភក្ដិ ៖ បង្ហាញ​បញ្ជីមិត្តភក្ដិ ។" + +msgid "accounts: Show the accounts window." +msgstr "គណនី ៖ បង្ហាញ​បង្អួច​គណនី ។" + +msgid "debugwin: Show the debug window." +msgstr "debugwin ៖ បង្ហាញ​បង្អួច​បំបាត់​កំហុស ។" + +msgid "prefs: Show the preference window." +msgstr "prefs ៖ បង្ហាញ​បង្អួច​ចំណូលចិត្ត ។" + +msgid "statuses: Show the savedstatuses window." +msgstr "ស្ថានភាព ៖ បង្ហាញ​បង្អួច​ស្ថានភាព​រក្សាទុក ។" + +msgid "" +"msgcolor <class> <foreground> <background>: Set the color " +"for different classes of messages in the conversation window.
<" +"class>: receive, send, highlight, action, timestamp
<foreground/" +"background>: black, red, green, blue, white, gray, darkgray, magenta, " +"cyan, default

EXAMPLE:
msgcolor send cyan default" +msgstr "" +"msgcolor <class> <foreground> <background>  កំណត់ពណ៌​សម្រាប់ថ្នាក់​" +"ផ្សេងៗ​របស់​សារ​នៅ​ក្នុង​បង្អួច​សន្ទនា ។
<class> ៖ ទទួល ផ្ញើ បន្លិច សកម្មភាព " +"ត្រាពេលវេលា
<foreground/background> ៖ ខ្មៅ ក្រហម បៃតង ស ប្រផេះ ប្រផេះ​" +"ដិត ស្វាយ ផ្ទៃមេឃ លំនាំដើម

ឧទាហរណ៍ ៖
msgcolor ផ្ញើ​ពណ៌​ផ្ទៃមេឃ​លំនាំដើម" + +msgid "Unable to open file." +msgstr "មិនអាច​បើក​ឯកសារ​បានទេ ។" + +msgid "Debug Window" +msgstr "បង្អួច​បំបាត់​កំហុស" + +#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now +#. * it's necessary to make the width of the debug window resizable ... like I said, +#. * it doesn't make sense. The bug is likely in the packing in gntbox.c. +#. +msgid "Clear" +msgstr "ជម្រះ" + +msgid "Filter:" +msgstr "តម្រង ៖" + +msgid "Pause" +msgstr "ផ្អាក" + +#, c-format +msgid "File Transfers - %d%% of %d file" +msgid_plural "File Transfers - %d%% of %d files" +msgstr[0] "ការ​ផ្ទេរ​ឯកសារ - ឯកសារ %d%% នៃ %d" + +#. Create the window. +msgid "File Transfers" +msgstr "ផ្ទេរ​ឯកសារ" + +msgid "Progress" +msgstr "វឌ្ឍនភាព" + +msgid "Filename" +msgstr "ឈ្មោះ​ឯកសារ" + +msgid "Size" +msgstr "ទំហំ" + +msgid "Speed" +msgstr "ល្បឿន" + +msgid "Remaining" +msgstr "នៅ​សល់" + +#. XXX: Use of ggp_str_to_uin() is an ugly hack! +msgid "Status" +msgstr "ស្ថានភាព" + +msgid "Close this window when all transfers finish" +msgstr "បិទ​បង្អួច​នេះ​នៅពេល​ការ​ផ្ទេរ​ទាំង​អស់​ចប់" + +msgid "Clear finished transfers" +msgstr "ជម្រះ​ការ​ផ្ទេរ​ដែល​ចប់" + +msgid "Stop" +msgstr "បញ្ឈប់" + +msgid "Waiting for transfer to begin" +msgstr "រង់ចាំ​ការ​ផ្ទេរ​ចាប់ផ្ដើម" + +msgid "Canceled" +msgstr "បានបោះបង់" + +msgid "Failed" +msgstr "បាន​បរាជ័យ" + +#, c-format +msgid "%.2f KiB/s" +msgstr "%.2f KiB/s" + +msgid "Sent" +msgstr "បានផ្ញើ" + +msgid "Received" +msgstr "បាន​ទទួល" + +msgid "Finished" +msgstr "បាន​បញ្ចប់" + +#, c-format +msgid "The file was saved as %s." +msgstr "ឯកសារ​ត្រូវ​បាន​រក្សាទុក​ជា %s ។" + +msgid "Sending" +msgstr "ការ​ផ្ញើ" + +msgid "Receiving" +msgstr "ការ​ទទួល" + +#, c-format +msgid "Conversation in %s on %s" +msgstr "ការ​សន្ទនា​នៅ​ក្នុង %s លើ %s" + +#, c-format +msgid "Conversation with %s on %s" +msgstr "ការ​សន្ទនា​ជា​មួយ %s នៅ​លើ %s" + +msgid "%B %Y" +msgstr "%B %Y" + +msgid "" +"System events will only be logged if the \"Log all status changes to system " +"log\" preference is enabled." +msgstr "" +"ព្រឹត្តិការណ៍​ប្រព័ន្ធ​នឹង​ត្រូវ​បានចុះ​កំណត់ហេតុ​ តែ​ក្នុងករណី​ដែលចំណូលចិត្ត​ \"ចុះ​កំណត់ហេតុ​កា​រផ្លាស់ប្ដូរ​ស្ថានភាព​​" +"ប្រព័ន្ធ\" ត្រូវ​បានបើក ។" + +msgid "" +"Instant messages will only be logged if the \"Log all instant messages\" " +"preference is enabled." +msgstr "" +"សារ​បន្ទាន់​នឹង​ត្រូវ​បានចុះ​កំណត់ហេតុ​តែ​ក្នុងករណី​ដែល​ចំណូលចិត្ត \"ចុះ​កំណត់ហេតុ​សារ​បន្ទាន់\" ត្រូវ​បាន​បើក ។" + +msgid "" +"Chats will only be logged if the \"Log all chats\" preference is enabled." +msgstr "" +"ការ​ជជែក​នឹង​ត្រូវ​បាន​ចុះ​កំណត់ហេតុ​តែ​ក្នុងករណី​ដែល​ចំណូលចិត្ត​ \"ចុះកំណត់ហេតុ​​ជជែក​ទាំង​អស់\" ត្រូវ​បាន​បើក ។" + +msgid "No logs were found" +msgstr "រក​មិនឃើញ​កំណត់ហេតុ​ទេ" + +msgid "Total log size:" +msgstr "ទំហំ​កំណត់ហេតុ​សរុប ៖" + +#. Search box ********* +msgid "Scroll/Search: " +msgstr "រមូរ/ស្វែងរក ៖ " + +#, c-format +msgid "Conversations in %s" +msgstr "ការ​សន្ទនា​នៅ​ក្នុង %s" + +#, c-format +msgid "Conversations with %s" +msgstr "កា​រសន្ទនា​ជា​មួយ %s" + +msgid "All Conversations" +msgstr "កា​រសន្ទនា​ទាំង​អស់" + +msgid "System Log" +msgstr "​កំណត់ហេតុ​ប្រព័ន្ធ" + +msgid "Emails" +msgstr "អ៊ីមែល" + +msgid "You have mail!" +msgstr "អ្នកមាន​សំបុត្រ !" + +msgid "Sender" +msgstr "អ្នក​ផ្ញើ" + +msgid "Subject" +msgstr "ប្រធាន​បទ" + +#, c-format +msgid "%s (%s) has %d new message." +msgid_plural "%s (%s) has %d new messages." +msgstr[0] "%s (%s) មាន​សារ​ថ្មី %d ។" + +msgid "New Mail" +msgstr "សំបុត្រ​ថ្មីុត្រ" + +#, c-format +msgid "Info for %s" +msgstr "ព័ត៌មាន​សម្រាប់ %s" + +msgid "Buddy Information" +msgstr "ព័ត៌មាន​អំពី​មិត្តភក្ដិ" + +msgid "Continue" +msgstr "បន្ត" + +msgid "IM" +msgstr "IM" + +msgid "(none)" +msgstr "​(គ្មាន)​" + +msgid "URI" +msgstr "URI" + +msgid "ERROR" +msgstr "កំហុស" + +msgid "loading plugin failed" +msgstr "បានបរាជ័យ​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ" + +msgid "unloading plugin failed" +msgstr "បានបរាជ័យ​ក្នុងកា​រមិនផ្ទុក​កម្មវិធី​ជំនួយ" + +#, c-format +msgid "" +"Name: %s\n" +"Version: %s\n" +"Description: %s\n" +"Author: %s\n" +"Website: %s\n" +"Filename: %s\n" +msgstr "" +"ឈ្មោះ ៖ %s\n" +"កំណែ ៖ %s\n" +"សេចក្ដី​ពិពណ៌នា ៖ %s\n" +"អ្នកនិពន្ធ ៖ %s\n" +"តំបន់បណ្ដាញ ៖ %s\n" +"ឈ្មោះ​ឯកសារ ៖ %s\n" + +msgid "Plugin need to be loaded before you can configure it." +msgstr "កម្មវិធី​ជំនួយ​ត្រូវ​បានផ្ទុក​មុន​នឹង​អ្នក​អាច​កំណត់​រចនាសម្ព័ន្ធ ។" + +msgid "No configuration options for this plugin." +msgstr "គ្មាន​ជម្រើស​កំណត់​រចនាសម្ព័ន្ធ​សម្រាប់​កម្មវិធី​ជំនួយ​នេះ​ទេ ។" + +msgid "Error loading plugin" +msgstr "កំហុស​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ" + +msgid "The selected file is not a valid plugin." +msgstr "ឯកសារ​ដែលបាន​ជ្រើស​មិន​មែនជា​កម្មវិធី​ជំនួយ​ត្រឹមត្រូវ​ទេ ។" + +msgid "" +"Please open the debug window and try again to see the exact error message." +msgstr "សូម​បើក​បង្អួច​បំបាត់​កំហុស ហើយ​ព្យាយាម​មើល​សារ​កំហុស​ជាក់លាក់ ។" + +msgid "Select plugin to install" +msgstr "ជ្រើស​កម្មវិធី​ជំនួយ​ត្រូវ​ដំឡើង" + +msgid "You can (un)load plugins from the following list." +msgstr "អ្នកអាច​ផ្ទុក/មិនផ្ទុក​កម្មវិធី​ជំនួយ​ពី​បញ្ជី​ដូច​ខាងក្រោម ។" + +msgid "Install Plugin..." +msgstr "ដំឡើង​កម្មវិធី​ជំនួយ..." + +msgid "Configure Plugin" +msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​ជំនួយ" + +#. copy the preferences to tmp values... +#. * I liked "take affect immediately" Oh well :-( +#. (that should have been "effect," right?) +#. Back to instant-apply! I win! BU-HAHAHA! +#. Create the window +msgid "Preferences" +msgstr "ចំណូលចិត្ត" + +msgid "Please enter a buddy to pounce." +msgstr "សូម​បញ្ចូល​មិត្តភក្តិ​ទៅ​ក្រុម ។" + +msgid "New Buddy Pounce" +msgstr "ក្រុមមិត្តភក្ដិ​ថ្មី" + +msgid "Edit Buddy Pounce" +msgstr "កែសម្រួល​ក្រុម​មិត្តភក្ដិ" + +msgid "Pounce Who" +msgstr "ក្រុមជា​នរណា" + +#. Account: +msgid "Account:" +msgstr "គណនី ៖" + +msgid "Buddy name:" +msgstr "ឈ្មោះ​មិត្តភក្ដិ ៖" + +#. Create the "Pounce When Buddy..." frame. +msgid "Pounce When Buddy..." +msgstr "ដាក់​មិត្តភក្តិ​ជាក្រុម..." + +msgid "Signs on" +msgstr "ចូល" + +msgid "Signs off" +msgstr "ចេញទ" + +msgid "Goes away" +msgstr "ចាកឆ្ងាយ" + +msgid "Returns from away" +msgstr "ត្រឡប់​ពី​ការ​ចាកឆ្ងាយ" + +msgid "Becomes idle" +msgstr "ក្លាយ​ជា​ទំនេរ" + +msgid "Is no longer idle" +msgstr "លែង​ទំនេរ​ទៀត​ហើយ" + +msgid "Starts typing" +msgstr "ចាប់ផ្ដើម​វាយ" + +msgid "Pauses while typing" +msgstr "ផ្អាក​ខណៈពេល​វាយ" + +msgid "Stops typing" +msgstr "ឈប់​វាយ" + +msgid "Sends a message" +msgstr "ផ្ញើ​សារ" + +#. Create the "Action" frame. +msgid "Action" +msgstr "សកម្មភាពើ​" + +msgid "Open an IM window" +msgstr "បើក​​បង្អួច IM" + +msgid "Pop up a notification" +msgstr "កា​រជូនដំណឹង​ពេលលេចឡើង" + +msgid "Send a message" +msgstr "ផ្ញើសារ" + +msgid "Execute a command" +msgstr "ប្រតិបត្តិ​ពាក្យ​បញ្ជា" + +msgid "Play a sound" +msgstr "ចាក់​សំឡេង" + +msgid "Pounce only when my status is not Available" +msgstr "ដាក់​ក្រុម​នៅ​ពេល​ដែល​ស្ថានភាព​របស់​ខ្ញុំ​មិនអាច​ជជែកបាន" + +msgid "Recurring" +msgstr "កើត​ឡើង​វិញ" + +msgid "Cannot create pounce" +msgstr "មិនអាច​បង្កើត​ក្រុម​បានទេ" + +msgid "You do not have any accounts." +msgstr "អ្នក​មិនមាន​គណនី​ទេ ។" + +msgid "You must create an account first before you can create a pounce." +msgstr "អ្នក​ត្រូវតែ​បង្កើត​គណនី​​សិន​មុននឹង​អ្នកអាច​បង្កើត​ក្រុមបាន ។" + +#, c-format +msgid "Are you sure you want to delete the pounce on %s for %s?" +msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​ក្រុម​នៅ​លើ %s សម្រាប់ %s ឬ?" + +msgid "Buddy Pounces" +msgstr "ក្រុមមិត្តភក្ដិ" + +#, c-format +msgid "%s has started typing to you (%s)" +msgstr "%s បាន​ចាប់ផ្ដើម​វាយ​ទៅ​ឲ្យអ្នក (%s)" + +#, c-format +msgid "%s has paused while typing to you (%s)" +msgstr "%s បាន​ផ្អាក ខណៈពេល​វាយ​ទៅ​ឲ្យ​អ្នក (%s)" + +#, c-format +msgid "%s has signed on (%s)" +msgstr "%s បាន​ចុះហត្ថលេខា​លើ (%s)" + +#, c-format +msgid "%s has returned from being idle (%s)" +msgstr "%s បាន​ត្រឡប់​ពី​ស្ថានភាព​ទំនេរ (%s)" + +#, c-format +msgid "%s has returned from being away (%s)" +msgstr "%s បាន​ត្រឡប់​ពី​ស្ថានភាព​ចាកឆ្ងាយ (%s)" + +#, c-format +msgid "%s has stopped typing to you (%s)" +msgstr "%s បាន​ឈប់​វាយ​ទៅ​ឲ្យ​អ្នក (%s)" + +#, c-format +msgid "%s has signed off (%s)" +msgstr "%s បាន​ចេញ (%s)" + +#, c-format +msgid "%s has become idle (%s)" +msgstr "%s បាន​ក្លាយ​ជា​ទំនេរ (%s)" + +#, c-format +msgid "%s has gone away. (%s)" +msgstr "%s មាន​ទៅ​ឆ្ងាយ ។ (%s)" + +#, c-format +msgid "%s has sent you a message. (%s)" +msgstr "%s បាន​ផ្ញើ​សារ​ឲ្យ​អ្នក ។ (%s)" + +#, c-format +msgid "Unknown pounce event. Please report this!" +msgstr "មិនស្គាល់​ព្រឹត្តិការណ៍​ក្រុម ។ សូម​រាយការណ៍​វា !" + +msgid "Based on keyboard use" +msgstr "មាន​មូលដ្ឋាន​លើ​ការ​ប្រើ​ក្ដារចុច" + +msgid "From last sent message" +msgstr "ពី​សារ​ដែល​បាន​ផ្ញើ​ចុងក្រោយ" + +msgid "Never" +msgstr "មិនដែល" + +msgid "Show Idle Time" +msgstr "បង្ហាញ​ពេល​ទំនេរ" + +msgid "Show Offline Buddies" +msgstr "បង្ហាញមិត្តភក្ដិ​ដែល​នៅ​ក្រៅ​បណ្ដាញ" + +msgid "Notify buddies when you are typing" +msgstr "ជូនដំណឹង​មិត្តភក្តិ​ នៅពេល​អ្នក​កំពុង​វាយ" + +msgid "Log format" +msgstr "ទ្រង់ទ្រាយ​កំណត់ហេតុ" + +msgid "Log IMs" +msgstr "ចុះកំណត់​ហេតុ IMs" + +msgid "Log chats" +msgstr "ចុះ​កំណត់ហេតុ​ការ​ជជែក" + +msgid "Log status change events" +msgstr "ចុះកំណត់ហេតុ​ព្រឹត្តិការណ៍​ផ្លាស់ប្ដូរ" + +msgid "Report Idle time" +msgstr "រាយការណ៍​ពេលវេលា​ទំនេរ" + +msgid "Change status when idle" +msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ" + +msgid "Minutes before changing status" +msgstr "ប៉ុន្មាននាទី​មុនពេល​ផ្លាស់ប្ដូរ​ស្ថានភាព" + +msgid "Change status to" +msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅជា" + +msgid "Conversations" +msgstr "កា​រសន្ទនា" + +msgid "Logging" +msgstr "ចុះកំណត់ហេតុ" + +msgid "You must fill all the required fields." +msgstr "អ្នកត្រូវតែ​បំពេញ​វាល​ដែល​ត្រូវការ​ទាំង​អស់ ។" + +msgid "The required fields are underlined." +msgstr "វាល​ដែល​ត្រូវការ​ត្រូវ​បានគូស​បន្ទាត់​ខាង​ក្រោម ។" + +msgid "Not implemented yet." +msgstr "មិន​បាន​អនុវត្ត​នៅ​ឡើយ​ទេ ។" + +msgid "Save File..." +msgstr "រក្សា​​ទុក​ឯកសារ..." + +msgid "Open File..." +msgstr "បើក​ឯកសារ..." + +msgid "Choose Location..." +msgstr "ជ្រើស​ទីតាំង..." + +msgid "Hit 'Enter' to find more rooms of this category." +msgstr "ចុច​គ្រាប់ចុច 'បញ្ចូល (Enter)' ដើម្បី​រក​បន្ទប់​ផ្សេងៗ​ទៀត​នៃ​ប្រភេទ​នេះ ។" + +msgid "Get" +msgstr "យក" + +#. Create the window. +msgid "Room List" +msgstr "បញ្ជី​បន្ទប់" + +msgid "Buddy logs in" +msgstr "មិត្តភក្ដិ​ចូល" + +msgid "Buddy logs out" +msgstr "មិត្តភក្ដិ​ចេញ" + +msgid "Message received" +msgstr "បាន​ទទួល​សារ" + +msgid "Message received begins conversation" +msgstr "បាន​ទទួលសារ​​ចាប់ផ្ដើម​សន្ទនា" + +msgid "Message sent" +msgstr "បាន​ផ្ញើសារ" + +msgid "Person enters chat" +msgstr "មនុស្ស​ចូល​ក្នុងកា​រជជែក" + +msgid "Person leaves chat" +msgstr "មនុស្ស​ចេញ​ពីការ​ជជែក" + +msgid "You talk in chat" +msgstr "អ្នក​និយាយ​នៅ​ក្នុងការ​ជជែក" + +msgid "Others talk in chat" +msgstr "អ្នកផ្សេង​និយាយ​នៅ​ក្នុង​ការ​ជជែក" + +msgid "Someone says your username in chat" +msgstr "មាន​មនុស្ស​ម្នាក់​និយាយ​អំពី​ឈ្មោះអ្នកប្រើ​របស់​អ្នក​នៅ​ក្នុង​ការជជែក" + +msgid "GStreamer Failure" +msgstr "ភាព​បរាជ័យ​របស់ GStreamer" + +msgid "GStreamer failed to initialize." +msgstr "GStreamer បានបរាជ័យ​ក្នុងការ​ចាប់ផ្ដើម ។" + +msgid "(default)" +msgstr "(លំនាំដើម)" + +msgid "Select Sound File ..." +msgstr "ជ្រើស​ឯកសារ​សំឡេង..." + +msgid "Sound Preferences" +msgstr "ចំណូល​ចិត្ត​សំឡេង" + +msgid "Profiles" +msgstr "ទម្រង់" + +msgid "Automatic" +msgstr "ស្វ័យ​​​ប្រវត្តិ" + +msgid "Console Beep" +msgstr "ប៊ីប​កុងសូល" + +msgid "Command" +msgstr "ពាក្យ​​​បញ្ជា​" + +msgid "No Sound" +msgstr "គ្មាន​សំឡេង" + +msgid "Sound Method" +msgstr "វិធីសាស្ត្រ​សំឡេង" + +msgid "Method: " +msgstr "វិធីសាស្ត្រ ៖ " + +#, c-format +msgid "" +"Sound Command\n" +"(%s for filename)" +msgstr "" +"ពាក្យ​សំឡេង\n" +"(%s សម្រាប់​ឈ្មោះ​ឯកសារ)" + +#. Sound options +msgid "Sound Options" +msgstr "ជម្រើស​សំឡេង" + +msgid "Sounds when conversation has focus" +msgstr "សំឡេង នៅពេល​ការ​សន្ទនា​មានការ​ផ្ដោត​" + +msgid "Always" +msgstr "ជានិច្ច" + +msgid "Only when available" +msgstr "តែ​នៅពេលប្រើបាន" + +msgid "Only when not available" +msgstr "តែ​នៅពេល​មិនអាច​ប្រើបាន" + +msgid "Volume(0-100):" +msgstr "កម្រិត​សំឡេង (១-១០០) ៖" + +#. Sound events +msgid "Sound Events" +msgstr "ព្រឹត្តិការណ៍​សំឡេង" + +msgid "Event" +msgstr "ព្រឹត្តិការណ៍" + +msgid "File" +msgstr "ឯកសារ" + +msgid "Test" +msgstr "សាកល្បង" + +msgid "Reset" +msgstr "កំណត់​ឡើង​វិញ" + +msgid "Choose..." +msgstr "ជ្រើស..." + +#, c-format +msgid "Are you sure you want to delete \"%s\"" +msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប \"%s\" ឬ" + +msgid "Delete Status" +msgstr "លុប​ស្ថានភាព" + +msgid "Saved Statuses" +msgstr "ស្ថានភាព​ដែល​បាន​រក្សាទុក" + +msgid "Title" +msgstr "ចំណង​ជើង" + +msgid "Type" +msgstr "ប្រភេទ" + +#. Statuses are almost all the same. Define a macro to reduce code repetition. +#. PurpleStatusPrimitive +#. id - use default +#. name - use default +#. saveable +#. user_settable +#. not independent +#. Attributes - each status can have a message. +msgid "Message" +msgstr "សារ" + +#. Use +msgid "Use" +msgstr "ប្រើ" + +msgid "Invalid title" +msgstr "ចំណង​ជើង​មិនត្រឹមត្រូវ" + +msgid "Please enter a non-empty title for the status." +msgstr "សូម​បញ្ចូល​ចំណង​ជើង​ដែល​​​សម្រាប់ស្ថានភាព ។" + +msgid "Duplicate title" +msgstr "ស្ទួន​ចំណង​ជើង" + +msgid "Please enter a different title for the status." +msgstr "សូម​បញ្ចូល​ចំណង​ជើង​ផ្សេង​សម្រាប់​ស្ថានភាព ។" + +msgid "Substatus" +msgstr "ស្ថានភាព​រង" + +msgid "Status:" +msgstr "ស្ថាន​ភាព ៖" + +msgid "Message:" +msgstr "សារ ៖" + +msgid "Edit Status" +msgstr "កែ​សម្រួល​ស្ថានភាព" + +msgid "Use different status for following accounts" +msgstr "ប្រើ​ស្ថានភាព​ផ្សេង​សម្រាប់​គណនី​ដូច​ខាង​ក្រោម" + +#. Save & Use +msgid "Save & Use" +msgstr "រក្សាទុក​​កា​រប្រើើ" + +msgid "Certificates" +msgstr "វិញ្ញាបនបត្រ" + +msgid "Sounds" +msgstr "សំឡេង" + +msgid "Statuses" +msgstr "ស្ថានភាព" + +msgid "Error loading the plugin." +msgstr "កំហុស​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ ។" + +msgid "Couldn't find X display" +msgstr "មិនអាច​រក​ការ​បង្ហាញ X" + +msgid "Couldn't find window" +msgstr "មិនអាច​​រក​បង្អួច" + +msgid "This plugin cannot be loaded because it was not built with X11 support." +msgstr "កម្មវិធី​ជំនួយ​នេះ​មិនអាច​ត្រូ​វបានផ្ទុក​ទេ ពីព្រោះវា​មិន​ត្រូវ​បាន​ស្ថានបនា​​ដោយ​មានការគាំទ្រ X11 ។" + +msgid "GntClipboard" +msgstr "GntClipboard" + +msgid "Clipboard plugin" +msgstr "កម្មវិធី​ជំនួយការតម្បៀតខ្ទាស់" + +msgid "" +"When the gnt clipboard contents change, the contents are made available to " +"X, if possible." +msgstr "នៅពេល​ផ្លាស់ប្ដូរ​មាតិកា​ក្តារតម្បៀតខ្ទាស់ gnt មាតិកា​អាច​ប្រើបាន​ចំពោះX ប្រសិន​បើ​អាច ។" + +#, c-format +msgid "%s just signed on" +msgstr "%s ទើប​តែ​ចូល" + +#, c-format +msgid "%s just signed off" +msgstr "%s ទើបតែ​ចេញ" + +#, c-format +msgid "%s sent you a message" +msgstr "%s បាន​ផ្ញើសារ​ឲ្យ​អ្នក" + +#, c-format +msgid "%s said your nick in %s" +msgstr "%s បាន​និយាយ​សម្មតិនាម​របស់​អ្នក​នៅ​ក្នុង %s" + +#, c-format +msgid "%s sent a message in %s" +msgstr "%s បាន​ផ្ញើសារ​នៅ​ក្នុង %s" + +msgid "Buddy signs on/off" +msgstr "មិត្តិភក្តិ​បិទ/បើក" + +msgid "You receive an IM" +msgstr "អ្នក​ទទួល​ IM" + +msgid "Someone speaks in a chat" +msgstr "មនុស្ស​ម្នាក់​និយាយ​នៅ​ក្នុងការ​ជជែក" + +msgid "Someone says your name in a chat" +msgstr "មនុស្ស​ម្នាក់​និយាយ​ឈ្មោះ​របស់​អ្នក​នៅ​ក្នុងការ​ជជែក" + +msgid "Notify with a toaster when" +msgstr "ជូន​ដំណឹង​ដោយ​សញ្ញា​​នៅ​ពេល" + +msgid "Beep too!" +msgstr "ប៊ីប​ដែរ !" + +msgid "Set URGENT for the terminal window." +msgstr "កំណត់​ជា​បន្ទាន់ សម្រាប់​បង្អួច​ស្ថានីយ ។" + +msgid "GntGf" +msgstr "GntGf" + +msgid "Toaster plugin" +msgstr "កម្មវិធី​ជំនួយ Toaster" + +#, c-format +msgid "Conversation with %s on %s:
" +msgstr "ការ​សន្ទនា​ជា​មួយ %s នៅ​លើ %s ៖
" + +msgid "History Plugin Requires Logging" +msgstr "កម្មវិធី​ជំនួយ​ប្រវត្តិ​តម្រូវ​ឲ្យ​ចូល​សិន" + +msgid "" +"Logging can be enabled from Tools -> Preferences -> Logging.\n" +"\n" +"Enabling logs for instant messages and/or chats will activate history for " +"the same conversation type(s)." +msgstr "" +"ការ​ចូល​អាច​ត្រូ​វបាន​បើកតាមរយៈ​ម៉ឺនុយ ឧបករណ៍ -> ចំណូល​ចិត្ត -> ការ​ចូល ។\n" +"\n" +"ការ​បើក​កំណត់​ហេតុ​សម្រាប់​សារ​បន្ទាន់ និង​/ឬ​កា​រជជែក​នឹង​ធ្វើ​ឲ្យ​ប្រវត្តិ​សកម្ម​សម្រាប់​ប្រភេទ​ការ​សន្ទនា​" +"ដូចគ្នា ។" + +msgid "GntHistory" +msgstr "GntHistory" + +msgid "Shows recently logged conversations in new conversations." +msgstr "បង្ហាញ​កា​រសន្ទនា​ដែល​បាន​ចូល​បច្ចុប្បន្ន​នៅ​ក្នុងការ​សន្ទនា​ថ្មី ។" + +msgid "" +"When a new conversation is opened this plugin will insert the last " +"conversation into the current conversation." +msgstr "" +"នៅពេល​ការ​សន្ទនា​ថ្មី​ត្រូវ​បានបើក កម្មវិធី​ជំនួយ​នេះ​នឹង​បញ្ចូល​ការ​សន្ទនា​ចុងក្រោយ​ទៅ​ក្នុង​ការ​សន្ទនា​" +"បច្ចុប្បន្ន ។" + +msgid "Online" +msgstr "លើ​បណ្ដាញ" + +msgid "Offline" +msgstr "ក្រៅ​បណ្តាញ" + +msgid "Online Buddies" +msgstr "មិត្តភក្ដិ​លើបណ្ដាញ" + +msgid "Offline Buddies" +msgstr "មិត្តភក្ដិ​ក្រៅ​បណ្តាញ" + +msgid "Online/Offline" +msgstr "លើ​បណ្ដាញ/ក្រៅ​បណ្ដាញ" + +msgid "Meebo" +msgstr "Meebo" + +msgid "No Grouping" +msgstr "គ្មាន​ការ​ដាក់​ជា​ក្រុម" + +msgid "Nested Subgroup" +msgstr "ក្រុម​រង​ខាង​ក្នុង" + +msgid "Nested Grouping (experimental)" +msgstr "ការ​ដាក់​ជា​ក្រុម​ខាង​ក្នុង (ពិសោធន៍)" + +msgid "Provides alternate buddylist grouping options." +msgstr "ផ្ដល់​នូវ​ជម្រើស​ដាក់​ជា​ក្រុម​នូវ​បញ្ជី​មិត្តភក្ដិ​​ជំនួស ។" + +msgid "Lastlog" +msgstr "កំណត់ហេតុ​ចុងក្រោយ" + +#. Translator Note: The "backlog" is the conversation buffer/history. +msgid "lastlog: Searches for a substring in the backlog." +msgstr "កំណត់​ហេតុ​ចុងក្រោយ ៖ ស្វែងរក​ខ្សែអក្សរ​រង​នៅ​ក្នុង​កំណត់ហេតុ​ខ្មៅ ។" + +msgid "GntLastlog" +msgstr "GntLastlog" + +msgid "Lastlog plugin." +msgstr "កម្មវិធី​ជំនួយ​កំណត់ហេតុ​ចុងក្រោយ ។" + +msgid "accounts" +msgstr "គណនី" + +msgid "Password is required to sign on." +msgstr "ត្រូវការ​ពាក្យ​សម្ងាត់​ដើម្បី​ចូល ។" + +#, c-format +msgid "Enter password for %s (%s)" +msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់​សម្រាប់ %s (%s)" + +msgid "Enter Password" +msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់" + +msgid "Save password" +msgstr "រក្សា​​ទុក​​​ពាក្យ​​​សម្ងាត់" + +#, c-format +msgid "Missing protocol plugin for %s" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​​ដែល​បាត់​សម្រាប់ %s" + +msgid "Connection Error" +msgstr "កំហុស​ក្នុងការ​តភ្ជាប់" + +msgid "New passwords do not match." +msgstr "ពាក្យ​សម្ងាត់​ថ្មី​មិនផ្គូផ្គង​ទេ ។" + +msgid "Fill out all fields completely." +msgstr "បំពេញ​វាល​ទាំងអស់​ឲ្យ​ចប់ ។" + +msgid "Original password" +msgstr "ពាក្យ​សម្ងាត់​ដើម" + +msgid "New password" +msgstr "ពាក្យ​សម្ងាត់​ថ្មី" + +msgid "New password (again)" +msgstr "ពាក្យ​សម្ងាត់​ថ្មី (ថ្មី)" + +#, c-format +msgid "Change password for %s" +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ %s" + +msgid "Please enter your current password and your new password." +msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​​បច្ចុប្បន្ន​របស់​អ្នក និង​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក ។" + +#, c-format +msgid "Change user information for %s" +msgstr "ផ្លាស់ប្ដូរ​ព័ត៌មាន​អ្នក​ប្រើ​សម្រាប់ %s" + +msgid "Set User Info" +msgstr "កំណត់​ព័ត៌មាន​អ្នក​ប្រើ" + +msgid "Unknown" +msgstr "មិន​ស្គាល់" + +msgid "Buddies" +msgstr "មិត្តភក្ដិ" + +msgid "buddy list" +msgstr "បញ្ជី​មិត្តភក្ដិ" + +msgid "(DOES NOT MATCH)" +msgstr "(មិន​ផ្គូផ្គង)" + +#. Make messages +#, c-format +msgid "%s has presented the following certificate for just-this-once use:" +msgstr "%s បាន​បង្ហាញ​វិញ្ញាបនបត្រ​សម្រាប់​ការ​ប្រើ​តែ​ម្ដង​នេះ ៖" + +#, c-format +msgid "" +"Common name: %s %s\n" +"Fingerprint (SHA1): %s" +msgstr "" +"ឈ្មោះ​ធម្មតា ៖ %s %s\n" +"ស្នាម​ម្រាមដៃ (SHA1) ៖ %s" + +#. TODO: Find what the handle ought to be +msgid "Single-use Certificate Verification" +msgstr "ការ​ផ្ទៀងផ្ទាត់​វិញ្ញាបនបត្រ​ដែល​ប្រើ​តែ​ម្ដង" + +#. Scheme name +#. Pool name +msgid "Certificate Authorities" +msgstr "អាជ្ញាធរ​វិញ្ញាបនបត្រ" + +#. Scheme name +#. Pool name +msgid "SSL Peers Cache" +msgstr "ឃ្លាំងសម្ងាត់​គូរ SSL" + +#. Make messages +#, c-format +msgid "Accept certificate for %s?" +msgstr "ទទួល​វិញ្ញាបនបត្រ​សម្រាប់ %s?" + +#. TODO: Find what the handle ought to be +msgid "SSL Certificate Verification" +msgstr "កា​រផ្ទៀងផ្ទាត់​វិញ្ញាបនបត្រ SSL" + +#. Number of actions +msgid "Accept" +msgstr "ទទួលរម​" + +msgid "Reject" +msgstr "ច្រានចោលល" + +msgid "_View Certificate..." +msgstr "មើល​វិញ្ញាបនបត្រ..." + +#. Prompt the user to authenticate the certificate +#. vrq will be completed by user_auth +#, c-format +msgid "" +"The certificate presented by \"%s\" is self-signed. It cannot be " +"automatically checked." +msgstr "" +"វិញ្ញាបនបត្រ​បានបង្ហាញ \"%s\" ត្រូវ​បាន​ចុះហត្ថលេខា​ដោយ​ខ្លួន​ឯង ។ វា​​មិនអាច​ត្រូវ​បាន​ត្រួតពិនិត្យ​ដោយ​ស្វ័យ​" +"ប្រវត្តិ​ទេ ។" + +#, c-format +msgid "The certificate chain presented for %s is not valid." +msgstr "ច្រវាក់​វិញ្ញាបនបត្រ​បានបង្ហាញ​សម្រាប់ %s មិន​ត្រឹមត្រូវ​ទេ ។" + +#. TODO: Make this error either block the ensuing SSL +#. connection error until the user dismisses this one, or +#. stifle it. +#. TODO: Probably wrong. +#. TODO: Probably wrong +msgid "SSL Certificate Error" +msgstr "កំហុស​វិញ្ញាបនបត្រ SSL" + +msgid "Invalid certificate chain" +msgstr "ច្រវាក់​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ​ទេ" + +#. vrq will be completed by user_auth +msgid "" +"You have no database of root certificates, so this certificate cannot be " +"validated." +msgstr "" +"អ្នក​មិនមានមូលដ្ឋាន​ទិន្នន័យ​សម្រាប់​វិញ្ញាបនបត្រ root ទេ ដូច្នេះ​វិញ្ញាបនបត្រ​នេះ​មិន​អាច​ត្រូវ​" +"បានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ ។" + +#. vrq will be completed by user_auth +msgid "" +"The root certificate this one claims to be issued by is unknown to Pidgin." +msgstr "វិញ្ញាបនបត្រ root មួយនេះ​ទាមទារ​ឲ្យ​ចេញផ្សាយ​ដោយ​អ្នក​ស្គាល់​ទៅ Pidgin ។" + +#, c-format +msgid "" +"The certificate chain presented by %s does not have a valid digital " +"signature from the Certificate Authority from which it claims to have a " +"signature." +msgstr "" +"ច្រវាក់​វិញ្ញាបនបត្រ​បានបង្ហាញ​ដោយ %s មិនមាន​ហត្ថលេខា​ឌីជីថល​ត្រឹមត្រូវទេ​ពី​អាជ្ញាធរ​វិញ្ញាបនបត្រ ដែល​វា​" +"ទាមទារ​ឲ្យ​មាន​ហត្ថលេខា ។" + +msgid "Invalid certificate authority signature" +msgstr "ហត្ថលេខា​អាជ្ញាធរ​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ" + +#. Prompt the user to authenticate the certificate +#. TODO: Provide the user with more guidance about why he is +#. being prompted +#. vrq will be completed by user_auth +#, c-format +msgid "" +"The certificate presented by \"%s\" claims to be from \"%s\" instead. This " +"could mean that you are not connecting to the service you believe you are." +msgstr "" +"វិញ្ញាបនបត្រ​បានបង្ហាញ​ដោយ \"%s\" ដែល​ទាមទារ​ពី \"%s\" ជំនួស​វិញ ។ វា​អាច​មានន័យ​ថា អ្នក​មិនបាន​" +"តភ្ជាប់​ទៅ​កាន់សេវា​ដែល​អ្នក​ជឿជាក់ ។" + +#. Make messages +#, c-format +msgid "" +"Common name: %s\n" +"\n" +"Fingerprint (SHA1): %s\n" +"\n" +"Activation date: %s\n" +"Expiration date: %s\n" +msgstr "" +"ឈ្មោះ​​ធម្មតា ៖ %s\n" +"\n" +"ស្នាមម្រាមដៃ (SHA1) ៖ %s\n" +"\n" +"កាលបរិច្ឆេទ​ធ្វើ​ឲ្យ​សកម្ម ៖ %s\n" +"កាលបរិច្ឆេទ​ផុត​កំណត់ ៖ %s\n" + +#. TODO: Find what the handle ought to be +msgid "Certificate Information" +msgstr "ព័ត៌មាន​វិញ្ញាបនបត្រ" + +msgid "Registration Error" +msgstr "កំហុស​ក្នុងកា​រចុះឈ្មោះ" + +msgid "Unregistration Error" +msgstr "កំហុស​ក្នុងការ​មិនចុះឈ្មោះ" + +#, c-format +msgid "+++ %s signed on" +msgstr "+++ %s បាន​ចូល" + +#, c-format +msgid "+++ %s signed off" +msgstr "+++ %s បានបិទ" + +msgid "Unknown error" +msgstr "មិនស្គាល់​កំហុស" + +msgid "Unable to send message: The message is too large." +msgstr "មិន​អាច​ផ្ញើសារ​បានទេ ៖ សារ​ធំពេក ។" + +#, c-format +msgid "Unable to send message to %s." +msgstr "មិន​អាច​ផ្ញើ​សារ​ទៅ​កាន់ %s ។" + +msgid "The message is too large." +msgstr "សារ​ធំពេក ។" + +msgid "Unable to send message." +msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ។" + +msgid "Send Message" +msgstr "ផ្ញើសារ" + +msgid "_Send Message" +msgstr "ផ្ញើ​សារ" + +#, c-format +msgid "%s entered the room." +msgstr "%s បាន​ចូល​ក្នុង​បន្ទប់ ។" + +#, c-format +msgid "%s [%s] entered the room." +msgstr "%s [%s] បាន​ចូល​ក្នុង​បន្ទប់ ។" + +#, c-format +msgid "You are now known as %s" +msgstr "ឥឡូវ​អ្នក​ត្រូវ​បាន​ស្គាល់​ជា %s" + +#, c-format +msgid "%s is now known as %s" +msgstr "%s ឥឡូវ​ត្រូវ​បាន​ស្គាល់​ជា %s" + +#, c-format +msgid "%s left the room." +msgstr "%s បាន​ចេញ​ពី​បន្ទប់ ។" + +#, c-format +msgid "%s left the room (%s)." +msgstr "%s បាន​ចេញ​ពី​បន្ទប់ (%s) ។" + +#, c-format +msgid "Failed to get connection: %s" +msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ ៖ %s" + +#, c-format +msgid "Failed to get name: %s" +msgstr "បានបរាជ័យ​ក្នុងការ​ទទួល​ឈ្មោះ ៖ %s" + +#, c-format +msgid "Failed to get serv name: %s" +msgstr "បាន​បរាជ័យ​ក្នុងការ​​បម្រុង​ទុក​ឈ្មោះ ៖ %s" + +msgid "Purple's D-BUS server is not running for the reason listed below" +msgstr "ម៉ាស៊ីនបម្រើ D-BUS របស់ Purple មិន​កំពុង​រត់​ទេ​ ចំពោះ​ហេតុផល​រាយ​នៅ​ខាង​ក្រោម" + +msgid "No name" +msgstr "គ្មាន​ឈ្មោះ" + +msgid "Unable to create new resolver process\n" +msgstr "មិនអាច​បង្កើត​ដំណើរការ​របស់​កម្មវិធី​ដោះស្រាយ​ថ្មី​បាន​ទេ\n" + +msgid "Unable to send request to resolver process\n" +msgstr "មិន​អាច​ផ្ញើ​សំណើ​ទៅកាន់​ដំណើរការ​កម្មវិធី​ដោះស្រាយ​\n" + +#, c-format +msgid "" +"Error resolving %s:\n" +"%s" +msgstr "" +"កំហុស​ក្នុងការ​ដោះស្រាយ %s ៖\n" +"%s" + +#, c-format +msgid "Error resolving %s: %d" +msgstr "កំហុស​ក្នុងការ​ដោះស្រាយ %s ៖ %d" + +#, c-format +msgid "" +"Error reading from resolver process:\n" +"%s" +msgstr "" +"កំហុស​ក្នុងការ​អាន​ពី​ដំណើរការ​កម្មវិធីដោះស្រាយ ៖\n" +"%s" + +#, c-format +msgid "Resolver process exited without answering our request" +msgstr "ដំណើរការ​របស់​កម្មវិធី​ដោះស្រាយ​បានចេញ ដោយ​មិនបាន​ឆ្លើយ​សំណើ​របស់​ពួកយើង​ទេ" + +#, c-format +msgid "Thread creation failure: %s" +msgstr "បានបរាជ័យ​ក្នុងការ​បង្កើត​ខ្សែស្រឡាយ ៖ %s" + +msgid "Unknown reason" +msgstr "មិនស្គាល់​ហេតុផល" + +#, c-format +msgid "" +"Error reading %s: \n" +"%s.\n" +msgstr "" +"កំហុស​ក្នុងការ​អាន %s ៖ \n" +"%s.\n" + +#, c-format +msgid "" +"Error writing %s: \n" +"%s.\n" +msgstr "" +"កំហុស​ក្នុងការ​សរសេរ %s ៖ \n" +"%s.\n" + +#, c-format +msgid "" +"Error accessing %s: \n" +"%s.\n" +msgstr "" +"កំហុស​ក្នុងការ​ចូលដំណើរការ %s ៖ \n" +"%s.\n" + +msgid "Directory is not writable." +msgstr "ថត​មិនអាច​សរសេរ​បានទេ ។" + +msgid "Cannot send a file of 0 bytes." +msgstr "មិនអាច​ផ្ញើ​ឯកសារ​ប្រភេទ​សូន្យ​បានទេ ។" + +msgid "Cannot send a directory." +msgstr "មិនអាច​ផ្ញើ​ថត​បាន​ទេ ។" + +#, c-format +msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n" +msgstr "%s មិន​មែន​ជា​ឯកសារ​ធម្មតា ។ ដោយ​កំសាក​បដិសេធ​​ក្នុងការ​សរសេរ​ជាន់​លើ​វា ។\n" + +#, c-format +msgid "%s wants to send you %s (%s)" +msgstr "%s ចង់​ផ្ញើ​ឲ្យ​អ្នក %s (%s)" + +#, c-format +msgid "%s wants to send you a file" +msgstr "%s ចង់​ផ្ញើ​ឯកសារ​ឲ្យ​អ្នក" + +#, c-format +msgid "Accept file transfer request from %s?" +msgstr "ទទួល​យក​សំណើ​ផ្ទេរ​ឯកសារ​ពី %s?" + +#, c-format +msgid "" +"A file is available for download from:\n" +"Remote host: %s\n" +"Remote port: %d" +msgstr "" +"មាន​ឯកសារ​សម្រាប់​ទាញយក​ពី ៖\n" +"ម៉ាស៊ីន​ពី​ចម្ងាយ ៖ %s\n" +"ច្រក​ពី​ចម្ងាយ ៖ %d" + +#, c-format +msgid "%s is offering to send file %s" +msgstr "%s កំពុង​ផ្ដល់​ដើម្បី​ផ្ញើ​ឯកសារ %s" + +#, c-format +msgid "%s is not a valid filename.\n" +msgstr "%s មិនមែន​ជា​ឈ្មោះ​ឯកសារ​ត្រឹមត្រូវ​ទេ ។\n" + +#, c-format +msgid "Offering to send %s to %s" +msgstr "ផ្ដល់​ដើម្បី​ផ្ញើ %s ទៅឲ្យ %s" + +#, c-format +msgid "Starting transfer of %s from %s" +msgstr "ចាប់ផ្ដើម​ផ្ទេរ %s ពី %s" + +#, c-format +msgid "Transfer of file %s complete" +msgstr "ផ្ទេរ​ឯកសារ %s ចប់​ហើយ" + +msgid "File transfer complete" +msgstr "ការ​ផ្ទេរ​ឯកសារ​ចប់ហើយ" + +#, c-format +msgid "You canceled the transfer of %s" +msgstr "អ្នក​បានបោះបង់​ការ​ផ្ទេរ %s" + +msgid "File transfer cancelled" +msgstr "បាន​បោះបង់​ការ​ផ្ទេរ​ឯកសារ" + +#, c-format +msgid "%s canceled the transfer of %s" +msgstr "%s បានបោះបង់​ការ​ផ្ទេរ %s" + +#, c-format +msgid "%s canceled the file transfer" +msgstr "%s បាន​បោះបង់​ការ​ផ្ទេរ​ឯកសារ" + +#, c-format +msgid "File transfer to %s failed." +msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទេរ​ទៅ​កាន់ %s ។" + +#, c-format +msgid "File transfer from %s failed." +msgstr "បាន​បរាជ័យ​ក្នុងការ​ផ្ទេរ​ពី %s ។" + +msgid "Run the command in a terminal" +msgstr "រត់​ពាក្យ​បញ្ជា​នៅ​ក្នុង​ស្ថានីយ" + +msgid "The command used to handle \"aim\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"aim\" URLs ប្រសិន​បើ​បាន​បើក ។" + +msgid "The command used to handle \"gg\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​​ដើម្បី​គ្រប់គ្រង \"gg\" URLs ប្រសិនបើ​បាន​បើក ។" + +msgid "The command used to handle \"icq\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"icq\" URLs ប្រសិន​បើ​បាន​បើក ។" + +msgid "The command used to handle \"irc\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"irc\" URLs ប្រសិន​បើ​បានបើក ។" + +msgid "The command used to handle \"msnim\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"msnim\" URLs ប្រសិន​បើ​បានបើក ។" + +msgid "The command used to handle \"sip\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"sip\" URLs ប្រសិនបើ​បានបើក ។" + +msgid "The command used to handle \"xmpp\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"xmpp\" URLs ប្រសិន​បើ​បានបើក ។" + +msgid "The command used to handle \"ymsgr\" URLs, if enabled." +msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"ymsgr\" URLs ប្រសិន​បើ​បានបើក ។" + +msgid "The handler for \"aim\" URLs" +msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"aim\"" + +msgid "The handler for \"gg\" URLs" +msgstr "កម្មវិធី​គ្រប់គ្រ​ងសម្រាប់ URLs \"gg\"" + +msgid "The handler for \"icq\" URLs" +msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"icq\"" + +msgid "The handler for \"irc\" URLs" +msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"irc\"" + +msgid "The handler for \"msnim\" URLs" +msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"msnim\"" + +msgid "The handler for \"sip\" URLs" +msgstr "កម្ម​វិធី​គ្រប់គ្រង​សម្រាប់ URLs \"sip\"" + +msgid "The handler for \"xmpp\" URLs" +msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"xmpp\"" + +msgid "The handler for \"ymsgr\" URLs" +msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"ymsgr\"" + +msgid "" +"True if the command specified in the \"command\" key should handle \"aim\" " +"URLs." +msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បានបញ្ជាក់​នៅ​​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"aim\" ។" + +msgid "" +"True if the command specified in the \"command\" key should handle \"gg\" " +"URLs." +msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"gg\" ។" + +msgid "" +"True if the command specified in the \"command\" key should handle \"icq\" " +"URLs." +msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"icq\" ។" + +msgid "" +"True if the command specified in the \"command\" key should handle \"irc\" " +"URLs." +msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"irc\" ។" + +msgid "" +"True if the command specified in the \"command\" key should handle \"msnim\" " +"URLs." +msgstr "" +"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"msnim\" ។" + +msgid "" +"True if the command specified in the \"command\" key should handle \"sip\" " +"URLs." +msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"sip\" ។" + +msgid "" +"True if the command specified in the \"command\" key should handle \"xmpp\" " +"URLs." +msgstr "" +"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"xmpp\" ។" + +msgid "" +"True if the command specified in the \"command\" key should handle \"ymsgr\" " +"URLs." +msgstr "" +"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"ymsgr\" ។" + +msgid "" +"True if the command used to handle this type of URL should be run in a " +"terminal." +msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​​រត់​នៅ​ក្នុង​ស្ថានីយ ។" + +msgid "Whether the specified command should handle \"aim\" URLs" +msgstr "ថាតើ​ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរគ្រប់គ្រង URLs \"aim\" ។" + +msgid "Whether the specified command should handle \"gg\" URLs" +msgstr "ថាតើ​ពាក្យ​បញ្ជា​ដែលបាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"gg\" ។" + +msgid "Whether the specified command should handle \"icq\" URLs" +msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បានប​ញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"icq\" ។" + +msgid "Whether the specified command should handle \"irc\" URLs" +msgstr "ថាតើ​ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់គួរ​គ្រប់គ្រង URLs \"irc\" ។" + +msgid "Whether the specified command should handle \"msnim\" URLs" +msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែលបានបញ្ជាក់គួរ​គ្រប់គ្រង URLs \"msnim\" ។" + +msgid "Whether the specified command should handle \"sip\" URLs" +msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"sip\"" + +msgid "Whether the specified command should handle \"xmpp\" URLs" +msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"xmpp\" ។" + +msgid "Whether the specified command should handle \"ymsgr\" URLs" +msgstr "ថាតើ ពាក្យ​បញ្ជាក់​ដែលបានបញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"ymsgr\" ។" + +msgid "The logger has no read function" +msgstr "មិនមាន​មុខងារ​អាន​ទៀតទេ" + +msgid "HTML" +msgstr "HTML" + +msgid "Plain text" +msgstr "អត្ថបទ​ធម្មតា" + +msgid "Old flat format" +msgstr "ទ្រង់ទ្រាយ​ចាស់" + +msgid "Logging of this conversation failed." +msgstr "បាន​បរាជ័យ​ក្នុងកា​រចុះ​កំណត់ហេតុ​ការ​សន្ទនា​នេះ ។" + +msgid "XML" +msgstr "XML" + +#, c-format +msgid "" +"(%s) %s <AUTO-" +"REPLY>: %s
\n" +msgstr "" +"(%s) %s <AUTO-" +"REPLY>: %s
\n" + +#, c-format +msgid "" +"(%s) %s <AUTO-" +"REPLY>: %s
\n" +msgstr "" +"(%s) %s <AUTO-" +"REPLY>: %s
\n" + +msgid "Unable to find log path!" +msgstr "មិនអាច​រក​ផ្លូវ​កំណត់ហេតុ​បានទេ !" + +#, c-format +msgid "Could not read file: %s" +msgstr "មិនអាច​អាន​ឯកសារ​បានទេ ៖ %s" + +#, c-format +msgid "(%s) %s : %s\n" +msgstr "(%s) %s : %s\n" + +#, c-format +msgid "You are using %s, but this plugin requires %s." +msgstr "អ្នក​កំពុង​ប្រើ %s ប៉ុន្តែ​កម្មវិធី​ជំនួយ​នេះ​ទាមទារ %s ។" + +msgid "This plugin has not defined an ID." +msgstr "កម្មវិធី​ជំនួយ​នេះ​មិនបានកំណត់​​លេខសម្គាល់​ទេ ។" + +#, c-format +msgid "Plugin magic mismatch %d (need %d)" +msgstr "មិនផ្គូផ្គង​កម្មវិធីជំនួយ​មន្តអាគមន្ត %d (ត្រូវការ %d)" + +#, c-format +msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" +msgstr "មិនផ្គូផ្គង​កំណែ ABI %d.%d.x (ត្រូវការ %d.%d.x)" + +msgid "" +"Plugin does not implement all required functions (list_icon, login and close)" +msgstr "កម្មវិធី​ជំនួយ​មិន​អនុវត្ត​មុខងារ​ដែល​ទាមទារ​ទាំង​អស់​ទេ (list_icon ចូល ហើយ​បិទ)" + +#, c-format +msgid "" +"The required plugin %s was not found. Please install this plugin and try " +"again." +msgstr "" +"រក​មិនឃើញ​កម្មវិធី​ជំនួយ​ដែលត្រូវការ %s ​នោះទេ ។ សូម​ដំឡើង​កម្មវិធី​ជំនួយ​នេះ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +msgid "Unable to load the plugin" +msgstr "មិន​អាច​ផ្ទុក​កម្មវិធី​ជំនួយ​បានទេ" + +#, c-format +msgid "The required plugin %s was unable to load." +msgstr "កម្មវិធីជំនួយ​ដែល​ត្រូវការ %s មិនអាច​ផ្ទុក​បានទេ ។" + +msgid "Unable to load your plugin." +msgstr "មិនអាច​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់​អ្នក​បានទេ ។" + +#, c-format +msgid "%s requires %s, but it failed to unload." +msgstr "%s ត្រូវការ %s ប៉ុន្តែ​បានបរាជ័យ​ក្នុង​ការ​ផ្ទុក ។" + +msgid "Autoaccept" +msgstr "ព្រម​ទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Auto-accept file transfer requests from selected users." +msgstr "ការ​ផ្ទេរ​ឯកសារ​ដែល​ព្រមទទួលដោយ​ស្វ័យ​ប្រវត្តិ​ស្នើ​ពី​អ្នក​ប្រើ​ដែលបាន​ជ្រើស ។" + +#, c-format +msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed." +msgstr "ការ​ផ្ទេរ​ឯកសារ​ដែល​ព្រមទទួល​ដោយ​ស្វ័យប្រវត្តិ​របស់ \"%s\" ពី \"%s\" បាន​បញ្ចប់ ។" + +msgid "Autoaccept complete" +msgstr "បញ្ចប់ការ​ព្រម​ទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ" + +#, c-format +msgid "When a file-transfer request arrives from %s" +msgstr "នៅពេល​សំណើ​ការ​ផ្ទេរ​ឯកសារ​មក​ដល់ពី %s" + +msgid "Set Autoaccept Setting" +msgstr "កំណត់​កា​រកំណត់​ព្រមទទួល​ដោយ​ស្វ័យប្រវត្តិ" + +msgid "_Save" +msgstr "រក្សាទុក" + +msgid "_Cancel" +msgstr "បោះបង់" + +msgid "Ask" +msgstr "សួរ" + +msgid "Auto Accept" +msgstr "ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Auto Reject" +msgstr "ច្រានចោល​ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Autoaccept File Transfers..." +msgstr "កា​រផ្ទេរ​ឯកសារ​ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ..." + +#. XXX: Is there a better way than this? There really should be. +msgid "" +"Path to save the files in\n" +"(Please provide the full path)" +msgstr "" +"ផ្លូវ​ត្រូវ​រក្សាទុក​ឯកសារ​នៅ​ក្នុង\n" +"(សូម​ផ្ដល់ផ្លូវ​ពេញលេញ)" + +msgid "Automatically reject from users not in buddy list" +msgstr "ច្រានចោល​ដោយ​ស្វ័យ​ប្រវត្តិ​ពី​អ្នក​ប្រើ​មិន​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិទេ" + +msgid "" +"Notify with a popup when an autoaccepted file transfer is complete\n" +"(only when there's no conversation with the sender)" +msgstr "" +"ជូន​ដំណឹង​ដោយ​ម៉ឺនុយ​លេចឡើង នៅពេល​ការ​​ផ្ទេរ​ឯកសារ​ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ​បានបញ្ចប់\n" +"(តែ​នៅពេល​ដែល​គ្មាន​ការ​សន្ទនា​ជា​មួយ​អ្នក​ផ្ញើ)" + +msgid "Create a new directory for each user" +msgstr "បង្កើត​ថត​ថ្មី​សម្រាប់​អ្នក​ប្រើ​នីមួយៗ" + +msgid "Notes" +msgstr "ចំណាំ" + +msgid "Enter your notes below..." +msgstr "បញ្ចូល​ចំណាំ​របស់​អ្នក​ខាង​ក្រោម..." + +msgid "Edit Notes..." +msgstr "កែសម្រួល​ចំណាំ..." + +#. *< major version +#. *< minor version +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Buddy Notes" +msgstr "ចំណាំ​មិត្តភក្ដិ" + +#. *< name +#. *< version +msgid "Store notes on particular buddies." +msgstr "ទុក​ចំណាំ​នៅ​លើ​មិត្តភក្ដិ​​ជាក់លាក់ ។" + +#. *< summary +msgid "Adds the option to store notes for buddies on your buddy list." +msgstr "បន្ថែម​ជម្រើស​ដើម្បីទុក​ចំណាំ​សម្រាប់​មិត្តភក្ដិ​នៅ​លើ​បញ្ជី​មិតភក្ដិ​របស់​អ្នក ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Cipher Test" +msgstr "សាកល្បង​ការ​សរសេរ​ជា​សម្ងាត់" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Tests the ciphers that ship with libpurple." +msgstr "សាកល្បង​កា​រសរសេរ​ជា​សម្ងាត់​ដែល​នាំ​មក​ជា​មួយ libpurple ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "DBus Example" +msgstr "គំរូ DBus" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "DBus Plugin Example" +msgstr "គំរូ​កម្មវិធី​ជំនួយ DBus" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "File Control" +msgstr "ការត្រួតពិនិត្យ​ឯកសារ" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Allows control by entering commands in a file." +msgstr "អនុញ្ញាត​ការ​ត្រួតពិនិត្យ​ដោយ​បញ្ចូល​ពាក្យ​បញ្ជា​នៅ​ក្នុង​ឯកសារ ។" + +msgid "Minutes" +msgstr "នាទី" + +#. 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. +msgid "I'dle Mak'er" +msgstr "សញ្ញា​សម្គាល់​ថា​ទំនេរ" + +msgid "Set Account Idle Time" +msgstr "កំណត់​ពេលវេលា​ទំនេរ​របស់គណនី" + +msgid "_Set" +msgstr "កំណត់" + +msgid "None of your accounts are idle." +msgstr "គ្មាន​គណនី​ណាមួយ​របស់​អ្នក​ទំនេរ​ទេ ។" + +msgid "Unset Account Idle Time" +msgstr "មិន​កំណត់​ពេលវេលា​ទំនេរ​របស់គណនី​ទេ" + +msgid "_Unset" +msgstr "មិនកំណត់" + +msgid "Set Idle Time for All Accounts" +msgstr "កំណត់​ពេលវេលា​ទំនេរ​សម្រាប់គណនី​ទាំង​អស់" + +msgid "Unset Idle Time for All Idled Accounts" +msgstr "មិន​កំណត់​ពេលវេលា​ទំនេរ​សម្រាប់គណនី​ទាំង​អស់​ទេ" + +msgid "Allows you to hand-configure how long you've been idle" +msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​​កំណត់​រចនាសម្ព័ន្ធ​ដោយដៃ​ អំពី​រយៈពេល​ដែល​អ្នកនៅ​ទំនេរ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "IPC Test Client" +msgstr "ម៉ាស៊ីន​ភ្ញៀវ​សាកល្បង IPC" + +#. *< name +#. *< version +#. * summary +msgid "Test plugin IPC support, as a client." +msgstr "កា​រគាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ព្រម​ទាំង​ម៉ាស៊ីន​ភ្ញៀវ ។" + +#. * description +msgid "" +"Test plugin IPC support, as a client. This locates the server plugin and " +"calls the commands registered." +msgstr "" +"ការគាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ព្រម​ទាំង​ម៉ាស៊ីន​ភ្ញៀវ ។ វា​កំណត់​ទីតាំង​​កម្មវិធី​ជំនួយ​ម៉ាស៊ីនបម្រើ និង​ហៅ​" +"ពាក្យ​បញ្ជា​ដែលបានចុះឈ្មោះ ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "IPC Test Server" +msgstr "ម៉ាស៊ីនបម្រើ​សាកល្បង IPC" + +#. *< name +#. *< version +#. * summary +msgid "Test plugin IPC support, as a server." +msgstr "គាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ជា​ម៉ាស៊ីន​បម្រើ ។" + +#. * description +msgid "Test plugin IPC support, as a server. This registers the IPC commands." +msgstr "គាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ជា​ម៉ាស៊ីន​បម្រើ ។ វា​ចុះឈ្មោះ​ពាក្យ​បញ្ជា IPC ។" + +msgid "Join/Part Hiding Configuration" +msgstr "​ការ​កំណត់​រចនាសម្ព័ន្ធ​ចូល/លាក់ផ្នែក" + +msgid "Minimum Room Size" +msgstr "បង្រួមទំហំ​បន្ទប់​អប្បបរមា" + +msgid "User Inactivity Timeout (in minutes)" +msgstr "រយៈ​ពេល​អសកម្ម​របស់​អ្នកប្រើ (គិតជា​នាទី)" + +msgid "Apply hiding rules to buddies" +msgstr "អនុវត្ត​ក្បួន​បន្លិច​ទៅកាន់​មិត្តភក្ដិ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Join/Part Hiding" +msgstr "ចូល/លាក់ផ្នែក" + +#. *< name +#. *< version +#. * summary +msgid "Hides extraneous join/part messages." +msgstr "លាក់​សារ​ចូល/ផ្នែក​ដែល​មិន​ត្រូវ​កន្លែង ។" + +#. * description +msgid "" +"This plugin hides join/part messages in large rooms, except for those users " +"actively taking part in a conversation." +msgstr "" +"កម្មវិធី​ជំនួយ​នេះ​លាក់​សារ​ចូល/ផ្នែក​នៅ​ក្នុង​បន្ទប់​ធំ លើកលែង​តែ​សម្រាប់​អ្នក​ប្រើទាំង​នោះ​ដែល​កើតឡើង​យ៉ាង​សកម្ម​" +"នៅ​ក្នុង​ការ​សន្ទនា ។" + +#. This is used in the place of a timezone abbreviation if the +#. * offset is way off. The user should never really see it, but +#. * it's here just in case. The parens are to make it clear it's +#. * not a real timezone. +msgid "(UTC)" +msgstr "(UTC)" + +msgid "User is offline." +msgstr "អ្នកប្រើនៅ​ក្រៅ​បណ្ដាញ ។" + +msgid "Auto-response sent:" +msgstr "បានផ្ញើ​ការ​ឆ្លើយតប​ដោយ​ស្វ័យ​ប្រវត្តិ ៖" + +#, c-format +msgid "%s has signed off." +msgstr "%s បាន​ចេញ ។" + +msgid "One or more messages may have been undeliverable." +msgstr "សារ​មួយ ឬ​ច្រើន​អាច​​មិន​ត្រូវ​បានផ្ដល់ ។" + +msgid "You were disconnected from the server." +msgstr "អ្នក​ត្រូវ​បានផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ ។" + +msgid "" +"You are currently disconnected. Messages will not be received unless you are " +"logged in." +msgstr "អ្នក​បច្ចុប្បន្ន​ត្រូវ​បានផ្ដាច់ ។ សារ​នឹង​មិន​ត្រូវ​បានទទួល​លុះត្រា​តែ​អ្នក​ចូល ។" + +msgid "Message could not be sent because the maximum length was exceeded." +msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើ​ទេ ដោយ​សារ​តែ​លើស​ប្រវែង​អតិបរមា ។" + +msgid "Message could not be sent." +msgstr "សារ​មិន​អាច​ត្រូវ​បានផ្ញើទេ ។" + +#. The names of IM clients are marked for translation at the request of +#. translators who wanted to transliterate them. Many translators +#. choose to leave them alone. Choose what's best for your language. +msgid "Adium" +msgstr "Adium" + +#. The names of IM clients are marked for translation at the request of +#. translators who wanted to transliterate them. Many translators +#. choose to leave them alone. Choose what's best for your language. +msgid "Fire" +msgstr "ភ្លើង" + +#. The names of IM clients are marked for translation at the request of +#. translators who wanted to transliterate them. Many translators +#. choose to leave them alone. Choose what's best for your language. +msgid "Messenger Plus!" +msgstr "កម្មវិធី​ផ្ញើសារ​បន្ថែម !" + +#. The names of IM clients are marked for translation at the request of +#. translators who wanted to transliterate them. Many translators +#. choose to leave them alone. Choose what's best for your language. +msgid "QIP" +msgstr "QIP" + +#. The names of IM clients are marked for translation at the request of +#. translators who wanted to transliterate them. Many translators +#. choose to leave them alone. Choose what's best for your language. +msgid "MSN Messenger" +msgstr "កម្មវិធី​ផ្ញើសារ MSN" + +#. The names of IM clients are marked for translation at the request of +#. translators who wanted to transliterate them. Many translators +#. choose to leave them alone. Choose what's best for your language. +msgid "Trillian" +msgstr "Trillian" + +#. The names of IM clients are marked for translation at the request of +#. translators who wanted to transliterate them. Many translators +#. choose to leave them alone. Choose what's best for your language. +msgid "aMSN" +msgstr "aMSN" + +#. Add general preferences. +msgid "General Log Reading Configuration" +msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​អាន​កំណត់​ហេតុ​ទូទៅ" + +msgid "Fast size calculations" +msgstr "ការ​គណនា​ទំហំ​រហ័ស" + +msgid "Use name heuristics" +msgstr "បើវិធានការ​ស្រាវជ្រាវ​ឈ្មោះ" + +#. Add Log Directory preferences. +msgid "Log Directory" +msgstr "ថត​កំណត់ហេតុ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Log Reader" +msgstr "កម្មវិធី​អាន​កំណត់ហេតុ" + +#. *< name +#. *< version +#. * summary +msgid "Includes other IM clients' logs in the log viewer." +msgstr "រួម​បញ្ចូល​កំណត់​ហេតុ​របស់​ម៉ាស៊ីនភ្ញៀវ IM ផ្សេងៗ​ទៀត​នៅ​ក្នុង​កម្មវិធីមើល​កំណត់​ហេតុ ។" + +#. * description +msgid "" +"When viewing logs, this plugin will include logs from other IM clients. " +"Currently, this includes Adium, MSN Messenger, and Trillian.\n" +"\n" +"WARNING: This plugin is still alpha code and may crash frequently. Use it " +"at your own risk!" +msgstr "" +"នៅពេល​មើល​កំណត់ហេតុ កម្មវិធី​ជំនួយ​នេះ​នឹង​រួម​បញ្ចូល​​កំណត់ហេតុ​ពី​ម៉ាស៊ីន​ភ្ញៀវ IM ផ្សេងៗ ។បច្ចុប្បន្ន វា​រួម​" +"មានកម្មវិធី​ផ្ញើសារ Adium, MSN និង Trillian ។\n" +"\n" +"ការព្រមាន ៖ កម្មវិធី​ជំនួយយ​នេះ​នៅតែ​ជា​អាល់ហ្វាកូដ ហើយ​អាច​គាំង​ជា​ញឹកញាប់ ។ ប្រើ​វា​នៅកម្រិត​" +"គ្រោះថ្នាក់ផ្ទាល់របស់អ្នក !" + +msgid "Mono Plugin Loader" +msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ Mono" + +msgid "Loads .NET plugins with Mono." +msgstr "ផ្ទុក​កម្មវិធី​ជំនួយ .NET ជា​មួយ Mono ។" + +msgid "Add new line in IMs" +msgstr "បន្ថែម​បន្ទាត់​ថ្មី​នៅ​ក្នុង IMs" + +msgid "Add new line in Chats" +msgstr "បន្ថែម​បន្ទាត់​ថ្មី​នៅ​ក្នុង​គំនូស​តាង" + +#. *< magic +#. *< major version +#. *< minor version +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "New Line" +msgstr "បន្ទាត់ថ្មី" + +#. *< name +#. *< version +msgid "Prepends a newline to displayed message." +msgstr "បន្ថែម​បន្ទាត់ថ្មី​ខាង​ចុង​ទៅ​កាាន់​សារ​ដែលបាន​បង្ហាញ ។" + +#. *< summary +msgid "" +"Prepends a newline to messages so that the rest of the message appears below " +"the username in the conversation window." +msgstr "" +"បន្ថែម​បន្ទាត់ថ្មី​ទៅសារ ដូច្នេះ​សារ​ដែលនៅសល់​បង្ហាញ​ខាង​ក្រោម​ឈ្មោះអ្នក​ប្រើ​នៅ​ក្នុង​បង្អួច​សន្ទនា ។" + +msgid "Offline Message Emulation" +msgstr "ក្លែង​ធ្វើសារ​ក្រៅ​បណ្ដាញ" + +msgid "Save messages sent to an offline user as pounce." +msgstr "រក្សាទុកសារ​ដែល​បានផ្ញើ​ទៅ​កាន់​អ្នក​ប្រើ​ក្រៅ​ជា​ក្រុម ។" + +msgid "" +"The rest of the messages will be saved as pounce. You can edit/delete the " +"pounce from the `Buddy Pounce' dialog." +msgstr "សារ​ដែល​នៅ​សល់​នឹង​ត្រូវ​បានរក្សាទុកជា​ក្រុម ។ អ្នកអាច​កែសម្រួល/លុប​ក្រុម​ពី​ប្រអប់​ `ក្រុម​មិត្តភក្ដិ' ។" + +#, c-format +msgid "" +"\"%s\" is currently offline. Do you want to save the rest of the messages in " +"a pounce and automatically send them when \"%s\" logs back in?" +msgstr "" +"\"%s\" ឥឡូវ​នេះ​នៅ​ក្រៅបណ្ដាញ ។ តើអ្នក​ចង់​រក្សាទុក​សារ​ដែលនៅ​សល់​ជា​ក្រុម ហើយ​ផ្ញើ​ពួកវា​ដោយ​ស្វ័យ​ប្រវត្តិ​" +"នៅពេល​ដែល \"%s\" ចូល​ម្ដង​ទៀត​ដែរឬទេ ?" + +msgid "Offline Message" +msgstr "សារ​ក្រៅ​បណ្ដាញ" + +msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog" +msgstr "អ្នក​អាច​កែសម្រួល/លុប​ក្រុម​ពី​ប្រអប់ `ក្រុម​មិត្តភក្ដិ'" + +msgid "Yes" +msgstr "បាទ/ចាស" + +msgid "No" +msgstr "ទេ" + +msgid "Save offline messages in pounce" +msgstr "រក្សាទុក​សារ​ក្រៅ​បណ្ដាញ​ជា​ក្រុម" + +msgid "Do not ask. Always save in pounce." +msgstr "កុំសួរ ។ រក្សាទុក​ជា​ក្រុម​ជា​និច្ច ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Perl Plugin Loader" +msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ Perl" + +#. *< name +#. *< version +#. *< summary +msgid "Provides support for loading perl plugins." +msgstr "ផ្ដល់​ការ​គាំទ្រ​សម្រាប់​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ perl ។" + +msgid "Psychic Mode" +msgstr "របៀប Psychic" + +msgid "Psychic mode for incoming conversation" +msgstr "របៀប Psychic សម្រាប់​ការ​សន្ទនា​ដែល​ចូល" + +msgid "" +"Causes conversation windows to appear as other users begin to message you. " +"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" +msgstr "" +"ធ្វើ​ឲ្យ​បង្អួច​សន្ទនា​បង្ហាញ​ជា​អ្នក​ប្រើ​ផ្សេងៗ​ ចាប់ផ្ដើម​សរសេរ​សារ​ឲ្យ​អ្នក ។ ការងារ​សម្រាប់ AIM, " +"ICQ, XMPP, Sametime និង Yahoo!" + +msgid "You feel a disturbance in the force..." +msgstr "អ្នកមានអារម្មណ៍​ថា​រំខាន​ក្នុងការ​បង្ខំ..." + +msgid "Only enable for users on the buddy list" +msgstr "បើក​សម្រាប់​តែ​អ្នក​ប្រើនៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​តែ​ប៉ុណ្ណោះ" + +msgid "Disable when away" +msgstr "បិទ​នៅពេល​ចាកឆ្ងាយ" + +msgid "Display notification message in conversations" +msgstr "បង្ហាញ​សារ​ជូនដំណឹង​នៅ​ក្នុង​ការ​សន្ទនា" + +msgid "Raise psychic conversations" +msgstr "លើក​ការ​សន្ទនា psychic ឡើង" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Signals Test" +msgstr "សាកល្បង​សញ្ញា" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Test to see that all signals are working properly." +msgstr "សាកល្បង​ដើម្បី​ដឹង​ថា សញ្ញា​ទាំង​អស់​ដំណើរកាយ៉ារ​ង​រលូន ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Simple Plugin" +msgstr "កម្មវិធី​ជំនួយ​ធម្មតា" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Tests to see that most things are working." +msgstr "សាកល្បង​ដើម្បី​ដឹង​ថា អ្វីៗ​ជា​ច្រើន​កំពុង​ដំណើរការ ។" + +#. Scheme name +msgid "X.509 Certificates" +msgstr "វិញ្ញាបនបត្រ X.509" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "GNUTLS" +msgstr "GNUTLS" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Provides SSL support through GNUTLS." +msgstr "ផ្ដល់​នូវ​កា​រគាំទ្រ SSL តាមរយៈ GNUTLS ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "NSS" +msgstr "NSS" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Provides SSL support through Mozilla NSS." +msgstr "ផ្ដល់​នូវ​ការ​គាំទ្រ​ SSL តាមរយៈ Mozilla NSS ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "SSL" +msgstr "SSL" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Provides a wrapper around SSL support libraries." +msgstr "ផ្ដល់​នូវការ​កម្មវិធី​រុំ​ជុំវិញ​បណ្ណាល័យ​គាំទ្រ SSL ។" + +#, c-format +msgid "%s is no longer away." +msgstr "%s មិន​ចាកឆ្ងាយ​ទៀតទេ ។" + +#, c-format +msgid "%s has gone away." +msgstr "%s បាន​ទៅ​ឆ្ងាយ​ហើយ ។" + +#, c-format +msgid "%s has become idle." +msgstr "%s បាន​ក្លាយជា​ទំនេរ ។" + +#, c-format +msgid "%s is no longer idle." +msgstr "%s មិនទំនេរ​ទៀតទេ ។" + +#, c-format +msgid "%s has signed on." +msgstr "%s បានចូល ។" + +msgid "Notify When" +msgstr "ជូនដំណឹង​នៅ​លើ" + +msgid "Buddy Goes _Away" +msgstr "មិត្តភក្ដិ​​ទៅ​ឆ្ងាយ" + +msgid "Buddy Goes _Idle" +msgstr "មិត្តភក្ដិ​ទំនេរ" + +msgid "Buddy _Signs On/Off" +msgstr "មិត្តភក្ដិ ចេញ/ចូល" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Buddy State Notification" +msgstr "ស្ថាន​​ភាព​ជូនដំណឹង​របស់មិត្តភក្ដិ" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "" +"Notifies in a conversation window when a buddy goes or returns from away or " +"idle." +msgstr "ជូនដំណឹង​នៅ​ក្នុង​បង្អួច​សន្ទនា នៅពេល​ដែល​មិត្តភក្ដិ​ទៅ ឬ​​​ត្រឡប់​​ពី​ការ​ចាកឆ្ងាយ ឬ​ទំនេរ ។" + +msgid "Tcl Plugin Loader" +msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ Tcl" + +msgid "Provides support for loading Tcl plugins" +msgstr "ផ្ដល់​នូវការ​គាំទ្រ​សម្រាប់​ផ្ទុក​កម្មវិធី​ជំនួយ Tcl" + +msgid "" +"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, " +"install ActiveTCL from http://www.activestate.com\n" +msgstr "" +"មិនអាច​រក​ឃើញ​ការ​ដំឡើងTCL ដែល​សកម្ម ។ ប្រសិន​បើ​អ្នក​ចង់​ប្រើ​កម្មវិធី​ជំនួយ TCL ដំឡើង TCL សកម្ម​ពី " +"http://www.activestate.com\n" + +msgid "" +"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d." +"pidgin.im/BonjourWindows for more information." +msgstr "" +"Apple Bonjour សម្រាប់​ប្រអប់​ឧបករណ៍​វីនដូ​ដែល​រក​មិនឃើញ សូម​មើល FAQ នៅ ៖ http://d.pidgin.im/" +"BonjourWindows ចំពោះ​ព័ត៌មាន​លម្អិត ។" + +msgid "Unable to listen for incoming IM connections\n" +msgstr "មិនអាច​ស្ដាប់​ការ​តភ្ជាប់ IM ចូល​\n" + +msgid "" +"Unable to establish connection with the local mDNS server. Is it running?" +msgstr "មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​នឹង​ម៉ាស៊ីន​បម្រើ mDNS មូលដ្ឋាន​ទេ ។ តើ​វា​កំពុង​រត់​ទេ ?" + +msgid "First name" +msgstr "នាម​ខ្លួន" + +msgid "Last name" +msgstr "នាម​ត្រកូល" + +msgid "Email" +msgstr "អ៊ីមែល" + +msgid "AIM Account" +msgstr "គណនី AIM" + +msgid "XMPP Account" +msgstr "គណនី XMPP" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "Bonjour Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​ Bonjour" + +msgid "Purple Person" +msgstr "មនុស្ស​​ពណ៌ស្វាយ" + +#. Creating the options for the protocol +msgid "Local Port" +msgstr "ច្រក" + +msgid "Bonjour" +msgstr "Bonjour" + +#, c-format +msgid "%s has closed the conversation." +msgstr "%s បានបិទ​ការ​សន្ទនា ។" + +msgid "Unable to send the message, the conversation couldn't be started." +msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ការ​សន្ទនា​មិនអាច​ត្រូវ​បាន​ចាប់ផ្ដើម​ទេ ។" + +msgid "Cannot open socket" +msgstr "មិនអាច​បើក​រន្ធ​បានទេ" + +msgid "Could not bind socket to port" +msgstr "មិនអាច​ចង​រន្ធ​ទៅ​ច្រក​បានទេ" + +msgid "Could not listen on socket" +msgstr "មិនអាច​ស្ដាប់​នៅ​លើ​រន្ធ​បានទេ" + +msgid "Error communicating with local mDNSResponder." +msgstr "កំហុស​ក្នុងការ​ទាក់ទង​ជា​មួយ​នឹង mDNSResponder មូលដ្ឋាន ។" + +msgid "Invalid proxy settings" +msgstr "ការ​កំណត់​ប្រូកស៊ី​មិន​ត្រឹមត្រូវ" + +msgid "" +"Either the host name or port number specified for your given proxy type is " +"invalid." +msgstr "ឈ្មោះ​ម៉ាស៊ីន ឬ​លេខ​ច្រក​ដែល​បាន​បញ្ជាក់​សម្រាប់​ប្រភេទ​ប្រូកស៊ី​ដែលបានផ្ដល់​មិន​ត្រឹមត្រូវ​ទេ ។" + +msgid "Token Error" +msgstr "កំហុស​ថូខឹន" + +msgid "Unable to fetch the token.\n" +msgstr "មិនអាច​ទៅ​យក​ថូខឹន​បានទេ ។\n" + +msgid "Save Buddylist..." +msgstr "រក្សា​​ទុក​​​បញ្ជី​មិត្តភក្ដិ..." + +msgid "Your buddylist is empty, nothing was written to the file." +msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​គឺទទេ គ្មាន​អ្វី​ត្រូវ​បានសរសេរ​ទៅ​កាន់​ឯកសារ​ទេ ។" + +msgid "Buddylist saved successfully!" +msgstr "បាន​រក្សាទុក​បញ្ជី​មិត្តភក្ដិ​ដោយ​ជោគជ័យ !" + +#, c-format +msgid "Couldn't write buddy list for %s to %s" +msgstr "មិនអាច​សរសេរ​បញ្ជីមិត្តភក្ដិ​សម្រាប់ %s ទៅ​កាន់ %s" + +msgid "Couldn't load buddylist" +msgstr "មិនអាច​ផ្ទុក​បញ្ជី​មិត្តភក្ដិ​បានទេ" + +msgid "Load Buddylist..." +msgstr "ផ្ទុក​បញ្ជី​មិត្តភក្ដិ..." + +msgid "Buddylist loaded successfully!" +msgstr "បានផ្ទុក​បញ្ជី​មិត្តភក្ដិ​​ដោយ​ជោគជ័យ !" + +msgid "Save buddylist..." +msgstr "រក្សា​​ទុក​​បញ្ជីមិត្តភក្តិ..." + +msgid "Load buddylist from file..." +msgstr "ផ្ទុក​បញ្ជីមិត្តភក្ដិ​ពី​ឯកសារ..." + +msgid "Fill in the registration fields." +msgstr "បំពេញ​វាល​ចុះឈ្មោះ ។" + +msgid "Passwords do not match." +msgstr "ពាក្យ​សម្ងាត់​មិន​ផ្គូផ្គង ។" + +msgid "Unable to register new account. Error occurred.\n" +msgstr "មិនអាច​ចុះឈ្មោះ​គណនី​ថ្មី​ទេ ។ កំហុស​បាន​កើត​ឡើង ។\n" + +msgid "New Gadu-Gadu Account Registered" +msgstr "គណនី Gadu-Gadu ដែលបានចុះឈ្មោះ​ថ្មី" + +msgid "Registration completed successfully!" +msgstr "ការ​ចុះឈ្មោះ​បានបញ្ចប់​ដោយ​ជោគជ័យ !" + +msgid "Password" +msgstr "ពាក្យ​​​សម្ងាត់" + +msgid "Password (retype)" +msgstr "ពាក្យ​​​សម្ងាត់ (វាយ​ឡើង​វិញ)" + +msgid "Enter current token" +msgstr "បញ្ចូល​ថូខឹន​បច្ចុប្បន្ន" + +msgid "Current token" +msgstr "ថូខឹន​បច្ចុប្បន្ន" + +msgid "Register New Gadu-Gadu Account" +msgstr "ចុះឈ្មោះ​គណនី Gadu-Gadu ថ្មី" + +msgid "Please, fill in the following fields" +msgstr "សូមបំពេញ​វាល​ដូច​ខាងក្រោម" + +msgid "City" +msgstr "ទីក្រុង​" + +msgid "Year of birth" +msgstr "ឆ្នាំ​កំណើត" + +msgid "Gender" +msgstr "ភេទ" + +msgid "Male or female" +msgstr "ប្រុស ឬ​ស្រី" + +msgid "Male" +msgstr "ប្រុស" + +msgid "Female" +msgstr "ស្រី" + +msgid "Only online" +msgstr "តែ​លើ​បណ្ដាញ​ប៉ុណ្ណោះ" + +msgid "Find buddies" +msgstr "រក​មិត្តភក្ដិ" + +msgid "Please, enter your search criteria below" +msgstr "សូម​បញ្ចូល​លក្ខខណ្ឌ​ស្វែងរក​របស់​អ្នក​ខាង​ក្រោម" + +msgid "Fill in the fields." +msgstr "បំពេញ​វាល ។" + +msgid "Your current password is different from the one that you specified." +msgstr "ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន​របស់​អ្នក ខុស​ពី​ពាក្យ​សម្ងាត់​ដែល​អ្នក​បានបញ្ជាក់ ។" + +msgid "Unable to change password. Error occurred.\n" +msgstr "មិន​អាច​ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​បានទេ ។ កំហុស​បានកើត​ឡើង ។\n" + +msgid "Change password for the Gadu-Gadu account" +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​សម្រាប់​​គណនី Gadu-Gadu" + +msgid "Password was changed successfully!" +msgstr "ពាក្យ​សម្ងាត់​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​ជោគជ័យ !" + +msgid "Current password" +msgstr "ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន" + +msgid "Please, enter your current password and your new password for UIN: " +msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន និង​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក​សម្រាប់ UIN ៖ " + +msgid "Change Gadu-Gadu Password" +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ Gadu-Gadu" + +#, c-format +msgid "Select a chat for buddy: %s" +msgstr "ជ្រើស​ការ​ជជែក​សម្រាប់មិត្តភក្ដិ ៖ %s" + +msgid "Add to chat..." +msgstr "បន្ថែម​ទៅ​កា​រជជែក..." + +msgid "Available" +msgstr "ដែល​អាច​ប្រើបាន" + +#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for +#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message +#. Away stuff +msgid "Away" +msgstr "ចាកឆ្ងាយ" + +msgid "UIN" +msgstr "UIN" + +msgid "First Name" +msgstr "នាម​ខ្លួន" + +msgid "Birth Year" +msgstr "ឆ្នាំ​​​កំណើត" + +msgid "Unable to display the search results." +msgstr "មិនអាច​បង្ហាញ​លទ្ធផល​ស្វែងរក​ទេ ។" + +msgid "Gadu-Gadu Public Directory" +msgstr "ថត​សាធារណៈ​របស់ Gadu-Gadu" + +msgid "Search results" +msgstr "លទ្ធផល​ស្វែងរក" + +msgid "No matching users found" +msgstr "រក​មិនឃើញ​អ្នក​ប្រើ​ដែលផ្គូផ្គង​ទេ" + +msgid "There are no users matching your search criteria." +msgstr "មិនមាន​អ្នក​ប្រើ​ដែល​ផ្គូផ្គង​នឹង​លក្ខខណ្ឌ​ស្វែងរក​របស់​អ្នក ។" + +msgid "Unable to read socket" +msgstr "មិនអាច​អាន​រន្ធ​បានទេ" + +msgid "Buddy list downloaded" +msgstr "បានទាញយក​បញ្ជីមិត្តភក្ដិ" + +msgid "Your buddy list was downloaded from the server." +msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​ត្រូ​វបាន​ទាញយក​ពី​ម៉ាស៊ីនបម្រើ ។" + +msgid "Buddy list uploaded" +msgstr "បានផ្ទុក​បញ្ជីមិត្តភក្ដិ​ឡើង" + +msgid "Your buddy list was stored on the server." +msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​ត្រូ​វបាន​ទុក​នៅ​លើ​ម៉ាស៊ីនបម្រើ ។" + +msgid "Connection failed." +msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ ។" + +msgid "Add to chat" +msgstr "បន្ថែម​ទៅ​កាន់​ការ​ជជែក" + +msgid "Chat _name:" +msgstr "ឈ្មោះការ​ជជែក ៖" + +msgid "Chat error" +msgstr "កំហុស​ក្នុងកា​រជជែក" + +msgid "This chat name is already in use" +msgstr "ឈ្មោះការ​ជជែក​នេះ​កំពុង​ប្រើ​រួច​ហើយ" + +msgid "Not connected to the server." +msgstr "មិន​បានតភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ​ទេ ។" + +msgid "Find buddies..." +msgstr "រក​មិត្តភក្ដិ..." + +msgid "Change password..." +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់..." + +msgid "Upload buddylist to Server" +msgstr "ផ្ទុក​បញ្ជីមិត្តភក្ដិ​ឡើង​ទៅកាន់​ម៉ាស៊ីនបម្រើ" + +msgid "Download buddylist from Server" +msgstr "ទាញយក​បញ្ជីមិត្តភក្ដិ​ពី​ម៉ាស៊ីន​បម្រើ" + +msgid "Delete buddylist from Server" +msgstr "លុប​បញ្ជីមិត្តភក្ដិ​ពី​ម៉ាស៊ីនបម្រើ" + +msgid "Save buddylist to file..." +msgstr "រក្សាទុក​បញ្ជីមិត្តភក្ដិ​ទៅ​កាន់​ឯកសារ..." + +#. magic +#. major_version +#. minor_version +#. plugin type +#. ui_requirement +#. flags +#. dependencies +#. priority +#. id +#. name +#. version +msgid "Gadu-Gadu Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ Gadu-Gadu" + +#. summary +msgid "Polish popular IM" +msgstr "សម្អាត​ប្រជាប្រិយភាព​របស់ IM" + +msgid "Gadu-Gadu User" +msgstr "អ្នក​ប្រើ Gadu-Gadu" + +#, c-format +msgid "Unknown command: %s" +msgstr "មិនស្គាល់​ពាក្យ​បញ្ជា ៖ %s" + +#, c-format +msgid "current topic is: %s" +msgstr "ប្រធានបទ​បច្ចុប្បន្នគឺ ៖ %s" + +msgid "No topic is set" +msgstr "គ្មាន​ប្រធាន​បទ​ត្រូវ​បាន​កំណត់​ទេ" + +msgid "File Transfer Failed" +msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទេរ​ឯកសារ" + +msgid "Could not open a listening port." +msgstr "មិនអាច​បើក​ច្រក​ស្ដាប់​បានទេ ។" + +msgid "Error displaying MOTD" +msgstr "កំហុស​ក្នុងកា​របង្ហាញ MOTD" + +msgid "No MOTD available" +msgstr "មិនមាន MOTD ទេ" + +msgid "There is no MOTD associated with this connection." +msgstr "មិនមាន​ MOTD បាន​ភ្ជាប់​ជា​មួយ​នឹង​ការ​តភ្ជាប់​នេះ​ទេ ។" + +#, c-format +msgid "MOTD for %s" +msgstr "MOTD សម្រាប់ %s" + +msgid "Server has disconnected" +msgstr "ម៉ាស៊ីន​បម្រើ​បាន​ផ្ដាច់" + +msgid "View MOTD" +msgstr "មើល MOTD" + +msgid "_Channel:" +msgstr "ឆានែល ៖" + +msgid "_Password:" +msgstr "ពាក្យ​​​សម្ងាត់ ៖" + +msgid "IRC nicks may not contain whitespace" +msgstr "សម្មតិនាម IRC អាច​​​​​​មិនមាន​ចន្លោះ" + +#. 1. connect to server +#. connect to the server +msgid "Connecting" +msgstr "តភ្ជាប់" + +msgid "SSL support unavailable" +msgstr "មិនមានការគាំទ្រ SSL" + +msgid "Couldn't create socket" +msgstr "មិនអាច​បង្កើត​រន្ធ​បានទេ" + +msgid "Couldn't connect to host" +msgstr "មិនអាច​តភ្ជាប់​ទៅកាន់​ម៉ាស៊ីនបាន​ទេ" + +msgid "Read error" +msgstr "កំហុស​ក្នុងការ​អាន" + +msgid "Users" +msgstr "អ្នក​ប្រើ" + +msgid "Topic" +msgstr "ប្រធាន​បទ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +msgid "IRC Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ IRC" + +#. * summary +msgid "The IRC Protocol Plugin that Sucks Less" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ IRC ដែល​ Sucks Less" + +#. host to connect to +msgid "Server" +msgstr "ម៉ាស៊ីន​បម្រើ" + +#. port to connect to +msgid "Port" +msgstr "ច្រក" + +msgid "Encodings" +msgstr "ការ​អ៊ិនកូដ" + +msgid "Auto-detect incoming UTF-8" +msgstr "រកឃើញ UTF-8 ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Real name" +msgstr "ឈ្មោះ​ពិត" + +#. +#. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT); +#. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); +#. +msgid "Use SSL" +msgstr "ប្រើ SSL" + +msgid "Bad mode" +msgstr "របៀប​មិនល្អ" + +#, c-format +msgid "Ban on %s by %s, set %s ago" +msgstr "ហាមឃាត់​នៅ​លើ %s ដោយ %s កំណត់ %s កន្លង​ទៅ" + +#, c-format +msgid "Ban on %s" +msgstr "ហាមឃាត់​នៅ​លើ %s" + +msgid "End of ban list" +msgstr "ចុច​បញ្ជី​ហាមឃាត់" + +#, c-format +msgid "You are banned from %s." +msgstr "អ្នក​ត្រូវ​បាន​ហាមឃាត់​ពី %s ។" + +msgid "Banned" +msgstr "បានហាមឃាត់" + +#, c-format +msgid "Cannot ban %s: banlist is full" +msgstr "មិនអាច​ហាមឃាត់ %s ៖ បញ្ជី​ហាមឃាត់​ពេញហើយ" + +msgid " (ircop)" +msgstr " (ircop)" + +msgid " (identified)" +msgstr " (បាន​បញ្ជាក់អត្តសញ្ញាណ)" + +msgid "Nick" +msgstr "សម្មតិនាម" + +msgid "Currently on" +msgstr "បច្ចុប្បន្ន​បើក" + +msgid "Idle for" +msgstr "ទំនេរ​សម្រាប់" + +msgid "Online since" +msgstr "លើ​បណ្ដាញ​តាំង​ពី" + +msgid "Defining adjective:" +msgstr "កំណត់​គុណនាម ៖" + +msgid "Glorious" +msgstr "Glorious" + +#, c-format +msgid "%s has changed the topic to: %s" +msgstr "%s បានផ្លាស់ប្ដូរ​ប្រធានបទ​ទៅ ៖ %s" + +#, c-format +msgid "%s has cleared the topic." +msgstr "%s បានជម្រះ​ប្រធានបទ ។" + +#, c-format +msgid "The topic for %s is: %s" +msgstr "ប្រធាន​បទ​សម្រាប់ %s គឺ ៖ %s" + +#, c-format +msgid "Unknown message '%s'" +msgstr "មិន​ស្គាល់​សារ '%s'" + +msgid "Unknown message" +msgstr "មិន​ស្គាល់​សារ" + +msgid "The IRC server received a message it did not understand." +msgstr "ម៉ាស៊ីន​បម្រើ IRC ​បាន​ទទួល​សារ​ដែលវា​មិនយល់ ។" + +#, c-format +msgid "Users on %s: %s" +msgstr "អ្នក​ប្រើ​នៅ​លើ %s ៖ %s" + +msgid "Time Response" +msgstr "​ពេលវេលា​ឆ្លើយ" + +msgid "The IRC server's local time is:" +msgstr "ពេលវេលា​មូលដ្ឋាន​របស់​ម៉ាស៊ីនបម្រើ IRC គឺ ៖" + +msgid "No such channel" +msgstr "គ្មាន​ឆានែល​បែបនេះ​ទេ" + +#. does this happen? +msgid "no such channel" +msgstr "គ្មាន​ឆានែលបែបនេះ​ទេ" + +msgid "User is not logged in" +msgstr "អ្នកប្រើ​មិន​បាន​ចូល​ទេ" + +msgid "No such nick or channel" +msgstr "គ្មាន​សម្មតិនាម ឬ​ឆានែល​ទេ" + +msgid "Could not send" +msgstr "មិន​អាច​ផ្ញើ" + +#, c-format +msgid "Joining %s requires an invitation." +msgstr "ចូលរួម %s ត្រូវការ​កា​រអញ្ជើញ ។" + +msgid "Invitation only" +msgstr "តែ​ការ​អញ្ជើញ​ប៉ុណ្ណោះ" + +#, c-format +msgid "You have been kicked by %s: (%s)" +msgstr "អ្នក​ត្រូ​វបាន​ធាក់ចេញ​ដោយ %s: (%s)" + +#. Remove user from channel +#, c-format +msgid "Kicked by %s (%s)" +msgstr "បាន​ធាក់ចេញ​ដោយ %s (%s)" + +#, c-format +msgid "mode (%s %s) by %s" +msgstr "របៀប (%s %s) ដោយ %s" + +msgid "Invalid nickname" +msgstr "សម្មតិនាម​មិនត្រឹមត្រូវ" + +msgid "" +"Your selected nickname was rejected by the server. It probably contains " +"invalid characters." +msgstr "" +"សម្មតិនាម​ដែល​អ្នក​បានជ្រើស​ត្រូ​វបានបដិសេធ​ដោយ​ម៉ាស៊ីបម្រើ ។ វា​ប្រហែលជា​មាន​តួអក្សរ​មិនត្រឹមត្រូវ ។" + +msgid "" +"Your selected account name was rejected by the server. It probably contains " +"invalid characters." +msgstr "" +"ឈ្មោះ​គណនី​ដែល​អ្នកបានជ្រើស​ត្រូវ​បានបដិសេធ​ដោយ​ម៉ាស៊ីនបម្រើ ។ វា​ប្រហែលជា​មាន​តួអក្សរ​មិនត្រឹមត្រូវ ។" + +msgid "Cannot change nick" +msgstr "មិនអាច​ផ្លាស់ប្ដូរ​សម្មតិនាម​បានទេ" + +msgid "Could not change nick" +msgstr "មិនអាច​ផ្លាស់ប្ដូរ​សម្មតិនាម​បានទេ" + +#, c-format +msgid "You have parted the channel%s%s" +msgstr "អ្នកបាន​បោះបង់​ឆានែល %s%s" + +msgid "Error: invalid PONG from server" +msgstr "កំហុស ៖ PONG មិន​ត្រឹមត្រូវ​ពី​ម៉ាស៊ីនបម្រើ" + +#, c-format +msgid "PING reply -- Lag: %lu seconds" +msgstr "PING reply -- Lag ៖ %lu វិនាទី" + +#, c-format +msgid "Cannot join %s: Registration is required." +msgstr "មិនអាច​ចូល %s ៖ តម្រូវ​ឲ្យ​ចុះឈ្មោះ ។" + +msgid "Cannot join channel" +msgstr "មិនអាច​ចូល​ឆានែល​បានទេ" + +msgid "Nick or channel is temporarily unavailable." +msgstr "សម្មតិនាម ឬ​ឆានែល​មិនអាច​ប្រើ​បានជា​បណ្ដោះអាសន្ន ។" + +#, c-format +msgid "Wallops from %s" +msgstr "វាយ​ពី %s" + +msgid "action <action to perform>: Perform an action." +msgstr "សកម្មភាព <សកម្មភាព​ត្រូវ​អនុវត្ត> ៖ អនុវត្ត​សកម្មភាព ។" + +msgid "" +"away [message]: Set an away message, or use no message to return from being " +"away." +msgstr "[សារ] ចាកឆ្ងាយ ៖ កំណត់​សារ​ចាកឆ្ងាយ ឬ​ប្រើ​គ្មាន​សារ​ដើម្បី​ត្រឡប់​ពីការ​ចាកឆ្ងាយ ។" + +msgid "ctcp : sends ctcp msg to nick." +msgstr "ctcp ៖ ផ្ញើ ctcp msg ទៅ​កាន់​សម្មតិនាម ។" + +msgid "chanserv: Send a command to chanserv" +msgstr "chanserv ៖ ផ្ញើល​ពាក្យ​បញ្ជា​ទៅកាន់ chanserv" + +msgid "" +"deop <nick1> [nick2] ...: Remove channel operator status from " +"someone. You must be a channel operator to do this." +msgstr "" +"deop <nick1> [nick2] ...: យក​ស្ថានភាព​ការី​ឆានែល​ពី​អ្នកណា​ម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​ការី​" +"ឆានែល​ដើម្បី​ធ្វើ​វា ។" + +msgid "" +"devoice <nick1> [nick2] ...: Remove channel voice status from " +"someone, preventing them from speaking if the channel is moderated (+m). You " +"must be a channel operator to do this." +msgstr "" +"devoice <nick1> [nick2] ...: យក​ស្ថានភាព​សំឡេង​ឆានែល​ពី​អ្នកណា​ម្នាក់ ដោយ​ការពារ​" +"ពួកគេ​ពី​កា​រនិយាយ ប្រសិនបើ​ឆានែល​ត្រូវ​បាន​ប្រតិបត្តិ (+m) ។ អ្នក​ត្រូវតែ​ជា​ការី​ឆានែល​ដើម្បីធ្វើ​វា ។" + +msgid "" +"invite <nick> [room]: Invite someone to join you in the specified " +"channel, or the current channel." +msgstr "" +"អញ្ជើញ <សម្មតិនាម> [បន្ទប់] ៖ អញ្ជើញ​អ្នកណា​ម្នាក់​ឲ្យ​ចូលរួម​ជា​មួយ​អ្នក​នៅក្នុង​ឆានែល​ដែល​បាន​" +"បញ្ជាក់ ឬ​ឆានែល​បច្ចុប្បន្ន ។" + +msgid "" +"j <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " +"channels, optionally providing a channel key for each if needed." +msgstr "" +"j <room1>[,room2][,...] [key1[,key2][,...]] ៖ បញ្ចូល​ឆានែល​មួយ ឬ​ច្រើន​ ជា​ជម្រើស​" +"ផ្ដល់​នូវ​សោ​ឆានែល​សម្រាប់​ឆានែល​នីមួយៗ​ ប្រសិន​បើ​ត្រូវការ ។" + +msgid "" +"join <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " +"channels, optionally providing a channel key for each if needed." +msgstr "" +"join <room1>[,room2][,...] [key1[,key2][,...]] ៖ បញ្ចូល​ឆានែល​មួយ ឬច្រើន​ ជា​" +"ជម្រើ​ស​ដោយ​ផ្ដល់​គ្រាប់ចុច​ឆានែល​សម្រាប់​ឆានែលនីមួយៗ​ ប្រសិន​បើ​ត្រូវការ ។" + +msgid "" +"kick <nick> [message]: Remove someone from a channel. You must be a " +"channel operator to do this." +msgstr "" +"kick <nick> [message] ៖ យក​អ្នកណាម្នាក់​ចេញ​ពី​ឆានែល ។ អ្នក​ត្រូវ​តែ​ជា​ការី​ឆានែល​" +"ដើម្បីការ​ធ្វើការងារ​នេះ ។" + +msgid "" +"list: Display a list of chat rooms on the network. Warning, some servers " +"may disconnect you upon doing this." +msgstr "" +"បញ្ជី ៖ បង្ហាញ​បញ្ជី​បន្ទប់​ជជែក​នៅ​លើ​បណ្ដាញ ។ ការ​ព្រមាន ម៉ាស៊ីនបម្រើ​មួយ​ចំនួន​អាច​ផ្ដាច់​អ្នកពី​ការធ្វើ​" +"ការងារ​នេះ ។" + +msgid "me <action to perform>: Perform an action." +msgstr "me <action to perform> ៖ អនុវត្ត​សកម្មភាព ។" + +msgid "memoserv: Send a command to memoserv" +msgstr "memoserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ​កាន់ memoserv" + +msgid "" +"mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel " +"or user mode." +msgstr "" +"របៀប <+|-><A-Za-z> <nick|channel> ៖ កំណត់ ឬ​មិនកំណត់​ឆានែល ឬ​​របៀប​" +"អ្នកប្រើ ។" + +msgid "" +"msg <nick> <message>: Send a private message to a user (as " +"opposed to a channel)." +msgstr "" +"msg <nick> <message> ៖ ផ្ញើ​សារ​ឯកជន​ទៅ​ឲ្យ​​អ្នក​ប្រើ (ដូច​បានស្នើ​ទៅ​" +"កាន់ឆានែល) ។" + +msgid "names [channel]: List the users currently in a channel." +msgstr "names [channel] ៖ រាយ​អ្នក​ប្រើ​ដែល​បច្ចុប្បន្ន​នៅ​ក្នុង​ឆានែល ។" + +msgid "nick <new nickname>: Change your nickname." +msgstr "nick <new nickname> ៖ ផ្លាស់ប្ដូរ​សម្មតិនាម​របស់​អ្នក ។" + +msgid "nickserv: Send a command to nickserv" +msgstr "nickserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ nickserv" + +msgid "notice <target<: Send a notice to a user or channel." +msgstr "ចំណាំ <target< ៖ ផ្ញើ​កា​រចំណាំ​ទៅ​អ្នកប្រើ ឬ​ឆានែល ។" + +msgid "" +"op <nick1> [nick2] ...: Grant channel operator status to someone. You " +"must be a channel operator to do this." +msgstr "" +"op <nick1> [nick2] ...: ផ្ដល់ស្ថានភាព​ការី​ឆានែល​ឲ្យ​អ្នកណា​ម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​ការី​" +"ឆានែល​ដើម្បី​ធ្វើការងារ​នេះ ។" + +msgid "" +"operwall <message>: If you don't know what this is, you probably " +"can't use it." +msgstr "" +"operwall <message> ៖ ប្រសិនបើ​​អ្នក​មិនដឹង​ថា​វា​ជា​អ្វី​ទេ អ្នក​ប្រហែល​ជា​មិនអាច​ប្រើ​វា​" +"បានទេ ។" + +msgid "operserv: Send a command to operserv" +msgstr "operserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ​កាន់ operserv" + +msgid "" +"part [room] [message]: Leave the current channel, or a specified channel, " +"with an optional message." +msgstr "" +"part [room] [message] ៖ ចាកចេញ​ពី​ឆានែល​បច្ចុប្បន្ន ឬ​ឆានែល​ដែល​បាន​បញ្ជាក់ ដោយ​មានសារជា​" +"ជម្រើស ។" + +msgid "" +"ping [nick]: Asks how much lag a user (or the server if no user specified) " +"has." +msgstr "" +"ping [nick]៖ សួរ​ថាតើមាន​អ្នក​ប្រើ​យឺត​ប៉ុន្មាន​នាក់ (ឬ​ម៉ាស៊ីនបម្រើ ប្រសិនបើ​គ្មាន​អ្នក​ប្រើ​បាន​បញ្ជាក់) " +"មាន ។" + +msgid "" +"query <nick> <message>: Send a private message to a user (as " +"opposed to a channel)." +msgstr "" +"សួរ <nick> <message> ៖ ផ្ញើ​សារ​ឯកជន​ទៅ​កាន់​អ្នក​ប្រើ (ដូច​បាន​ស្នើ​ទៅ​ឆានែល) ។" + +msgid "quit [message]: Disconnect from the server, with an optional message." +msgstr "quit [message] ៖ ផ្ដាច់​ពី​ម៉ាស៊ីន​បម្រើ ជា​មួយ​នឹង​សារជា​ជម្រើស ​។" + +msgid "quote [...]: Send a raw command to the server." +msgstr "quote [...] ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ដើម​ថ្មី​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ ។" + +msgid "" +"remove <nick> [message]: Remove someone from a room. You must be a " +"channel operator to do this." +msgstr "" +"remove <nick> [message] ៖ យក​អ្នក​ណា​ម្នាក់​ចេញ​ពី​បន្ទប់ ។ អ្នក​ត្រូវតែ​ជា​ការី​បណ្ដាញ​" +"ដើម្បីធ្វើការ​ងារ​នេះ ។" + +msgid "time: Displays the current local time at the IRC server." +msgstr "ពេលវេលា ៖ បង្ហាញ​ពេលវេលា​មូលដ្ឋាន​បច្ចុប្បន្ននៅ​ម៉ាស៊ីនបម្រើ IRC ។" + +msgid "topic [new topic]: View or change the channel topic." +msgstr "ប្រធាន​បទ [ប្រធាន​បទ​ថ្មី] ៖ មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធាន​បទ​របស់​ឆានែល ។" + +msgid "umode <+|-><A-Za-z>: Set or unset a user mode." +msgstr "umode <+|-><A-Za-z> ៖ កំណត់ ឬ​មិន​កំណត់​របៀប​អ្នក​ប្រើ ​។" + +msgid "version [nick]: send CTCP VERSION request to a user" +msgstr "កំណែ [nick] ៖ ផ្ញើ​សំណើ​កំណែ​របស់ CTCP ទៅ​ឲ្យ​អ្នក​ប្រើ" + +msgid "" +"voice <nick1> [nick2] ...: Grant channel voice status to someone. You " +"must be a channel operator to do this." +msgstr "" +"សំឡេង <nick1> [nick2] ...: ផ្ដល់​នូវ​ស្ថានភាព​សំឡេង​ទៅ​ឲ្យ​អ្នកណាម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​" +"ការីឆានែល​ដើម្បីធ្វើការងារ​នេះ ។" + +msgid "" +"wallops <message>: If you don't know what this is, you probably can't " +"use it." +msgstr "" +"វាយ <សារ> ៖ ប្រសិនបើ​អ្នកមិនដឹង​ថា​នេះ​ជា​អ្វីទេ អ្នកប្រហែលជា​មិនអាច​ប្រើវា​បានទេ ។" + +msgid "whois [server] <nick>: Get information on a user." +msgstr "whois [server] <nick> ៖ យក​ព័ត៌មាន​​របស់​អ្នកប្រើ ។" + +msgid "whowas <nick>: Get information on a user that has logged off." +msgstr "whowas <nick> ៖ យក​ព័ត៌មាន​របស់​អ្នក​ប្រើ​ដេល​បាន​ចេញ ។" + +#, c-format +msgid "Reply time from %s: %lu seconds" +msgstr "ពេលវេលា​ឆ្លើយ​តប​ពី %s ៖ %lu ​វិនាទី" + +msgid "PONG" +msgstr "PONG" + +msgid "CTCP PING reply" +msgstr "ការ​ឆ្លើយ​តប​របស់ CTCP PING" + +msgid "Disconnected." +msgstr "បាន​ផ្ដាច់ ។" + +msgid "Unknown Error" +msgstr "មិន​ស្គាល់​កំហុស" + +msgid "Ad-Hoc Command Failed" +msgstr "ពាក្យ​បញ្ជា​ Ad-Hoc បាន​បរាជ័យ" + +msgid "execute" +msgstr "ប្រតិបត្តិ" + +msgid "Server requires TLS/SSL for login. No TLS/SSL support found." +msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ TLS/SSL ដើម្បី​ចូល ។ រក​មិនឃើញការគាំទ្រ TLS/SSL នោះ​ទេ ។" + +msgid "You require encryption, but no TLS/SSL support found." +msgstr "អ្នក​ត្រូវការ​ការ​អ៊ិនគ្រីប ប៉ុន្តែ​រក​មិនឃើញ​ការគាំទ្រ TLS/SSL ។" + +msgid "Server requires plaintext authentication over an unencrypted stream" +msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ជា​អត្ថបទ​ធម្មតា​លើ​ស្ទ្រីម​ដែល​មិនបានអ៊ិនគ្រីប" + +#, c-format +msgid "" +"%s requires plaintext authentication over an unencrypted connection. Allow " +"this and continue authentication?" +msgstr "" +"%s ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ធម្មតា​លើកា​រតភ្ជាប់​ដែល​មិនបានអ៊ិនគ្រីប ។ អនុញ្ញាត​វា​ ហើយ​បន្ត​" +"ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ?" + +msgid "Plaintext Authentication" +msgstr "ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ​ធម្មតា" + +msgid "Invalid response from server." +msgstr "កា​រឆ្លើយ​តប​មិនត្រឹមត្រូវ​ពី​ម៉ាស៊ីន​បម្រើ ។" + +msgid "Server does not use any supported authentication method" +msgstr "ម៉ាស៊ិនបម្រើ​មិន​ប្រើ​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ដែល​បានគាំទ្រ​ណាមួយ​ទេ" + +msgid "Invalid challenge from server" +msgstr "ការ​ប្រខិតខំ​មិនត្រឹមត្រូវ​ពី​ម៉ាស៊ីនបម្រើ" + +msgid "SASL error" +msgstr "កំហុស SASL" + +msgid "Full Name" +msgstr "ឈ្មោះ​ពេញ" + +msgid "Family Name" +msgstr "នាម​ត្រកូល" + +msgid "Given Name" +msgstr "នាម​ខ្លួន" + +msgid "URL" +msgstr "URL" + +msgid "Street Address" +msgstr "អាសយដ្ឋាន​ផ្លូវ" + +msgid "Extended Address" +msgstr "អាសយដ្ឋាន​ដែល​បាន​ពង្រីក" + +msgid "Locality" +msgstr "មូលដ្ឋាន" + +msgid "Region" +msgstr "តំបន់" + +msgid "Postal Code" +msgstr "លេខប្រៃសណីយ៍" + +msgid "Country" +msgstr "ប្រទេស" + +#. lots of clients (including purple) do this, but it's +#. * out of spec +msgid "Telephone" +msgstr "ទូរស័ព្ទ" + +msgid "Organization Name" +msgstr "ឈ្មោះ​អង្គភាព" + +msgid "Organization Unit" +msgstr "ផ្នែក​នៃ​អង្គភាព" + +msgid "Role" +msgstr "តួនាទី" + +msgid "Birthday" +msgstr "ថ្ងៃ​កំណើត" + +msgid "Description" +msgstr "សេចក្ដី​ពិពណ៌នា" + +msgid "Edit XMPP vCard" +msgstr "កែសម្រួល XMPP vCard" + +msgid "" +"All items below are optional. Enter only the information with which you feel " +"comfortable." +msgstr "ធាតុ​ទាំង​អស់​ខាង​ក្រោម​ជា​ជម្រើស ។ បញ្ចូល​តែ​ព័ត៌មាន​ដែល​អ្នក​គិត​ថា​ងាយស្រួល ។" + +msgid "Client" +msgstr "ម៉ាស៊ីន​ភ្ញៀវ" + +msgid "Operating System" +msgstr "ប្រព័ន្ធ​ប្រតិបត្តិការ" + +msgid "Last Activity" +msgstr "សកម្មភាព​ចុងក្រោយ" + +msgid "Service Discovery Info" +msgstr "ព័ត៌មាន​រកឃើញ​សេវា" + +msgid "Service Discovery Items" +msgstr "ធាតុ​រក​ឃើញ​ព័ត៌មាន" + +msgid "Extended Stanza Addressing" +msgstr "កំណត់​អាសយដ្ឋាន Stanza ដែល​បាន​ពង្រីក" + +msgid "Multi-User Chat" +msgstr "ការ​ជជែក​ដែល​មាន​អ្នក​ប្រើច្រើន​នាក់" + +msgid "Multi-User Chat Extended Presence Information" +msgstr "ព័ត៌មាន​វត្តមាន​ដែល​បាន​ពង្រីក​នៃ​កា​រជជែក​ដែល​មាន​អ្នកប្រើ​ច្រើននាក់" + +msgid "In-Band Bytestreams" +msgstr "ស្ទ្រីម​បៃ​ក្នុងក្រុម" + +msgid "Ad-Hoc Commands" +msgstr "ពាក្យ​បញ្ជា Ad-Hoc" + +msgid "PubSub Service" +msgstr "សេវា PubSub" + +msgid "SOCKS5 Bytestreams" +msgstr "ស្ទ្រីម​បៃ SOCKS5" + +msgid "Out of Band Data" +msgstr "ទិន្នន័យ​ក្រៅ​ក្រុម" + +msgid "XHTML-IM" +msgstr "XHTML-IM" + +msgid "In-Band Registration" +msgstr "ការ​ចុះឈ្មោះ​ក្នុងក្រុម" + +msgid "User Location" +msgstr "ទីតាំង​របស់​អ្នក​ប្រើ" + +msgid "User Avatar" +msgstr "រូបភាព​របស់​អ្នក" + +msgid "Chat State Notifications" +msgstr "ការ​ជូនដំណឹង​ស្ថានភាព​ជជែក" + +msgid "Software Version" +msgstr "កំណែ​​កម្មវិធី" + +msgid "Stream Initiation" +msgstr "ការ​ចាប់ផ្ដើម​ស្ទ្រីម​" + +msgid "File Transfer" +msgstr "កា​រផ្ទេរ​ឯកសារ" + +msgid "User Mood" +msgstr "អារម្មណ៍​អ្នក​ប្រើ" + +msgid "User Activity" +msgstr "សកម្មភាព​អ្នក​ប្រើ" + +msgid "Entity Capabilities" +msgstr "សមត្ថភាព​អង្គភាព" + +msgid "Encrypted Session Negotiations" +msgstr "ការ​ចរចារ​សម័យ​ដែល​បាន​អ៊ិនគ្រីប" + +msgid "User Tune" +msgstr "អ្នក​ប្រើ​" + +msgid "Roster Item Exchange" +msgstr "ផ្លាស់ប្ដូរ​ធាតុ​បញ្ជីឈ្មោះ" + +msgid "Reachability Address" +msgstr "អាសយដ្ឋាន​ដែល​អាច​ចូល​បាន" + +msgid "User Profile" +msgstr "ទម្រង់​អ្នក​ប្រើ" + +msgid "Jingle" +msgstr "ឃ្លា​ខ្លីៗ" + +msgid "Jingle Audio" +msgstr "អូឌីយ៉ូ​ឃ្លា​ខ្លីៗ" + +msgid "User Nickname" +msgstr "សម្មតិនាម​អ្នក​ប្រើ" + +msgid "Jingle ICE UDP" +msgstr "ឃ្លាខ្លីៗ​របស់ ICE UDP" + +msgid "Jingle ICE TCP" +msgstr "ឃ្លាខ្លីៗ​របស់ ICE TCP" + +msgid "Jingle Raw UDP" +msgstr "ឃ្លាខ្លីៗ​របស់ UDP ដើម" + +msgid "Jingle Video" +msgstr "វីដេអូ​ឃ្លាខ្លីៗ" + +msgid "Jingle DTMF" +msgstr "ឃ្លាខ្លីៗ DTMF" + +msgid "Message Receipts" +msgstr "ទទួលសារ" + +msgid "Public Key Publishing" +msgstr "បោះពុម្ព​គ្រាប់ចុច​សាធារណៈ" + +msgid "User Chatting" +msgstr "ការ​ជជែក​របស់​អ្នក​ប្រើ" + +msgid "User Browsing" +msgstr "កា​ររុករក​របស់​អ្នក​ប្រើ" + +msgid "User Gaming" +msgstr "ការ​លេង​ល្បែង​របស់​អ្នក​ប្រើ" + +msgid "User Viewing" +msgstr "កា​រមើលរបស់​អ្នក​ប្រើ" + +msgid "Ping" +msgstr "Ping" + +msgid "Stanza Encryption" +msgstr "ការ​អ៊ិនគ្រីប Stanza" + +msgid "Entity Time" +msgstr "ពេល​វេលា​​របស់​អង្គភាព" + +msgid "Delayed Delivery" +msgstr "ការ​បញ្ជូន​បាន​ពន្យារពេល" + +msgid "Collaborative Data Objects" +msgstr "វត្ថុ​ទិន្នន័យ​សហការណ៍" + +msgid "File Repository and Sharing" +msgstr "ឃ្លាំង​ឯកសារ និង​ការ​ចែករំលែក" + +msgid "STUN Service Discovery for Jingle" +msgstr "ការ​រកឃើញសេវា STUN សម្រាប់​ឃ្លាខ្លីៗ" + +msgid "Simplified Encrypted Session Negotiation" +msgstr "ការ​ចរចារ​សម័យ​ដែល​បាន​អ៊ិនគ្រីប​សាមញ្ញ" + +msgid "Hop Check" +msgstr "ពិនិត្យមើល​ដំណាក់" + +msgid "Capabilities" +msgstr "សមត្ថភាព" + +msgid "Priority" +msgstr "អាទិភាព" + +msgid "Resource" +msgstr "ធមធាម" + +msgid "Middle Name" +msgstr "ឈ្មោះ​កណ្ដាល" + +msgid "Address" +msgstr "អាសយដ្ឋាន" + +msgid "P.O. Box" +msgstr "ប្រអប់​សំបុត្រ" + +msgid "Photo" +msgstr "រូបថត" + +msgid "Logo" +msgstr "រូបសញ្ញា" + +msgid "Un-hide From" +msgstr "មិនលាក់​ពី" + +msgid "Temporarily Hide From" +msgstr "លាក់​​ជា​បណ្ដោះអាសន្ន​ពី" + +#. && NOT ME +msgid "Cancel Presence Notification" +msgstr "បោះបង់​កា​រជូនដំណឹង​បច្ចុប្បន្ន" + +msgid "(Re-)Request authorization" +msgstr "ស្នើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ" + +#. if(NOT ME) +#. shouldn't this just happen automatically when the buddy is +#. removed? +msgid "Unsubscribe" +msgstr "ឈប់ជាវ" + +msgid "Log In" +msgstr "ចូល" + +msgid "Log Out" +msgstr "ចេញ" + +msgid "Chatty" +msgstr "កា​រជជែក" + +msgid "Extended Away" +msgstr "ការ​ចាកឆ្ងាយ​បាន​ពន្យារ" + +msgid "Do Not Disturb" +msgstr "កុំរំខាន" + +msgid "JID" +msgstr "JID" + +msgid "Last Name" +msgstr "នាម​ត្រកូល" + +msgid "The following are the results of your search" +msgstr "ខាង​ក្រោម​នេះ​ជា​លទ្ធផល​នៃ​ការ​ស្វែងរក​របស់​អ្នក" + +#. current comment from Jabber User Directory users.jabber.org +msgid "" +"Find a contact by entering the search criteria in the given fields. Note: " +"Each field supports wild card searches (%)" +msgstr "" +"រក​ទំនាក់ទំនង​ដោយ​បញ្ចូល​លក្ខខណ្ឌ​ស្វែងរក​នៅក្នុង​វាល​ដែលបានផ្ដល់​ ។ ចំណាំ ៖ វាល​នីមួយៗ​គាំទ្រ​ការ​ស្វែងរក​ដោយ​" +"អក្សរ​ជំនួស (%)" + +msgid "Directory Query Failed" +msgstr "បាន​បរាជ័យ​ក្នុងកា​រសួរ​ថត" + +msgid "Could not query the directory server." +msgstr "មិនអាច​សួរ​ម៉ាស៊ីនបម្រើថត​បានទេ ។" + +#. Try to translate the message (see static message +#. list in jabber_user_dir_comments[]) +#, c-format +msgid "Server Instructions: %s" +msgstr "ការ​ណែនាំ​ម៉ាស៊ីន​បម្រើ ៖ %s" + +msgid "Fill in one or more fields to search for any matching XMPP users." +msgstr "បំពេញ​វាល​មួយ ឬ​ច្រើន​ដើម្បី​ស្វែងរក​អ្នក​ប្រើ XMPP ដែល​ផ្គូផ្គង ។" + +msgid "Email Address" +msgstr "អាសយដ្ឋាន​អ៊ីមែល" + +msgid "Search for XMPP users" +msgstr "ស្វែងរក​អ្នក​ប្រើ XMPP" + +#. "Search" +msgid "Search" +msgstr "ស្វែងរក" + +msgid "Invalid Directory" +msgstr "ថត​មិន​ត្រឹមត្រូវ" + +msgid "Enter a User Directory" +msgstr "បញ្ចូល​ថត​របស់​អ្នក​ប្រើ" + +msgid "Select a user directory to search" +msgstr "ជ្រើស​ថត​អ្នក​ប្រើ​ដែល​ត្រូវ​ស្វែងរក" + +msgid "Search Directory" +msgstr "ថត​ស្វែងរក" + +msgid "_Room:" +msgstr "បន្ទប់ ៖" + +msgid "_Server:" +msgstr "ម៉ាស៊ីន​បម្រើ ៖" + +msgid "_Handle:" +msgstr "គ្រប់គ្រង ៖" + +#, c-format +msgid "%s is not a valid room name" +msgstr "%s មិនមែន​ជា​ឈ្មោះ​បន្ទប់​ត្រឹមត្រូវ​ទេ" + +msgid "Invalid Room Name" +msgstr "ឈ្មោះ​បន្ទប់​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "%s is not a valid server name" +msgstr "%s មិនមែន​ជា​ឈ្មោះ​ម៉ាស៊ីន​បម្រើ​ដែល​ត្រឹមត្រូវ​ទេ" + +msgid "Invalid Server Name" +msgstr "ឈ្មោះ​ម៉ាស៊ីនបម្រើ​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "%s is not a valid room handle" +msgstr "%s មិនមែន​ជា​កា​រគ្រប់គ្រង​បន្ទប់​ត្រឹមត្រូវ​ទេ" + +msgid "Invalid Room Handle" +msgstr "គ្រប់គ្រង​បន្ទប់មិន​ត្រឹមត្រូវ" + +msgid "Configuration error" +msgstr "កំហុស​ក្នុងការ​​​កំណត់​​រចនាសម្ព័ន្ធ" + +msgid "Unable to configure" +msgstr "មិនអាច​កំណត់​រចនាសម្ព័ន្ធ​បានទេ" + +msgid "Room Configuration Error" +msgstr "កំហុស​ក្នុងការ​កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់" + +msgid "This room is not capable of being configured" +msgstr "បន្ទប់​នេះ​មិនអាច​ត្រូវ​បានកំណត់​រចនាសម្ព័ន្ធ​ទេ" + +msgid "Registration error" +msgstr "កំហុស​ក្នុងការ​ចុះឈ្មោះ" + +msgid "Nick changing not supported in non-MUC chatrooms" +msgstr "ការ​ផ្លាស់ប្ដូរ​សម្មតិនាម​​មិន​បានគាំទ្រ​នៅ​ក្នុង​បន្ទប់​ជជែក​ដែល​មិនមែនជា MUC" + +msgid "Error retrieving room list" +msgstr "កំហុស​ក្នុងកា​រទៅយក​បញ្ជី​បន្ទប់" + +msgid "Invalid Server" +msgstr "ម៉ាស៊ីន​បម្រើ​មិន​ត្រឹមត្រូវ" + +msgid "Enter a Conference Server" +msgstr "បញ្ចូល​ម៉ាស៊ីន​បម្រើ​សន្និសីទ" + +msgid "Select a conference server to query" +msgstr "ជ្រើស​ម៉ាស៊ីនបម្រើ​សន្និសីទ​ត្រូវ​សួរ" + +msgid "Find Rooms" +msgstr "រក​បន្ទប់" + +msgid "You require encryption, but it is not available on this server." +msgstr "អ្នកត្រូវកា​រការ​អ៊ិនគ្រីប ប៉ុន្តែ​មិនអាច​ប្រើ​បាន​នៅ​លើ​​ម៉ាស៊ីន​បម្រើនេះ​ទេ ។" + +msgid "Write error" +msgstr "កំហុស​ក្នុងកា​រសរសេរ" + +msgid "Ping timeout" +msgstr "Ping អស់ពេល" + +msgid "Read Error" +msgstr "កំហុស​ក្នុងការ​អាន" + +#, c-format +msgid "" +"Could not establish a connection with the server:\n" +"%s" +msgstr "" +"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ ៖\n" +"%s" + +msgid "Unable to create socket" +msgstr "មិន​អាច​បង្កើត​រន្ធ​បានទេ" + +msgid "Invalid XMPP ID" +msgstr "លេខសម្គាល់ XMPP មិន​ត្រឹមត្រូវ" + +msgid "Invalid XMPP ID. Domain must be set." +msgstr "លេខសម្គាល់ XMPP មិនត្រឹមត្រូវ ។ ដែន​ត្រូវ​តែ​បានកំណត់ ។" + +#, c-format +msgid "Registration of %s@%s successful" +msgstr "ការ​ចុះឈ្មោះ​ %s@%s ដោយ​ជោគជ័យ" + +#, c-format +msgid "Registration to %s successful" +msgstr "កា​រចុះឈ្មោះ​ទៅ​ %s ដោយជោគជ័យ" + +msgid "Registration Successful" +msgstr "ការ​ចុះ​ឈ្មោះ​បាន​ជោគជ័យ" + +msgid "Registration Failed" +msgstr "បានបរាជ័យ​ក្នុងកា​រចុះឈ្មោះ" + +#, c-format +msgid "Registration from %s successfully removed" +msgstr "បាន​យក​ការ​ចុះឈ្មោះ​ពី %s ដោយជោគជ័យ​ចេញ" + +msgid "Unregistration Successful" +msgstr "លុប​ការ​ចុះឈ្មោះ​ដោយ​ជោគជ័យ" + +msgid "Unregistration Failed" +msgstr "បានបរាជ័យ​ក្នុងការ​លុប​ការ​ចុះឈ្មោះ" + +msgid "Already Registered" +msgstr "បានចុះឈ្មោះ​រួច​ហើយ" + +msgid "State" +msgstr "ស្ថាន​​ភាព" + +msgid "Postal code" +msgstr "លេខ​ប្រៃសណីយ៍" + +msgid "Phone" +msgstr "ទូរស័ព្ទ​" + +msgid "Date" +msgstr "កាល​​បរិច្ឆេទ" + +msgid "Unregister" +msgstr "មិន​ចុះឈ្មោះ" + +msgid "" +"Please fill out the information below to change your account registration." +msgstr "សូម​បំពេញ​ព័ត៌មាន​ខាងក្រោម​ ដើម្បី​ផ្លាស់ប្ដូរ​ការ​ចុះឈ្មោះគណនី​របស់​អ្នក ។" + +msgid "Please fill out the information below to register your new account." +msgstr "សូម​បំពេញ​ព័ត៌មាន​ខាងក្រោម​ ដើម្បីចុះឈ្មោះ​គណនី​ថ្មី​របស់​អ្នក ។" + +msgid "Register New XMPP Account" +msgstr "ចុះឈ្មោះគណនី​ XMPP ថ្មី" + +msgid "Register" +msgstr "ចុះឈ្មោះ" + +#, c-format +msgid "Change Account Registration at %s" +msgstr "ផ្លាស់ប្ដូរ​ការ​ចុះឈ្មោះ​គណនី​នៅ %s" + +#, c-format +msgid "Register New Account at %s" +msgstr "ចុះឈ្មោះ​គណនីថ្មី​នៅ %s" + +msgid "Change Registration" +msgstr "ផ្លាស់​ប្តូរ​ការ​ចុះ​ឈ្មោះ" + +msgid "Error unregistering account" +msgstr "កំហុស​ក្នុងកា​រលុប​ការ​ចុះឈ្មោះ​គណនី" + +msgid "Account successfully unregistered" +msgstr "បានលុបការ​ចុះឈ្មោះគណនី​ដោយ​ជោគជ័យ" + +msgid "Initializing Stream" +msgstr "ចាប់ផ្ដើម​ស្ទ្រីម" + +msgid "Initializing SSL/TLS" +msgstr "ចាប់ផ្ដើម SSL/TLS" + +msgid "Authenticating" +msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Re-initializing Stream" +msgstr "ចាប់ផ្ដើមស្ទ្រីម​ឡើង​វិញ" + +msgid "Server doesn't support blocking" +msgstr "ម៉ាស៊ីន​បម្រើ​មិន​គាំទ្រ​ការ​ទប់ស្កាត់​ទេ" + +msgid "Not Authorized" +msgstr "មិន​បានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ" + +msgid "Both" +msgstr "ទាំង​ពីរ​" + +msgid "From (To pending)" +msgstr "ពី (ដល់​មិន​ទាន់សម្រេច)" + +msgid "From" +msgstr "ពី" + +msgid "To" +msgstr "ទៅ" + +msgid "None (To pending)" +msgstr "គ្មាន (ដល់​មិនទាន់សម្រេច)" + +msgid "None" +msgstr "គ្មាន" + +msgid "Subscription" +msgstr "ការ​ជាវ" + +msgid "Mood" +msgstr "អារម្មណ៍" + +msgid "Now Listening" +msgstr "ឥឡូវ​កំពុង​ស្ដាប់" + +msgid "Mood Text" +msgstr "អត្ថបទ​អារម្មណ៍" + +msgid "Allow Buzz" +msgstr "អនុញ្ញាត​ Buzz" + +msgid "Tune Artist" +msgstr "សិល្បករ Tune" + +msgid "Tune Title" +msgstr "ចំណង​ជើង Tune" + +msgid "Tune Album" +msgstr "អាល់ប៊ុម Tune" + +msgid "Tune Genre" +msgstr "ប្រភេទ Tune" + +msgid "Tune Comment" +msgstr "អធិប្បាយ Tune" + +msgid "Tune Track" +msgstr "បទ Tune" + +msgid "Tune Time" +msgstr "ពេលវេលា Tune" + +msgid "Tune Year" +msgstr "ឆ្នាំ Tune" + +msgid "Tune URL" +msgstr "URL Tune" + +msgid "Password Changed" +msgstr "បាន​ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់" + +msgid "Your password has been changed." +msgstr "ពាក្យ​សម្ងាត់​របស់​អ្នក​ត្រូវ​បាន​ផ្លាស់ប្ដូរ ។" + +msgid "Error changing password" +msgstr "កំហុស​ក្នុងកា​រផ្លាស់ប្ដូរ​ពាក្យសម្ងាត់" + +msgid "Password (again)" +msgstr "ពាក្យ​សម្ងាត់ (ម្ដង​ទៀត)" + +msgid "Change XMPP Password" +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ XMPP" + +msgid "Please enter your new password" +msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក" + +msgid "Set User Info..." +msgstr "កំណត់​ព័ត៌មាន​របស់​អ្នក​ប្រើ..." + +#. if (js->protocol_options & CHANGE_PASSWORD) { +msgid "Change Password..." +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់..." + +#. } +msgid "Search for Users..." +msgstr "ស្វែងរក​អ្នកប្រើ..." + +msgid "Bad Request" +msgstr "សំណើ​មិន​ល្អ" + +msgid "Conflict" +msgstr "ប៉ះទង្គិច" + +msgid "Feature Not Implemented" +msgstr "លក្ខណៈពិសេស​មិនបាន​អនុវត្ត" + +msgid "Forbidden" +msgstr "បានហាមឃាត់" + +msgid "Gone" +msgstr "បានទៅ​ហើយ" + +msgid "Internal Server Error" +msgstr "កំហុស​ម៉ាស៊ីន​បម្រើ​ខាង​ក្នុង" + +msgid "Item Not Found" +msgstr "រក​មិនឃើញ​ធាតុ" + +msgid "Malformed XMPP ID" +msgstr "លេខសម្គាល់ XMPP មាន​ទ្រង់ទ្រាយ" + +msgid "Not Acceptable" +msgstr "មិន​អាច​ទទួលយក​បានទេ" + +msgid "Not Allowed" +msgstr "មិនបាន​អនុញ្ញាត​ទេ" + +msgid "Payment Required" +msgstr "ត្រូវការ​​ការ​ចំណាយ" + +msgid "Recipient Unavailable" +msgstr "មិនមាន​អ្នក​ទទួល​ទេ" + +msgid "Registration Required" +msgstr "ត្រូវការ​ការ​ចុះឈ្មោះ" + +msgid "Remote Server Not Found" +msgstr "រក​មិនឃើញ​ម៉ាស៊ីនបម្រើ​ពី​ចម្ងាយ" + +msgid "Remote Server Timeout" +msgstr "អស់ពេល​ម៉ាស៊ីនបម្រើ​ពី​ចម្ងាយ" + +msgid "Server Overloaded" +msgstr "លើស​ចំណុះ​ម៉ាស៊ីនបម្រើ" + +msgid "Service Unavailable" +msgstr "មិនមាន​សេវា​ទេ" + +msgid "Subscription Required" +msgstr "ត្រូវការ​ការ​ជាវ" + +msgid "Unexpected Request" +msgstr "សំណើ​ដែល​មិន​រំពឹង​ទុក" + +msgid "Authorization Aborted" +msgstr "បានបោះបង់​កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Incorrect encoding in authorization" +msgstr "ការ​អ៊ិនកូដ​មិន​ត្រឹមត្រូវ​នៅក្នុងកា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Invalid authzid" +msgstr "ការ​ផ្ទៀងផ្ទាត់​មិន​ត្រឹមត្រូវ" + +msgid "Invalid Authorization Mechanism" +msgstr "យន្ដការ​ផ្ទៀងផ្ទាត់​មិន​ត្រឹមត្រូវ" + +msgid "Authorization mechanism too weak" +msgstr "យន្តការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​​ខ្សោយ​ពេក" + +msgid "Temporary Authentication Failure" +msgstr "ភាព​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​បណ្ដោះអាសន្ន" + +msgid "Authentication Failure" +msgstr "ភាព​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Bad Format" +msgstr "ទ្រង់ទ្រាយ​មិនល្អ" + +msgid "Bad Namespace Prefix" +msgstr "បុព្វបទ​ចន្លោះ​ឈ្មោះ​មិនល្អ" + +msgid "Resource Conflict" +msgstr "ប៉ះទង្គិច​ធនធាន" + +msgid "Connection Timeout" +msgstr "អស់​ពេល​​តភ្ជាប់" + +msgid "Host Gone" +msgstr "ម៉ាស៊ីន​បាន​ទៅហើយ" + +msgid "Host Unknown" +msgstr "មិនស្គាល់​ម៉ាស៊ីន" + +msgid "Improper Addressing" +msgstr "កា​រដាក់​អាសយដ្ឋាន​មិន​ត្រឹមត្រូវ" + +msgid "Invalid ID" +msgstr "លេខ​សម្គាល់​មិន​ត្រឹមត្រូវ" + +msgid "Invalid Namespace" +msgstr "ចន្លោះ​ឈ្មោះ​មិន​ត្រឹមត្រូវ" + +msgid "Invalid XML" +msgstr "XML មិន​ត្រឹមត្រូវ" + +msgid "Non-matching Hosts" +msgstr "គ្មាន​ម៉ាស៊ីន​ផ្គូផ្គង​ទេ" + +msgid "Policy Violation" +msgstr "ការ​បំពាន​គោលនយោបាយ" + +msgid "Remote Connection Failed" +msgstr "បានបរាជ័យ​ក្នុងកា​រតភ្ជាប់​ពី​ចម្ងាយ" + +msgid "Resource Constraint" +msgstr "កា​រដាក់​កម្រិត​ធនធាន" + +msgid "Restricted XML" +msgstr "XML ដែល​បាន​ដាក់​កម្រិត" + +msgid "See Other Host" +msgstr "មើល​ម៉ាស៊ីន​ផ្សេង" + +msgid "System Shutdown" +msgstr "បិទ​ប្រព័ន្ធ" + +msgid "Undefined Condition" +msgstr "លក្ខខណ្ឌ​មិនបានកំណត់" + +msgid "Unsupported Encoding" +msgstr "ការ​អ៊ិនកូដ​ដែល​មិនបាន​គាំទ្រ" + +msgid "Unsupported Stanza Type" +msgstr "ប្រភេទ Stanza ដែល​មិនបានគាំទ្រ" + +msgid "Unsupported Version" +msgstr "កំណែ​ដែល​មិនបានគាំទ្រ" + +msgid "XML Not Well Formed" +msgstr "XML មិនបាន​រៀបចំ​បាន​ល្អ" + +msgid "Stream Error" +msgstr "កំហុស​ស្ទ្រីម" + +#, c-format +msgid "Unable to ban user %s" +msgstr "មិនអាច​ហាមឃាត់​អ្នក​ប្រើ %s" + +#, c-format +msgid "Unknown affiliation: \"%s\"" +msgstr "មិនស្គាល់​ការ​ទាក់ទង​គ្នា ៖ \"%s\"" + +#, c-format +msgid "Unable to affiliate user %s as \"%s\"" +msgstr "មិនអាច​ទាក់ទង​អ្នក​ប្រើ %s ជា \"%s\"" + +#, c-format +msgid "Unknown role: \"%s\"" +msgstr "មិនស្គាល់​តួនាទី ៖ \"%s\"" + +#, c-format +msgid "Unable to set role \"%s\" for user: %s" +msgstr "មិនអាច​កំណត់​តួនាទី \"%s\" សម្រាប់​អ្នក​ប្រើ ៖ %s" + +#, c-format +msgid "Unable to kick user %s" +msgstr "មិនអាច​ធាក់​អ្នកប្រើ %s បាន​ទេ" + +#, c-format +msgid "Unable to ping user %s" +msgstr "មិនអាច ping អ្នក​ប្រើ %s បានទេ" + +#, c-format +msgid "Unable to buzz, because there is nothing known about user %s." +msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​មិន​ស្គាល់​អំពី​អ្នកប្រើ %s ។" + +#, c-format +msgid "Unable to buzz, because user %s might be offline." +msgstr "មិនអាចកេះកៀង​បានទេ ពីព្រើ​អ្នកប្រើ %s នៅ​ក្រៅ​បណ្ដាញ ។" + +#, c-format +msgid "Unable to buzz, because the user %s does not support it." +msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​អ្នក​ប្រើ %s មិន​គាំទ្រ​វា​ទេ ។" + +#. Yahoo only supports one attention command: the 'buzz'. +#. This is index number YAHOO_BUZZ. +msgid "Buzz" +msgstr "កេះកៀវ" + +#, c-format +msgid "%s has buzzed you!" +msgstr "%s បានកេះកៀវ​អ្នក !" + +#, c-format +msgid "Buzzing %s..." +msgstr "កំពុងកេះកៀវ %s..." + +msgid "config: Configure a chat room." +msgstr "config ៖ កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់​ជជែក ។" + +msgid "configure: Configure a chat room." +msgstr "កំណត់​រចនាសម្ព័ន្ធ ៖ កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់​ជជែក ។" + +msgid "part [room]: Leave the room." +msgstr "part [room] ៖ ចេញ​ពី​បន្ទប់ ។" + +msgid "register: Register with a chat room." +msgstr "ចុះឈ្មោះ ៖ ចុះឈ្មោះ​​ក្នុង​បន្ទប់​ជជែក ។" + +msgid "topic [new topic]: View or change the topic." +msgstr "ប្រធានបទ [ប្រធាន​បទ​ថ្មី] ៖ មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធាន​បទ ។" + +msgid "ban <user> [reason]: Ban a user from the room." +msgstr "ហាមឃាត់ <អ្នក​ប្រើ> [ហេតុផល] ៖ ហាមឃាត់​អ្នកប្រើ​ពី​បន្ទប់ ។" + +msgid "" +"affiliate <user> <owner|admin|member|outcast|none>: Set a user's " +"affiliation with the room." +msgstr "" +"ទាក់ទង <អ្នក​ប្រើ> <ម្ចាស់|អ្នកគ្រប់គ្រង|សមាជិក|outcast|គ្មាន> ៖ កំណត់​ទំនាក់ទំនង​" +"របស់​អ្នក​ប្រើ​ជា​មួយ​នឹង​បន្ទប់ ។" + +msgid "" +"role <user> <moderator|participant|visitor|none>: Set a user's " +"role in the room." +msgstr "" +"តួនាទី <អ្នក​ប្រើ> <អ្នកអន្តរការី|អ្នក​ចូលរួម|អ្នក​ទស្សនា|គ្មាន> ៖ កំណត់​តួនាទី​របស់​អ្នក​" +"ប្រើ​នៅ​ក្នុង​បន្ទប់ ។" + +msgid "invite <user> [message]: Invite a user to the room." +msgstr "អញ្ជើញ <អ្នក​ប្រើ> [សារ] ៖ អញ្ជើញ​អ្នក​ប្រើ​ឲ្យ​ចូល​បន្ទប់ ។" + +msgid "join: <room> [password]: Join a chat on this server." +msgstr "ចូល ៖ <បន្ទប់> [ពាក្យ​សម្ងាត់] ៖ ចូល​ក្នុងការជជែក​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​នេះ ។" + +msgid "kick <user> [reason]: Kick a user from the room." +msgstr "ធាក់ <អ្នក​ប្រើ> [ហេតុផល] ៖ ធាក់​អ្នក​ប្រើ​​ពី​បន្ទប់ ។" + +msgid "" +"msg <user> <message>: Send a private message to another user." +msgstr "msg <អ្នក​ប្រើ> <សារ> ៖ ផ្ញើ​សារ​ឯកជន​ទៅ​អ្នក​ប្រើ​ផ្សេង ។" + +msgid "ping <jid>:\tPing a user/component/server." +msgstr "ping <jid> ៖ Ping អ្នក​ប្រើ/សមាសធាតុ/ម៉ាស៊ីន​បម្រើ ។" + +msgid "buzz: Buzz a user to get their attention" +msgstr "កេះកៀវ ៖ កេះកៀវ​អ្នក​ប្រើ​ដើម្បីទទួល​បានការ​ចាប់អារម្មណ៍​របស់​ពួកគេ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "XMPP Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ XMPP" + +#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im +msgid "Domain" +msgstr "ដែន" + +msgid "Require SSL/TLS" +msgstr "ត្រូវការ SSL/TLS" + +msgid "Force old (port 5223) SSL" +msgstr "បង្ខុះ​ (ច្រក 5223) SSL ចាស់" + +msgid "Allow plaintext auth over unencrypted streams" +msgstr "អនុញ្ញាត​ឲ្យ​អត្ថបទ​ធម្មតា​លើ​ស្ទ្រីម​ដែល​មិន​បានអ៊ិនគ្រីប" + +msgid "Connect port" +msgstr "ច្រក​តភ្ជាប់" + +#. TODO: default to automatically try different ports. Make the user be +#. * able to set the first port to try (like LastConnectedPort in Windows client). +#. Account options +msgid "Connect server" +msgstr "តភ្ជាប់​ម៉ាស៊ីន​បម្រើ" + +msgid "File transfer proxies" +msgstr "ប្រូកស៊ី​ការ​ផ្ទេរ​ឯកសារ" + +#. this should probably be part of global smiley theme settings later on, +#. shared with MSN +msgid "Show Custom Smileys" +msgstr "បង្ហាញ​សញ្ញាណ​ញញឹម​ផ្ទាល់" + +#, c-format +msgid "%s has left the conversation." +msgstr "%s បាន​ចេញ​ពី​ការ​សន្ទនា ។" + +#, c-format +msgid "Message from %s" +msgstr "សារ​ពី %s" + +#, c-format +msgid "%s has set the topic to: %s" +msgstr "%s បាន​កំណត់​ប្រធានបទ​ទៅ ៖ %s" + +#, c-format +msgid "The topic is: %s" +msgstr "ប្រធាន​បទ​គឺ ៖ %s" + +#, c-format +msgid "Message delivery to %s failed: %s" +msgstr "បានបរាជ័យ​ក្នុងការ​បញ្ជូន​សារ %s ៖ %s" + +msgid "XMPP Message Error" +msgstr "កំហុស​សារ XMPP" + +#, c-format +msgid "(Code %s)" +msgstr "(កូដ %s)" + +msgid "XML Parse error" +msgstr "កំហុស​ក្នុងកា​រញែក XML" + +msgid "Unknown Error in presence" +msgstr "មិន​ស្គាល់​កំហុស​នៅ​ក្នុងវត្តមាន" + +msgid "Create New Room" +msgstr "បង្កើត​បន្ទប់​ថ្មី" + +msgid "" +"You are creating a new room. Would you like to configure it, or accept the " +"default settings?" +msgstr "អ្នក​បង្កើត​បន្ទប់​ថ្មី ។ តើអ្នក​ចង់​កំណត់​រចនាសម្ព័ន្ធ​វា​ដែរឬទេ ឬ​ព្រម​ទទួល​ការ​កំណត់​លំនាំដើម ?" + +msgid "_Configure Room" +msgstr "កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់" + +msgid "_Accept Defaults" +msgstr "ព្រមទទួល​លំនាំដើម" + +#, c-format +msgid "Error joining chat %s" +msgstr "កំហុស​ក្នុងកា​រចូល​ក្នុងការ​ជជែក %s" + +#, c-format +msgid "Error in chat %s" +msgstr "កំហុស​​នៅ​ក្នុង​ការ​ជជែក %s" + +#, c-format +msgid "Unable to send file to %s, user does not support file transfers" +msgstr "មិនអាច​ផ្ញើសារ​ទៅ​កាន់ %s អ្នក​ប្រើ​មិន​គាំទ្រ​កា​រផ្ទេរ​ឯកសារ​ទេ" + +msgid "File Send Failed" +msgstr "បានបរាជ័យ​ក្នុងកា​រផ្ញើ​ឯកសារ" + +#, c-format +msgid "Unable to send file to %s, invalid JID" +msgstr "មិនអាច​ផ្ញើ​ឯកសារ​ទៅ​កាន់ %s បានទេ ដោយសារ​តែ JID មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "Unable to send file to %s, user is not online" +msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ អ្នកប្រើ​មិន​នៅ​លើ​បណ្ដាញ​ទេ" + +#, c-format +msgid "Unable to send file to %s, not subscribed to user presence" +msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ មិនបានជាវ​ទៅ​វត្តមាន​របស់​អ្នកប្រើ" + +#, c-format +msgid "Please select the resource of %s to which you would like to send a file" +msgstr "សូម​ជ្រើស​ធនធាន​របស់ %s ដែល​អ្នក​ចង់​ផ្ញើ​ឯកសារ" + +msgid "Select a Resource" +msgstr "ជ្រើស​ធនធាន" + +msgid "Edit User Mood" +msgstr "កែសម្រួល​អារម្មណ៍​អ្នកប្រើ" + +msgid "Please select your mood from the list." +msgstr "សូម​ជ្រើស​អារម្មណ៍​របស់​អ្នក​ពី​បញ្ជី ។" + +msgid "Set" +msgstr "កំណត់" + +msgid "Set Mood..." +msgstr "កំណត់​អារម្មណ៍..." + +msgid "Set User Nickname" +msgstr "កំណត់​សម្មតិនាម​របស់​អ្នក​ប្រើ" + +msgid "Please specify a new nickname for you." +msgstr "សូម​បញ្ជាក់​សម្មតិនាម​ថ្មី​សម្រាប់​​អ្នក ។" + +msgid "" +"This information is visible to all contacts on your contact list, so choose " +"something appropriate." +msgstr "" +"ព័ត៌មាន​នេះ​​ទំនាក់ទំនង​ទាំង​អស់​អាច​មើល​ឃើញ​នៅ​​ក្នុង​បញ្ជីទំនាក់ទំនង​របស់​អ្នក ដូច្នេះ​​ជ្រើស​អ្វីដែល​សមរម្យ ។" + +msgid "Set Nickname..." +msgstr "កំណត់​សម្មតិនាម..." + +msgid "Actions" +msgstr "សកម្មភាព" + +msgid "Select an action" +msgstr "ជ្រើស​សកម្មភាព" + +#. only notify the user about problems adding to the friends list +#. * maybe we should do something else for other lists, but it probably +#. * won't cause too many problems if we just ignore it +#, c-format +msgid "Unable to add \"%s\"." +msgstr "មិន​អាច​បន្ថែម \"%s\" ។" + +msgid "Buddy Add error" +msgstr "កំហុស​ក្នុងកា​របន្ថែម​មិត្តភក្ដិ" + +msgid "The username specified does not exist." +msgstr "មិនមាន​ឈ្មោះ​​អ្នក​ប្រើ​ដែល​បាន​បញ្ជាក់​ទេ ។" + +#, c-format +msgid "Buddy list synchronization issue in %s (%s)" +msgstr "បញ្ហា​ក្នុងការ​ធ្វើ​សមកាលកម្ម​បញ្ជីមិត្តភក្ដិ​នៅ​ក្នុង %s (%s)" + +#, c-format +msgid "" +"%s on the local list is inside the group \"%s\" but not on the server list. " +"Do you want this buddy to be added?" +msgstr "" +"%s នៅ​​ក្នុង​បញ្ជីមូលដ្ឋាន​ គឺ​នៅ​ក្នុងក្រុម \"%s\" ប៉ុន្តែ​មិននៅ​ក្នុង​បញ្ជី​ម៉ាស៊ីន​បម្រើ​ទេ ។ តើ​អ្នក​ចង់​" +"បន្ថែមមិត្តភក្ដិ​នេះដែរឬទេ ?" + +#, c-format +msgid "" +"%s is on the local list but not on the server list. Do you want this buddy " +"to be added?" +msgstr "" +"%s នៅ​ក្នុង​បញ្ជីមូលដ្ឋាន ប៉ុន្តែ​មិននៅ​ក្នុងបញ្ជី​ម៉ាស៊ីនបម្រើ​ទេ ។ តើ​អ្នកចង់​បន្ថែម​មិត្តភក្ដិ​នេះដែរឬទេ ?" + +#, c-format +msgid "Unable to parse message" +msgstr "មិន​អាច​ញែក​សារ​បានទេ" + +#, c-format +msgid "Syntax Error (probably a client bug)" +msgstr "កំហុស​វាក្យសម្ពន្ធ (ប្រហែល​ជា​កំហុស​ម៉ាស៊ីន​ភ្ញៀវ)" + +#, c-format +msgid "Invalid email address" +msgstr "អាសយដ្ឋាន​អ៊ីមែល​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "User does not exist" +msgstr "មិន​មាន​​អ្នក​ប្រើ​ទេ" + +#, c-format +msgid "Fully qualified domain name missing" +msgstr "បាត់​ឈ្មោះ​ដែល​ដែល​បានបញ្ជាក់​ទាំង​ស្រុង" + +#, c-format +msgid "Already logged in" +msgstr "បាន​ចូលរួច​ហើយ" + +#, c-format +msgid "Invalid username" +msgstr "ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "Invalid friendly name" +msgstr "ឈ្មោះ​មិត្តភក្ដិ​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "List full" +msgstr "បញ្ជី​ពេញ​ហើយ" + +#, c-format +msgid "Already there" +msgstr "នៅ​ទីនោះ​រួច​ហើយ" + +#, c-format +msgid "Not on list" +msgstr "មិន​នៅ​ក្នុង​បញ្ជី​ទេ" + +#, c-format +msgid "User is offline" +msgstr "អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ" + +#, c-format +msgid "Already in the mode" +msgstr "មាន​ក្នុង​របៀប​នេះ​រួច​ហើយ" + +#, c-format +msgid "Already in opposite list" +msgstr "មាននៅ​ក្នុង​បញ្ជី​នោះ​រួច​ហើយ" + +#, c-format +msgid "Too many groups" +msgstr "មានក្រុម​ច្រើនពេក" + +#, c-format +msgid "Invalid group" +msgstr "ក្រុម​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "User not in group" +msgstr "អ្នក​ប្រើ​មិននៅ​ក្នុង​ក្រុម​ទេ" + +#, c-format +msgid "Group name too long" +msgstr "ឈ្មោះ​ក្រុម​វែងពេក" + +#, c-format +msgid "Cannot remove group zero" +msgstr "មិនអាច​យក​ក្រុម​សូន្យ​ចេញបានទេ" + +#, c-format +msgid "Tried to add a user to a group that doesn't exist" +msgstr "បាន​ព្យាយាម​បន្ថែម​អ្នក​ទៅ​ក្រុម​ដែល​មិនទាន់​មាន" + +#, c-format +msgid "Switchboard failed" +msgstr "ប៉ាណូ​បានបរាជ័យ" + +#, c-format +msgid "Notify transfer failed" +msgstr "បានបរាជ័យ​ក្នុងការ​ជូន​ដំណឹង​នៃ​កា​រផ្ទេរ" + +#, c-format +msgid "Required fields missing" +msgstr "បាត់​វាល​ដែល​ត្រូវការ" + +#, c-format +msgid "Too many hits to a FND" +msgstr "ចុច​គ្រាប់ចុច FND ច្រើន​ដង​ពេក" + +#, c-format +msgid "Not logged in" +msgstr "មិនបានចូល​ទេ" + +#, c-format +msgid "Service temporarily unavailable" +msgstr "សេវា​មិនអាច​ប្រើបានជា​បណ្ដោះអាសន្ន" + +#, c-format +msgid "Database server error" +msgstr "កំហុស​ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន​ទិន្នន័យ" + +#, c-format +msgid "Command disabled" +msgstr "បាន​បិទ​ពាក្យ​បញ្ជា" + +#, c-format +msgid "File operation error" +msgstr "កំហុស​ក្នុងកា​រប្រតិបត្តិ​ឯកសារ" + +#, c-format +msgid "Memory allocation error" +msgstr "កំហុស​ក្នុងការ​បម្រុង​ទុក​សតិ" + +#, c-format +msgid "Wrong CHL value sent to server" +msgstr "តម្លៃ CHL មិនត្រឹមត្រូវ​បានផ្ញើ​ទៅ​កាន់ម៉ាស៊ីនបម្រើ" + +#, c-format +msgid "Server busy" +msgstr "ម៉ាស៊ីនបម្រើ​រវល់" + +#, c-format +msgid "Server unavailable" +msgstr "ម៉ាស៊ីន​បម្រើ​មិនអាច​ប្រើបានទេ" + +#, c-format +msgid "Peer notification server down" +msgstr "ការ​ជូនដំណឹង​​ម៉ាស៊ីនបម្រើ​​ដូច​គ្នា​បាន​ខូច" + +#, c-format +msgid "Database connect error" +msgstr "កំហុស​ក្នុងការ​តភ្ជាប់​មូលដ្ឋាន​ទិន្នន័យ" + +#, c-format +msgid "Server is going down (abandon ship)" +msgstr "ម៉ាស៊ីន​បម្រើ​ខូច​ហើយ (មកជា​មួយ abandon)" + +#, c-format +msgid "Error creating connection" +msgstr "កំហុស​ក្នុងការ​បង្កើត​ការ​តភ្ជាប់" + +#, c-format +msgid "CVR parameters are either unknown or not allowed" +msgstr "ប៉ារ៉ាម៉ែត្រ​ដែល​ត្រូវ​បាន​ស្គាល់ ឬ​មិន​ត្រូវ​បានដំឡើង" + +#, c-format +msgid "Unable to write" +msgstr "មិនអាច​សរសេរ" + +#, c-format +msgid "Session overload" +msgstr "លើស​សម័យ" + +#, c-format +msgid "User is too active" +msgstr "អ្នក​ប្រើ​សកម្មភាព​ពេក" + +#, c-format +msgid "Too many sessions" +msgstr "មាន​សម័យ​ច្រើន​ពេក" + +#, c-format +msgid "Passport not verified" +msgstr "មិនបានផ្ទៀងផ្ទាត់​លិខិត​ឆ្លងដែន​ទេ" + +#, c-format +msgid "Bad friend file" +msgstr "ឯកសារ​មិត្តភក្ដិ​មិនល្អ" + +#, c-format +msgid "Not expected" +msgstr "ដែលមិនបាន​រំពឹង​ទុក" + +#, c-format +msgid "Friendly name changes too rapidly" +msgstr "ការ​ផ្លាស់ប្ដូរ​ឈ្មោះមិត្តភក្ដិ​បន្តិចម្ដងៗ" + +#, c-format +msgid "Server too busy" +msgstr "ម៉ាស៊ីន​បម្រើ​រវល់​ពេក" + +#, c-format +msgid "Authentication failed" +msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +#, c-format +msgid "Not allowed when offline" +msgstr "មិន​បាន​អនុញ្ញាត​នៅពេល​នៅ​ក្រៅ​បណ្ដាញ" + +#, c-format +msgid "Not accepting new users" +msgstr "មិនទទួលយក​អ្នក​ប្រើដែល​ថ្មីទេ" + +#, c-format +msgid "Kids Passport without parental consent" +msgstr "ពាក្យ​សម្ងាត់​ក្មេង​ដោយ​គ្មានកា​រយល់ព្រម​ពី​ឳពុកម្ដាយ" + +#, c-format +msgid "Passport account not yet verified" +msgstr "គណនី​លិខិតឆ្លងដែន​មិន​បាន​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ" + +msgid "Passport account suspended" +msgstr "បានផ្អាក​គណនី​លិខិតឆ្លងដែន" + +#, c-format +msgid "Bad ticket" +msgstr "សំបុត្រ​មិន​ល្អ" + +#, c-format +msgid "Unknown Error Code %d" +msgstr "មិន​ស្គាល់​កូដ​កំហុស %d" + +#, c-format +msgid "MSN Error: %s\n" +msgstr "កំហុស MSN ៖ %s\n" + +msgid "Other Contacts" +msgstr "ទំនាក់ទំនង​ផ្សេងៗ" + +msgid "Non-IM Contacts" +msgstr "ទំនាក់ទំនង​ដែល​មិនមាន​ជា IM" + +msgid "Nudge" +msgstr "ច្រាន" + +#, c-format +msgid "%s has nudged you!" +msgstr "%s បាន​ច្រាន​អ្នក !" + +#, c-format +msgid "Nudging %s..." +msgstr "កំពុង​ច្រាន %s..." + +msgid "Email Address..." +msgstr "អាសយដ្ឋាន​អ៊ីមែល..." + +msgid "Your new MSN friendly name is too long." +msgstr "ឈ្មោះ​មិត្តភក្ដិ MSN ថ្មី​របស់​អ្នក​វែង​ពេក ។" + +msgid "Set your friendly name." +msgstr "កំណត់​ឈ្មោះ​មិត្តភក្ដ​របស់​អ្នក ។" + +msgid "This is the name that other MSN buddies will see you as." +msgstr "នេះជា​ឈ្មោះ​ដែល​មិត្តភក្ដិ MSN ផ្សេង​ទៀត​នឹង​ឃើញ​អ្នក ។" + +msgid "Set your home phone number." +msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ផ្ទះ​របស់​អ្នក ។" + +msgid "Set your work phone number." +msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ការងារ​របស់​អ្នក ។" + +msgid "Set your mobile phone number." +msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ចល័ត​របស់​អ្នក ។" + +msgid "Allow MSN Mobile pages?" +msgstr "អនុញ្ញាត​ឲ្យ​មាន​ទំព័រ​ចល័ត​របស់ MSN ?" + +msgid "" +"Do you want to allow or disallow people on your buddy list to send you MSN " +"Mobile pages to your cell phone or other mobile device?" +msgstr "" +"តើអ្នក​ចង់​អនុញ្ញាត ឬ​មិន​អនុញ្ញាត​មនុស្ស​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ផ្ញើ​ឲ្យ​អ្នក​នូវ​ទំព័រ​ចល័ត​របស់ MSN ទៅកាន់​" +"ទូរស័ព្ទ​ចល័ត​របស់​អ្នក ឬ​ឧបករណ៍​ចល័ត​ផ្សេងៗ ?" + +msgid "Allow" +msgstr "អនុញ្ញាត" + +msgid "Disallow" +msgstr "មិន​អនុញ្ញាត" + +#, c-format +msgid "Blocked Text for %s" +msgstr "អត្ថបទ​ដែលបានទប់ស្កាត់​សម្រាប់ %s" + +msgid "No text is blocked for this account." +msgstr "គ្មាន​អត្ថបទ​ត្រូវ​បាន​ទប់ស្កាត់​សម្រាប់គណនី​នេះ ។" + +#, c-format +msgid "" +"MSN servers are currently blocking the following regular expressions:
%s" +msgstr "ម៉ាស៊ីន​បម្រើ MSN បច្ចុប្បន្ន​កំពុង​ទប់ស្កាត់​កន្សោម​ធម្មតា​ដូច​ខាងក្រោម ៖
%s" + +msgid "This account does not have email enabled." +msgstr "គណនី​នេះ​មិន​មាន​អាសយដ្ឋាន​បានបើក​ទេ ។" + +msgid "Send a mobile message." +msgstr "ផ្ញើ​សារ​ចល័ត ។" + +msgid "Page" +msgstr "ទំព័រ​​" + +msgid "Playing a game" +msgstr "លេង​ល្បែង" + +msgid "Working" +msgstr "ធ្វើការ" + +msgid "Has you" +msgstr "មាន​អ្នក" + +msgid "Home Phone Number" +msgstr "លេខ​ទូរស័ព្ទ​​ផ្ទះ​" + +msgid "Work Phone Number" +msgstr "លេខ​ទូរស័ព្ទ​ការងារ" + +msgid "Mobile Phone Number" +msgstr "លេខ​ទូរស័ព្ទ​ចល័ត" + +msgid "Be Right Back" +msgstr "ថយក្រោយ" + +msgid "Busy" +msgstr "រវល់" + +msgid "On the Phone" +msgstr "ជាប់និយាយ​ទូរស័ព្ទ" + +msgid "Out to Lunch" +msgstr "​ទៅ​អាហារ​ថ្ងៃ​ត្រង់​នៅ​ក្រៅ" + +#. primitive +#. ID +#. name - use default +#. saveable +#. should be user_settable some day +#. independent +msgid "Artist" +msgstr "សិល្ប" + +msgid "Album" +msgstr "អាល់ប៊ុម" + +msgid "Game Title" +msgstr "ចំណង​ជើង​ល្បែង" + +msgid "Office Title" +msgstr "ចំណង​ជើង​ការិយាល័យ" + +msgid "Set Friendly Name..." +msgstr "កំណត់​​ឈ្មោះ​មិត្តភក្តិ..." + +msgid "Set Home Phone Number..." +msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ផ្ទះ..." + +msgid "Set Work Phone Number..." +msgstr "កំណត់​លេខ​ទូរស័ព្ទ​កន្លែង​ធ្វើការ..." + +msgid "Set Mobile Phone Number..." +msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ចល័ត..." + +msgid "Enable/Disable Mobile Devices..." +msgstr "បិទ/បើក​ឧបករណ៍​ចល័ត..." + +msgid "Allow/Disallow Mobile Pages..." +msgstr "អនុញ្ញាត/មិនអនុញ្ញាត​ទំព័រ​ចល័ត..." + +msgid "View Blocked Text..." +msgstr "មើល​អត្ថបទ​ដែល​បាន​ទប់ស្កាត់..." + +msgid "Open Hotmail Inbox" +msgstr "បើក​ប្រអប់​ Hotmail" + +msgid "Send to Mobile" +msgstr "ផ្ញើ​ទៅ​ទូរស័ព្ទ​ចល័ត" + +msgid "Initiate _Chat" +msgstr "ចាប់ផ្ដើមជជែក" + +msgid "SSL support is needed for MSN. Please install a supported SSL library." +msgstr "ការ​គាំទ្រ SSL ត្រូវ​បានទាមទារ​សម្រាប់ MSN ។ សូម​ដំឡើង​បណ្ណាល័យ SSL ដែល​បានគាំទ្រ ។" + +msgid "Failed to connect to server." +msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់​ទៅ​ម៉ាស៊ីន​បម្រើ ។" + +msgid "Error retrieving profile" +msgstr "កំហុសក្នុងការ​ទៅ​ទទួល​យក​ទម្រង់" + +msgid "General" +msgstr "ទូទៅ" + +msgid "Age" +msgstr "អាយុ" + +msgid "Occupation" +msgstr "មុខរបរ" + +msgid "Location" +msgstr "ទីតាំង" + +msgid "Hobbies and Interests" +msgstr "ចំណូល​ចិត្ត និង​ចំណាប់​អារម្មណ៍" + +msgid "A Little About Me" +msgstr "បន្តិចបន្តួច​អំពី​ខ្ញុំ" + +msgid "Social" +msgstr "សង្គម" + +msgid "Marital Status" +msgstr "ស្ថានភាព​គ្រួសារ" + +msgid "Interests" +msgstr "ចំណាប់​អារម្មណ៍" + +msgid "Pets" +msgstr "សត្វស្លាប" + +msgid "Hometown" +msgstr "ទីក្រុង" + +msgid "Places Lived" +msgstr "បន្តផ្ទាល់​នៅ​កន្លែង" + +msgid "Fashion" +msgstr "ម៉ូដ" + +msgid "Humor" +msgstr "អារម្មណ៍" + +msgid "Music" +msgstr "តន្ត្រី" + +msgid "Favorite Quote" +msgstr "សម្រង់​សំណព្វ" + +msgid "Contact Info" +msgstr "ព័ត៌មាន​​ទំនាក់ទំនង" + +msgid "Personal" +msgstr "ផ្ទាល់ខ្លួន" + +msgid "Significant Other" +msgstr "ការ​សម្ងាត់​ផ្សេងៗ" + +msgid "Home Phone" +msgstr "ទូរស័ព្ទ​​​​​ផ្ទះ" + +msgid "Home Phone 2" +msgstr "ទូរស័ព្ទ​ផ្ទះ ២" + +msgid "Home Address" +msgstr "អាសយដ្ឋាន​ផ្ទះ" + +msgid "Personal Mobile" +msgstr "ទូរស័ព្ទ​ចល័ត​ផ្ទាល់ខ្លួន" + +msgid "Home Fax" +msgstr "ទូរសារ​ផ្ទះ" + +msgid "Personal Email" +msgstr "អ៊ីមែល​ផ្ទាល់ខ្លួន" + +msgid "Personal IM" +msgstr "IM ផ្ទាល់ខ្លួន" + +msgid "Anniversary" +msgstr "ខួប​កំណើត" + +#. Business +msgid "Work" +msgstr "ការងារ" + +msgid "Job Title" +msgstr "ងារ​ការងារ" + +msgid "Company" +msgstr "ក្រុមហ៊ុន" + +msgid "Department" +msgstr "នាយកដ្ឋាន" + +msgid "Profession" +msgstr "វិជ្ជាជីវៈ" + +msgid "Work Phone" +msgstr "ទូរស័ព្ទ​​​កន្លែង​​​ធ្វើការ" + +msgid "Work Phone 2" +msgstr "ទូរស័ព្ទ​កន្លែង​ធ្វើការ​ ២" + +msgid "Work Address" +msgstr "អាសយដ្ឋាន​កន្លែងធ្វើការ" + +msgid "Work Mobile" +msgstr "ទូរស័ព្ទ​ចល័ត​កន្លែង​ធ្វើការ" + +msgid "Work Pager" +msgstr "ភេយ័រ​កន្លែង​ធ្វើការ" + +msgid "Work Fax" +msgstr "ទូរសារ​កន្លែង​ធ្វើការ" + +msgid "Work Email" +msgstr "អ៊ីមែល​កន្លែង​ធ្វើការ" + +msgid "Work IM" +msgstr "IM កន្លែង​ធ្វើការ" + +msgid "Start Date" +msgstr "កាលបរិច្ឆេទ​ចាប់ផ្ដើម" + +msgid "Favorite Things" +msgstr "វត្ថុ​សំណព្វ" + +msgid "Last Updated" +msgstr "បាន​ធ្វើ​ឲ្យ​ទាន់សម័យ​ចុងក្រោយ" + +msgid "Homepage" +msgstr "គេហទំព័រ" + +msgid "The user has not created a public profile." +msgstr "អ្នក​ប្រើ​មិន​បាន​បង្កើត​ទម្រង់​សាធារណៈ​ទេ ។" + +msgid "" +"MSN reported not being able to find the user's profile. This either means " +"that the user does not exist, or that the user exists but has not created a " +"public profile." +msgstr "" +"MSN បាន​រាយការណ៍​ថា​មិនអាច​រក​ទម្រង់​របស់​អ្នកប្រើទេ ។ នេះ​មាន​ន័យ​ថា​អ្នក​ប្រើ​មិន​ទាន់មាន​ទេ ឬ​ថា​​មាន​អ្នក​" +"ប្រើ​ ប៉ុន្តែ​មិន​បានបង្កើត​ទម្រង់​ជា​សាធារណៈ​ទេ ។" + +msgid "" +"Could not find any information in the user's profile. The user most likely " +"does not exist." +msgstr "មិនអាច​រក​ព័ត៌មាន​នៅ​ក្នុង​ទម្រង់​របស់​អ្នក​ប្រើ​ទេ ។ អ្នក​ប្រើ​ទំនង​ជា​មិន​ទាន់មាន​ទេ ។" + +msgid "View web profile" +msgstr "មើល​ទម្រង់​លើ​បណ្ដាញ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. *< summary +msgid "Windows Live Messenger Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់​កម្មវិធី​ផ្ញើសារ​បន្តផ្ទាល់​របស់​វីនដូ" + +msgid "Use HTTP Method" +msgstr "ប្រើ​វិធីសាស្ត្រ HTTP" + +msgid "HTTP Method Server" +msgstr "ម៉ាស៊ីនបម្រើ​វិធីសាស្ត្រ HTTP" + +msgid "Show custom smileys" +msgstr "បង្ហាញ​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន" + +msgid "nudge: nudge a user to get their attention" +msgstr "ច្រាន​ចេញ ៖ ច្រានអ្នកប្រើ​ចេញ​ដើម្បី​ទទួល​បាន​ការ​ចាបអារម្មណ៍​របស់​ពួកគេ" + +msgid "Windows Live ID authentication:Unable to connect" +msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​នៃ​លេខសម្គាល់​របស់ Windows Live ៖ មិនអាច​តភ្ជាប់​បានទេ" + +msgid "Windows Live ID authentication:Invalid response" +msgstr "កា​រផ្ទៀងផ្ទាត់​​ភាព​ត្រឹមត្រូវ​នៃ​លេខសម្គាល់​របស់ Windows Live ៖ ការ​ឆ្លើយតប​មិនត្រឹមត្រូវ" + +#, c-format +msgid "%s is not a valid group." +msgstr "%s មិន​មែន​ជា​ក្រុម​ត្រឹមត្រូវ​ទេ ។" + +msgid "Unknown error." +msgstr "មិន​ស្គាល់​កំហុស ។" + +#, c-format +msgid "%s on %s (%s)" +msgstr "%s នៅលើ %s (%s)" + +#, c-format +msgid "%s just sent you a Nudge!" +msgstr "%s គ្រាន់​តែ​​បានផ្ញើ​ឲ្យ​អ្នក​នូវ​កា​រច្រានចេញ !" + +#. char *adl = g_strndup(payload, len); +#, c-format +msgid "Unknown error (%d)" +msgstr "មិន​ស្គាល់​កំហុស (%d)" + +msgid "Unable to add user" +msgstr "មិនអាច​បន្ថែម​អ្នក​ប្រើ​បានទេ" + +msgid "The following users are missing from your addressbook" +msgstr "អ្នក​ប្រើ​ដូច​ខាងក្រោម​បាត់​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នក" + +#, c-format +msgid "Unable to add user on %s (%s)" +msgstr "មិនអាច​បន្ថែម​អ្នកប្រើ​នៅ​លើ %s (%s) បានទេ" + +#, c-format +msgid "Unable to block user on %s (%s)" +msgstr "មិនអាច​ទប់ស្កាត់​អ្នកប្រើ​នៅ​លើ %s (%s)" + +#, c-format +msgid "Unable to permit user on %s (%s)" +msgstr "មិនអាច​អនុញ្ញាត​​អ្នកប្រើ​នៅ​លើ %s (%s) បានទេ" + +#, c-format +msgid "%s could not be added because your buddy list is full." +msgstr "%s មិនអាច​ត្រូវ​បាន​បន្ថែម​បាន​ទេ ដោយ​សារ​តែ​បញ្ជី​​មិត្តភក្ដិ​របស់​អ្នក​ពេញ​ហើយ ។" + +#, c-format +msgid "%s is not a valid passport account." +msgstr "%s មិនមែន​ជា​គណនី​លិខិត​ឆ្លងដែន​ត្រឹមត្រូវ​ទេ ។" + +msgid "Service Temporarily Unavailable." +msgstr "សេវា​មិនអាច​ប្រើបានជា​បណ្ដោះ​អាសន្ន ។" + +msgid "Mobile message was not sent because it was too long." +msgstr "សារ​ចល័ត​មិនត្រូវ​បានផ្ញើ​ទេ ដោយ​សារ​តែ​វា​វែង​ពេក ។" + +msgid "Unable to rename group" +msgstr "មិន​អាច​ប្ដូរ​ឈ្មោះ​ក្រុម​បានទេ" + +msgid "Unable to delete group" +msgstr "មិនអាចលុប​ក្រុម​បាន​ទេ" + +#, c-format +msgid "" +"The MSN server will shut down for maintenance in %d minute. You will " +"automatically be signed out at that time. Please finish any conversations " +"in progress.\n" +"\n" +"After the maintenance has been completed, you will be able to successfully " +"sign in." +msgid_plural "" +"The MSN server will shut down for maintenance in %d minutes. You will " +"automatically be signed out at that time. Please finish any conversations " +"in progress.\n" +"\n" +"After the maintenance has been completed, you will be able to successfully " +"sign in." +msgstr[0] "" +"ម៉ាស៊ីន​បម្រើ MSN នឹង​បិទ​ដើម្បី​ថែទាំ​ក្នុងរយៈពេល %d នាទី ។ អ្នកនឹង​ត្រូវ​បាន​ចេញ​ដោយ​ស្វ័យ​ប្រវត្តិ​នៅ​ពេល​" +"ណាមួយ ។ សូម​បញ្ចប់​ការ​សន្ទនា​ដែល​កំពុង​តែ​សន្ទនា ។\n" +"\n" +"បន្ទាប់​ពី​កា​រ​ថែទាំ​ចប់ អ្នក​នឹង​អាច​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​បាន ។" + +msgid "" +"Message was not sent because the system is unavailable. This normally " +"happens when the user is blocked or does not exist." +msgstr "" +"សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​ប្រព័ន្ធ​មិនអាច​ប្រើ​បាន​ទេ ។ តាម​ធម្មតា​វា​កើតឡើង​នៅពេល​ដែល​អ្នកប្រើ​ត្រូវ​" +"បានទប់ស្កាត់ ឬ​មិន​ទាន់មាន ។" + +msgid "Message was not sent because messages are being sent too quickly." +msgstr "សារ​មិន​ត្រូវ​បានផ្ញើទេ ពីព្រោះ​សារ​កំពុង​ត្រូវ​បានផ្ញើ​រហ័ស​ពេក ។" + +msgid "Message was not sent because an unknown encoding error occurred." +msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​មាន​កំហុស​អ៊ិនកូដ​ដែល​មិនស្គាល់​បានកើត​ឡើង ។" + +msgid "Message was not sent because an unknown error occurred." +msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​បានទេ ពីព្រោះ​មាន​កំហុស​ដែលមិនស្គាល់​បានកើត​ឡើង ។" + +msgid "Unable to connect" +msgstr "មិនអាច​តភ្ជាប់​ទេ" + +msgid "Writing error" +msgstr "កំហុស​ក្នុងការ​សរសេរ" + +msgid "Reading error" +msgstr "កំហុសក្នុងការ​អាន" + +#, c-format +msgid "" +"Connection error from %s server:\n" +"%s" +msgstr "" +"កំហុស​ក្នុងការ​តភ្ជាប់​ពី​ម៉ាស៊ីន​បម្រើ %s ៖\n" +"%s" + +msgid "Our protocol is not supported by the server." +msgstr "ពិធីការ​របស់​យើង​មិន​ត្រូវ​បានគាំទ្រ​ដោយ​ម៉ាស៊ីនបម្រើ​ទេ ។" + +msgid "Error parsing HTTP." +msgstr "កំហុស​ក្នុងកា​រញែក HTTP ។" + +msgid "You have signed on from another location." +msgstr "អ្នក​បាន​ចុះហត្ថលេខា​ពី​ទីតាំង​ផ្សេង ។" + +msgid "The MSN servers are temporarily unavailable. Please wait and try again." +msgstr "ម៉ាស៊ីន​បម្រើ MSN មិនអាច​ប្រើ​បាន​ជា​បណ្ដោះ​អាសន្ន ។ សូម​រង់ចាំ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +msgid "The MSN servers are going down temporarily." +msgstr "ម៉ាស៊ីន​បម្រើ MSN នឹង​ខូច​ជា​បណ្ដោះ​អាសន្ន ។" + +#, c-format +msgid "Unable to authenticate: %s" +msgstr "មិនអាច​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖ %s" + +msgid "" +"Your MSN buddy list is temporarily unavailable. Please wait and try again." +msgstr "បញ្ជី​​មិត្តភក្ដិ​របស់​អ្នក MSN ​មិន​អាច​ប្រើ​បាន​ជា​បណ្ដោះ​អាសន្ន ។ សូម​រង់ចាំ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +msgid "Handshaking" +msgstr "ការ​ចាប់ដៃ" + +msgid "Transferring" +msgstr "ការ​ផ្ទេរ" + +msgid "Starting authentication" +msgstr "ចាប់ផ្ដើម​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Getting cookie" +msgstr "ទទួល​ខូគី" + +msgid "Sending cookie" +msgstr "ផ្ញើ​ខូគី" + +msgid "Retrieving buddy list" +msgstr "ទៅ​យក​បញ្ជី​មិត្តភក្ដិ" + +msgid "Away From Computer" +msgstr "ចាកឆ្ងាយ​ពី​កុំព្យូទ័រ" + +msgid "On The Phone" +msgstr "និយាយ​ទូរស័ព្ទ" + +msgid "Out To Lunch" +msgstr "ចេញ​ទៅ​ហូប​អាហារ​ថ្ងៃត្រង់​នៅ​ខាង​ក្រៅ" + +msgid "Message may have not been sent because a timeout occurred:" +msgstr "សារ​អាច​មិន​ត្រូ​វបាន​ផ្ញើ​ ពីព្រោះ​អស់​ពេល ៖" + +msgid "Message could not be sent, not allowed while invisible:" +msgstr "សារ​មិនអាច​​ត្រូវ​បាន​ផ្ញើ​ទេ មិន​​បាន​អនុញ្ញាត​ខណៈពេល​មើល​មិន​ឃើញ ៖" + +msgid "Message could not be sent because the user is offline:" +msgstr "សារ​មិន​អាច​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ ៖" + +msgid "Message could not be sent because a connection error occurred:" +msgstr "សារ​មិនអាច​ត្រូ​វបាន​ផ្ញើ​ទេ ពីព្រោះ​​មាន​កំហុស​ក្នុងការ​តភ្ជាប់​បានកើត​ឡើង ៖" + +msgid "Message could not be sent because we are sending too quickly:" +msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​យើង​កំពុង​ផ្ញើ​រហ័ស​ពេក ៖" + +msgid "" +"Message could not be sent because we were unable to establish a session with " +"the server. This is likely a server problem, try again in a few minutes:" +msgstr "" +"សារ​មិន​អាច​​ត្រូវ​បានផ្ញើ​ទេ ពីព្រោះ​យើង​មិន​អាច​បង្កើត​សម័យ​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ វា​ទំនង​ជា​បញ្ហា​ម៉ាស៊ីន​បម្រើ " +"ព្យាយាម​ម្ដង​ទៀត​​ក្នុង​រយៈពេល​ពីរ​ បី​នាទី​ទៀត ៖" + +msgid "" +"Message could not be sent because an error with the switchboard occurred:" +msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើទេ​ ពីព្រោះ​មាន​កំហុស​ជា​មួយ​ប៉ាណូ​បានកើតឡើង ៖" + +msgid "Message may have not been sent because an unknown error occurred:" +msgstr "សារ​មិន​​អាច​ត្រូវ​បាន​ទេ ពីព្រោះ​មាន​កំហុស​ដែល​មិន​ស្គាល់​បាន​កើតឡើង ៖" + +#, c-format +msgid "%s has added you to his or her buddy list." +msgstr "%s បាន​បន្ថែម​អ្នក​ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់គាត់ ។" + +#, c-format +msgid "%s has removed you from his or her buddy list." +msgstr "%s បានយក​អ្នក​ចេញ​ពី​បញ្ជី​មិត្តភក្ដិ​របស់​គាត់ ។" + +msgid "Delete Buddy from Address Book?" +msgstr "លុប​មិត្តភក្ដិ​ពី​សៀវភៅ​អាសយដ្ឋាន ?" + +msgid "Do you want to delete this buddy from your address book as well?" +msgstr "តើ​អ្នក​ចង់​លុប​មិត្តភក្ដិ​នេះ​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នកដែរឬទេ ?" + +msgid "The username specified is invalid." +msgstr "ឈ្មោះ​អ្នកប្រើ​ដែល​បាន​បញ្ជាក់​មិន​ត្រឹមត្រូវ ។" + +msgid "This Hotmail account may not be active." +msgstr "គណនី​របស់ Hotmail នេះ​មិន​សកម្ម​ទេ ។" + +msgid "Profile URL" +msgstr "ទម្រង់ URL" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "MSN Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​​របស់ MSN" + +#, c-format +msgid "No such user: %s" +msgstr "គ្មាន​អ្នក​ប្រើ​បែបនេះ​ទេ ៖ %s" + +msgid "User lookup" +msgstr "រក​មើល​អ្នក​ប្រើ" + +msgid "Reading challenge" +msgstr "អាន​ការ​ប្រកួត" + +msgid "Unexpected challenge length from server" +msgstr "ប្រវែង​កា​រប្រកួត​ដែល​មិន​រំពឹង​ទុក​ពី​ម៉ាស៊ីនបម្រើ" + +msgid "Logging in" +msgstr "ចូល" + +msgid "MySpaceIM - No Username Set" +msgstr "MySpaceIM - គ្មាន​ឈ្មោះ​អ្នកប្រើបាន​កំណត់" + +msgid "You appear to have no MySpace username." +msgstr "អ្នក​បង្ហាញ​ថា​គ្មាន​ឈ្មោះអ្នកប្រើ MySpace នោះ​ទេ ។" + +msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)" +msgstr "តើ​អ្នក​ចង់​កំណត់​មួយ​ដែរឬទេ ? (ចំណាំ ៖ វា​មិនអាច​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​នោះ​ទេ !)" + +msgid "Lost connection with server" +msgstr "បាត់​បង់ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ" + +#. Can't write _()'d strings in array initializers. Workaround. +msgid "New mail messages" +msgstr "សារ​សំបុត្រ​ថ្មី" + +msgid "New blog comments" +msgstr "មតិយោបល់​ប្លុក​ថ្មី" + +msgid "New profile comments" +msgstr "មិតយោបល់​ទម្រង់​ថ្មី" + +msgid "New friend requests!" +msgstr "សំណើ​របស់មិត្តភក្ដិ​ថ្មី !" + +msgid "New picture comments" +msgstr "មតិយោបល់រូបភាព​ថ្មី" + +msgid "MySpace" +msgstr "MySpace" + +msgid "IM Friends" +msgstr "មិត្តភក្ដិ​របស់ IM" + +#, c-format +msgid "" +"%d buddy was added or updated from the server (including buddies already on " +"the server-side list)" +msgid_plural "" +"%d buddies were added or updated from the server (including buddies already " +"on the server-side list)" +msgstr[0] "" +"មិត្តភក្ដិ %d ត្រូវ​បាន​បន្ថែម ឬ​ធ្វើ​ឲ្យ​ទាន់សម័យ​ពី​ម៉ាស៊ីនបម្រើ (រួម​មាន​មិត្តភក្ដិ​ដែល​មាន​នៅ​ក្នុង​បញ្ជី​​នៅ​ខាង​" +"ម៉ាស៊ីនបម្រើ​រួច​ហើយ)" + +msgid "Add contacts from server" +msgstr "បន្ថែម​ទំនាក់ទំនង​ពី​ម៉ាស៊ីន​បម្រើ" + +#. The session is now set up, ready to be connected. This emits the +#. * signedOn signal, so clients can now do anything with msimprpl, and +#. * we're ready for it (session key, userid, username all setup). +msgid "Connected" +msgstr "បាន​តភ្ជាប់" + +#, c-format +msgid "Protocol error, code %d: %s" +msgstr "កំហុស​ពិធីការ កូដ %d: %s" + +#, c-format +msgid "" +"%s Your password is %d characters, greater than the expected maximum length " +"of %d for MySpaceIM. 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 ។ ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +msgid "MySpaceIM Error" +msgstr "កំហុស MySpaceIM" + +msgid "Invalid input condition" +msgstr "លក្ខខណ្ឌ​បញ្ចូល​មិនត្រឹមត្រូវ" + +msgid "Read buffer full (2)" +msgstr "អាន​សតិ​បណ្ដោះអាសន្ន​ពេញលេញ (២)" + +msgid "Unparseable message" +msgstr "សារ​ដែល​មិន​អាច​ញែក​បាន" + +#, c-format +msgid "Couldn't connect to host: %s (%d)" +msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន ៖ %s (%d)" + +msgid "Failed to add buddy" +msgstr "បាន​បរាជ័យ​ក្នុងការ​បន្ថែម​មិត្តភក្ដិ" + +msgid "'addbuddy' command failed." +msgstr "ពាក្យ​បញ្ជា 'addbuddy' បាន​បរាជ័យ ។" + +msgid "persist command failed" +msgstr "បាន​បរាជ័យ​ក្នុងកា​រព្យាយាម​ពាក្យ​បញ្ជា" + +msgid "Failed to remove buddy" +msgstr "បាន​បរាជ័យ​ក្នុងការ​យក​មិត្តភក្ដិ​ចេញ" + +msgid "'delbuddy' command failed" +msgstr "បាន​បរាជ័យ​ពាក្យ​បញ្ជា​ 'delbuddy'" + +msgid "blocklist command failed" +msgstr "បានបរាជ័យ​​ពាក្យ​បញ្ជា​បញ្ជី​ទប់ស្កាត់" + +msgid "Missing Cipher" +msgstr "បាត់​ការ​សរសេរ​សម្ងាត់" + +msgid "The RC4 cipher could not be found" +msgstr "រក​មិនឃើញ​ការ​សរសេរ​សម្ងាត់ RC4" + +msgid "" +"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " +"not be loaded." +msgstr "" +"ធ្វើ​ឲ្យ​ប្រសើ​ឡើង​ទៅ libpurple ដោយ​មាន​ការ​គាំទ្រ RC4 (>= 2.0.1) ។ កម្មវិធី​ជំនួយ MySpaceIM នឹង​" +"មិន​ត្រូវ​បាន​ផ្ទុក ។" + +msgid "Add friends from MySpace.com" +msgstr "បន្ថែម​មិត្តភក្ដិ​ពី MySpace.com" + +msgid "Importing friends failed" +msgstr "បានបរាជ័យ​ក្នុងកា​រនាំមិត្តភក្តិចូល" + +#. TODO: find out how +msgid "Find people..." +msgstr "រក​មនុស្ស..." + +msgid "Change IM name..." +msgstr "ផ្លាស់ប្ដូរ​ឈ្មោះ IM​..." + +msgid "myim URL handler" +msgstr "កម្មវិធី​គ្រប់គ្រង myim URL" + +msgid "No suitable MySpaceIM account could be found to open this myim URL." +msgstr " រក​មិន​ឃើញ​​គណនី MySpaceIM សមរម្យ​ដើម្បី​បើក myim URL នេះ​ទេ ។" + +msgid "Enable the proper MySpaceIM account and try again." +msgstr "បើក​គណនី​ MySpaceIM សមរម្យ​ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +msgid "Show display name in status text" +msgstr "បង្ហាញ​ឈ្មោះ​បង្ហាញ​នៅ​ក្នុង​​អត្ថបទ​ស្ថានភាព" + +msgid "Show headline in status text" +msgstr "បង្ហាញ​ពេល​កំណត់​នៅ​ក្នុងអត្ថបទ​ស្ថានភាព" + +msgid "Send emoticons" +msgstr "ផ្ញើ​​សញ្ញា​អារម្មណ៍" + +msgid "Screen resolution (dots per inch)" +msgstr "គុណភាព​បង្ហាញ​អេក្រង់ (ចុច​/អ៊ិន្ឈ៍)" + +msgid "Base font size (points)" +msgstr "មាន​មូលដ្ឋាន​លើ​ទំហំ​ពុម្ពអក្សរ (ចំណុច)" + +msgid "User" +msgstr "អ្នក​ប្រើ" + +msgid "Headline" +msgstr "ចំណង​ជើង" + +msgid "Song" +msgstr "ចម្រៀង" + +msgid "Total Friends" +msgstr "មិត្តភក្ដិ​សរុប" + +msgid "Client Version" +msgstr "កំណែ​ម៉ាស៊ីន​ភ្ញៀវ" + +msgid "MySpaceIM - Username Available" +msgstr "MySpaceIM - មាន​ឈ្មោះ​អ្នក​ប្រើ" + +msgid "This username is available. Would you like to set it?" +msgstr "មាន​ឈ្មោះ​អ្នកប្រើ​នេះ ។ តើ​អ្នក​ចង់​កំណត់​វា​ដែរឬទេ ?" + +msgid "ONCE SET, THIS CANNOT BE CHANGED!" +msgstr "នៅ​ពេល​កំណត់ វា​មិនអាច​ត្រូ​វបាន​ផ្លាស់ប្ដូរ​ទេ !" + +msgid "MySpaceIM - Please Set a Username" +msgstr "MySpaceIM - សូម​កំណត់​​ឈ្មោះ​អ្នកប្រើ" + +msgid "This username is unavailable." +msgstr "ឈ្មោះ​អ្នក​ប្រើ​នេះ​មិនអាច​ប្រើបានទេ ។" + +msgid "Please try another username:" +msgstr "សូម​ព្យាយាម​ឈ្មោះ​អ្នក​ប្រើ​ផ្សេង​ទៀត ៖" + +#. Protocol won't log in now without a username set.. Disconnect +msgid "No username set" +msgstr "គ្មាន​ឈ្មោះ​អ្នក​ប្រើ​ត្រូវ​បានកំណត់" + +msgid "Please enter a username to check its availability:" +msgstr "សូម​បញ្ចូល​ឈ្មោះអ្នក​ប្រើ​ដើម្បី​ពិនិត្យ​មើល​ភាព​អាច​ប្រើបាន​របស់​វា ៖" + +#. TODO: icons for each zap +#. Lots of comments for translators: +#. Zap means "to strike suddenly and forcefully as if with a +#. * projectile or weapon." This term often has an electrical +#. * connotation, for example, "he was zapped by electricity when +#. * he put a fork in the toaster." +msgid "Zap" +msgstr "ឆក់" + +#, c-format +msgid "%s has zapped you!" +msgstr "%s បាន​ឆក់​អ្នក !" + +#, c-format +msgid "Zapping %s..." +msgstr "កំពុង​ឆក់ %s..." + +#. Whack means "to hit or strike someone with a sharp blow" +msgid "Whack" +msgstr "ទះ" + +#, c-format +msgid "%s has whacked you!" +msgstr "%s បាន​ទះ​អ្នក !" + +#, c-format +msgid "Whacking %s..." +msgstr "កំពុង​ទះ %s..." + +#. Torch means "to set on fire." Don't worry, this doesn't +#. * make a whole lot of sense in English, either. Feel free +#. * to translate it literally. +msgid "Torch" +msgstr "ដុត" + +#, c-format +msgid "%s has torched you!" +msgstr "%s បាន​ដុត​អ្នក !" + +#, c-format +msgid "Torching %s..." +msgstr "កំពុង​ដុត %s..." + +#. Smooch means "to kiss someone, often enthusiastically" +msgid "Smooch" +msgstr "ថើប​ថ្នមៗ" + +#, c-format +msgid "%s has smooched you!" +msgstr "%s បាន​ថើប​អ្នក​ថ្នមៗ !" + +#, c-format +msgid "Smooching %s..." +msgstr "កំពុង​ថើប​ថ្នមៗ %s..." + +#. A hug is a display of affection; wrapping your arms around someone +msgid "Hug" +msgstr "អោប" + +#, c-format +msgid "%s has hugged you!" +msgstr "%s បាន​អោប​អ្នក !" + +#, c-format +msgid "Hugging %s..." +msgstr "កំពុង​អោប %s..." + +#. Slap means "to hit someone with an open/flat hand" +msgid "Slap" +msgstr "ទះថ្នមៗ" + +#, c-format +msgid "%s has slapped you!" +msgstr "%s បានទះ​អ្នក​ថ្នមៗ !" + +#, c-format +msgid "Slapping %s..." +msgstr "កំពុង %s ថ្នមៗ​..." + +#. Goose means "to pinch someone on their butt" +msgid "Goose" +msgstr "ចាក់" + +#, c-format +msgid "%s has goosed you!" +msgstr "%s បានចាក់​អ្នក !" + +#, c-format +msgid "Goosing %s..." +msgstr "កំពុងចាក់ %s..." + +#. A high-five is when two people's hands slap each other +#. * in the air above their heads. It is done to celebrate +#. * something, often a victory, or to congratulate someone. +msgid "High-five" +msgstr "ស្វាគមន៍" + +#, c-format +msgid "%s has high-fived you!" +msgstr "%s បាន​ស្វាគមន៍​អ្នក !" + +#, c-format +msgid "High-fiving %s..." +msgstr "កំពុង​ស្វាគមន៍ %s..." + +#. We're not entirely sure what the MySpace people mean by +#. * this... but we think it's the equivalent of "prank." Or, for +#. * someone to perform a mischievous trick or practical joke. +msgid "Punk" +msgstr "ប៉ះ" + +#, c-format +msgid "%s has punk'd you!" +msgstr "%s បានប៉ះអ្នក !" + +#, c-format +msgid "Punking %s..." +msgstr "កំពុង​ប៉ះ %s..." + +#. Raspberry is a slang term for the vibrating sound made +#. * when you stick your tongue out of your mouth with your +#. * lips closed and blow. It is typically done when +#. * gloating or bragging. Nowadays it's a pretty silly +#. * gesture, so it does not carry a harsh negative +#. * connotation. It is generally used in a playful tone +#. * with friends. +msgid "Raspberry" +msgstr "លម្អ" + +#, c-format +msgid "%s has raspberried you!" +msgstr "%s បានលម្អ​អ្នក !" + +#, c-format +msgid "Raspberrying %s..." +msgstr "កំពុង​លម្អ %s..." + +msgid "Required parameters not passed in" +msgstr "ប៉ារ៉ាម៉ែត្រ​ដែល​ត្រូវការ​មិនបាន​ចម្លង​ទេ" + +msgid "Unable to write to network" +msgstr "មិនអាច​សរសេរ​ទៅ​កាន់​បណ្ដាញ​បានទេ" + +msgid "Unable to read from network" +msgstr "មិន​អាច​​អាន​ពី​បណ្ដាញ​បានទេ" + +msgid "Error communicating with server" +msgstr "កំហុស​ក្នុងការ​ទំនាក់ទំនង​ជា​មួយ​ម៉ាស៊ីន​បម្រើ" + +msgid "Conference not found" +msgstr "រក​មិនឃើញ​សន្និសីទ" + +msgid "Conference does not exist" +msgstr "មិន​ទាន់មាន​សន្និសីទ​នៅ​ឡើយ​ទេ" + +msgid "A folder with that name already exists" +msgstr "មាន​ថត​ដែល​មាន​ឈ្មោះ​នោះ​រួច​ហើយ" + +msgid "Not supported" +msgstr "មិន​​​បាន​គាំទ្រ" + +msgid "Password has expired" +msgstr "ពាក្យ​​​សម្ងាត់​បាន​ផុត​កំណត់" + +msgid "Incorrect password" +msgstr "ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ" + +msgid "User not found" +msgstr "រក​មិនឃើញ​អ្នក​ប្រើ" + +msgid "Account has been disabled" +msgstr "គណនី​ត្រូវ​បាន​បិទ" + +msgid "The server could not access the directory" +msgstr "ម៉ាស៊ីន​បម្រើ​មិនអាច​ចូលដំណើរការ​ទៅកាន់​ថត​ទេ" + +msgid "Your system administrator has disabled this operation" +msgstr "អ្នកគ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក​បានបិទ​ប្រតិបត្តិការ​នេះ" + +msgid "The server is unavailable; try again later" +msgstr "មិនមាន​ម៉ាស៊ីន​បម្រើ​ទេ ព្យាយាម​ម្ដង​ទៀតពេល​ក្រោយ" + +msgid "Cannot add a contact to the same folder twice" +msgstr "មិន​អាច​បន្ថែម​ទំនាក់ទំនង​ទៅកាន​ថត​ដដែល​ពីរ​ដង​បានទេ" + +msgid "Cannot add yourself" +msgstr "មិនអាច​បន្ថែម​ខ្លួន​អ្នក​ផ្ទាល់​ទេ" + +msgid "Master archive is misconfigured" +msgstr "ប័ណ្ណសារ​មេ​បាត់ misconfigured" + +msgid "Incorrect username or password" +msgstr "ឈ្មោះ​អ្នក​ប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ" + +msgid "Could not recognize the host of the username you entered" +msgstr "មិនអាច​ស្គាល់​ឈ្មោះ​​អ្នកប្រើ​ម៉ាស៊ីន​ដែល​អ្នក​បានបញ្ចូល​ទេ" + +msgid "" +"Your account has been disabled because too many incorrect passwords were " +"entered" +msgstr "គណនី​របស់​អ្នក​ត្រូវ​បានបិទ ពីព្រោះ​មាន​ពាក្យ​សម្ងាត់​ច្រើន​ពេក​ដែល​បាន​បញ្ចូល" + +msgid "You cannot add the same person twice to a conversation" +msgstr "អ្នក​មិនអាច​បន្ថែម​មនុស្ស​ដដែល​ពីរដង​​ទៅ​កាន់​កា​រសន្ទនា​បានទេ" + +msgid "You have reached your limit for the number of contacts allowed" +msgstr "អ្នក​បានដល់​កម្រិត​របស់​អ្នក​សម្រាប់​ចំនួន​ទំនាក់ទំនង​ដែល​បាន​អនុញ្ញាត" + +msgid "You have entered an incorrect username" +msgstr "អ្នក​បាន​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ" + +msgid "An error occurred while updating the directory" +msgstr "កំហុស​មួយ​បានកើត​ឡើង​ខណៈពេល​ធ្វើ​ឲ្យថត​ទាន់សម័យ" + +msgid "Incompatible protocol version" +msgstr "កំណែ​ពិធីការ​ដែល​មិន​ឆប​គ្នា" + +msgid "The user has blocked you" +msgstr "អ្នកប្រើបាន​ទប់ស្កាត់​អ្នក" + +msgid "" +"This evaluation version does not allow more than ten users to log in at one " +"time" +msgstr "កំណែ​នៃ​កា​រវាយតម្លៃ​នេះ​មិនអនុញ្ញាត​ឲ្យ​មាន​អ្នក​ប្រើ​ច្រើនជាង ១០ នាក់​ចូល​នៅពេល​តែ​មួយ​ទេ" + +msgid "The user is either offline or you are blocked" +msgstr "អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ ឬ​អ្នក​ត្រូវ​បាន​ទប់ស្កាត់" + +#, c-format +msgid "Unknown error: 0x%X" +msgstr "មិន​ស្គាល់​កំហុស ៖ 0x%X" + +#, c-format +msgid "Login failed (%s)." +msgstr "បាន​បរាជ័យ​ក្នុងកា​រចូល (%s) ។" + +#, c-format +msgid "Unable to send message. Could not get details for user (%s)." +msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ។ មិនអាច​យក​សេចក្ដី​លម្អិត​សម្រាប់​អ្នកប្រើ (%s) បានទេ ។" + +#, c-format +msgid "Unable to add %s to your buddy list (%s)." +msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក (%s) បាន​ទេ ។" + +#. TODO: Improve this! message to who or for what conference? +#, c-format +msgid "Unable to send message (%s)." +msgstr "មិន​អាច​ផ្ញើសារ​ទៅ​កាន់ (%s) បានទេ ។" + +#, c-format +msgid "Unable to invite user (%s)." +msgstr "មិនអាច​អញ្ជើញ​អ្នក​ប្រើ (%s) បាន​ទេ ។" + +#, c-format +msgid "Unable to send message to %s. Could not create the conference (%s)." +msgstr "មិនអាចផ្ញើសារទៅ​កាន់ %s បានទេ ។ មិនអាច​បង្កើត​ការ​សន្និសីទ​បាន​ទេ (%s) ។" + +#, c-format +msgid "Unable to send message. Could not create the conference (%s)." +msgstr "មិនអាច​ផ្ញើសារ​បានទេ ។ មិន​អាច​បង្កើត​សន្និសីទ​ (%s) បានទេ ។" + +#, c-format +msgid "" +"Unable to move user %s to folder %s in the server side list. Error while " +"creating folder (%s)." +msgstr "" +"មិនអាច​ផ្លាស់ទី​អ្នក​ប្រើ %s ទៅ​កាន់​ថត %s នៅ​ក្នុង​បញ្ជី​ខាង​ម៉ាស៊ីន​បម្រើ ។ កំហុស​ខណៈពេល​បង្កើត​ថត (%s) ។" + +#, c-format +msgid "" +"Unable to add %s to your buddy list. Error creating folder in server side " +"list (%s)." +msgstr "" +"មិន​អាច​បន្ថែម %s ទៅ​កាន់​បញ្ជីមិត្តភក្ដិ ។ កំហុស​ក្នុងកា​របង្កើត​ថត​នៅ​ក្នុង​បញ្ជី​ខាង​ម៉ាស៊ីន​បម្រើ (%s) ។" + +#, c-format +msgid "Could not get details for user %s (%s)." +msgstr "មិនអាច​ទទួល​យក​សេចក្ដី​លម្អិត​សម្រាប់​អ្នក​ប្រើ %s (%s) ។" + +#, c-format +msgid "Unable to add user to privacy list (%s)." +msgstr "មិនអាច​បន្ថែម​អ្នក​ប្រើ​ទៅ​កាន់​បញ្ជី​ឯកជន​ (%s) បាន​ទេ ។" + +#, c-format +msgid "Unable to add %s to deny list (%s)." +msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​បដិសេធ​ (%s) បានទេ ។" + +#, c-format +msgid "Unable to add %s to permit list (%s)." +msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​អនុញ្ញាត​ (%s) បានទេ ។" + +#, c-format +msgid "Unable to remove %s from privacy list (%s)." +msgstr "មិនអាច​យក %s ចេញ​ពី​បញ្ជី​ឯកជន (%s) បានទេ ។" + +#, c-format +msgid "Unable to change server side privacy settings (%s)." +msgstr "មិនអាច​​ផ្លាស់ប្ដូរ​ការ​កំណត់​ឯកជន​ខាង​ម៉ាស៊ីន​បម្រើ​បានទេ (%s) ។" + +#, c-format +msgid "Unable to create conference (%s)." +msgstr "មិនអាច​បង្កើត​សិន្និសីទ (%s) បាន​ទេ ។" + +msgid "Error communicating with server. Closing connection." +msgstr "កំហុស​ក្នុងការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ បិទ​កា​រតភ្ជាប់ ។" + +msgid "Telephone Number" +msgstr "លេខ​ទូរស័ព្ទ" + +msgid "Personal Title" +msgstr "ចំណង​ជើង​ផ្ទាល់ខ្លួន" + +msgid "Mailstop" +msgstr "Mailstop" + +msgid "User ID" +msgstr "លេខ​សម្គាល់​អ្នក​ប្រើ" + +#. tag = _("DN"); +#. value = nm_user_record_get_dn(user_record); +#. if (value) { +#. purple_notify_user_info_add_pair(user_info, tag, value); +#. } +#. +msgid "Full name" +msgstr "ឈ្មោះ​ពេញ" + +#, c-format +msgid "GroupWise Conference %d" +msgstr "GroupWise សន្និសីទ %d" + +msgid "Authenticating..." +msgstr "កំពុង​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ..." + +msgid "Unable to connect to server." +msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​បានទេ ។" + +msgid "Waiting for response..." +msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយ​តប..." + +#, c-format +msgid "%s has been invited to this conversation." +msgstr "%s ត្រូវ​បាន​អញ្ជើញ​ឲ្យ​ចូល​រួម​នៅ​ក្នុងកា​រ​សន្ទនា​នេះ ។" + +msgid "Invitation to Conversation" +msgstr "ការ​អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុងការ​សន្ទនា" + +#, c-format +msgid "" +"Invitation from: %s\n" +"\n" +"Sent: %s" +msgstr "" +"ការ​អញ្ជើញ​ពី ៖ %s\n" +"\n" +"បាន​ផ្ញើ ៖ %s" + +msgid "Would you like to join the conversation?" +msgstr "តើ​អ្នក​ចង់​ចូល​រួម​ក្នុងការ​សន្ទនា​ដែរឬទេ ?" + +msgid "You have been logged out because you logged in at another workstation." +msgstr "អ្នក​ត្រូវ​បាន​ចេញ ដោយ​សារ​តែ​អ្នក​បាន​ចូល​ក្នុងស្ថានីយការងារ​ផ្សេង​ទៀត ។" + +#, c-format +msgid "" +"%s appears to be offline and did not receive the message that you just sent." +msgstr "%s បង្ហាញថា​នៅ​ក្រៅបណ្ដាញ ហើយ​មិន​បានទទួល​សារ​ដែល​អ្នក​ទើប​តែ​បាន​ផ្ញើ​នោះ​ទេ ។" + +msgid "" +"Unable to connect to server. Please enter the address of the server you wish " +"to connect to." +msgstr "មិន​អាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​បានទេ ។ សូម​បញ្ចូល​អាសយដ្ឋាន​ម៉ាស៊ីនបម្រើ​ដែល​អ្នក​ចង់​តភ្ជាប់ ។" + +msgid "Error. SSL support is not installed." +msgstr "កំហុស ។ ការ​គាំទ្រ SSL មិន​ត្រូវ​បាន​ដំឡើង​ទេ ។" + +msgid "This conference has been closed. No more messages can be sent." +msgstr "សន្និសីទ​នេះ​ត្រូ​វបាន​បិទ ។ គ្មាន​សារ​អាច​ត្រូវ​បាន​ផ្ញើ​ទេ ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "Novell GroupWise Messenger Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់​កម្មវិធី​ផ្ញើសារ GroupWise របស់​ណូវែល" + +msgid "Server address" +msgstr "អាសយដ្ឋាន​ម៉ាស៊ីន​បម្រើ" + +msgid "Server port" +msgstr "ច្រក​ម៉ាស៊ីនបម្រើ" + +msgid "Could not join chat room" +msgstr "មិនអាច​ចូល​រួម​ក្នុង​បន្ទប់​ជជែក​បានទេ" + +msgid "Invalid chat room name" +msgstr "ឈ្មោះ​បន្ទប់​ជជែក​មិន​ត្រឹមត្រូវ" + +msgid "Server closed the connection." +msgstr "ម៉ាស៊ីនបម្រើ​បានបិទ​ការ​តភ្ជាប់ ។" + +#, c-format +msgid "" +"Lost connection with server:\n" +"%s" +msgstr "" +"បាត់​បង់​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ៖\n" +"%s" + +msgid "Received invalid data on connection with server." +msgstr "បាន​ទទួល​ទិន្នន័យ​មិនត្រឹមត្រូវ​នៅ​លើ​កា​រតភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ " + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "AIM Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ AIM" + +msgid "ICQ UIN..." +msgstr "ICQ UIN..." + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "ICQ Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ ICQ" + +msgid "Encoding" +msgstr "ការ​អ៊ិនកូដ" + +msgid "The remote user has closed the connection." +msgstr "អ្នក​ប្រើ​ពី​ចម្ងាយ​​បានបិទ​ការ​តភ្ជាប់ ។" + +msgid "The remote user has declined your request." +msgstr "អ្នក​ប្រើពី​ចម្ងាយ​បានបដិសេធ​សំណើរ​របស់​អ្នក ។" + +#, c-format +msgid "Lost connection with the remote user:
%s" +msgstr "បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ​អ្នកប្រើ​ពី​ចម្ងាយ ៖
%s" + +msgid "Received invalid data on connection with remote user." +msgstr "បាន​ទទួល​ទិន្នន័យ​មិន​ត្រឹមត្រូវ​នៅ​ពេល​តភ្ជាប់​ជា​មួយ​អ្នកប្រើពី​ចម្ងាយ ។" + +msgid "Could not establish a connection with the remote user." +msgstr "មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​អ្នក​ប្រើ​ពី​ចម្ងាយ​បាន​ទេ ។" + +msgid "Direct IM established" +msgstr "បានបង្កើត IM ដោយ​ផ្ទាល់" + +#, c-format +msgid "" +"%s tried to send you a %s file, but we only allow files up to %s over Direct " +"IM. Try using file transfer instead.\n" +msgstr "" +"%s បានព្យាយាម​ផ្ញើ​ឲ្យ​​អ្ន​ក​នូវ​ឯកសារ %s ប៉ុន្តែ​អនុញ្ញាត​តែ​ឯកសារ​ %s លើ​ IM ដោយ​ផ្ទាល់ ។ ព្យាយាម​ប្រើ​" +"ការ​ផ្ទេរ​ឯកសារ​ជំនួស​វិញ ។\n" + +#, c-format +msgid "File %s is %s, which is larger than the maximum size of %s." +msgstr "ឯកសារ %s គឺជា %s ដែល​ធំជាង​ទំហំ​អតិបរមា​របស់ %s ។" + +msgid "Invalid error" +msgstr "កំហុស​​មិន​ត្រឹមត្រូវ" + +msgid "Invalid SNAC" +msgstr "SNAC មិន​ត្រឹមត្រូវ" + +msgid "Rate to host" +msgstr "វាយតម្លៃ​ម៉ាស៊ីន" + +msgid "Rate to client" +msgstr "វាយតម្លៃ​ម៉ាស៊ីន​ភ្ញៀវ" + +msgid "Service unavailable" +msgstr "សេវា​មិនអាច​ប្រើបាន" + +msgid "Service not defined" +msgstr "សេវា​មិនបានកំណត់" + +msgid "Obsolete SNAC" +msgstr "SNAC ពេញលេញ" + +msgid "Not supported by host" +msgstr "មិនបានគាំទ្រ​ដោយ​ម៉ាស៊ីន​ទេ" + +msgid "Not supported by client" +msgstr "មិនបាន​គាំទ្រ​ដោយ​ម៉ាស៊ីន​ភ្ញៀវទេ" + +msgid "Refused by client" +msgstr "បាន​បដិសេធ​ដោយ​ម៉ាស៊ីន​ភ្ញៀវ" + +msgid "Reply too big" +msgstr "ការ​ឆ្លើយតប​ធំពេក" + +msgid "Responses lost" +msgstr "បាត់បង់ការ​ឆ្លើយតប" + +msgid "Request denied" +msgstr "បដិសេធ​សំណើ" + +msgid "Busted SNAC payload" +msgstr "Busted SNAC payload" + +msgid "Insufficient rights" +msgstr "សិទ្ធិ​មិន​គ្រប់គ្រាន់" + +msgid "In local permit/deny" +msgstr "នៅ​ក្នុង​ការ​បដិសេធ/អនុញ្ញាត" + +msgid "Warning level too high (sender)" +msgstr "កម្រិត​ព្រមាន​ខ្ពស់​ពេក (អ្នក​ផ្ញើ)" + +msgid "Warning level too high (receiver)" +msgstr "កម្រិត​ព្រមាន​ខ្ពស់​ពេក (អ្នក​ទទួល)" + +msgid "User temporarily unavailable" +msgstr "អ្នក​ប្រើ​មិនអាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន" + +msgid "No match" +msgstr "គ្មានការ​ផ្គូផ្គង" + +msgid "List overflow" +msgstr "បញ្ជី​លើស​ចំណុះ" + +msgid "Request ambiguous" +msgstr "ការ​ស្នើ​មិន​ប្រាកដ" + +msgid "Queue full" +msgstr "ជួរ​​ពេញ" + +msgid "Not while on AOL" +msgstr "មិន​សម្រាក​នៅ​លើ AOL" + +msgid "" +"(There was an error receiving this message. The buddy you are speaking with " +"is probably using a different encoding than expected. If you know what " +"encoding he is using, you can specify it in the advanced account options for " +"your AIM/ICQ account.)" +msgstr "" +"(មាន​កំហុស​មួយ​ក្នុងកា​រទទួល​សារ​នេះ ។ មិត្តភក្ដិ​ដែល​អ្នក​កំពុង​និយាយ​ជា​មួយ​ប្រហែលជា​ប្រើការ​អ៊ិនកូដ​ផ្សេង​ពីអ្វី​ដែល​" +"រំពឹង​ទុក ។ ប្រសិនបើ​​អ្នកដឹង​ការ​អ៊ិនកូដ​អ្វី​ដែល​អ្នកកំពុង​ប្រើ អ្នក​អាច​បញ្ជាក់​វា​នៅ​ក្នុង​ជម្រើស​គណនី​កម្រិត​ខ្ពស់​" +"សម្រាប់​គណនី AIM/ICQ របស់​អ្នក ។)" + +#, c-format +msgid "" +"(There was an error receiving this message. Either you and %s have " +"different encodings selected, or %s has a buggy client.)" +msgstr "" +"(មានកំហុស​មួយ​ក្នុងការ​ទទួល​សារ ។ អ្នក​ និង %s បាន​ជ្រើស​ការ​ការអ៊ិនកូដ​ផ្សេង​គ្នា ឬ %s មាន​ម៉ាស៊ីន​ភ្ញៀវ​" +"មិត្តភក្ដិ ។)" + +#. Label +msgid "Buddy Icon" +msgstr "រូបតំណាង​មិត្តភក្ដិ" + +msgid "Voice" +msgstr "សំឡេង" + +msgid "AIM Direct IM" +msgstr "AIM នាំ IM" + +msgid "Get File" +msgstr "យក​ឯកសារ" + +msgid "Games" +msgstr "ល្បែង" + +msgid "Add-Ins" +msgstr "បន្ថែម" + +msgid "Send Buddy List" +msgstr "ផ្ញើ​បញ្ជី​មិត្តភក្ដិ" + +msgid "ICQ Direct Connect" +msgstr "តភ្ជាប់​ ICQ ដោយ​ផ្ទាល់" + +msgid "AP User" +msgstr "អ្នក​ប្រើ AP" + +msgid "ICQ RTF" +msgstr "ICQ RTF" + +msgid "Nihilist" +msgstr "Nihilist" + +msgid "ICQ Server Relay" +msgstr "ពន្យារ​ម៉ាស៊ីន​បម្រើ ICQ" + +msgid "Old ICQ UTF8" +msgstr "ICQ UTF8 ចាស់" + +msgid "Trillian Encryption" +msgstr "ការ​អ៊ិនគ្រីប Trillian" + +msgid "ICQ UTF8" +msgstr "ICQ UTF8" + +msgid "Hiptop" +msgstr "Hiptop" + +msgid "Security Enabled" +msgstr "បាន​បើក​សុវត្ថិភាព" + +msgid "Video Chat" +msgstr "ជជែក​តាម​វីដេអូ" + +msgid "iChat AV" +msgstr "iChat AV" + +msgid "Live Video" +msgstr "វីដេអូ​បន្តផ្ទាល់" + +msgid "Camera" +msgstr "ម៉ាស៊ីន​ថត​" + +msgid "Screen Sharing" +msgstr "ការ​ចែករំលែក​អេក្រង់" + +msgid "Free For Chat" +msgstr "ទំនេរ​សម្រាប់​ជជែក" + +msgid "Not Available" +msgstr "មិនអាច​ប្រើ​បាន" + +msgid "Occupied" +msgstr "កាន់កាប់" + +msgid "Web Aware" +msgstr "ការ​យល់ដឹង​អំពី​បណ្ដាញ" + +msgid "Invisible" +msgstr "មើល​មិន​ឃើញ" + +msgid "IP Address" +msgstr "អាសយដ្ឋាន IP" + +msgid "Warning Level" +msgstr "កម្រិត​ព្រមាន" + +msgid "Buddy Comment" +msgstr "មតិយោបល់​មិត្តភក្ដិ" + +#, c-format +msgid "" +"Could not connect to authentication server:\n" +"%s" +msgstr "" +"មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បានទេ ៖\n" +"%s" + +#, c-format +msgid "" +"Could not connect to BOS server:\n" +"%s" +msgstr "" +"មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ BOS ៖\n" +"%s" + +msgid "Username sent" +msgstr "បានផ្ញើ​ឈ្មោះ​អ្នក​ប្រើ" + +msgid "Connection established, cookie sent" +msgstr "បានបង្កើត​ការ​តភ្ជាប់ បានផ្ញើ​ខូគី" + +#. TODO: Don't call this with ssi +msgid "Finalizing connection" +msgstr "បញ្ចប់​ការ​តភ្ជាប់" + +#, c-format +msgid "" +"Unable to login: Could not 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 ពីព្រោះ​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ ។ អ្នក​ប្រើ​ត្រូវ​តែ​មានអាសយដ្ឋាន​" +"អ៊ីមែល ឬ​ចាប់ផ្ដើម​ដោយ​អក្សរ និង​មានតែ​អក្សរ លេខ និង​ចន្លោះ ឬ​មាន​តែ​លេខ ។" + +#. Unregistered screen name +#. uid is not exist +msgid "Invalid username." +msgstr "ឈ្មោះ​អ្នកប្រើ​មិន​ត្រឹមត្រូវ ។" + +msgid "Incorrect password." +msgstr "ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ ។" + +#. Suspended account +msgid "Your account is currently suspended." +msgstr "គណនី​របស់​អ្នក​បច្ចុប្បន្ន​ត្រូវ​បានផ្អាក ។" + +#. service temporarily unavailable +msgid "The AOL Instant Messenger service is temporarily unavailable." +msgstr "សេវា​កម្មវិធី​ផ្ញើសារបន្ទាន់ AOL បច្ចុប្បន្ន​ប្រើ​មិនបានទេ ។" + +#. screen name connecting too frequently +#. IP address connecting too frequently +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 "" +"អ្នក​កំពុង​ត្រូវ​បានតភ្ជាប់ និង​ផ្ដាច់​ញឹក​ញាប់​ណាស់ ។ រង់ចាំ​ដប់នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិនបើ​អ្នក​បន្ត​" +"ដើម្បី​ព្យាយាម អ្នកនឹង​ត្រូវ​រង់ចាំ​យូរ​បន្តិច ។" + +#, c-format +msgid "The client version you are using is too old. Please upgrade at %s" +msgstr "កំណែ​ម៉ាស៊ីន​ភ្ញៀវ​ដែល​អ្នក​កំពុង​ប្រើ​ចាស់​ពេក ។ សូម​ធ្វើ​ឲ្យ​ប្រសើរ​នៅ %s" + +msgid "Could Not Connect" +msgstr "មិនអាច​តភ្ជាប់​បានទេ" + +msgid "Received authorization" +msgstr "បានទទួល​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "The SecurID key entered is invalid." +msgstr "សោ SecurID ដែល​​បាន​បញ្ចូល​មិនត្រឹមត្រូវ ។" + +msgid "Enter SecurID" +msgstr "បញ្ចូល SecurID" + +msgid "Enter the 6 digit number from the digital display." +msgstr "បញ្ចូលលេខ ៦ តួលេខ​ពី​ការ​បង្ហាញឌីជីថល ។" + +#. * +#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. +#. +msgid "_OK" +msgstr "យល់ព្រម" + +#, c-format +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"អ្នក​អាច​ត្រូ​វបាន​ផ្ដាច់​ក្នុង​រយៈពេលបន្តិចទៀត​នេះ ។ ប្រសិនបើ​ដូច្នេះ​មែន ពិនិត្យ​មើល​ភាពទាន់សម័យ %s ។" + +msgid "Unable to get a valid AIM login hash." +msgstr "មិនអាច​យក​សញ្ញា​ចូល AIM ត្រឹមត្រូវ​ទេ ។" + +#, c-format +msgid "You may be disconnected shortly. Check %s for updates." +msgstr "អ្នក​អាច​ត្រូវ​បានផ្ដាច់​ក្នុង​រយៈពេល​បន្តិចទៀត​នេះ ។ ពិនិត្យ​មើលភាព​ទាន់សម័យ %s ។" + +msgid "Unable to get a valid login hash." +msgstr "មិនអាច​យក​សញ្ញា​ចូល​ត្រឹមត្រូវ​បានទេ ។" + +msgid "Password sent" +msgstr "បានផ្ញើ​ពាក្យ​​​សម្ងាត់" + +msgid "Unable to initialize connection" +msgstr "មិនអាច​ចាប់ផ្ដើម​កា​រតភ្ជាប់​បានទេ" + +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 "គ្មាន​ហេតុផល​បានផ្ដល់ ។" + +msgid "Authorization Denied Message:" +msgstr "សារ​បដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖" + +#, c-format +msgid "" +"The user %u has denied your request to add them to your buddy list for the " +"following reason:\n" +"%s" +msgstr "" +"អ្នក​ប្រើ %u បានបដិសេធ​សំណើ​របស់​អ្នក ក្នុងការ​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ដោយ​សារ​មាន​ហេតុផល​" +"ដូច​ខាងក្រោម ៖\n" +"%s" + +msgid "ICQ authorization denied." +msgstr "បានបដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ICQ ។" + +#. Someone has granted you authorization +#, c-format +msgid "The user %u has granted your request to add them to your buddy list." +msgstr "អ្នក​ប្រើ %u បានផ្ដល់​សំណើ​របស់​អ្នក​ ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​កាន់​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។" + +#, c-format +msgid "" +"You have received a special message\n" +"\n" +"From: %s [%s]\n" +"%s" +msgstr "" +"អ្នក​បាន​ទទួល​សារ​ពិសេស\n" +"\n" +"ពី ៖ %s [%s]\n" +"%s" + +#, c-format +msgid "" +"You have received an ICQ page\n" +"\n" +"From: %s [%s]\n" +"%s" +msgstr "" +"អ្នក​បាន​ទទួល​ទំព័រ ICQ\n" +"\n" +"ពី ៖ %s [%s]\n" +"%s" + +#, c-format +msgid "" +"You have received an ICQ email from %s [%s]\n" +"\n" +"Message is:\n" +"%s" +msgstr "" +"អ្នក​បាន​ទទួល​អ៊ីមែល ICQ ពី %s [%s]\n" +"\n" +"សារគឺ ៖\n" +"%s" + +#, c-format +msgid "ICQ user %u has sent you a buddy: %s (%s)" +msgstr "អ្នក​ប្រើ ICQ %u បានផ្ញើ​ឲ្យ​អ្នក​នូវ​មិត្តភក្ដិ ៖ %s (%s)" + +msgid "Do you want to add this buddy to your buddy list?" +msgstr "តើ​អ្នក​ចង់​ប​ន្ថែម​មិត្តភក្ដិ​នេះ​ទៅ​កាន់​បញ្ជីមិត្តភក្តិ​របស់​អ្នក​ដែរឬទេ ?" + +msgid "_Add" +msgstr "បន្ថែម" + +msgid "_Decline" +msgstr "បដិ​សេធ" + +#, c-format +msgid "You missed %hu message from %s because it was invalid." +msgid_plural "You missed %hu messages from %s because they were invalid." +msgstr[0] "អ្នកបាត់សារ %hu ពី %s ដោយ​សារ​តែ​ពួកវា​មិន​ត្រឹមត្រូវ ។" + +#, 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] "អ្នកបាត់សារ %hu ពី %s ពីព្រោះ​វា​ធំពេក ។" + +#, 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] "អ្នក​បាត់សារ %hu ពី %s ដោយសារ​តែ​លើស​ដែន​កំណត់​អត្រា ។" + +#, c-format +msgid "" +"You missed %hu message from %s because his/her warning level is too high." +msgid_plural "" +"You missed %hu messages from %s because his/her warning level is too high." +msgstr[0] "អ្នកបាត់សារ %hu ពី %s ដោយ​សារ​តែ​កម្រិត​ព្រមានរបស់​គាត់​ខ្ពស់​ពេក ។" + +#, 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] "អ្នកបាត់​សារ %hu ពី %s ដោយសារ​តែ​កម្រិត​ព្រមាន​របស់​អ្នក​ខ្ពស់​ពេក ។" + +#, 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] "អ្នកបាត់​សារ %hu ពី %s ដោយសារ​ហេតុផល​ដែល​មិនស្គាល់ ។" + +#. Data is assumed to be the destination sn +#, c-format +msgid "Unable to send message: %s" +msgstr "មិនអាច​ផ្ញើ​សារ ៖ %s" + +msgid "Unknown reason." +msgstr "មិន​ស្គាល់​ហេតុផល ។" + +#, c-format +msgid "Unable to send message to %s:" +msgstr "មិនអាច​ផ្ញើសារ​ទៅ​កាន់ %s បានទេ ៖" + +#, c-format +msgid "User information not available: %s" +msgstr "មិនមាន​ព័ត៌មាន​អ្នក​ប្រើ​ ៖ %s" + +msgid "Online Since" +msgstr "លើ​បណ្ដាញ​តាំងពី" + +msgid "Member Since" +msgstr "សមាជិក​តាំង​ពី" + +msgid "Profile" +msgstr "ទម្រង់" + +msgid "Your AIM connection may be lost." +msgstr "កា​រតភ្ជាប់ AIM របស់​អ្នក​អាច​បាត់បង់ ។" + +#. The conversion failed! +msgid "" +"[Unable to display a message from this user because it contained invalid " +"characters.]" +msgstr "[មិនអាច​បង្ហាញ​សារ​ពី​អ្នក​ប្រើ​នេះ​បានទេ ពីព្រោះ​វា​មាន​តួអក្សរ​មិន​ត្រឹមត្រូវ ។]" + +msgid "" +"The last action you attempted could not be performed because you are over " +"the rate limit. Please wait 10 seconds and try again." +msgstr "" +"សកម្មភាព​ចុងក្រោយ​ដែល​អ្នកប៉ុនប៉ង​មិនអាច​ត្រូវ​បានអនុវត្ត​បានទេ ពីព្រោះ​អ្នក​លើស​អត្រា​ដែន​កំណត់ ។ សូម​រង់ចាំ​ " +"១០ វិនាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +#, c-format +msgid "You have been disconnected from chat room %s." +msgstr "អ្នក​ត្រូវ​បានផ្ដាច់​ចេញ​ពី​បន្ទប់​ជជែក %s ។" + +msgid "Mobile Phone" +msgstr "ទូរស័ព្ទ​​ចល័ត" + +msgid "Personal Web Page" +msgstr "ទំព័រ​បណ្ដាញ​ផ្ទាល់ខ្លួន" + +#. aim_userinfo_t +#. strip_html_tags +msgid "Additional Information" +msgstr "ព័ត៌មាន​បន្ថែម" + +msgid "Zip Code" +msgstr "លេខ​តំបន់" + +msgid "Work Information" +msgstr "ព័ត៌មាន​ការងារ" + +msgid "Division" +msgstr "វិធី​ចែក" + +msgid "Position" +msgstr "ទីតាំង​" + +msgid "Web Page" +msgstr "ទំព័រ​បណ្តាញ" + +msgid "Pop-Up Message" +msgstr "សារ​លេច​ឡើង" + +#, c-format +msgid "The following username is associated with %s" +msgid_plural "The following usernames are associated with %s" +msgstr[0] "ឈ្មោះ​អ្នកប្រើ​ដូច​ខាងក្រោម​ត្រូវ​បានភ្ជាប់​ជា​មួយ %s" + +#, c-format +msgid "No results found for email address %s" +msgstr "រក​មិនឃើញ​លទ្ធផល​សម្រាប់​អាសយដ្ឋាន​អ៊ីមែល %s" + +#, c-format +msgid "You should receive an email asking to confirm %s." +msgstr "អ្នក​គួរ​ទទួល​អ៊ីមែល​មួយ ដោយ​សួរ​ឲ្យ​អះអាង %s ។" + +msgid "Account Confirmation Requested" +msgstr "បាន​ស្នើ​ការ​អះអាង​របស់គណនី" + +#, c-format +msgid "" +"Error 0x%04x: Unable to format username because the requested name differs " +"from the original." +msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះអ្នកប្រើបានទេ ពីព្រោះ​ឈ្មោះ​ខុស​ពី​ឈ្មោះ​ដើម ។" + +#, c-format +msgid "Error 0x%04x: Unable to format username because it is invalid." +msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះ​អ្នកប្រើ​បានទេ ពីព្រោះ​វា​មិនត្រឹមត្រូវ ។" + +#, c-format +msgid "" +"Error 0x%04x: Unable to format username because the requested name is too " +"long." +msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះអ្នកប្រើ​បានទេ ពីព្រោះ​ឈ្មោះ​ដែល​បាន​ស្នើ​វែង​ពេក ។" + +#, c-format +msgid "" +"Error 0x%04x: Unable to change email address because there is already a " +"request pending for this username." +msgstr "" +"កំហុស 0x%04x ៖ មិនអាច​ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​អ៊ីមែល​បាន​ទេ ពីព្រោះ​មាន​សំណើ​រួ​ចហើយ​ដែល​រង់ចាំ​សម្រាប់​ឈ្មោះ​" +"អ្នក​ប្រើ​នេះ ។" + +#, c-format +msgid "" +"Error 0x%04x: Unable to change email address because the given address has " +"too many usernames associated with it." +msgstr "" +"កំហុស 0x%04x ៖ មិនអាច​ផ្លាស់ប្ដូរ​អាសយដ្ឋានអ៊ីមែលបានទេ ពីព្រោះ​អាសយដ្ឋាន​ដែលបានផ្ដល់​មាន​ឈ្មោះ​" +"អ្នកប្រើ​ច្រើនពេក​ដែល​ជាប់​ជា​មួយ​វា ។" + +#, c-format +msgid "" +"Error 0x%04x: Unable to change email address because the given address is " +"invalid." +msgstr "" +"កំហុស 0x%04x ៖ មិន​អាច​ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​អ៊ីមែល​បានទេ ពីព្រោះ​អាសយដ្ឋាន​ដែល​បានផ្ដល់​មិន​ត្រឹមត្រូវ​ទេ ។" + +#, c-format +msgid "Error 0x%04x: Unknown error." +msgstr "កំហុស 0x%04x ៖ មិនស្គាល់​កំហុស ។" + +msgid "Error Changing Account Info" +msgstr "កំហុស​ក្នុងកា​រផ្លាស់ប្ដូរ​ព័ត៌មាន​របស់​គណនី" + +#, c-format +msgid "The email address for %s is %s" +msgstr "អាសយដ្ឋាន​អ៊ីមែល​សម្រាប់ %s គឺ %s" + +msgid "Account Info" +msgstr "ព័ត៌មាន​គណនី" + +msgid "" +"Your IM Image was not sent. You must be Direct Connected to send IM Images." +msgstr "មិនបានផ្ញើ​រូបភាព IM របស់​ទេ ។ អ្នក​ត្រូវតែ​បានតភ្ជាប់​ដោយ​ផ្ទាល់ ដើម្បី​ផ្ញើ​រូបភាព IM ។" + +msgid "Unable to set AIM profile." +msgstr "មិនអាច​កំណត់​ទម្រង់ AIM ទេ ។" + +msgid "" +"You have probably requested to set your profile before the login procedure " +"completed. Your profile remains unset; try setting it again when you are " +"fully connected." +msgstr "" +"អ្នកប្រហែលជា​បាន​ស្នើ​ ឲ្យ​កំណត់​ទម្រង់​របស់​អ្នកមុននឹង​បញ្ចប់នីតិវិធី​បញ្ចូល ។ ទម្រង់​របស់​អ្នក​នៅតែ​មិនបាន​កំណត់ " +"ព្យាយាម​កំណត់​វា​ម្ដង​ទៀត នៅពេល​ដែល​អ្នក​បានតភ្ជាប់ពេញលេញ ។" + +#, c-format +msgid "" +"The maximum profile length of %d byte has been exceeded. It has been " +"truncated for you." +msgid_plural "" +"The maximum profile length of %d bytes has been exceeded. It has been " +"truncated for you." +msgstr[0] "ប្រវែង​ទម្រង់​អតិបរមានៃ %d បៃ​បានលើស​ដែនកំណត់​ហើយ ។ វា​ត្រូវ​បានកាត់​ឲ្យ​ខ្លី​សម្រាប់​អ្នក ។" + +msgid "Profile too long." +msgstr "ទម្រង់​វែង​ពេក ។" + +#, c-format +msgid "" +"The maximum away message length of %d byte has been exceeded. It has been " +"truncated for you." +msgid_plural "" +"The maximum away message length of %d bytes has been exceeded. It has been " +"truncated for you." +msgstr[0] "" +"សារ​ចាកឆ្ងាយ​អតិបរមា​ប្រវែង %d បៃ បានលើស​កំណត់​ហើយ ។ វា​ត្រូវ​បាន​កាត់​ឲ្យ​ខ្លី​សម្រាប់​អ្នក ។" + +msgid "Away message too long." +msgstr "សារ​ចាកឆ្ងាយ​វែង​ពេក ។" + +#, c-format +msgid "" +"Could not 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 "" +"មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ពីព្រោះ​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ ។ ឈ្មោះ​អ្នកប្រើ​ត្រូវ​តែ​ជា​" +"អាសយដ្ឋានអ៊ីមែល​ត្រឹមត្រូវ ឬ​ចាប់ផ្ដើម​ដោយ​អក្សរ ហើយមាន​តែ​អក្សរ លេខ និង​ចន្លោះ ឬ​មាន​តែ​លេខ ។" + +msgid "Unable to Add" +msgstr "មិនអាច​បន្ថែម" + +msgid "Unable to Retrieve Buddy List" +msgstr "មិនអាច​ទៅ​យក​បញ្ជីមិត្តភ្ដិ​បានទេ" + +msgid "" +"The AIM servers were temporarily unable to send your buddy list. Your buddy " +"list is not lost, and will probably become available in a few minutes." +msgstr "" +"ម៉ាស៊ីនបម្រើ AIM មិនអាច​ផ្ញើ​ជា​បណ្ដោះអាសន្ន​ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​មិន​បាត់​" +"បង់​ទេ ហើយ​​ប្រហែលជា​នឹង​អាច​ប្រើ​ក្នុង​រយៈ​ពីរ បី​នាទី ។" + +msgid "Orphans" +msgstr "កំព្រា" + +#, c-format +msgid "" +"Could not add the buddy %s because you have too many buddies in your buddy " +"list. Please remove one and try again." +msgstr "" +"មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ពីព្រោះ​អ្នក​មាន​មិត្តភក្ដិជា​ច្រើន​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ សូមយក​​" +"ចេញ​មួយ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +msgid "(no name)" +msgstr "(គ្មាន​ឈ្មោះ)" + +#, c-format +msgid "Could not add the buddy %s for an unknown reason." +msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ដោយ​សារ​មិន​ស្គាល់​ហេតុផល ។" + +#, c-format +msgid "" +"The user %s has given you permission to add him or her to your buddy list. " +"Do you want to add this user?" +msgstr "" +"អ្នក​ប្រើ %s បានផ្ដល់​សិទ្ធិ​ដើម្បី​បន្ថែម​គាត់​ទៅកាន់​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ តើអ្នក​ចង់​បន្ថែម​អ្នកប្រើនេះ​" +"ដែរឬទេ ?" + +msgid "Authorization Given" +msgstr "បានផ្ដល់កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +#. Granted +#, c-format +msgid "The user %s has granted your request to add them to your buddy list." +msgstr "អ្នកប្រើ %s បានផ្ដល់​សំណើ​របស់​អ្នក ដើម្បីបន្ថែម​ពួកគេ​ទៅ​កាន់បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។" + +msgid "Authorization Granted" +msgstr "បាន​ផ្ដល់​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +#. Denied +#, c-format +msgid "" +"The user %s has denied your request to add them to your buddy list for the " +"following reason:\n" +"%s" +msgstr "" +"អ្នកប្រើ %s បានបដិសេធ​សំណើ​របស់​អ្នក ដើម្បីបន្ថែម​ពួកគេ​ទៅក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ដោយ​សារ​តែ​មាន​ហេតុផល​" +"ដូច​ខាងក្រោម ៖\n" +"%s" + +msgid "Authorization Denied" +msgstr "បានបដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "_Exchange:" +msgstr "ផ្លាស់ប្ដូរ ៖" + +msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats." +msgstr "" +"រូបភាព IM របស់​អ្នក​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ។ អ្នកមិនអាច​ផ្ញើ​រូបភាព IM នៅ​ក្នុងការ​ជជែក​របស់ AIM បាន​ទេ " +"។" + +msgid "iTunes Music Store Link" +msgstr "តំណ​ផ្ទុក​តន្ត្រី​របស់ iTunes" + +#, c-format +msgid "Buddy Comment for %s" +msgstr "មតិយោបល់​របស់មិត្តភក្ដិ​សម្រាប់ %s" + +msgid "Buddy Comment:" +msgstr "មតិយោបល់របស់មិត្តភក្ដិ ៖" + +#, c-format +msgid "You have selected to open a Direct IM connection with %s." +msgstr "អ្នកបាន​ជ្រើស​ដើម្បីបើក​ការ​តភ្ជាប់ IM ដោយ​ផ្ទាល់ជា​មួយ %s ។" + +msgid "" +"Because this reveals your IP address, it may be considered a security risk. " +"Do you wish to continue?" +msgstr "" +"ពីព្រោះ​វា​ដឹង​អាសយដ្ឋាន IP របស់​អ្នក វា​អាច​ត្រូវ​បាន​​ចាត់​ទុកថា​មានគ្រោះថ្នាក់ ។ តើអ្នក​ចង់​បន្ត​" +"ដែរឬទេ ?" + +msgid "C_onnect" +msgstr "តភ្ជាប់" + +msgid "Get AIM Info" +msgstr "យក​ព័ត៌មាន​របស់ AIM" + +#. We only do this if the user is in our buddy list +msgid "Edit Buddy Comment" +msgstr "កែសម្រួល​មតិយោបល់​របស់​មិត្តភក្ដិ" + +msgid "Get Status Msg" +msgstr "យក​ស្ថានភាព​កម្មវិធី​ផ្ញើសារ" + +msgid "Direct IM" +msgstr "IM ផ្ទាល់" + +msgid "Re-request Authorization" +msgstr "ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ" + +msgid "Require authorization" +msgstr "តម្រូវ​ឲ្យ​មានការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Web aware (enabling this will cause you to receive SPAM!)" +msgstr "ការ​យល់​ដឹង​អំពីបណ្ដាញ (ការ​បើកវា​នឹង​​ធ្វើ​ឲ្យ​អ្នក​ទទួល​ SPAM!)" + +msgid "ICQ Privacy Options" +msgstr "ជម្រើស​ឯកជន​របស់ ICQ" + +msgid "The new formatting is invalid." +msgstr "កា​រធ្វើ​ទ្រង់ទ្រាយ​ថ្មី​មិន​ត្រឹមត្រូវ​ទេ ។" + +msgid "Username formatting can change only capitalization and whitespace." +msgstr "កា​រធ្វើ​ទ្រង់ទ្រាយឈ្មោះ​អ្នកប្រើ​អាច​ផ្លាស់ប្ដូរ​តែ​​ក្នុង​ករណី​មានអក្សរ​ធំ និង​ចន្លោះមិនឃើញ ។" + +msgid "Change Address To:" +msgstr "ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​ ជូន​ចំពោះ ៖" + +msgid "you are not waiting for authorization" +msgstr "អ្នកមិនកំពុង​រង់ចាំ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ" + +msgid "You are awaiting authorization from the following buddies" +msgstr "អ្នកកំពុង​រង់ចាំ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ពី​មិត្តភក្ដិ​ដូច​ខាង​ក្រោម" + +msgid "" +"You can re-request authorization from these buddies by right-clicking on " +"them and selecting \"Re-request Authorization.\"" +msgstr "" +"អ្នក​អាច​ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ​ពី​មិត្តភក្ដិ​ទាំង​នេះ ដោយ​ចុច​កណ្ដុរ​ស្ដាំ​លើ​ពួកវា ហើយជ្រើស " +"\"ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ ។\"" + +msgid "Find Buddy by Email" +msgstr "រក​មិត្តភក្ដិតាម​អ៊ីមែល" + +msgid "Search for a buddy by email address" +msgstr "រក​មិត្តភក្ដិ​តាម​អាសយដ្ឋាន​អ៊ីមែល" + +msgid "Type the email address of the buddy you are searching for." +msgstr "វាយ​អាសយដ្ឋាន​អ៊ីមែល​របស់​មិត្តភក្ដិ​ដែល​អ្នកកំពុង​ស្វែងរក ។" + +msgid "_Search" +msgstr "ស្វែងរក" + +msgid "Set User Info (web)..." +msgstr "កំណត់​ព័ត៌មាន​របស់​អ្នកប្រើ (បណ្ដាញ)..." + +msgid "Change Password (web)" +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ (បណ្ដាញ)" + +msgid "Configure IM Forwarding (web)" +msgstr "កំណត់​រចនាសម្ព័ន្ធ​ការ​បញ្ជូន IM បន្ត (បណ្ដាញ)" + +#. ICQ actions +msgid "Set Privacy Options..." +msgstr "កំណត់​ជម្រើស​ឯកជន..." + +#. AIM actions +msgid "Confirm Account" +msgstr "អះអាង​គណនី" + +msgid "Display Currently Registered Email Address" +msgstr "បង្ហាញ​អាសយដ្ឋាន​អ៊ីមែល​ដែលបាន​ចុះឈ្មោះ​បច្ចុប្បន្ន" + +msgid "Change Currently Registered Email Address..." +msgstr "ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​អ៊ីមែល​ដែលបានចុះឈ្មោះ​បច្ចុប្បន្ន..." + +msgid "Show Buddies Awaiting Authorization" +msgstr "បង្ហាញ​ការ​ផ្ទៀងផ្ទាត់​រង់ចាំ​របស់​មិត្តភក្ដិ" + +msgid "Search for Buddy by Email Address..." +msgstr "ស្វែងរក​មិត្តភក្ដិ​តាម​អាសយដ្ឋាន​អ៊ីមែល..." + +msgid "Search for Buddy by Information" +msgstr "ស្វែងរក​មិត្តភក្ដិ​តាម​ព័ត៌មាន" + +msgid "" +"Always use AIM/ICQ proxy server for\n" +"file transfers and direct IM (slower,\n" +"but does not reveal your IP address)" +msgstr "" +"ប្រើ​ម៉ាស៊ីនបម្រើ​ប្រូកស៊ី AIM/ICQ ជា​និច្ច​សម្រាប់​ការ​ផ្ទេរ​ឯកសារ និង IM ផ្ទាល់ (យឺត ប៉ុន្តែ​មិន​ដឹង​" +"អាសយដ្ឋាន​ IP របស់​អ្នក​ទេ)" + +msgid "Allow multiple simultaneous logins" +msgstr "អនុញ្ញាត​ការ​ចូល​ច្រើន​នាក់​ដំណាល​គ្នា" + +#, c-format +msgid "Asking %s to connect to us at %s:%hu for Direct IM." +msgstr "ស្នើ %s ឲ្យ​តភ្ជាប់​មក​យើង​នៅ %s:%hu សម្រាប់ IM ដោយ​ផ្ទាល់ ។" + +#, c-format +msgid "Attempting to connect to %s:%hu." +msgstr "ប៉ុនប៉ង​តភ្ជាប់​ទៅ​កាន់ %s:%hu ។" + +msgid "Attempting to connect via proxy server." +msgstr "ប៉ុនប៉ង​តភ្ជាប់​តាមរយៈ​ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី ។" + +#, c-format +msgid "%s has just asked to directly connect to %s" +msgstr "%s ទើប​តែ​បានសួរ​ដើម្បីតភ្ជាប់​ដោយ​ផ្ទាល់ទៅ %s" + +msgid "" +"This requires a direct connection between the two computers and is necessary " +"for IM Images. Because your IP address will be revealed, this may be " +"considered a privacy risk." +msgstr "" +"វា​ត្រូវការ​ការ​តភ្ជាប់​ដោយ​ផ្ទាល់​រវាង​កុំព្យូទ័រ​ពីរ ហើយ​ចាំបាច់​សម្រាប់​រូបភាព IM ។ ពីព្រោះ​អាសយដ្ឋាន IP " +"របស់​អ្នក​នឹង​ត្រូវ​បានដឹង វា​អាច​ចាត់​ទុក​ថា​គ្រោះថ្នាក់ ។" + +msgid "Aquarius" +msgstr "Aquarius" + +msgid "Pisces" +msgstr "Pisces" + +msgid "Aries" +msgstr "Aries" + +msgid "Taurus" +msgstr "Taurus" + +msgid "Gemini" +msgstr "Gemini" + +msgid "Cancer" +msgstr "មហារីក" + +msgid "Leo" +msgstr "Leo" + +msgid "Virgo" +msgstr "Virgo" + +msgid "Libra" +msgstr "Libra" + +msgid "Scorpio" +msgstr "Scorpio" + +msgid "Sagittarius" +msgstr "Sagittarius" + +msgid "Capricorn" +msgstr "Capricorn" + +msgid "Rat" +msgstr "កណ្ដុរ" + +msgid "Ox" +msgstr "គោ" + +msgid "Tiger" +msgstr "ខ្លា" + +msgid "Rabbit" +msgstr "ទន្សាយ" + +msgid "Dragon" +msgstr "នាគ" + +msgid "Snake" +msgstr "ពស់" + +msgid "Horse" +msgstr "សេះ" + +msgid "Goat" +msgstr "ពពែ" + +msgid "Monkey" +msgstr "ស្វា" + +msgid "Rooster" +msgstr "មាន់​គក" + +msgid "Dog" +msgstr "ឆ្កែ" + +msgid "Pig" +msgstr "ជ្រូក" + +msgid "Other" +msgstr "ផ្សេងៗទៀត" + +msgid "Visible" +msgstr "​មើលឃើញ" + +msgid "Friend Only" +msgstr "តែមិត្តភក្ដិ" + +msgid "Private" +msgstr "ឯកជន" + +msgid "QQ Number" +msgstr "ចំនួន QQ" + +msgid "Country/Region" +msgstr "ប្រទេស​/​តំបន់" + +msgid "Province/State" +msgstr "ខេត្ត/រដ្ឋ" + +msgid "Zipcode" +msgstr "កូដ​តំបន់" + +msgid "Phone Number" +msgstr "លេខ​ទូរស័ព្ទ" + +msgid "Authorize adding" +msgstr "ផ្ទៀងផ្ទាត់​ការ​បន្ថែម" + +msgid "Cellphone Number" +msgstr "លេខ​ទូរស័ព្ទ​ចល័ត" + +msgid "Personal Introduction" +msgstr "សេចក្ដី​ណែនាំ​ផ្ទាល់ខ្លួន" + +msgid "City/Area" +msgstr "ទីក្រុង​/តំបន់" + +msgid "Publish Mobile" +msgstr "បោះពុម្ព​ចល័ត" + +msgid "Publish Contact" +msgstr "បោះពុម្ព​ផ្សាយ​ទំនាក់" + +msgid "College" +msgstr "មហាវិទ្យាល័យ" + +msgid "Horoscope" +msgstr "ផែនចក្ររាសី" + +msgid "Zodiac" +msgstr "រាសីចក្រ" + +msgid "Blood" +msgstr "ឈាម" + +msgid "True" +msgstr "ពិត" + +msgid "False" +msgstr "មិន​ពិត" + +msgid "Modify Contact" +msgstr "កែប្រែ​ទំនាក់ទំនង" + +msgid "Modify Address" +msgstr "កែប្រែ​អាសយដ្ឋាន" + +msgid "Modify Extended Information" +msgstr "កែប្រែ​ព័ត៌មាន​ដែល​បា​នពង្រីក" + +msgid "Modify Information" +msgstr "កែប្រែ​ព័ត៌មាន" + +msgid "Update" +msgstr "ធ្វើ​​ឲ្យ​​ទាន់សម័យ\t" + +msgid "Could not change buddy information." +msgstr "មិនអាច​ផ្លាស់ប្ដូរ​ព័ត៌មាន​មិត្តភក្ដិ​បានទេ ។" + +#, c-format +msgid "%u requires verification" +msgstr "%u ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Add buddy question" +msgstr "បន្ថែម​សំណួរ​មិត្តភក្ដិ" + +msgid "Enter answer here" +msgstr "បញ្ចូល​ចម្លើយ​នៅ​ទីនេះ" + +msgid "Send" +msgstr "ផ្ញើ" + +msgid "Invalid answer." +msgstr "ចម្លើយ​មិន​ត្រឹមត្រូវ ។" + +msgid "Authorization denied message:" +msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បានបដិសេធ​សារ ៖" + +msgid "Sorry, you're not my style." +msgstr "សូម​អភ័យទោស អ្នក​មិនមែន​ជា​រចនាប័ទ្ម​របស់​ខ្ញុំ​ទេ ។" + +#, c-format +msgid "%u needs authorization" +msgstr "%u ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Add buddy authorize" +msgstr "បន្ថែម​ការ​ផ្ទៀងផ្ទាត់​មិត្តភក្ដិ" + +msgid "Enter request here" +msgstr "បញ្ចូល​សំណើ​នៅ​ទីនេះ" + +msgid "Would you be my friend?" +msgstr "តើអ្នក​នឹង​ជា​មិត្តភក្ដិ​របស់​ខ្ញុំ ?" + +msgid "QQ Buddy" +msgstr "មិត្តភក្ដិ QQ" + +msgid "Add buddy" +msgstr "បន្ថែម​មិត្តភក្ដិ" + +msgid "Invalid QQ Number" +msgstr "ចំនួន QQ មិន​ត្រឹមត្រូវ" + +msgid "Failed sending authorize" +msgstr "បានបរាជ័យ​​ក្នុងការ​ផ្ញើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +#, c-format +msgid "Failed removing buddy %u" +msgstr "បាន​បរាជ័យ​ក្នុងកា​រយក​មិត្តភក្ដិ​ %u ចេញ" + +#, c-format +msgid "Failed removing me from %d's buddy list" +msgstr "បានបរាជ័យ​ក្នុងការ​យក​ខ្ញុំ​ចេញ​ពី​បញ្ជីមិត្តភក្ដិ​របស់ %d" + +msgid "No reason given" +msgstr "គ្មាន​ហេតុផល​បាន​ផ្ដល់" + +#. only need to get value +#, c-format +msgid "You have been added by %s" +msgstr "អ្នក​ត្រូវ​បាន​បន្ថែម​ដោយ %s" + +msgid "Would you like to add him?" +msgstr "តើ​អ្នក​ចង់​បន្ថែម​គាត់​ទេ ?" + +#, c-format +msgid "Rejected by %s" +msgstr "បាន​ច្រាន​ចេញ​ដោយ %s" + +#, c-format +msgid "Message: %s" +msgstr "សារ ៖ %s" + +msgid "ID: " +msgstr "លេខ​សម្គាល់ ៖" + +msgid "Group ID" +msgstr "លេខ​សម្គាល់ក្រុម" + +msgid "QQ Qun" +msgstr "QQ Qun" + +msgid "Please enter Qun number" +msgstr "សូម​បញ្ចូល​លេខ Qun" + +msgid "You can only search for permanent Qun\n" +msgstr "អ្នក​អាច​ស្វែងរក​សម្រាប់តែ​ Qun អចិន្ត្រៃយ៍​ប៉ុណ្ណោះ\n" + +msgid "(Invalid UTF-8 string)" +msgstr "(ខ្សែអក្សរ UTF-8 មិន​ត្រឹមត្រូវ)" + +msgid "Not member" +msgstr "មិន​ចងចាំ" + +msgid "Member" +msgstr "ចងចាំ" + +msgid "Requesting" +msgstr "សំណើ" + +msgid "Admin" +msgstr "គ្រប់គ្រង" + +msgid "Notice" +msgstr "ចំណាំ" + +msgid "Detail" +msgstr "សេចក្ដី​លម្អិត" + +msgid "Creator" +msgstr "អ្នកបង្កើត" + +msgid "About me" +msgstr "អំពី​ខ្ញុំ" + +msgid "Category" +msgstr "ប្រភេទ" + +msgid "The Qun does not allow others to join" +msgstr "Qun មិនអនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​ចូលរួម" + +msgid "Join QQ Qun" +msgstr "ចូលរួម QQ Qun" + +msgid "Input request here" +msgstr "បញ្ចូល​សំណើ​នៅ​ទីនេះ" + +#, c-format +msgid "Successfully joined Qun %s (%u)" +msgstr "បាន​ចូលដោយ​ជោគជ័យ Qun %s (%u)" + +msgid "Successfully joined Qun" +msgstr "បានចូល​ដោយ​ជោគជ័យ Qun" + +#, c-format +msgid "Qun %u denied from joining" +msgstr "Qun %u បាន​បដិសេធ​ពី​ការ​ចូលរួម" + +msgid "QQ Qun Operation" +msgstr "ប្រតិបត្តិការ QQ Qun" + +msgid "Failed:" +msgstr "បាន​បរាជ័យ ៖" + +msgid "Join Qun, Unknown Reply" +msgstr "ចូលរួម Qun មិន​ស្គាល់ការ​ឆ្លើយតប" + +msgid "Quit Qun" +msgstr "ចេញពី Qun" + +msgid "" +"Note, if you are the creator, \n" +"this operation will eventually remove this Qun." +msgstr "ចំណាំ ប្រសិនបើ​អ្នក​ជា​អ្នកបង្កើត ប្រតិបត្តិការ​នេះ​នឹង​យក Qun នេះ​ចេញ​ ។" + +msgid "Sorry, you are not our style" +msgstr "សូម​អភ័យ​ទោស អ្នក​មិន​ស្ថិត​នៅ​ក្នុងរចនាប័ទ្ម​របស់​យើង​ទេ" + +msgid "Successfully changed Qun members" +msgstr "បានផ្លាស់ប្ដូរ​សមាជិក Qun ដោយ​ជោគជ័យ" + +msgid "Successfully changed Qun information" +msgstr "បាន​ផ្លាស់ប្ដូរ​ព័ត៌មាន Qun ដោយ​ជោគជ័យ" + +msgid "You have successfully created a Qun" +msgstr "អ្នកបានបង្កើត Qun ដោយ​ជោគជ័យ" + +msgid "Would you like to set up detailed information now?" +msgstr "តើអ្នក​ចង់​រៀបចំ​ព័ត៌មានលម្អិត​ឥឡូវ​ដែរឬទេ ?" + +msgid "Setup" +msgstr "រៀបចំ" + +#, c-format +msgid "%u requested to join Qun %u for %s" +msgstr "%u បានស្នើ​ឲ្យ​ចូលរួម Qun %u សម្រាប់ %s" + +#, c-format +msgid "%u request to join Qun %u" +msgstr "%u ស្នើ​ឲ្យ​ចូលរួម Qun %u" + +#, c-format +msgid "Failed to join Qun %u, operated by admin %u" +msgstr "បាន​បរាជ័យ​ក្នុងការ​ចូលរួម Qun %u បាន​ប្រតិបត្តិ​ដោយ​អ្នក​គ្រប់គ្រង %u" + +#, c-format +msgid "Joining Qun %u is approved by admin %u for %s" +msgstr "ចូលរួម Qun %u ត្រូវ​បាន​អនុម័ត​ដោយ​អ្នក​គ្រប់គ្រង %u សម្រាប់ %s" + +#, c-format +msgid "Removed buddy %u." +msgstr "បាន​យក​មិត្តភក្ដិ %u ចេញ ។" + +#, c-format +msgid "New buddy %u joined." +msgstr "បាន​ចូល​រួម​មិត្តភក្ដិ​ថ្មី %u ។" + +#, c-format +msgid "Unknown-%d" +msgstr "មិនស្គាល់ %d" + +msgid "Level" +msgstr "កម្រិត" + +msgid " VIP" +msgstr " VIP" + +msgid " TCP" +msgstr " TCP" + +msgid " FromMobile" +msgstr " FromMobile" + +msgid " BindMobile" +msgstr " BindMobile" + +msgid " Video" +msgstr " វីដែអូ" + +msgid " Zone" +msgstr " តំបន់" + +msgid "Flag" +msgstr "ទង់" + +msgid "Ver" +msgstr "កំណែ" + +msgid "Invalid name" +msgstr "ឈ្មោះ​មិន​ត្រឹមត្រូវ" + +msgid "Select icon..." +msgstr "ជ្រើស​រូបតំណាង..." + +#, c-format +msgid "Login time: %d-%d-%d, %d:%d:%d
\n" +msgstr "ពេលវេលា​ចូល ៖ %d-%d-%d, %d:%d:%d
\n" + +#, c-format +msgid "Total Online Buddies: %d
\n" +msgstr "មិត្តភក្ដិ​លើ​បណ្ដាញ​សរុប ៖ %d
\n" + +#, c-format +msgid "Last Refresh: %d-%d-%d, %d:%d:%d
\n" +msgstr "ធ្វើ​ឲ្យ​ស្រស់​ចុងក្រោយ ៖ %d-%d-%d, %d:%d:%d
\n" + +#, c-format +msgid "Server: %s
\n" +msgstr "ម៉ាស៊ីន​បម្រើ ៖ %s
\n" + +#, c-format +msgid "Client Tag: %s
\n" +msgstr "ទង់​ម៉ាស៊ីន​ភ្ញៀវ ៖ %s
\n" + +#, c-format +msgid "Connection Mode: %s
\n" +msgstr "របៀប​តភ្ជាប់ ៖ %s
\n" + +#, c-format +msgid "My Internet IP: %s:%d
\n" +msgstr "IP អ៊ីនធឺណិត​របស់​ខ្ញុំ ៖ %s:%d
\n" + +#, c-format +msgid "Sent: %lu
\n" +msgstr "បានផ្ញើ ៖ %lu
\n" + +#, c-format +msgid "Resend: %lu
\n" +msgstr "ផ្ញើ​ឡើង​វិញ ៖ %lu
\n" + +#, c-format +msgid "Lost: %lu
\n" +msgstr "បាត់បង់ ៖ %lu
\n" + +#, c-format +msgid "Received: %lu
\n" +msgstr "បាន​ទទួល ៖ %lu
\n" + +#, c-format +msgid "Received Duplicate: %lu
\n" +msgstr "បាន​ស្ទួន ៖ %lu
\n" + +#, c-format +msgid "Time: %d-%d-%d, %d:%d:%d
\n" +msgstr "ពេលវេលា ៖ %d-%d-%d, %d:%d:%d
\n" + +#, c-format +msgid "IP: %s
\n" +msgstr "IP ៖ %s
\n" + +msgid "Login Information" +msgstr "ព័ត៌មាន​ចូល" + +msgid "

Original Author:
\n" +msgstr "

អ្នក​និពន្ធ​ដើម
\n" + +msgid "

Code Contributors:
\n" +msgstr "

អ្នក​ចែកចាយ​កូដ
\n" + +msgid "

Lovely Patch Writers:
\n" +msgstr "

អ្នក​សរសេរ​បំណះ​ដែល​ជា​ទីស្រឡាញ់
\n" + +msgid "

Acknowledgement:
\n" +msgstr "

ទទួល​ស្គាល់
\n" + +msgid "

Scrupulous Testers:
\n" +msgstr "

អ្នក​សាកល្បង​ហ្មតចត់ ៖
\n" + +msgid "

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

ប្រុសៗ​ទាំង​អស់​នៅ​ក្នុង​បន្ទប់...
\n" + +msgid "Feel free to join us! :)" +msgstr "ចូលរួម​ជា​មួយ​យើង​ដោយ​សេរី ! :)" + +#, c-format +msgid "About OpenQ %s" +msgstr "អំពី OpenQ %s" + +msgid "Change Icon" +msgstr "ផ្លាស់ប្ដូរ​រូបតំណាង" + +msgid "Change Password" +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់" + +msgid "Account Information" +msgstr "ព័ត៌មាន​គណនី" + +msgid "Update all QQ Quns" +msgstr "ធ្វើ​ឲ្យ QQ Quns ទាន់សម័យ" + +msgid "About OpenQ" +msgstr "អំពី OpenQ" + +msgid "Modify Buddy Memo" +msgstr "កែប្រែ មិត្តភក្ដិ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "QQ Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ QQ" + +msgid "Auto" +msgstr "ស្វ័យ​ប្រវត្តិ" + +msgid "Select Server" +msgstr "ជ្រើស​ម៉ាស៊ីន​បម្រើ" + +msgid "QQ2005" +msgstr "QQ2005" + +msgid "QQ2007" +msgstr "QQ2007" + +msgid "QQ2008" +msgstr "QQ2008" + +msgid "Connect by TCP" +msgstr "តភ្ជាប់​តាម TCP" + +msgid "Show server notice" +msgstr "បង្ហាញ​​​កំណត់​ចំណាំ​របស់​ម៉ាស៊ីន​បម្រើ" + +msgid "Show server news" +msgstr "បង្ហាញ​ព័ត៌មាន​របស់​ម៉ាស៊ីនបម្រើ" + +msgid "Show chat room when msg comes" +msgstr "បង្ហាញ​" + +msgid "Keep alive interval (seconds)" +msgstr "ទុក​ខាងក្នុង (វិនាទី)" + +msgid "Update interval (seconds)" +msgstr "ធ្វើ​ឲ្យ​ចន្លោះ​ទាន់សម័យ (វិនាទី)" + +msgid "Cannot decrypt server reply" +msgstr "មិនអាច​ឌិគ្រីប​កា​រឆ្លើយ​តប​របស់​ម៉ាស៊ីន​បម្រើ​បានទេ" + +#, c-format +msgid "Failed requesting token, 0x%02X" +msgstr "បានបរាជ័យ​ក្នុងកា​រស្នើ​ថូខឹន 0x%02X" + +#, c-format +msgid "Invalid token len, %d" +msgstr "ថូខឹន​មិនត្រឹមត្រូវ %d" + +#. extend redirect used in QQ2006 +msgid "Redirect_EX is not currently supported" +msgstr "Redirect_EX បច្ចុប្បន្ន​មិនត្រូវ​បានគាំទ្រ​ទេ" + +#. need activation +#. need activation +#. need activation +msgid "Activation required" +msgstr "ត្រូវការ​ធ្វើ​ឲ្យ​សកម្ម" + +#, c-format +msgid "Unknown reply code when logging in (0x%02X)" +msgstr "កូដ​ឆ្លើយតប​មិន​​ស្គាល់​នៅ​ពេល​ចូល (0x%02X)" + +msgid "Could not decrypt server reply" +msgstr "មិនអាច​ឌិគ្រីប​ការ​​ឆ្លើយតប​របស់​ម៉ាស៊ីន​បម្រើ​បាន​ទេ" + +msgid "Requesting captcha" +msgstr "ស្នើ captcha" + +msgid "Checking captcha" +msgstr "ពិនិត្យ​មើល captcha" + +msgid "Failed captcha verification" +msgstr "បានបរាជ័យក្នុងការ​ផ្ទៀងផ្ទាត់ captcha" + +msgid "Captcha Image" +msgstr "រូបភាព Captcha" + +msgid "Enter code" +msgstr "បញ្ចូល​កូដ" + +msgid "QQ Captcha Verification" +msgstr "ការ​ផ្ទៀងផ្ទាត់ QQ Captcha" + +msgid "Enter the text from the image" +msgstr "បញ្ចូល​អត្ថបទ​ពី​រូបភាព" + +#, c-format +msgid "Unknown reply when checking password (0x%02X)" +msgstr "មិនស្គាល់​ការ​ឆ្លើយតប​នៅពេល​ពិនិត្យមើលពាក្យ​សម្ងាត់ (0x%02X)" + +#, c-format +msgid "" +"Unknown reply code when logging in (0x%02X):\n" +"%s" +msgstr "" +"កូដ​ឆ្លើយតប​មិនស្គាល់ នៅពេល​ចូល (0x%02X) ៖\n" +"%s" + +#. we didn't successfully connect. tdt->toc_fd is valid here +msgid "Unable to connect." +msgstr "មិនអាច​តភ្ជាប់​បានទេ ។" + +msgid "Socket error" +msgstr "កំហុស​រន្ធ" + +msgid "Unable to read from socket" +msgstr "មិនអាច​អាន​ពី​រន្ធ​បានទេ" + +msgid "Write Error" +msgstr "កំហុស​ក្នុងកា​រសរសេរ" + +msgid "Connection lost" +msgstr "បាត់បង់​ការ​តភ្ជាប់" + +msgid "Getting server" +msgstr "យក​ម៉ាស៊ីនបម្រើ" + +msgid "Requesting token" +msgstr "ស្នើ​ថូខឹន" + +msgid "Couldn't resolve host" +msgstr "មិនអាច​ដោះស្រាយ​ម៉ាស៊ីនបានទេ" + +msgid "Invalid server or port" +msgstr "ម៉ាស៊ីន​បម្រើ ឬ​ច្រក​មិន​ត្រឹមត្រូវ" + +msgid "Connecting to server" +msgstr "តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ" + +msgid "QQ Error" +msgstr "កំហុស QQ" + +#, c-format +msgid "" +"Server News:\n" +"%s\n" +"%s\n" +"%s" +msgstr "" +"ព័ត៌មាន​ម៉ាស៊ីន​បម្រើ ៖\n" +"%s\n" +"%s\n" +"%s" + +#, c-format +msgid "%s:%s" +msgstr "%s:%s" + +#, c-format +msgid "From %s:" +msgstr "ពី %s ៖" + +#, c-format +msgid "" +"Server notice From %s: \n" +"%s" +msgstr "" +"កំណត់​ចំណាំ​ម៉ាស៊ីន​បម្រើពី %s ៖ \n" +"%s" + +msgid "Unknown SERVER CMD" +msgstr "មិនស្គាល់​ម៉ាស៊ីន​បម្រើ CMD" + +#, c-format +msgid "" +"Error reply of %s(0x%02X)\n" +"Room %u, reply 0x%02X" +msgstr "" +"កំហុស​ក្នុងការ​ឆ្លើយ​តប %s(0x%02X)\n" +"បន្ទប់ %u ឆ្លើយតប 0x%02X" + +msgid "QQ Qun Command" +msgstr "ពាក្យ​បញ្ជា QQ Qun" + +msgid "Could not decrypt login reply" +msgstr "មិនអាច​ឌិគ្រីប​ការ​ឆ្លើយ​តប​ការ​ចូល​បានទេ" + +msgid "Unknown LOGIN CMD" +msgstr "មិនស្គាល់​ការ​ចូល CMD" + +msgid "Unknown CLIENT CMD" +msgstr "មិនស្គាល់​ម៉ាស៊ីន​ភ្ញៀវ CMD" + +#, c-format +msgid "%d has declined the file %s" +msgstr "%d បានបដិសេធ​ឯកសារ %s" + +msgid "File Send" +msgstr "ផ្ញើ​ឯកសារ" + +#, c-format +msgid "%d canceled the transfer of %s" +msgstr "%d បានបោះបង់​ការ​ផ្ទេរ %s" + +msgid "Connection closed (writing)" +msgstr "បាន​បិទ​ការ​តភ្ជាប់ (សរសេរ)" + +#, c-format +msgid "Group Title: %s
" +msgstr "ចំណង​ជ្រើ​ក្រុម ៖ %s
" + +#, c-format +msgid "Notes Group ID: %s
" +msgstr "កំណត់ចំណាំ​ក្រុម ID ៖ %s
" + +#, c-format +msgid "Info for Group %s" +msgstr "ព័ត៌មាន​សម្រាប់​ក្រុម %s" + +msgid "Notes Address Book Information" +msgstr "កំណត់​ចំណាំ​ព័ត៌មាន​សៀវភៅ​អាសយដ្ឋាន" + +msgid "Invite Group to Conference..." +msgstr "អញ្ជើញ​ក្រុម​ឲ្យ​ចូលរួម​សន្និសីទ..." + +msgid "Get Notes Address Book Info" +msgstr "យក​កំណត់​ចំណាំ​ព័ត៌មាន​សៀវភៅ​អាសយដ្ឋាន" + +msgid "Sending Handshake" +msgstr "ផ្ញើ​ការ​ចាប់ដៃ" + +msgid "Waiting for Handshake Acknowledgement" +msgstr "រង់ចាំ​ការ​ទទួលស្គាល់​ការ​ចាប់ដៃ" + +msgid "Handshake Acknowledged, Sending Login" +msgstr "បាន​ទទួល​ស្គាល់ការ​ចាប់ដៃ ផ្ញើ​ការ​ចូល" + +msgid "Waiting for Login Acknowledgement" +msgstr "រង់ចាំ​ការ​ទទួលស្គាល់​ការ​ចូល" + +msgid "Login Redirected" +msgstr "បានបញ្ចូល​ការ​ចូល​បន្ត" + +msgid "Forcing Login" +msgstr "បង្ខំ​កា​រចូល" + +msgid "Login Acknowledged" +msgstr "បានទទួលស្គាល់​កា​រចូល" + +msgid "Starting Services" +msgstr "ចាប់ផ្ដើម​សេវា" + +#, c-format +msgid "" +"A Sametime administrator has issued the following announcement on server %s" +msgstr "ពេលមួយ​នោះ អ្នកគ្រប់គ្រង​បានចេញផ្សាយ​នូវ​សេចក្ដី​ប្រកាស​ដូច​ខាង​ក្រោម​នៅ​លើម៉ាស៊ីនបម្រើ %s" + +msgid "Sametime Administrator Announcement" +msgstr "ការ​ប្រកាស​របស់​អ្នកគ្រប់គ្រង​ពេល​តែ​មួយ" + +msgid "Connection reset" +msgstr "កំណត់​ការ​តភ្ជាប់​ឡើង​វិញ" + +#, c-format +msgid "Error reading from socket: %s" +msgstr "កំហុស​ក្នុងការ​អាន​ពី​រន្ធ ៖ %s" + +#. this is a regular connect, error out +msgid "Unable to connect to host" +msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​ទេ" + +#, c-format +msgid "Announcement from %s" +msgstr "ការ​ប្រកាស​ពី %s" + +msgid "Conference Closed" +msgstr "បានបិទ​សន្និសីទ" + +msgid "Unable to send message: " +msgstr "មិនអាច​ផ្ញើសារ​បានទេ ៖" + +msgid "Place Closed" +msgstr "បានបិទ​កន្លែង" + +msgid "Microphone" +msgstr "មេក្រូ" + +msgid "Speakers" +msgstr "ធុងបាស" + +msgid "Video Camera" +msgstr "ម៉ាស៊ីន​ថត​​វីដេអូ" + +msgid "Supports" +msgstr "គាំទ្រ" + +msgid "External User" +msgstr "អ្នក​ប្រើ​ខាង​ក្រៅ" + +msgid "Create conference with user" +msgstr "បង្កើត​សន្និសីទ​ជា​មួយ​អ្នក​ប្រើ" + +#, c-format +msgid "" +"Please enter a topic for the new conference, and an invitation message to be " +"sent to %s" +msgstr "សូម​បញ្ចូល​ប្រធាន​បទ​សម្រាប់​សន្និសីទ​ថ្មី ហើយ​សារ​អញ្ជើញ​ត្រូវ​ផ្ញើ​ទៅ %s" + +msgid "New Conference" +msgstr "សន្និសីទ​ថ្មី" + +msgid "Create" +msgstr "បង្កើត" + +msgid "Available Conferences" +msgstr "សន្និសីទ​ដែល​អាច​ប្រើ​បាន" + +msgid "Create New Conference..." +msgstr "បង្កើត​សន្និសីទ​ថ្មី..." + +msgid "Invite user to a conference" +msgstr "អញ្ជើញ​អ្នកប្រើ​ឲ្យ​ចូលរួម​សន្និសីទ" + +#, c-format +msgid "" +"Select a conference from the list below to send an invite to user %s. Select " +"\"Create New Conference\" if you'd like to create a new conference to invite " +"this user to." +msgstr "" +"ជ្រើស​សន្និសីទ​ពី​បញ្ជីខាង​ក្រោម ដើម្បី​ផ្ញើ​ការ​អញ្ជើញ​ទៅអ្នកប្រើ %s ។ ជ្រើស \"បង្កើត​សន្និសីទ​ថ្មី\" " +"ប្រសិនបើ​​អ្នក​ចង់​បង្កើត​សន្និសីទ​ថ្មី​ដើម្បីអញ្ជើញ​ង្នក​ប្រើ​នេះ ។" + +msgid "Invite to Conference" +msgstr "អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុង​សន្និសីទ" + +msgid "Invite to Conference..." +msgstr "អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុង​សន្និសីទ..." + +msgid "Send TEST Announcement" +msgstr "ផ្ញើ​ការ​ប្រកាស​សាកល្បង" + +msgid "Topic:" +msgstr "ប្រធានបទ ៖" + +msgid "No Sametime Community Server specified" +msgstr "គ្មាន​ម៉ាស៊ីន​បម្រើ​សហគមន៍​បានបញ្ជាក់​ទេ" + +#, c-format +msgid "" +"No host or IP address has been configured for the Meanwhile account %s. " +"Please enter one below to continue logging in." +msgstr "" +"គ្មាន​ម៉ាស៊ីន ឬ​អាសយដ្ឋាន IP ត្រូវ​បានកំណត់​រចនាសម្ព័ន្ធ​សម្រាប់​គណនី %s ។ សូម​បញ្ចូល​អាសយដ្ឋាន IP មួយ​" +"ខាងក្រោម​ដើម្បី​បន្ត​ចូល ។" + +msgid "Meanwhile Connection Setup" +msgstr "រៀបចំ​ការ​តភ្ជាប់" + +msgid "No Sametime Community Server Specified" +msgstr "គ្មាន​ម៉ាស៊ីន​បម្រើ​សហគមន៍​បាន​បញ្ជាក់​ទេ" + +msgid "Connect" +msgstr "ត​ភ្ជាប់" + +#, c-format +msgid "Unknown (0x%04x)
" +msgstr "មិនស្គាល់ (0x%04x)
" + +msgid "Last Known Client" +msgstr "បាន​ស្គាល់​ម៉ាស៊ីន​ភ្ញៀវ​ចុងក្រោយ" + +msgid "User Name" +msgstr "ឈ្មោះ​អ្នក​ប្រើ" + +msgid "Sametime ID" +msgstr "លេខស្គាល់​ Sametime" + +msgid "An ambiguous user ID was entered" +msgstr "លេខ​សម្គាល់​អ្នក​ប្រើ​ត្រូវ​បាន​បញ្ចូល" + +#, c-format +msgid "" +"The identifier '%s' may possibly refer to any of the following users. Please " +"select the correct user from the list below to add them to your buddy list." +msgstr "" +"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​សំអាង​លើ​អ្នកប្រើដូច​ខាងក្រោយ ។ សូម​ជ្រើស​អ្នកប្រើ​ដែល​ត្រឹមត្រូវ​ពី​បញ្ជីខាង​" +"ក្រោម ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។" + +msgid "Select User" +msgstr "ជ្រើស​អ្នក​ប្រើ" + +msgid "Unable to add user: user not found" +msgstr "មិនអាច​បន្ថែម​អ្នកប្រើបាន​ទេ ៖ រក​មិនឃើញ​អ្នក​ប្រើ" + +#, c-format +msgid "" +"The identifier '%s' did not match any users in your Sametime community. This " +"entry has been removed from your buddy list." +msgstr "" +"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិន​បានផ្គូផ្គង​អ្នក​ប្រើនៅ​ក្នុង​​សហគមន៍ Sametime របស់​អ្នក​ទេ ។ ធាតុ​នេះ​" +"ត្រូវ​បាន​យកចេញ​ពី​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ហើយ ។" + +#, c-format +msgid "" +"Error reading file %s: \n" +"%s\n" +msgstr "" +"កំហុស​ក្នុងការ​អាន​ឯកសារ %s ៖ \n" +"%s\n" + +msgid "Remotely Stored Buddy List" +msgstr "បាន​ទុក​បញ្ជី​មិត្តភក្ដិ​ពី​ចម្ងាយ" + +msgid "Buddy List Storage Mode" +msgstr "របៀប​ផ្ទុក​បញ្ជីមិត្តភក្ដិ" + +msgid "Local Buddy List Only" +msgstr "តែ​បញ្ជីមិត្តភក្ដិ​មូលដ្ឋាន​ប៉ុណ្ណោះ" + +msgid "Merge List from Server" +msgstr "បញ្ចូល​បញ្ជី​ពី​ម៉ាស៊ីន​បម្រើ" + +msgid "Merge and Save List to Server" +msgstr "បញ្ចូល និង​រក្សាទុក​បញ្ជី​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ" + +msgid "Synchronize List with Server" +msgstr "ធ្វើ​សមកាលកម្ម​បញ្ជី​ជា​មួយ​ម៉ាស៊ីន​បម្រើ" + +#, c-format +msgid "Import Sametime List for Account %s" +msgstr "នាំចូលបញ្ជី Sametime សម្រាប់​គណនី %s" + +#, c-format +msgid "Export Sametime List for Account %s" +msgstr "នាំចេញ​បញ្ជី Sametime សម្រាប់​គណនី %s" + +msgid "Unable to add group: group exists" +msgstr "មិនអាច​បន្ថែម​ក្រុម ​៖ មានក្រុម​រួចហើយ" + +#, c-format +msgid "A group named '%s' already exists in your buddy list." +msgstr "មាន​ក្រុម​ដែលមាន​ឈ្មោះ '%s' រួច​ហើយ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។" + +msgid "Unable to add group" +msgstr "មិនអាច​បន្ថែម​ក្រុម​បានទេ" + +msgid "Possible Matches" +msgstr "មាន​ការ​ផ្គូផ្គង" + +msgid "Notes Address Book group results" +msgstr "ចំណាំ​លទ្ធផល​ក្រុម​សៀវភៅ​អាសយដ្ឋាន" + +#, c-format +msgid "" +"The identifier '%s' may possibly refer to any of the following Notes Address " +"Book groups. Please select the correct group from the list below to add it " +"to your buddy list." +msgstr "" +"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​យោង​តាម​ក្រុម​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ ។ សូម​ជ្រើស​ក្រុម​ត្រឹមត្រូវ​ពី​បញ្ជី​" +"ខាងក្រោម ដើម្បី​បន្ថែម​វា​ទៅកាន់បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។" + +msgid "Select Notes Address Book" +msgstr "ជ្រើស​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ" + +msgid "Unable to add group: group not found" +msgstr "មិនអាច​បន្ថែម​ក្រុម​បានទេ ៖ រក​មិនឃើញ​ក្រុម" + +#, c-format +msgid "" +"The identifier '%s' did not match any Notes Address Book groups in your " +"Sametime community." +msgstr "" +"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិន​ផ្គូផ្គង​ក្រុមសៀវ​ភៅ​អាសយដ្ឋាន​​ចំណាំ​ណាមួយ​ទេ​នៅ​ក្នុងសហគមន៍ Sametimeរបស់​" +"អ្នក ។" + +msgid "Notes Address Book Group" +msgstr "ចំណាំ​ក្រុម​សៀវភៅ​អាសយដ្ឋាន" + +msgid "" +"Enter the name of a Notes Address Book group in the field below to add the " +"group and its members to your buddy list." +msgstr "" +"បញ្ចូល​ឈ្មោះ​ក្រុម​សៀវភៅ​ចំណាំ​នៅ​ក្នុង​វាល​ខាង​ក្រោម ដើម្បី​បន្ថែម​ក្រុម និង​សមាជិករបស់វា​ទៅកាន់​បញ្ជី​មិត្តភក្ដិ​របស់​" +"អ្នក ។" + +#, c-format +msgid "Search results for '%s'" +msgstr "ស្វែងរក​លទ្ធផល​សម្រាប់ '%s'" + +#, c-format +msgid "" +"The identifier '%s' may possibly refer to any of the following users. You " +"may add these users to your buddy list or send them messages with the action " +"buttons below." +msgstr "" +"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​យោង​តាម​អ្នកប្រើ​ដូច​ខាង​ក្រោម ។ អ្នក​​អាច​បន្ថែម​អ្នកប្រើទាំង​នេះ​ទៅ​កាន់​" +"បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ឬ​ផ្ញើ​សារ​ឲ្យ​ពួកគេ​ដោយ​ប្រើ​ប៊ូតុង​សកម្មភាព​ខាងក្រោម ។" + +msgid "Search Results" +msgstr "ស្វែងរក​លទ្ធ​ផល" + +msgid "No matches" +msgstr "គ្មានការ​ផ្គូផ្គង" + +#, c-format +msgid "The identifier '%s' did not match any users in your Sametime community." +msgstr "ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិនបានផ្គូផ្គង​​អ្នកប្រើ​នៅ​ក្នុង​សហគមន៍ Sametime របស់​អ្នក ។" + +msgid "No Matches" +msgstr "គ្មានការ​ផ្គូផ្គង" + +msgid "Search for a user" +msgstr "ស្វែងរក​អ្នកប្រើ" + +msgid "" +"Enter a name or partial ID in the field below to search for matching users " +"in your Sametime community." +msgstr "" +"បញ្ចូល​ឈ្មោះ ឬ​លេខសម្គាល់​ដោយ​ផ្នែក​នៅ​ក្នុងវាល​ខាងក្រោម ដើម្បី​ស្វែងរក​អ្នកប្រើ​ដែល​ផ្គូផ្គង​នៅ​ក្នុង​សហគមន៍ " +"Sametime របស់​អ្នក ។" + +msgid "User Search" +msgstr "ស្វែងរក​អ្នកប្រើ" + +msgid "Import Sametime List..." +msgstr "នាំចូល​បញ្ជី Sametime..." + +msgid "Export Sametime List..." +msgstr "នាំចេញ​បញ្ជី Sametime..." + +msgid "Add Notes Address Book Group..." +msgstr "បន្ថែម​ក្រុម​​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ..." + +msgid "User Search..." +msgstr "ស្វែងរក​អ្នកប្រើ..." + +msgid "Force login (ignore server redirects)" +msgstr "បង្ខំ​ឲ្យ​ចូល (មិនអើពោះ​ការ​បញ្ជូន​ម៉ាស៊ីន​បម្រើ​ត)" + +#. pretend to be Sametime Connect +msgid "Hide client identity" +msgstr "លាក់​​អត្តសញ្ញាណ​ម៉ាស៊ីន​ភ្ញៀវ" + +#, c-format +msgid "User %s is not present in the network" +msgstr "អ្នកប្រើ %s មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទេ" + +msgid "Key Agreement" +msgstr "ការ​ព្រមព្រៀង​សំខាន់" + +msgid "Cannot perform the key agreement" +msgstr "មិនអាច​អនុវត្ត​ការ​​ព្រមព្រៀង​សំខាន់​ទេ" + +msgid "Error occurred during key agreement" +msgstr "កំហុស​បាន​កើតឡើង​កំឡុង​ពេល​កិច្ចព្រមព្រៀង​សំខាន់" + +msgid "Key Agreement failed" +msgstr "បាន​បរាជ័យ​ក្នុងការ​ព្រមព្រៀង​សំខាន់" + +msgid "Timeout during key agreement" +msgstr "អស់ពេល​កំឡុង​ពេល​ព្រមព្រៀង​សំខាន់4" + +msgid "Key agreement was aborted" +msgstr "ការ​ព្រមព្រៀង​សំខាន់​ត្រូវ​បានបោះបង់" + +msgid "Key agreement is already started" +msgstr "ការ​ព្រមព្រៀង​សំខាន់​បាន​ចាប់ផ្ដើម​រួចហើយ" + +msgid "Key agreement cannot be started with yourself" +msgstr "ការ​ព្រមព្រៀង​សំខាន់​មិន​អាច​ត្រូវ​ចាប់ផ្ដើម​ជា​មួយ​ខ្លួន​អ្នក​ផ្ទាល់" + +msgid "The remote user is not present in the network any more" +msgstr "អ្នកប្រើ​ពីចម្ងាយ​មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទៀត​ទេ" + +#, c-format +msgid "" +"Key agreement request received from %s. Would you like to perform the key " +"agreement?" +msgstr "បាន​​ទទួល​សំណួរ​ការ​ព្រមព្រៀង​ពី %s ។ តើ​អ្នក​ចង់​អនុវត្ត​ការ​ព្រមព្រៀង​សំខាន់ដែរឬទេ ?" + +#, c-format +msgid "" +"The remote user is waiting key agreement on:\n" +"Remote host: %s\n" +"Remote port: %d" +msgstr "" +"អ្នកប្រើពី​ចម្ងាយ​កំពុង​រង់ចាំ​ការ​ព្រមព្រៀង​សំខាន់​នៅ​លើ ៖\n" +"ម៉ាស៊ីន​ពី​ចម្ងាយ ៖ %s\n" +"ច្រក​ពី​ចម្ងាយ ៖ %d" + +msgid "Key Agreement Request" +msgstr "សំណើ​ការ​ព្រមព្រៀង​សំខាន់" + +msgid "IM With Password" +msgstr "IM មាន​ពាក្យ​សម្ងាត់" + +msgid "Cannot set IM key" +msgstr "មិន​កំណត់​សោ IM បានទេ" + +msgid "Set IM Password" +msgstr "កំណត់​ពាក្យ​សម្ងាត់ IM" + +msgid "Get Public Key" +msgstr "យក​សោ​សាធារណៈ" + +msgid "Cannot fetch the public key" +msgstr "មិន​អាច​ទៅ​យក​សោ​សាធារណៈ​បានទេ" + +msgid "Show Public Key" +msgstr "បង្ហាញ​សោ​សាធារណៈ" + +msgid "Could not load public key" +msgstr "មិនអាច​ផ្ទុក​សោសាធារណៈបានទេ" + +msgid "User Information" +msgstr "ព័ត៌មាន​អ្នក​អ្នកប្រើ" + +msgid "Cannot get user information" +msgstr "មិន​អាច​យក​ព័ត៌មាន​របស់​អ្នក​ប្រើ​បានទេ" + +#, c-format +msgid "The %s buddy is not trusted" +msgstr "មិត្តភក្ដិ %s មិន​ទុកចិត្ត​ទេ" + +msgid "" +"You cannot receive buddy notifications until you import his/her public key. " +"You can use the Get Public Key command to get the public key." +msgstr "" +"អ្នក​មិន​អាច​ទទួល​ការ​ជូនដំណឹង​មិត្តភក្ដិ​​ទេ រហូត​ដល់​អ្នក​នាំចូល​សោ​សាធារណៈ​របស់​គាត់ ។ អ្នក​អាច​ប្រើ​ពាក្យ​បញ្ជា​" +"សាធារណៈ​ ដើម្បីទទួល​បាន​សោ​សាធារណៈ ។" + +#. Open file selector to select the public key. +msgid "Open..." +msgstr "បើក​..." + +#, c-format +msgid "The %s buddy is not present in the network" +msgstr "មិត្តភក្ដិ %s មិន​បង្ហាញ​នៅ​ក្នុង​បណ្ដាញទេ" + +msgid "" +"To add the buddy you must import his/her public key. Press Import to import " +"a public key." +msgstr "" +"ដើម្បី​បន្ថែម​មិត្តភក្ដិ​ អ្នក​ត្រូវ​តែ​នាំចូល​សោសាធារណៈ​របស់​គាត់ ។ ចុច​នាំចូល ដើម្បីនាំចូល​សោ​សាធារណៈ ។" + +msgid "_Import..." +msgstr "នាំចូល..." + +msgid "Select correct user" +msgstr "ជ្រើស​​អ្នកប្រើ​ដែល​ត្រឹមត្រូវ" + +msgid "" +"More than one user was found with the same public key. Select the correct " +"user from the list to add to the buddy list." +msgstr "" +"រកឃើញ​អ្នកប្រើច្រើនជាង​មួយ​ដែលមាន​សោ​សាធារណៈដូចគ្នា ​​។ ជ្រើស​អ្នកប្រើបច្ចុប្បន្ន​ពី​បញ្ជី ដើម្បី​បន្ថែម​ទៅ​" +"កាន់បញ្ជីមិត្តភក្ដិ ។" + +msgid "" +"More than one user was found with the same name. Select the correct user " +"from the list to add to the buddy list." +msgstr "" +"រក​ឃើញ​​អ្នកប្រើ​ច្រើនជាង​មួយ ដែលមាន​ឈ្មោះ​ដូចគ្នា ។ ជ្រើស​អ្នក​ប្រើត្រឹមត្រូវ​ពី​បញ្ជី​ដើម្បី​បន្ថែម​" +"ទៅកាន់បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។" + +msgid "Detached" +msgstr "ផ្ដាច់" + +msgid "Indisposed" +msgstr "មិន​ចោល" + +msgid "Wake Me Up" +msgstr "ដាស់ខ្ញុំ" + +msgid "Hyper Active" +msgstr "សកម្ម​ភាព" + +msgid "Robot" +msgstr "មនុស្ស​យន្ត" + +msgid "Happy" +msgstr "សប្បាយ" + +msgid "Sad" +msgstr "ក្រៀមក្រំ" + +msgid "Angry" +msgstr "ខឹង" + +msgid "Jealous" +msgstr "ច្រណែន" + +msgid "Ashamed" +msgstr "អៀនខ្មាស់" + +msgid "Invincible" +msgstr "មិន​ចុះចាញ់" + +msgid "In Love" +msgstr "សេចក្តី​ស្រឡាញ់" + +msgid "Sleepy" +msgstr "ងងុយដេក" + +msgid "Bored" +msgstr "អផ្សុក" + +msgid "Excited" +msgstr "រំភើប" + +msgid "Anxious" +msgstr "រសាប់រសល់" + +msgid "User Modes" +msgstr "របៀប​អ្នក​ប្រើ" + +msgid "Preferred Contact" +msgstr "ទំនាក់ទំនង​ដែល​ពេញចិត្ត" + +msgid "Preferred Language" +msgstr "ភាសា​ដែល​ពេញចិត្ត" + +msgid "Device" +msgstr "ឧបករណ៍​" + +msgid "Timezone" +msgstr "តំបន់​ពេលវេលា" + +msgid "Geolocation" +msgstr "ទីតាំង​ភូមិសាស្ត្រ" + +msgid "Reset IM Key" +msgstr "កំណត់​សោ IM ឡើង​វិញ" + +msgid "IM with Key Exchange" +msgstr "IM មាន​ការ​ផ្លាស់ប្ដូរ​សោ" + +msgid "IM with Password" +msgstr "IM មាន​ពាក្យ​សម្ងាត់" + +msgid "Get Public Key..." +msgstr "យក​សោ​សាធារណៈ..." + +msgid "Kill User" +msgstr "សម្លាប់​អ្នក​ប្រើ" + +msgid "Draw On Whiteboard" +msgstr "គូរ​លើ​ក្ដារខៀន" + +msgid "_Passphrase:" +msgstr "ឃ្លា​សម្ងាត់ ៖" + +#, c-format +msgid "Channel %s does not exist in the network" +msgstr "មិន​ទាន់មាន​ឆានែល %s នៅ​ក្នុង​បណ្ដាញ​ទេ" + +msgid "Channel Information" +msgstr "ព័ត៌មាន​ឆានែល" + +msgid "Cannot get channel information" +msgstr "មិនអាចយក​ព័ត៌មាន​ឆានែល​បានទេ" + +#, c-format +msgid "Channel Name: %s" +msgstr "ឈ្មោះ​ឆានែល ៖ %s" + +#, c-format +msgid "
User Count: %d" +msgstr "
ចំនួន​អ្នកប្រើ ៖ %d" + +#, c-format +msgid "
Channel Founder: %s" +msgstr "
ស្ថាបនិក​ឆានែល ៖ %s" + +#, c-format +msgid "
Channel Cipher: %s" +msgstr "
សរសេរ​ឆានែល​ជា​​សម្ងាត់ ៖ %s" + +#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC +#, c-format +msgid "
Channel HMAC: %s" +msgstr "
ឆានែល HMAC ៖ %s" + +#, c-format +msgid "
Channel Topic:
%s" +msgstr "
ប្រធានបទ​ឆានែល ៖
%s" + +#, c-format +msgid "
Channel Modes: " +msgstr "
របៀប​​ឆានែល ៖ " + +#, c-format +msgid "
Founder Key Fingerprint:
%s" +msgstr "
ស្ថាបនិកសោ​ស្នាម​ម្រាមដៃ ៖
%s" + +#, c-format +msgid "
Founder Key Babbleprint:
%s" +msgstr "
ស្ថាបនិក​សោ Babbleprint ៖
%s" + +msgid "Add Channel Public Key" +msgstr "បន្ថែម​សោ​សាធារណៈ​របស់​ឆានែល" + +#. Add new public key +msgid "Open Public Key..." +msgstr "បើកសោ​សាធារណៈ..." + +msgid "Channel Passphrase" +msgstr "ឃ្លាសម្ងាត់​ឆានែល" + +msgid "Channel Public Keys List" +msgstr "បញ្ជី​សោ​សាធារណៈ​របស់​ឆានែល" + +#, c-format +msgid "" +"Channel authentication is used to secure the channel from unauthorized " +"access. The authentication may be based on passphrase and digital " +"signatures. If passphrase is set, it is required to be able to join. If " +"channel public keys are set then only users whose public keys are listed are " +"able to join." +msgstr "" +"ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ឆានែល​ត្រូវ​បានប្រើ​ដើម្បី​ធ្វើ​ឲ្យ​ឆានែល​មានសុវត្ថិភាព ពីការ​ចូលដំណើរការ​" +"ដែល​មិនបានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។ ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​អាច​មាន​មូលដ្ឋាន​លើ​ឃ្លា​សម្ងាត់ និង​" +"ហត្ថលេខា​ឌីជីថល ។ ប្រសិន​បើ​បានកំណត់​ឃ្លា​សម្ងាត់ វា​តម្រូវ​ឲ្យ​ចូល​រួម ។ ប្រសិន​បើ​សោ​សាធារណៈ​របស់​ឆានែល​ " +"បន្ទាប់មកមានតែ​អ្នកប្រើ​ដែលសោសាធារណៈ​របស់​វា​ត្រូវ​បានរាយ​ដើម្បីអាច​ចូលរួម​បាន ។" + +msgid "Channel Authentication" +msgstr "ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ​របស់ឆានែល" + +msgid "Add / Remove" +msgstr "បន្ថែម/យក​ចេញ" + +msgid "Group Name" +msgstr "ឈ្មោះ​ក្រុម" + +msgid "Passphrase" +msgstr "ឃ្លាសម្ងាត់" + +#, c-format +msgid "Please enter the %s channel private group name and passphrase." +msgstr "សូម​បញ្ចូល​ឈ្មោះក្រុម​ឯកជន​ឆានែល %s និង​ឃ្លា​សម្ងាត់ ។" + +msgid "Add Channel Private Group" +msgstr "បន្ថែម​ក្រុម​ឯកជន​របស់​ឆានែល" + +msgid "User Limit" +msgstr "ដែន​កំណត់​អ្នកប្រើ" + +msgid "Set user limit on channel. Set to zero to reset user limit." +msgstr "កំណត់​ដែនកំណត់​របស់​អ្នកប្រើ​នៅ​លើ​ឆានែល ។ កំណត់​សូន្យ​ដើម្បី​កំណត់​ដែនកំណត់​អ្នកប្រើឡើង​វិញ ។" + +msgid "Invite List" +msgstr "អញ្ជើញ​បញ្ជី" + +msgid "Ban List" +msgstr "បញ្ជី​ហាមឃាត់" + +msgid "Add Private Group" +msgstr "បន្ថែម​ក្រុម​ឯកជន" + +msgid "Reset Permanent" +msgstr "កំណត់​អចិន្ត្រៃយ៍​ឡើង​វិញ" + +msgid "Set Permanent" +msgstr "កំណត់​អចិន្ត្រៃយ៍" + +msgid "Set User Limit" +msgstr "កំណត់​ដែន​កំណត់​របស់​អ្នក" + +msgid "Reset Topic Restriction" +msgstr "កំណត់​ការ​ដាក់កម្រិត​ប្រធានបទ​ឡើងវិញ" + +msgid "Set Topic Restriction" +msgstr "កំណត់​ការ​កម្រិត​ប្រធានបទ" + +msgid "Reset Private Channel" +msgstr "កំណត់​ឆានែល​ឯកជន​ឡើងវិញ" + +msgid "Set Private Channel" +msgstr "កំណត់​ឆានែល​ឯកជន" + +msgid "Reset Secret Channel" +msgstr "កំណត់​ឆានែល​សម្ងាត់" + +msgid "Set Secret Channel" +msgstr "កំណត់​ឆានែល​សម្ងាត់​" + +#, c-format +msgid "" +"You have to join the %s channel before you are able to join the private group" +msgstr "អ្នកបាន​ចូលរួម​​​ក្នុង​ឆានែល %s មុននឹង​អ្នក​អាច​ចូលរួម​ក្នុង​ក្រុមឯកជន" + +msgid "Join Private Group" +msgstr "ចូលរួម​ក្នុង​ក្រុម​ឯកជន" + +msgid "Cannot join private group" +msgstr "មិនអាច​ចូលរួម​ក្នុងក្រុម​ឯកជន​បានទេ" + +msgid "Call Command" +msgstr "ហៅ​ពាក្យ​បញ្ជា" + +msgid "Cannot call command" +msgstr "មិនអាច​ហៅ​ពាក្យ​បញ្ជា​បានទេ" + +msgid "Unknown command" +msgstr "មិន​ស្គាល់​ពាក្យ​បញ្ជា" + +msgid "Secure File Transfer" +msgstr "ការ​ផ្ទេរ​ឯកសារ​មាន​សុវត្ថិភាព" + +msgid "Error during file transfer" +msgstr "កំហុសកំឡុង​ពេល​ផ្ទេរ​ឯកសារ" + +msgid "Remote disconnected" +msgstr "បានផ្ដាច់​ពីចម្ងាយ" + +msgid "Permission denied" +msgstr "បានបដិសេធ​សិទ្ធិ" + +msgid "Key agreement failed" +msgstr "បាន​បរាជ័យ​លើ​កិច្ចព្រមព្រៀង​សំខាន់" + +msgid "Connection timed out" +msgstr "អស់ពេល​តភ្ជាប់" + +msgid "Creating connection failed" +msgstr "បានបរាជ័យ​ក្នុងការ​បង្កើត​ការ​តភ្ជាប់" + +msgid "File transfer session does not exist" +msgstr "មិនទាន់មាន​សម័យ​ផ្ទេរ​ឯកសារ​ទេ" + +msgid "No file transfer session active" +msgstr "គ្មាន​សម័យ​ផ្ទេរ​ឯកសារ​សកម្ម​ទេ" + +msgid "File transfer already started" +msgstr "បានចាប់ផ្ដើមការ​ផ្ទេរ​ឯកសារ​រួច​​ហើយ" + +msgid "Could not perform key agreement for file transfer" +msgstr "មិន​អាច​អនុវត្ត​កិច្ចព្រមព្រៀង​សំខាន់​សម្រាប់​ការ​ផ្ទេរ​ឯកសារ​បានទេ" + +msgid "Could not start the file transfer" +msgstr "មិនអាច​ចាប់ផ្ដើម​ការ​ផ្ទេរ​ឯកសារ​បានទេ" + +msgid "Cannot send file" +msgstr "មិនអាច​ផ្ញើ​ឯកសារ​បាន​ទេ" + +msgid "Error occurred" +msgstr "កំហុស​បានកើត​ឡើង" + +#, c-format +msgid "%s has changed the topic of %s to: %s" +msgstr "%s បានផ្លាស់ប្ដូរ​ប្រធានបទ​របស់ %s ទៅ​ជា ៖ %s" + +#, c-format +msgid "%s set channel %s modes to: %s" +msgstr "%s កំណត់​របៀប​​ឆានែល %s ទៅ​ជា ៖ %s" + +#, c-format +msgid "%s removed all channel %s modes" +msgstr "%s បាន​យក​របៀប​ឆានែល %s ចេញ" + +#, c-format +msgid "%s set %s's modes to: %s" +msgstr "%s កំណត់​របៀប %s ទៅ​ជា ៖ %s" + +#, c-format +msgid "%s removed all %s's modes" +msgstr "%s បាន​យក​របៀបរបស់ %s ទាំង​អស់​ចេញ" + +#, c-format +msgid "You have been kicked off %s by %s (%s)" +msgstr "អ្នកត្រូវ​បានធាក់ចេញ​ពី %s ដោយ %s (%s)" + +#, c-format +msgid "You have been killed by %s (%s)" +msgstr "អ្នក​ត្រូវ​បាន​សម្លាប់​ដោយ %s (%s)" + +#, c-format +msgid "Killed by %s (%s)" +msgstr "បាន​សម្លាប់​ដោយ %s (%s)" + +msgid "Server signoff" +msgstr "ចេញ​ពី​ម៉ាស៊ីនបម្រើ" + +msgid "Personal Information" +msgstr "ព័ត៌មាន​ផ្ទាល់ខ្លួន" + +msgid "Birth Day" +msgstr "ថ្ងៃ​​កំណើត" + +msgid "Job Role" +msgstr "តួនាទី​ការងារ" + +msgid "Organization" +msgstr "អង្គការ" + +msgid "Unit" +msgstr "ផ្នែក" + +msgid "Note" +msgstr "ចំណាំ" + +msgid "Join Chat" +msgstr "ចូលរួម​ជជែក" + +#, c-format +msgid "You are channel founder on %s" +msgstr "អ្នកជា​អ្នកស្ថាបនិក​ឆានែលនៅ​លើ %s" + +#, c-format +msgid "Channel founder on %s is %s" +msgstr "ស្ថាបនិក​ឆានែល​នៅ​លើ %s គឺ %s" + +msgid "Real Name" +msgstr "ឈ្មោះ​ពិត" + +msgid "Status Text" +msgstr "អត្ថបទ​ស្ថានភាព" + +msgid "Public Key Fingerprint" +msgstr "ស្នាមម្រាមដៃ​សោ​សាធារណៈ" + +msgid "Public Key Babbleprint" +msgstr "Babbleprint សោ​សាធារណៈ" + +msgid "_More..." +msgstr "ផ្សេងៗ​ទៀត..." + +msgid "Detach From Server" +msgstr "ផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ" + +msgid "Cannot detach" +msgstr "មិនអាច​ផ្ដាច់​បានទេ" + +msgid "Cannot set topic" +msgstr "មិនអាច​កំណត់​ប្រធាន​បទ​បានទេ" + +msgid "Failed to change nickname" +msgstr "បានបរាជ័យ​ក្នុងការ​ផ្លាស់ប្ដូរ​សម្មតិនាម" + +msgid "Roomlist" +msgstr "បញ្ជី​បន្ទប់" + +msgid "Cannot get room list" +msgstr "មិនអាច​យក​បញ្ជី​បន្ទប់បានទេ" + +msgid "Network is empty" +msgstr "បណ្ដាញ​ទទេ" + +msgid "No public key was received" +msgstr "មិនបានទទួល​សោ​សាធារណៈ​ទេ" + +msgid "Server Information" +msgstr "ព័ត៌មាន​ម៉ាស៊ីនបម្រើ" + +msgid "Cannot get server information" +msgstr "មិនអាច​យក​ព័ត៌មាន​ម៉ាស៊ីនបម្រើបានទេ" + +msgid "Server Statistics" +msgstr "ស្ថិតិ​ម៉ាស៊ីនបម្រើ" + +msgid "Cannot get server statistics" +msgstr "មិនអាច​យក​ស្ថិតិ​ម៉ាស៊ីនបម្រើបានទេ" + +#, c-format +msgid "" +"Local server start time: %s\n" +"Local server uptime: %s\n" +"Local server clients: %d\n" +"Local server channels: %d\n" +"Local server operators: %d\n" +"Local router operators: %d\n" +"Local cell clients: %d\n" +"Local cell channels: %d\n" +"Local cell servers: %d\n" +"Total clients: %d\n" +"Total channels: %d\n" +"Total servers: %d\n" +"Total routers: %d\n" +"Total server operators: %d\n" +"Total router operators: %d\n" +msgstr "" +"ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន​ចាប់ផ្ដើម​ម៉ោង ៖ %s\n" +"ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន​ដល់​ម៉ោង ៖ %s\n" +"ម៉ាស៊ីន​ភ្ញៀវ​របស់​ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន ៖ %d\n" +"ឆានែល​ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន ៖ %d\n" +"ការី​ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន ៖ %d\n" +"ការី​រ៉ោតទ័រ​មូលដ្ឋាន ៖ %d\n" +"ម៉ាស៊ីន​ភ្ញើ​ចល័ត​មូលដ្ឋាន ៖ %d\n" +"ឆានែល​ចល័ត​មូលដ្ឋាន ៖ %d\n" +"ម៉ាស៊ីនបម្រើចល័ត​មូលដ្ឋាន ៖ %d\n" +"ម៉ាស៊ីន​ភ្ញៀវ​សរុប ៖ %d\n" +"ឆានែល​សរុប ៖ %d\n" +"ម៉ាស៊ីនបម្រើសរុប ៖ %d\n" +"Total routers: %d\n" +"Total server operators: %d\n" +"Total router operators: %d\n" + +msgid "Network Statistics" +msgstr "ស្ថិតិ​បណ្ដាញ" + +msgid "Ping failed" +msgstr "បានបរាជ័យក្នុងការ Ping" + +msgid "Ping reply received from server" +msgstr "បាន​ទទួល​ការ​ឆ្លើយតប Ping ពី​ម៉ាស៊ីនបម្រើ" + +msgid "Could not kill user" +msgstr "មិនអាច​សម្លាប់​អ្នកប្រើបានទេ" + +msgid "WATCH" +msgstr "ឃ្លាំង​មើល" + +msgid "Cannot watch user" +msgstr "មិនអាច​ឃ្លាំង​មើល​អ្នកប្រើបានទេ" + +msgid "Resuming session" +msgstr "បន្ត​សម័យ" + +msgid "Authenticating connection" +msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ការ​តភ្ជាប់" + +msgid "Verifying server public key" +msgstr "ផ្ទៀងផ្ទាត់​សោ​សាធារណៈ​របស់​ម៉ាស៊ីនបម្រើ" + +msgid "Passphrase required" +msgstr "ត្រូវការ​ឃ្លា​សម្ងាត់" + +#, c-format +msgid "" +"Received %s's public key. Your local copy does not match this key. Would you " +"still like to accept this public key?" +msgstr "" +"បានទទួល​សោ​សាធារណៈ​របស់ %s ។ ច្បាបចម្លង​មូលដ្ឋាន​របស់​​អ្នក​មិនផ្គូផ្គង​សោ​នេះ​ទេ ។ តើ​អ្នកនៅតែ​ទទួល​យក​សោ​" +"សាធារណៈ​នេះ​ឬ ?" + +#, c-format +msgid "Received %s's public key. Would you like to accept this public key?" +msgstr "បានទទួល​សោ​សាធារណៈ​របស់ %s ។ តើអ្នក​ចង់​ទទួល​យក​សោ​សាធារណៈ​នេះ​ដែរឬទេ ?" + +#, c-format +msgid "" +"Fingerprint and babbleprint for the %s key are:\n" +"\n" +"%s\n" +"%s\n" +msgstr "" +"ស្នាមម្រាមដៃ និង babbleprint សម្រាប់សោ %s គឺ ៖\n" +"\n" +"%s\n" +"%s\n" + +msgid "Verify Public Key" +msgstr "ផ្ទៀងផ្ទាត��​សោ​សាធារណៈ" + +msgid "_View..." +msgstr "មើល..." + +msgid "Unsupported public key type" +msgstr "ប្រភេទ​សោ​សាធារណៈ​មិន​បានគាំទ្រ" + +msgid "Disconnected by server" +msgstr "បានផ្ដាច់​ដោយ​ម៉ាស៊ីនបម្រើ" + +msgid "Error during connecting to SILC Server" +msgstr "កំហុស​កំឡុងពេល​តភ្ជាប់​ទៅកាន់​ម៉ាស៊ីន​បម្រើ SILC" + +msgid "Key Exchange failed" +msgstr "បានបរាជ័យ​ក្នុងកា​រផ្លាស់ប្ដូរ​សោ" + +msgid "" +"Resuming detached session failed. Press Reconnect to create new connection." +msgstr "បានបរាជ័យ​ក្នុងការ​បន្ត​សម័យ​ដែលបានផ្ដាច់ ។ ចុច​តភ្ជាប់ឡើង​វិញ​ដើម្បី​បង្កើត​ការ​តភ្ជាប់ថ្មី ។" + +msgid "Connection failed" +msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់" + +msgid "Performing key exchange" +msgstr "អនុវត្ត​ការ​ផ្លាស់ប្ដូរ​សោ" + +msgid "Unable to create connection" +msgstr "មិនអាច​បង្កើត​ការតភ្ជាប់​បានទេ" + +msgid "Could not load SILC key pair" +msgstr "មិនអាច​ផ្ទុក​ការ​​ផ្គូផ្គង​សោ SILC បានទេ" + +#. Progress +msgid "Connecting to SILC Server" +msgstr "តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ SILC" + +msgid "Out of memory" +msgstr "អស់​សតិOut of memory" + +msgid "Cannot initialize SILC protocol" +msgstr "មិនអាច​ចាប់ផ្ដើម​ពិធីការ SILC បានទេ" + +msgid "Error loading SILC key pair" +msgstr "កំហុស​ក្នុងការ​ផ្ទុក​ការ​ផ្គូផ្គង​សោ SILC" + +#, c-format +msgid "Download %s: %s" +msgstr "ទាញ %s ៖ %s" + +msgid "Your Current Mood" +msgstr "អារម្មណ៍​បច្ចុប្បន្ន​របស់​អ្នក" + +#, c-format +msgid "Normal" +msgstr "ធម្មតា" + +msgid "In love" +msgstr "ស្រឡាញ់" + +msgid "" +"\n" +"Your Preferred Contact Methods" +msgstr "" +"\n" +"វិធីសាស្ត្រ​ទំនាក់ទំនង​ដែលពេញចិត្ត​របស់​អ្នក" + +msgid "SMS" +msgstr "SMS" + +msgid "MMS" +msgstr "MMS" + +msgid "Video conferencing" +msgstr "សន្និសីទ​វីដេអូ" + +msgid "Your Current Status" +msgstr "ស្ថានភាព​បច្ចុប្បន្ន​របស់​អ្នក" + +msgid "Online Services" +msgstr "សេវា​លើ​បណ្ដាញ" + +msgid "Let others see what services you are using" +msgstr "អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើល​សេវា​អ្វីដែល​អ្នកកំពុង​ប្រើ" + +msgid "Let others see what computer you are using" +msgstr "អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើលកុំព្យូទ័រ​ដែល​អ្នក​កំពុង​ប្រើ" + +msgid "Your VCard File" +msgstr "ឯកសារ VCard" + +msgid "Timezone (UTC)" +msgstr "តំបន់​ពេលវេលា (UTC)" + +msgid "User Online Status Attributes" +msgstr "គុណលក្ខណៈ​ស្ថានភាព​លើ​បណ្ដាញ​របស់​អ្នកប្រើ" + +msgid "" +"You can let other users see your online status information and your personal " +"information. Please fill the information you would like other users to see " +"about yourself." +msgstr "" +"អ្នកអាច​អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើល​ព័ត៌មាន​ស្ថានភាព​លើបណ្ដាញ​ និង​ព័ត៌មានផ្ទាល់ខ្លួន​របស់​អ្នក ។ សូម​បំពេញ​" +"ព័ត៌មាន​ដែល​អ្នក​ចង់​ឲ្យ​អ្នក​ផ្សេង​មើល​ព័ត៌មានអំពី​ខ្លួន​អ្នក​ផ្ទាល់ ។" + +msgid "Message of the Day" +msgstr "សារ​ថ្ងៃ" + +msgid "No Message of the Day available" +msgstr "គ្មាន​សារ​ថ្ងៃ​នោះ​ទេ" + +msgid "There is no Message of the Day associated with this connection" +msgstr "មិនមានសារ​ថ្ងៃ​ដែលបានភ្ជាប់​ជា​មួយ​ការ​តភ្ជាប់នេះ​ទៀត​ទេ" + +msgid "Create New SILC Key Pair" +msgstr "បង្កើត​ការ​ផ្គូផ្គង​សោ SILC ថ្មី" + +msgid "Passphrases do not match" +msgstr "ឃ្លា​សម្ងាត់​មិនផ្គូផ្គង" + +msgid "Key Pair Generation failed" +msgstr "បានបរាជ័យ​ក្នុងកា​របង្កើត​គូរ​សោ" + +msgid "Key length" +msgstr "ប្រវែង​សោ" + +msgid "Public key file" +msgstr "ឯកសារ​សោ​សាធារណៈ" + +msgid "Private key file" +msgstr "ឯកសារ​សោ​ឯកជន" + +msgid "Passphrase (retype)" +msgstr "ឃ្លាសម្ងាត់ (វាយ​ម្ដង​ទៀត)" + +msgid "Generate Key Pair" +msgstr "បង្កើត​គូសោ" + +msgid "Online Status" +msgstr "ស្ថានភាព​លើ​បណ្ដាញ" + +msgid "View Message of the Day" +msgstr "មើល​សារ​ថ្ងៃ" + +msgid "Create SILC Key Pair..." +msgstr "បង្កើត​គូ​សោ SILC..." + +#, c-format +msgid "User %s is not present in the network" +msgstr "អ្នកប្រើ %s មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទេ" + +msgid "Topic too long" +msgstr "ប្រធាន​បទ​វែងពេក" + +msgid "You must specify a nick" +msgstr "អ្នក​ត្រូវតែ​បញ្ជាក់​សម្មតិនាម" + +#, c-format +msgid "channel %s not found" +msgstr "រក​មិនឃើញ​ឆានែល %s" + +#, c-format +msgid "channel modes for %s: %s" +msgstr "របៀប​ឆានែល​ពី %s ៖ %s" + +#, c-format +msgid "no channel modes are set on %s" +msgstr "គ្មាន​របៀប​ឆានែល​ត្រូវ​បានកំណត់​នៅ​លើ %s" + +#, c-format +msgid "Failed to set cmodes for %s" +msgstr "បានបរាជ័យ​ក្នុងការ​កំណត់​ cmodes សម្រាប់ %s" + +#, c-format +msgid "Unknown command: %s, (may be a client bug)" +msgstr "មិនស្គាល់ពាក្យ​បញ្ជា ៖ %s (អាច​ជា​កំហុស​របស់​ម៉ាស៊ីន​ភ្ញៀវ)" + +msgid "part [channel]: Leave the chat" +msgstr "ផ្នែក [ឆានែល] ៖ ចេញ​ពី​កា​រជជែក" + +msgid "leave [channel]: Leave the chat" +msgstr "ចេញ [ឆានែល] ៖ ចេញ​ពីការ​ជជែក" + +msgid "topic [<new topic>]: View or change the topic" +msgstr "ប្រធានបទ [<ប្រធាន​បទ​ថ្មី>] ៖ មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធានបទ" + +msgid "join <channel> [<password>]: Join a chat on this network" +msgstr "ចូលរួម <ឆានែល> [<ពាក្យ​សម្ងាត់>] ៖ ចូលរួម​ក្នុងការ​ជជែក​នៅ​លើ​បណ្ដាញ​នេះ" + +msgid "list: List channels on this network" +msgstr "បញ្ជី ៖ រាយឆានែល​នៅ​លើ​បណ្ដាញ​នេះ" + +msgid "whois <nick>: View nick's information" +msgstr "whois <nick> ៖ មើល​ព័ត៌មាន​សម្មតិនាម" + +msgid "msg <nick> <message>: Send a private message to a user" +msgstr "msg <nick> <message> ៖ ផ្ញើ​សារ​ឯកជន​​ឲ្យ​អ្នកប្រើ" + +msgid "query <nick> [<message>]: Send a private message to a user" +msgstr "សួរ <nick> [<message>] ៖ ផ្ញើ​សារ​ឯកជន​ឲ្យ​អ្នកប្រើ" + +msgid "motd: View the server's Message Of The Day" +msgstr "motd ៖ មើល​សារ​របស់ម៉ាស៊ីនបម្រើ​នៃ​ថ្ងៃ" + +msgid "detach: Detach this session" +msgstr "ផ្ដាច់ ៖ ផ្ដាច់​សម័យ​នេះ" + +msgid "quit [message]: Disconnect from the server, with an optional message" +msgstr "ចេញ [សារ] ៖ ផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ ដោយ​មាន​សារ​ជា​ជម្រើស" + +msgid "call <command>: Call any silc client command" +msgstr "call <command> ៖ ហៅ​ពាក្យ​បញ្ជា​ម៉ាស៊ីនភ្ញៀវ silc ណា​មួយ" + +msgid "kill <nick> [-pubkey|<reason>]: Kill nick" +msgstr "សម្លាប់ <nick> [-pubkey|<reason>] ៖ សម្លាប់​សម្មតិនាម" + +msgid "nick <newnick>: Change your nickname" +msgstr "nick <newnick> ៖ ផ្លាស់ប្ដូរ​សម្មតិនាម​របស់​អ្នក" + +msgid "whowas <nick>: View nick's information" +msgstr "whowas <nick> ៖ មើល​ព័ត៌មាន​សម្មតិនាម" + +msgid "" +"cmode <channel> [+|-<modes>] [arguments]: Change or display " +"channel modes" +msgstr "" +"cmode <channel> [+|-<modes>] [arguments] ៖ ផ្លាស់ប្ដូរ ឬ​បង្ហាញ​របៀប​" +"ឆានែល" + +msgid "" +"cumode <channel> +|-<modes> <nick>: Change nick's modes " +"on channel" +msgstr "" +"cumode <channel> +|-<modes> <nick> ៖ ផ្លាស់ប្ដូរ​របៀប​សម្មតិនាម​នៅ​" +"លើ​ឆានែល" + +msgid "umode <usermodes>: Set your modes in the network" +msgstr "umode <usermodes> ៖ កំណត់​របៀប​របស់​អ្នក​នៅ​ក្នុង​បណ្ដាញ" + +msgid "oper <nick> [-pubkey]: Get server operator privileges" +msgstr "oper <nick> [-pubkey] ៖ យក​សិទ្ធិ​ការី​របស់​ម៉ាស៊ីនបម្រើ" + +msgid "" +"invite <channel> [-|+]<nick>: invite nick or add/remove from " +"channel invite list" +msgstr "" +"អញ្ជើញ <channel> [-|+]<nick> ៖ អញ្ជើញ​សម្មតិនាម ឬ​បន្ថែម/យក​ចេញ​ពី​បញ្ជីអញ្ជើញ​" +"ឆានែល" + +msgid "kick <channel> <nick> [comment]: Kick client from channel" +msgstr "ទាត់ <channel> <nick> [comment] ៖ ចុ​ច​ម៉ាស៊ីន​ភ្ញៀវ​ពី​ឆានែល" + +msgid "info [server]: View server administrative details" +msgstr "ព័ត៌មាន [ម៉ាស៊ីនបម្រើ] ៖ មើល​សេចក្ដី​លម្អិត​គ្រប់គ្រង​របស់​ម៉ាស៊ីនបម្រើ" + +msgid "ban [<channel> +|-<nick>]: Ban client from channel" +msgstr "ហាមឃាត់ [<channel> +|-<nick>] ៖ ហាមឃាត់​ម៉ាស៊ីន​ភ្ញៀវ​ពី​ឆានែល" + +msgid "getkey <nick|server>: Retrieve client's or server's public key" +msgstr "getkey <nick|server> ៖ ទៅ​យក​សោសាធារណៈ​របស់​ម៉ាស៊ីនបម្រើ ឬ​ម៉ាស៊ីន​ភ្ញៀវ" + +msgid "stats: View server and network statistics" +msgstr "ស្ថានភាព ៖ មើល​ស្ថិតិ​ម៉ាស៊ីនបម្រើ និង​បណ្ដាញ" + +msgid "ping: Send PING to the connected server" +msgstr "ping ៖ ផ្ញើ​ PING ទៅកាន់​ម៉ាស៊ីនបម្រើ​ដែលបានតភ្ជាប់" + +msgid "users <channel>: List users in channel" +msgstr "អ្នកប្រើ <ឆានែល> ៖ រាយ​អ្នកប្រើ​នៅ​ក្នុង​ឆានែល" + +msgid "" +"names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: List " +"specific users in channel(s)" +msgstr "" +"ឈ្មោះ [-count|-ops|-halfops|-voices|-normal] <channel(s)> ៖ រាយ​អ្នកប្រើ​" +"ជាក់លាក់​នៅ​ក្នុង​ឆានែល" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +msgid "SILC Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SILC" + +#. * description +msgid "Secure Internet Live Conferencing (SILC) Protocol" +msgstr "ពិធីការ Secure Internet Live Conferencing (SILC)" + +msgid "Network" +msgstr "បណ្ដាញ" + +msgid "Public Key file" +msgstr "ឯកសារ​សោ​សាធារណៈ" + +msgid "Private Key file" +msgstr "ឯកសារ​សោ​ឯកជន" + +msgid "Cipher" +msgstr "សរសេរ​សម្ងាត់" + +msgid "HMAC" +msgstr "HMAC" + +msgid "Use Perfect Forward Secrecy" +msgstr "ប្រើ​ភាព​សុវត្ថិភាព​បញ្ជូនបន្ត​ល្អ​ឥតខ្ចោះ" + +msgid "Public key authentication" +msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​សោ​សាធារណៈ" + +msgid "Block IMs without Key Exchange" +msgstr "ទប់ស្កាត់ IMs ដោយ​គ្មាន​ការ​ផ្លាស់ប្ដូរ​សោ" + +msgid "Block messages to whiteboard" +msgstr "ទប់ស្កាត់សារ​ទៅក្ដារខៀន" + +msgid "Automatically open whiteboard" +msgstr "បើក​ក្ដារខៀន​ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Digitally sign and verify all messages" +msgstr "ចុះហត្ថលេខា​ឌីជីថល និង​ផ្ទៀងផ្ទាត់​សារ​ទាំងអស់" + +msgid "Creating SILC key pair..." +msgstr "កំពុង​បង្កើត​គូសោ SILC​..." + +msgid "Cannot create SILC key pair\n" +msgstr "មិនអាច​បង្កើត​គូ​សោ SILC\n" + +#. Hint for translators: Please check the tabulator width here and in +#. the next strings (short strings: 2 tabs, longer strings 1 tab, +#. sum: 3 tabs or 24 characters) +#, c-format +msgid "Real Name: \t%s\n" +msgstr "ឈ្មោះ​ពិត ៖ \t%s\n" + +#, c-format +msgid "User Name: \t%s\n" +msgstr "ឈ្មោះអ្នកប្រើ ៖ \t%s\n" + +#, c-format +msgid "Email: \t\t%s\n" +msgstr "អ៊ីមែល ៖ \t\t%s\n" + +#, c-format +msgid "Host Name: \t%s\n" +msgstr "ឈ្មោះម៉ាស៊ីន ៖ \t%s\n" + +#, c-format +msgid "Organization: \t%s\n" +msgstr "អង្គការ ៖ \t%s\n" + +#, c-format +msgid "Country: \t%s\n" +msgstr "ប្រទេស ៖ \t%s\n" + +#, c-format +msgid "Algorithm: \t%s\n" +msgstr "ក្បួន​ដោះស្រាយ ៖ \t%s\n" + +#, c-format +msgid "Key Length: \t%d bits\n" +msgstr "ប្រវែង​សោ ៖ \t%d ប៊ីត\n" + +#, c-format +msgid "Version: \t%s\n" +msgstr "កំណែ ៖ \t%s\n" + +#, c-format +msgid "" +"Public Key Fingerprint:\n" +"%s\n" +"\n" +msgstr "" +"ស្នាមម្រាមដៃ​សោ​សាធារណៈ ៖\n" +"%s\n" +"\n" + +#, c-format +msgid "" +"Public Key Babbleprint:\n" +"%s" +msgstr "" +"Babbleprint សោ​សាធារណៈ ៖\n" +"%s" + +msgid "Public Key Information" +msgstr "ព័ត៌មាន​សោ​សាធារណៈ" + +msgid "Paging" +msgstr "ភេយីង" + +msgid "Video Conferencing" +msgstr "សន្និសីទ​វីដេអូ" + +msgid "Computer" +msgstr "កុំព្យូទ័រ" + +msgid "PDA" +msgstr "PDA" + +msgid "Terminal" +msgstr "ស្ថានីយ" + +#, c-format +msgid "%s sent message to whiteboard. Would you like to open the whiteboard?" +msgstr "%s បាន​ផ្ញើសារ​ទៅក្ដារខៀន ។ តើ​អ្នក​ចង់បើក​ក្ដារខៀន​ឬទេ ?" + +#, c-format +msgid "" +"%s sent message to whiteboard on %s channel. Would you like to open the " +"whiteboard?" +msgstr "%s បាន​ផ្ញើសារ​ទៅក្ដារខៀន​នៅ​លើ​ឆានែល %s ។ តើ​អ្នកចង់​បើក​ក្ដារខៀន​ដែរឬទេ ?" + +msgid "Whiteboard" +msgstr "ក្ដារខៀន" + +msgid "No server statistics available" +msgstr "មិនមាន​ស្ថិតិ​ម៉ាស៊ីន​បម្រើ" + +#, c-format +msgid "Failure: Version mismatch, upgrade your client" +msgstr "បរាជ័យ ៖ កំណែ​មិនផ្គូផ្គង ធ្វើ​ឲ្យ​​ម៉ាស៊ីន​ភ្ញៀវ​របស់​អ្នក​ប្រសើរ​ឡើង" + +#, c-format +msgid "Failure: Remote does not trust/support your public key" +msgstr "បរាជ័យ ៖ ការ​តភ្ជាប់​ពី​ចម្ងាយ​មិន​ទុកចិត្ត/គាំទ្រ​សោ​សាធារណៈ​របស់​អ្នកទេ" + +#, c-format +msgid "Failure: Remote does not support proposed KE group" +msgstr "បរាជ័យ ៖ ការ​តភ្ជាប់​ពីចម្ងាយ​មិនគាំទ្រ​ក្រុម KE ដែល​បាន​ស្នើ​ទេ" + +#, c-format +msgid "Failure: Remote does not support proposed cipher" +msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ​ការ​សរសេរ​សម្ងាត់​ដែលបានស្នើទេ" + +#, c-format +msgid "Failure: Remote does not support proposed PKCS" +msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ​ PKCS ដែល​បាន​ស្នើ​ទេ" + +#, c-format +msgid "Failure: Remote does not support proposed hash function" +msgstr "បរាជ័យ ៖ ការតភ្ជាប់​ពីចម្ងាយ​មិន​គាំទ្រ​មុខងារ hash ដែល​បាន​ស្នើ​ទេ" + +#, c-format +msgid "Failure: Remote does not support proposed HMAC" +msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ HMAC ដែល​បានស្នើ​​ទេ" + +#, c-format +msgid "Failure: Incorrect signature" +msgstr "បរាជ័យ ៖ ហត្ថលេខា​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "Failure: Invalid cookie" +msgstr "បរាជ័យ ៖ ខូគី​មិន​ត្រឹមត្រូវ" + +#, c-format +msgid "Failure: Authentication failed" +msgstr "បរាជ័យ ៖ បានបរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ" + +msgid "Cannot initialize SILC Client connection" +msgstr "មិន​អាច​ចាប់ផ្ដើម​ការ​តភ្ជាប់ម៉ាស៊ីន​ភ្ញៀវ SILC បានទេ" + +msgid "John Noname" +msgstr "John Noname" + +#, c-format +msgid "Could not load SILC key pair: %s" +msgstr "មិនអាច​ផ្ទុក​គូសោ SILC ៖ %s" + +msgid "Could not write" +msgstr "មិនអាច​សរសេរ​បានទេ" + +msgid "Could not connect" +msgstr "មិនអាច​តភ្ជាប់" + +msgid "Unknown server response." +msgstr "មិនស្គាល់​ការ​ឆ្លើយតប​របស់ម៉ាស៊ីនបម្រើ" + +msgid "Could not create listen socket" +msgstr "មិនអាច​បង្កើត​រន្ធ​ស្ដាប់បានទេ" + +msgid "Could not resolve hostname" +msgstr "មិនអាច​ដោះស្រាយ​ឈ្មោះ​ម៉ាស៊ីនបានទេ" + +msgid "SIP usernames may not contain whitespaces or @ symbols" +msgstr "ឈ្មោះអ្នកប្រើ SIP អាច​មិនមាន​ចន្លោះ​មិនឃើញ ឬ​និមិត្តសញ្ញា @" + +msgid "SIP connect server not specified" +msgstr "SIP តភ្ជាប់​ម៉ាស៊ីន​បម្រើ​មិន​បានបញ្ជាក់ទេ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +msgid "SIP/SIMPLE Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SIP/SIMPLE" + +#. * summary +msgid "The SIP/SIMPLE Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SIP/SIMPLE" + +msgid "Publish status (note: everyone may watch you)" +msgstr "បោះពុម្ព​ស្ថានភាព (ចំណាំ ៖ អ្នករាល់គ្នា​អាច​មើលអ្នកបាន)" + +msgid "Use UDP" +msgstr "ប្រើ UDP" + +msgid "Use proxy" +msgstr "ប្រើ​ប្រូកស៊ី" + +msgid "Proxy" +msgstr "ប្រូកស៊ី" + +msgid "Auth User" +msgstr "ផ្ទៀងផ្ទាត់​អ្នកប្រើ" + +msgid "Auth Domain" +msgstr "ផ្ទៀងផ្ទាត់​ដែន" + +#, c-format +msgid "Looking up %s" +msgstr "រកមើល %s" + +#, c-format +msgid "Connect to %s failed" +msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់ %s" + +#, c-format +msgid "Signon: %s" +msgstr "ចូល ៖ %s" + +#, c-format +msgid "Unable to write file %s." +msgstr "មិនអាច​សរសេរ​ឯកសារ %s បាននោះទេ ។" + +#, c-format +msgid "Unable to read file %s." +msgstr "មិន​អាច​អាន​ឯកសារ %s បានទេ ។" + +#, c-format +msgid "Message too long, last %s bytes truncated." +msgstr "សារ​វែងពេក បានកាត់​ឲ្យ​ខ្លីចុងក្រោយ​ត្រឹម %s បៃ ។" + +#, c-format +msgid "%s not currently logged in." +msgstr "%s បច្ចុប្បន្នមិន​បានចូល​ទេ ។" + +#, c-format +msgid "Warning of %s not allowed." +msgstr "មិន​បានអនុញ្ញាត​ការ​ព្រមានរបស់ %s ទេ ។" + +#, c-format +msgid "A message has been dropped, you are exceeding the server speed limit." +msgstr "សារ​ត្រូវ​បានទម្លាក់ អ្នកបានលើស​ដែន​កំណត់ល្បឿន​របស់​ម៉ាស៊ីនបម្រើ ។" + +#, c-format +msgid "Chat in %s is not available." +msgstr "មិនមានការ​​ជជែក​នៅ​ក្នុង %s ទេ ។" + +#, c-format +msgid "You are sending messages too fast to %s." +msgstr "អ្នកកំពុង​ផ្ញើសារ​យ៉ាង​លឿន​ទៅ %s ។" + +#, c-format +msgid "You missed an IM from %s because it was too big." +msgstr "អ្នកបាត់ IM ពី %s ពីព្រោះ​វា​ធំពេក ។" + +#, c-format +msgid "You missed an IM from %s because it was sent too fast." +msgstr "អ្នកបានបាត់ IM ពី %s ពីព្រោះ​វា​លឿន​ពេក ។" + +#, c-format +msgid "Failure." +msgstr "បរាជ័យ ។" + +#, c-format +msgid "Too many matches." +msgstr "មានការ​ផ្គូផ្គង​ច្រើនពេក ។" + +#, c-format +msgid "Need more qualifiers." +msgstr "ត្រូវការ​ឧបករណ៍​បញ្ជាក់​បន្ថែមទៀត ។" + +#, c-format +msgid "Dir service temporarily unavailable." +msgstr "សេវា Dir មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។" + +#, c-format +msgid "Email lookup restricted." +msgstr "បានដាក់កម្ងិរ​ការ​រកមើល​អ៊ីមែល ។" + +#, c-format +msgid "Keyword ignored." +msgstr "បានមិនអើពើ​ពាក្យគន្លឹះ ។" + +#, c-format +msgid "No keywords." +msgstr "គ្មាន​ពាក្យ​គន្លឹះ ។" + +#, c-format +msgid "User has no directory information." +msgstr "អ្នកប្រើ​មិនមាន​​ព័ត៌មាន​ថត​ទៀតទេ ។" + +#, c-format +msgid "Country not supported." +msgstr "មិន​បានគាំទ្រ​ប្រទេស​ទេ ។" + +#, c-format +msgid "Failure unknown: %s." +msgstr "មិនស្គាល់​ភាព​បរាជ័យ ៖ %s ។" + +#, c-format +msgid "Incorrect username or password." +msgstr "ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ ។" + +#, c-format +msgid "The service is temporarily unavailable." +msgstr "សេវា​មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។" + +#, c-format +msgid "Your warning level is currently too high to log in." +msgstr "កម្រិត​ព្រមាន​របស់​អ្នកបច្ចុប្បន្ន​ខ្ពស់​ពេក​ត្រូវ​ចូល ។" + +#, c-format +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 "" +"អ្នក​បានតភ្ជាប់​ និង​ផ្ដាច់​ញឹកញាប់ពេក ។ រង់ចាំ​រយៈពេល​ ១០ នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិន​បើ​អ្នកបន្ត​" +"ព្យាយាម អ្នក​នឹង​ត្រូវ​រង់ចាំ​យូរ​ជាង​នេះ ។" + +#, c-format +msgid "An unknown signon error has occurred: %s." +msgstr "មិនស្គាល់​កំហុស​ក្នុងការ​ចូល​បានកើតឡើង ៖ %s ។" + +#, c-format +msgid "An unknown error, %d, has occurred. Info: %s" +msgstr "មិនស្គាល់​កំហុស %d ដែល​បានកើត​ឡើង ។ ព័ត៌មាន ៖ %s" + +msgid "Invalid Groupname" +msgstr "ឈ្មោះក្រុម​មិនត្រឹមត្រូវ" + +msgid "Connection Closed" +msgstr "បានបិទ​ការ​តភ្ជាប់" + +msgid "Waiting for reply..." +msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយតប..." + +msgid "TOC has come back from its pause. You may now send messages again." +msgstr "TOC បាន​ត្រឡប់​ពី​ការ​ផ្អាក​របស់​វា ។ ឥឡូវ​អ្នក​ផ្ញើសារ​ម្ដង​ទៀត ។" + +msgid "Password Change Successful" +msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​ដោយ​ជោគជ័យ" + +msgid "_Group:" +msgstr " ក្រុម ៖" + +msgid "Get Dir Info" +msgstr "យក​ព័ត៌មាន Dir" + +msgid "Set Dir Info" +msgstr "កំណត់​ព័ត៌មាន Dir" + +#, c-format +msgid "Could not open %s for writing!" +msgstr "មិន​អាច​បើក %s ដើម្បីសរសេរ​បានទេ !" + +msgid "File transfer failed; other side probably canceled." +msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទេរ​ឯកសារ ផ្នែកផ្សេង​ប្រហែលជា​បានបោះបង់​ហើយ " + +msgid "Could not connect for transfer." +msgstr "មិនអាច​តភ្ជាប់​ដើម្បី​ផ្ទេរ​បានទេ ។" + +msgid "Could not write file header. The file will not be transferred." +msgstr "មិនអាច​សរសេរ​បឋមកថា​ឯកសារ​បានទេ ។ ឯកសារ​នឹង​មិន​ត្រូវ​បានផ្ទេរ​ទេ ។" + +msgid "Save As..." +msgstr "រក្សាទុកជា..." + +#, c-format +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 ស្នើ %s ឲ្យ​ទទួលឯកសារ %d ៖ %s (%.2f %s)%s%s" + +#, c-format +msgid "%s requests you to send them a file" +msgstr "%s ស្នើ​អ្នក​ឲ្យ​ផ្ញើ​ឯកសារ​ឲ្យ​ពួកវា" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "TOC Protocol Plugin" +msgstr "កម្មវិធី​ពិធីការ TOC" + +#, c-format +msgid "%s has sent you a webcam invite, which is not yet supported." +msgstr "%s បានផ្ញើ​ការ​អញ្ជើញ​អ្នក​ឲ្យ​បើក​ម៉ាស៊ីន​ថត​តាមបណ្ដាញ ដែល​មិន​ត្រូវ​បាន​គាំទ្រ​នៅ​ឡើយទេ ។" + +msgid "Your Yahoo! message did not get sent." +msgstr "យ៉ាហ៊ូ​របស់​អ្នក ! សារ​មិន​ត្រូវ​បានផ្ញើ​ទេ ។" + +#, c-format +msgid "Yahoo! system message for %s:" +msgstr "យ៉ាហ៊ូ ! សារ​ប្រព័ន្ធ​សម្រាប់ %s ៖" + +#, c-format +msgid "" +"%s has (retroactively) denied your request to add them to your list for the " +"following reason: %s." +msgstr "" +"%s បាន (ប្រតិសកម្ម) បដិសេធ​សំណើ​របស់​អ្នក ដើម្បីបន្ថែមពួកគេ​ទៅ​ក្នុង​បញ្ជី​របស់អ្នក​​ដោយ​មាន​ហេតុផល​" +"ដូចខាងក្រោម ៖ %s ។" + +#, c-format +msgid "%s has (retroactively) denied your request to add them to your list." +msgstr "%s បាន​ (ប្រតិសកម្ម) បដិសេធ​សំណើ​របស់​អ្នក ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​បញ្ជី​របស់​អ្នក ។" + +msgid "Add buddy rejected" +msgstr "បន្ថែម​មិត្តភក្ដិ​ដែល​បាន​ច្រានចេញ" + +#, c-format +msgid "" +"The Yahoo server has requested the use of an unrecognized authentication " +"method. You will probably not be able to successfully sign on to Yahoo. " +"Check %s for updates." +msgstr "" +"ម៉ាស៊ីន​បម្រើ​យ៉ាហ៊ូ​បាន​ស្នើ​ឲ្យ​ប្រើ​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ដែល​មិន​ស្គាល់ ។ អ្នក​នឹង​ប្រហែលជា​មិនអាច​" +"ចូល​ក្នុងយ៉ាហ៊ូ​ដោយជោគជ័យ ។ ពិនិត្យ​មើល %s សម្រាប់​ភាព​ទាន់សម័យ ។" + +msgid "Failed Yahoo! Authentication" +msgstr "បាន​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹម​ត្រូវ​របស់​យ៉ាហ៊ូ !" + +#, c-format +msgid "" +"You have tried to ignore %s, but the user is on your buddy list. Clicking " +"\"Yes\" will remove and ignore the buddy." +msgstr "" +"អ្នកបាន​ព្យាយាម​មិនអើពើ %s ប៉ុន្តែ​អ្នកប្រើ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ ចុច \"បាទ/ចាស\" នឹង​យក​" +"ចេញ ហើយ​មិនអើពើ​មិត្តភក្ដិ ។" + +msgid "Ignore buddy?" +msgstr "មិនអើពើ​មិត្តភក្ដិ !" + +msgid "Your account is locked, please log in to the Yahoo! website." +msgstr "គណនី​របស់​អ្នកត្រូវ​បាន​ចាក់សោ សូំ​ចូល​ក្នុង​តំបន់បណ្ដាញ​របស់យ៉ាហ៊ូ !" + +#, c-format +msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." +msgstr "មិន​ស្គាល់លេខ​កំហុស %d ។ ចូល​ក្នុង​តំបន់យ៉ាហ៊ូ ! អាចជួសជុល​វា​បាន ។" + +#, c-format +msgid "Could not add buddy %s to group %s to the server list on account %s." +msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ %s ដើម្បីដាក់ %s ជា​ក្រុម​ទៅកាន់​បញ្ជីម៉ាស៊ីន​បម្រើ​នៅ​ក្នុងគណនី %s ។" + +msgid "Could not add buddy to server list" +msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ​ទៅ​កាន់បញ្ជី​ម៉ាស៊ីន​បម្រើ​ទេ" + +#, c-format +msgid "[ Audible %s/%s/%s.swf ] %s" +msgstr "[ Audible %s/%s/%s.swf ] %s" + +msgid "Received unexpected HTTP response from server." +msgstr "បាន​ទទួល​កា​រឆ្លើយ​តប HTTP ពី​ម៉ាស៊ីនបម្រើ ។" + +msgid "Connection problem" +msgstr "បញ្ហា​ក្នុង​ការ​តភ្ជាប់" + +#, c-format +msgid "" +"Lost connection with %s:\n" +"%s" +msgstr "" +"បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ %s ៖\n" +"%s" + +#, c-format +msgid "" +"Could not establish a connection with %s:\n" +"%s" +msgstr "" +"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ %s បានទេ ៖\n" +"%s" + +msgid "Not at Home" +msgstr "មិននៅ​ផ្ទះ​ទេ" + +msgid "Not at Desk" +msgstr "មិននៅ​តុ​ទេ" + +msgid "Not in Office" +msgstr "មិន​នៅ​ក្នុងការិយាល័យ​ទេ" + +msgid "On Vacation" +msgstr "បវេស្សនកាល" + +msgid "Stepped Out" +msgstr "ចេញ" + +msgid "Not on server list" +msgstr "មិន​នៅ​ក្នុង​បញ្ជី​ម៉ាស៊ីនបម្រើ​ទេ" + +msgid "Appear Online" +msgstr "បង្ហាញ​លើ​បណ្ដាញ" + +msgid "Appear Permanently Offline" +msgstr "បង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ​ជា​អចិន្ត្រៃយ៍" + +msgid "Presence" +msgstr "វត្តមាន" + +msgid "Appear Offline" +msgstr "បង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ" + +msgid "Don't Appear Permanently Offline" +msgstr "កុំបង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ​អចិន្ត្រៃយ៍" + +msgid "Join in Chat" +msgstr "ចូលរួម​ក្នុងកា​រជជែក" + +msgid "Initiate Conference" +msgstr "ចាប់ផ្ដើម​សន្និសីទ" + +msgid "Presence Settings" +msgstr "ការ​កំណត់​វត្តមាន" + +msgid "Start Doodling" +msgstr "ចាប់ផ្ដើម Doodling" + +msgid "Activate which ID?" +msgstr "ធ្វើ​ឲ្យ​សកម្ម​នូវ​លេខសម្គាល់​ណា​មួយ ?" + +msgid "Join whom in chat?" +msgstr "អ្នកណា​ចូលរួម​ក្នុងកា​រជជែក ?" + +msgid "Activate ID..." +msgstr "ធ្វើ​ឲ្យ​លេខសម្គាល់​សកម្ម..." + +msgid "Join User in Chat..." +msgstr "ចូលរួម​អ្នកប្រើ​នៅ​ក្នុង​ការ​ជជែក..." + +msgid "Open Inbox" +msgstr "បើក​ប្រអប់" + +msgid "join <room>: Join a chat room on the Yahoo network" +msgstr "ចូលរួម <room> ៖ ចូលរួម​បន្ទប់​ជជែក​នៅ​ក្នុង​បណ្ដាញ​យ៉ាហ៊ូ" + +msgid "list: List rooms on the Yahoo network" +msgstr "បញ្ជី ៖ រាយ​បន្ទប់​នៅ​ក្នុង​បណ្ដាញ​របស់​យ៉ាហ៊ូ" + +msgid "doodle: Request user to start a Doodle session" +msgstr "doodle ៖ ស្នើ​អ្នកប្រើ​ឲ្យ​ចាប់ផ្ដើម​សម័យ​របស់ Doodle" + +msgid "Yahoo ID..." +msgstr "លេខ​សម្គាល់​របស់​យ៉ាហ៊ូ..." + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "Yahoo Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់យ៉ាហ៊ូ" + +msgid "Yahoo Japan" +msgstr "យ៉ាហ៊ូ​ ជប៉ុន" + +msgid "Pager server" +msgstr "ម៉ាស៊ីនបម្រើ​ភេយ័រ" + +msgid "Japan Pager server" +msgstr "ម៉ាស៊ីន​បម្រើ​ភេយ័រ​ជប៉ុន" + +msgid "Pager port" +msgstr "ច្រក​ភេយ័រ" + +msgid "File transfer server" +msgstr "ម៉ាស៊ីនបម្រើ​ផ្ទេរ​ឯកសារ" + +msgid "Japan file transfer server" +msgstr "ម៉ាស៊ីនបម្រើ​ផ្ទេរ​ឯកសារ​ជប៉ុន" + +msgid "File transfer port" +msgstr "ច្រក​ផ្ទេរ​ឯកសារ" + +msgid "Chat room locale" +msgstr "បន្ទប់​ជជែក​មូលដ្ឋាន" + +msgid "Ignore conference and chatroom invitations" +msgstr "មិនអើពើ​សន្និសីទ និង​ការ​អញ្ជើញ​របស់​បន្ទប់​ជជែក" + +msgid "Chat room list URL" +msgstr "URL បញ្ជី​បន្ទប់​ជជែក" + +msgid "Yahoo Chat server" +msgstr "ម៉ាស៊ីនបម្រើ​ជជែក​យ៉ាហ៊ូ" + +msgid "Yahoo Chat port" +msgstr "ច្រក​ជជែក​យ៉ាហ៊ូ" + +#. Write a local message to this conversation showing that a request for a +#. * Doodle session has been made +#. +msgid "Sent Doodle request." +msgstr "បានផ្ញើ​សំណើ Doodle ។" + +msgid "Unable to establish file descriptor." +msgstr "មិនអាច​បង្កើត​​ឧបករណ៍​ពិពណ៌នា​ឯកសារ​បានទេ ។" + +#, c-format +msgid "%s is trying to send you a group of %d files.\n" +msgstr "%s កំពុង​ព្យាយាម​ផ្ញើ​ឲ្យ​អ្នក​នូវ​ក្រុម​ឯកសារ %d ។\n" + +msgid "Yahoo! Japan Profile" +msgstr "ទម្រង់​យ៉ាហ៊ូ ជប៉ុន" + +msgid "Yahoo! Profile" +msgstr "ទម្រង់ យ៉ាហ៊ូ !" + +msgid "" +"Sorry, profiles marked as containing adult content are not supported at this " +"time." +msgstr "សូម​អភ័យ​ទោស ទម្រង់​បាន​សម្គាល់ថា​មាន​មាតិកា​​មនុស្ស​ពេញវ័យ​មិន​ត្រូវ​បានគាំទ្រ​នៅ​ពេល​នេះ​ទេ ។" + +msgid "" +"If you wish to view this profile, you will need to visit this link in your " +"web browser:" +msgstr "ប្រសិន​បើ​អ្នក​ចង់​មើល​ជម្រង់​នេះ អ្នកត្រូវតែ​ទស្សនា​តំណ​នេះ​នៅ​ក្នុង​កម្មវិធី​រុករក​បណ្តាញ​របស់​អ្នក ៖" + +msgid "Yahoo! ID" +msgstr "លេខ​សម្គាល់​របស់​យ៉ាហ៊ូ !" + +msgid "Hobbies" +msgstr "ចំណូល​ចិត្ត" + +msgid "Latest News" +msgstr "ព័ត៌មាន​ចុងក្រោយ" + +msgid "Home Page" +msgstr "គេហទំព័រ" + +msgid "Cool Link 1" +msgstr "តំណ ១" + +msgid "Cool Link 2" +msgstr "តំណ ២" + +msgid "Cool Link 3" +msgstr "តំណ ៣" + +msgid "Last Update" +msgstr "ភាព​ទាន់សម័យ​ចុងក្រោយ" + +msgid "" +"This profile is in a language or format that is not supported at this time." +msgstr "ទម្រង់​នេះ​ស្ថិត​ក្នុង​ភាសា ឬ​ទ្រង់ទ្រាយ​ដែល​មិន​បាន​គាំទ្រ​នៅពេល​នេះ​ទេ ។" + +msgid "" +"Could not retrieve the user's profile. This most likely is a temporary " +"server-side problem. Please try again later." +msgstr "" +"មិនអាច​ទៅយក​ទម្រង់​របស់​អ្នកប្រើ​បានទេ ។ វា​ទំនង​ជា​បញ្ហា​ខាង​ម៉ាស៊ីនបម្រើជា​បណ្ដោះអាសន្ន ។ សូម​ព្យាយាម​" +"ម្ដង​ទៀត​ពេល​ក្រោយ ។" + +msgid "" +"Could not retrieve the user's profile. This most likely means that the user " +"does not exist; however, Yahoo! sometimes does fail to find a user's " +"profile. If you know that the user exists, please try again later." +msgstr "" +"មិនអាច​ទៅ យក​ទម្រង់​របស់​អ្នកប្រើបានទេ ។ វា​ទំនង​ជា​មាន​ន័យ​ថា ​មិនទាន់​មាន​អ្នកប្រើ​ទេ ទោះ​ជា​យ៉ាង​ណា​ក៏​" +"ដោយ យ៉ាហ៊ូ ពេលខ្លះ​បានអនុវត្ត​មិនជោគជ័យ​ដើម្បីរក​ទម្រង់​របស់​អ្នក​ប្រើ ។ ប្រសិនបើ​អ្នក​ដឹង​ថា​មាន​អ្នកប្រើហើយ " +"សូម​ព្យាយាម​ម្ដង​ទៀត​នៅ​ពេល​ក្រោយ ។" + +msgid "The user's profile is empty." +msgstr "ទម្រង់​របស់​អ្នកប្រើ​ទទេរ ។" + +#, c-format +msgid "%s declined your conference invitation to room \"%s\" because \"%s\"." +msgstr "%s បានបដិសេធ​ការ​អញ្ជើញ​សន្និសីទ​របស់​អ្នក​​ក្នុង​បន្ទប់ \"%s\" ដោយ​សារតែ \"%s\" ។" + +msgid "Invitation Rejected" +msgstr "បានបដិសេធ​ការ​អញ្ជើញ" + +msgid "Failed to join chat" +msgstr "បានបរាជ័យ​ក្នុងការ​ចូលរួម​ក្នុងការ​ជជែក" + +#. -6 +msgid "Unknown room" +msgstr "មិន​ស្គាល់​បន្ទប់" + +#. -15 +msgid "Maybe the room is full" +msgstr "ប្រហែល​ជា​បន្ទប់ពេញ​ហើយ" + +#. -35 +msgid "Not available" +msgstr "មិនមាន" + +msgid "" +"Unknown error. You may need to logout and wait five minutes before being " +"able to rejoin a chatroom" +msgstr "មិនស្គាល់​កំហុស ។ អ្នក​ត្រូវ​តែ​ចេញ ហើយ​រង់ចាំ​ប្រាំ​នាទី​ មុននឹង​អាច​ចូលរួម​ក្នុង​បន្ទប់​ជជែក​ម្ដង​ទៀត" + +#, c-format +msgid "You are now chatting in %s." +msgstr "ឥឡូវ​អ្នកកំពុង​ជជែក​​នៅ​ក្នុង %s ។" + +msgid "Failed to join buddy in chat" +msgstr "បានបរាជ័យ​ក្នុងកា​រ​បញ្ចូល​មិត្តភក្ដិ​ក្នុងកា​រជជែក" + +msgid "Maybe they're not in a chat?" +msgstr "ប្រហែល​ជា​មិនមាន​នៅ​ក្នុងការ​ជជែក​ទេ ?" + +msgid "Fetching the room list failed." +msgstr "បាន​បរាជ័យ​ក្នុងការ​​ទៅយក​បញ្ជី​បន្ទប់ ។" + +msgid "Voices" +msgstr "សំឡេង" + +msgid "Webcams" +msgstr "ម៉ាស៊ីន​ថត​តាមបណ្ដាញ" + +msgid "Unable to fetch room list." +msgstr "មិនអាច​ទៅ​យក​បញ្ជី​បន្ទប់​បានទេ ។" + +msgid "User Rooms" +msgstr "បន្ទប់​អ្នកប្រើ" + +msgid "Connection problem with the YCHT server." +msgstr "បញ្ហា​ក្នុងកា​រតភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ YCHT ។" + +#, c-format +msgid "" +"Lost connection with server\n" +"%s" +msgstr "" +"បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ\n" +"%s" + +msgid "" +"(There was an error converting this message.\t Check the 'Encoding' option " +"in the Account Editor)" +msgstr "(មានកំហុសក្នុងបម្លែង​សារ​នេះ ។ គូសធីក​ជម្រើស 'ការ​អ៊ិនកូដ' នៅ ក្នុង​កម្មវិធី​កែសម្រួល​គណនី)" + +#, c-format +msgid "Unable to send to chat %s,%s,%s" +msgstr "មិនអាច​ផ្ញើ​ទៅកាន់ការ​ជជែក %s,%s,%s បានទេ" + +msgid "Hidden or not logged-in" +msgstr "បានលាក់ ឬ​មិនបានចូល" + +#, c-format +msgid "
At %s since %s" +msgstr "
នៅ %s តាំង​ពី %s" + +msgid "Anyone" +msgstr "អ្នករាល់គ្នា" + +msgid "_Class:" +msgstr "ថ្នាក់" + +msgid "_Instance:" +msgstr "ធាតុ ៖" + +msgid "_Recipient:" +msgstr "អ្នក​ទទួល ៖" + +#, c-format +msgid "Attempt to subscribe to %s,%s,%s failed" +msgstr "បាន​បរាជ័យ​ក្នុងការ​​ប៉ុនប៉ង​ជាវ %s,%s,%s" + +msgid "zlocate <nick>: Locate user" +msgstr "zlocate <nick> ៖ កំណត់​ទីតាំង​អ្នកប្រើ" + +msgid "zl <nick>: Locate user" +msgstr "zl <nick> ៖ កំណត់​ទីតាំង​អ្នកប្រើ" + +msgid "instance <instance>: Set the instance to be used on this class" +msgstr "ធាតុ <instance> ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើ​នៅ​ក្នុង​ថ្នាក់​នេះ" + +msgid "inst <instance>: Set the instance to be used on this class" +msgstr "inst <instance> ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើ​នៅ​ក្នុង​ថ្នាក់​នេះ" + +msgid "topic <instance>: Set the instance to be used on this class" +msgstr "ប្រធានបទ <instance> ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើនៅ​ក្នុង​ថ្នាក់នេះ" + +msgid "sub <class> <instance> <recipient>: Join a new chat" +msgstr "" +"sub <class> <instance> <recipient> ៖ ចូលរួម​ក្នុងការ​ជជែក​ថ្មី" + +msgid "" +"zi <instance>: Send a message to <message,instance,*>" +msgstr "zi <instance> ; ផ្ញើសារ​ទៅ <សារធាតុ,*>" + +msgid "" +"zci <class> <instance>: Send a message to <class," +"instance,*>" +msgstr "" +"zci <class> <instance> ៖ ផ្ញើសារ​ទៅ <ថ្នាក់,ធាតុ," +"*>" + +msgid "" +"zcir <class> <instance> <recipient>: Send a message to <" +"class,instance,recipient>" +msgstr "" +"zcir <class> <instance> <recipient> ៖ ផ្ញើសារ​ទៅ <" +"ថ្នាក់,ធាតុ,អ្នក​ទទួល>" + +msgid "" +"zir <instance> <recipient>: Send a message to <MESSAGE," +"instance,recipient>" +msgstr "" +"zir <instance> <recipient> ៖ ផ្ញើសារ​ទៅ <MESSAGE,instance,recipient>" + +msgid "zc <class>: Send a message to <class,PERSONAL,*>" +msgstr "zc <class> ៖ ផ្ញើសារទៅកាន់ <class,PERSONAL,*>" + +msgid "Resubscribe" +msgstr "ជាវ​ឡើង​វិញ" + +msgid "Retrieve subscriptions from server" +msgstr "ទៅយក​ការជាវ​ពី​ម៉ាស៊ីនបម្រើ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +#. * summary +#. * description +msgid "Zephyr Protocol Plugin" +msgstr "កម្មវិធី​ជំនួយ​ពិធីការ Zephyr" + +msgid "Use tzc" +msgstr "ប្រើ tzc" + +msgid "tzc command" +msgstr "ពាក្យ​បញ្ជា tzc" + +msgid "Export to .anyone" +msgstr "នាំចេញ​ទៅ .anyone" + +msgid "Export to .zephyr.subs" +msgstr "នាំចេញ​ទៅ .zephyr.subs" + +msgid "Import from .anyone" +msgstr "នាំចូល​ពី .anyone" + +msgid "Import from .zephyr.subs" +msgstr "នាំចូល​ពី .zephyr.subs" + +msgid "Realm" +msgstr "Realm" + +msgid "Exposure" +msgstr "បង្ហាញ" + +#, c-format +msgid "" +"Unable to create socket:\n" +"%s" +msgstr "" +"មិនអាច​បង្កើត​រន្ធ ៖\n" +"%s" + +#, c-format +msgid "Unable to parse response from HTTP proxy: %s\n" +msgstr "មិនអាច​ញែក​ការ​ឆ្លើយតប​ពី​ប្រូកស៊ី HTTP ៖ %s\n" + +#, c-format +msgid "HTTP proxy connection error %d" +msgstr "កំហុសក្នុងការ​តភ្ជាប់ប្រូកស៊ី HTTP %d" + +#, c-format +msgid "Access denied: HTTP proxy server forbids port %d tunneling." +msgstr "បដិសេធ ៖ ម៉ាស៊ីនបម្រើប្រូកស៊ី HTTP ហាមឃាត់​ច្រក %d ។" + +#, c-format +msgid "Error resolving %s" +msgstr "កំហុស​ក្នុងការ​ដោះស្រាយ %s" + +msgid "Could not resolve host name" +msgstr "មិនអាច​ដោះស្រាយ​ឈ្មោះម៉ាស៊ីនបានទេ" + +#, c-format +msgid "Requesting %s's attention..." +msgstr "កំពុងស្នើ​កា​រចាប់អារម្មណ៍​​របស់ %s..." + +#, c-format +msgid "%s has requested your attention!" +msgstr "%s បាន​ស្នើ​កា​រចាប់អារម្មណ៍​អ្នកប្រើ !" + +#. * +#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons. +#. +msgid "_Yes" +msgstr "បាទ/ចាស" + +msgid "_No" +msgstr "ទេ" + +#. * +#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons. +#. +msgid "_Accept" +msgstr "យល់​​​ព្រម​" + +#. * +#. * The default message to use when the user becomes auto-away. +#. +msgid "I'm not here right now" +msgstr "ខ្ញុំ​មិននៅ​ទីនេះ​ទេ​ឥឡូវ" + +msgid "saved statuses" +msgstr "បានរក្សាទុ​ស្ថានភាព" + +#, c-format +msgid "%s is now known as %s.\n" +msgstr "%s ឥឡូវ​ត្រូវ​បាន​ស្គាល់​ជា %s ។\n" + +#, c-format +msgid "" +"%s has invited %s to the chat room %s:\n" +"%s" +msgstr "" +"%s បាន​អញ្ជើញ %s ឲ្យ​ចូលរួម​ក្នុង​បន្ទប់ %s ៖\n" +"%s" + +#, c-format +msgid "%s has invited %s to the chat room %s\n" +msgstr "%s បានអញ្ជើញ %s ឲ្យ​ចូលរួម​ក្នុង​បន្ទប់​ជជែក %s\n" + +msgid "Accept chat invitation?" +msgstr "ព្រម​ទទួល​ការអញ្ជើញ​នៃ​កា​រជជែក ?" + +#. Shortcut +msgid "Shortcut" +msgstr "ផ្លូវ​កាត់" + +msgid "The text-shortcut for the smiley" +msgstr "ផ្លូវកាត់​អត្ថបទ​សម្រាប់​សញ្ញា​អារម្មណ៍" + +#. Stored Image +msgid "Stored Image" +msgstr "រូបភាព​ដែល​បានទុក" + +msgid "Stored Image. (that'll have to do for now)" +msgstr "រូបភាព​ដែលបានទុក ។ (ដែល​ត្រូ​វធ្វើ​ឥឡូវ)" + +msgid "SSL Connection Failed" +msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ SSL" + +msgid "SSL Handshake Failed" +msgstr "បាន​បរាជ័យ​ក្នុងការ​ចាប់ដៃ SSL" + +msgid "SSL peer presented an invalid certificate" +msgstr "គូ SSL បាន​បង្ហាញ​​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ" + +msgid "Unknown SSL error" +msgstr "មិនស្គាល់​កំហុស SSL" + +msgid "Unset" +msgstr "មិន​បានកំណត់Unset" + +msgid "Do not disturb" +msgstr "កុំ​រំខាន" + +msgid "Extended away" +msgstr "បាន​ពង្រីក​ការ​ចាកឆ្ងាយ" + +msgid "Mobile" +msgstr "ចល័ត" + +msgid "Listening to music" +msgstr "ស្ដាប់​តន្ត្រី" + +#, c-format +msgid "%s (%s) changed status from %s to %s" +msgstr "%s (%s) បាន​ផ្លាស់ប្ដូរ​ស្ថានភាព​ពី %s ទៅ​ជា %s" + +#, c-format +msgid "%s (%s) is now %s" +msgstr "%s (%s) ឥឡូវ​គឺ %s" + +#, c-format +msgid "%s (%s) is no longer %s" +msgstr "%s (%s) មិនមានទៀតទេ %s" + +#, c-format +msgid "%s became idle" +msgstr "%s ក្លាយ​ជា​ទំនេរ" + +#, c-format +msgid "%s became unidle" +msgstr "%s ក្លាយ​ជា​មិនទំនេរ" + +#, c-format +msgid "+++ %s became idle" +msgstr "+++ %s ក្លាយជា​ទំនេរ" + +#, c-format +msgid "+++ %s became unidle" +msgstr "+++ %s ក្លាយ​ជា​មិន​ទំនេរ" + +#. +#. * This string determines how some dates are displayed. The default +#. * string "%x %X" shows the date then the time. Translators can +#. * change this to "%X %x" if they want the time to be shown first, +#. * followed by the date. +#. +#, c-format +msgid "%x %X" +msgstr "%x %X" + +#, c-format +msgid "Error Reading %s" +msgstr "កំហុស​ក្នុងការ​អាន %s" + +#, c-format +msgid "" +"An error was encountered reading your %s. They have not been loaded, and " +"the old file has been renamed to %s~." +msgstr "" +"មាន​កំហុស​ក្នុងការ​អាន​ %s របស់​​អ្នក ។ ពួកវា​មិន​ត្រូវ​បានផ្ទុក​ទេ ហើយ​ឯកសារ​ចាស់​ត្រូវ​បាន​ប្ដូរ​ឈ្មោះ​ទៅជា %" +"s~." + +msgid "Calculating..." +msgstr "កំពុង​គណនា..." + +msgid "Unknown." +msgstr "មិន​ស្គាល់ ។" + +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d វិនាទី" + +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d ថ្ងៃ" + +#, c-format +msgid "%s, %d hour" +msgid_plural "%s, %d hours" +msgstr[0] "%s, %d ម៉ោង" + +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ម៉ោង" + +#, c-format +msgid "%s, %d minute" +msgid_plural "%s, %d minutes" +msgstr[0] "%s, %d នាទី" + +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d នាទី" + +#, c-format +msgid "Could not open %s: Redirected too many times" +msgstr "មិន​អាច​បើក %s ៖ បានបញ្ជូនច្រើនដង​ពេក" + +#, c-format +msgid "Unable to connect to %s" +msgstr "មិនអាច​តភ្ជាប់​ទៅ %s" + +#, c-format +msgid "Error reading from %s: response too long (%d bytes limit)" +msgstr "កំហុស​ក្នុងកា​រអាន​ពី %s ៖ កា​រឆ្លើយតប​វែងពេក (ដែន​កំណត់ %d បៃ)" + +#, c-format +msgid "" +"Unable to allocate enough memory to hold the contents from %s. The web " +"server may be trying something malicious." +msgstr "" +"មិនអាច​បម្រុង​ទុក​សតិ​គ្រប់គ្រាន់​ដើម្បី​ផ្ទុកមាតិកា​ពី %s បានទេ ។ ម៉ាស៊ីនបម្រើបណ្ដាញ​ប្រហែលជា​​ព្យាយាម​អ្វី​ដែល​​" +"មិនល្អ ។" + +#, c-format +msgid "Error reading from %s: %s" +msgstr "កំហុស​ក្នុងការ​អាន​ពី %s: %s" + +#, c-format +msgid "Error writing to %s: %s" +msgstr "កំហុស​ក្នុងការ​សរសេរ​ទៅ​កាន់ %s: %s" + +#, c-format +msgid "Unable to connect to %s: %s" +msgstr "មិនអាច​តភ្ជាប់​ទៅកាន់ %s: %s" + +#, c-format +msgid " - %s" +msgstr " - %s" + +#, c-format +msgid " (%s)" +msgstr " (%s)" + +#. 10053 +#, c-format +msgid "Connection interrupted by other software on your computer." +msgstr "ការ​តភ្ជាប់​បានផ្អាក​ដោយ​កម្មវិធី​ផ្សេង​នៅ​ក្នុង​កុំព្យូទ័រ​របស់ ។" + +#. 10054 +#, c-format +msgid "Remote host closed connection." +msgstr "ការ​តភ្ជាប់​បានបិទ​ពី​ម៉ាស៊ីន​ពី​ចម្ងាយ ។" + +#. 10060 +#, c-format +msgid "Connection timed out." +msgstr "អស់ពេល​តភ្ជាប់ ។" + +#. 10061 +#, c-format +msgid "Connection refused." +msgstr "បានបដិសេធ​កា​រតភ្ជាប់ ។" + +#. 10048 +#, c-format +msgid "Address already in use." +msgstr "អាសយដ្ឋាន​កំពុង​ប្រើ​ហើយ ។" + +msgid "Internet Messenger" +msgstr "កម្មវិធី​ផ្ញើសារ​អ៊ីនធឺណិត" + +msgid "Pidgin Internet Messenger" +msgstr "កម្មវិធី​ផ្ញើសារ​អ៊ីនធឺណិត​របស់ Pidgin" + +msgid "Send instant messages over multiple protocols" +msgstr "ផ្ញើសារ​បន្ទាន់​តាម​ពិធីការ​ជា​ច្រើន" + +msgid "Orientation" +msgstr "ទិស" + +msgid "The orientation of the tray." +msgstr "ទិស​របស់​ថាស ។" + +#. Build the login options frame. +msgid "Login Options" +msgstr "ជម្រើស​​ចូល" + +msgid "Pro_tocol:" +msgstr "ពិធីការ ៖" + +msgid "_Username:" +msgstr "ឈ្មោះ​អ្នក​ប្រើ ៖" + +msgid "Remember pass_word" +msgstr "ចងចាំ​ពាក្យ​សម្ងាត់" + +#. Build the user options frame. +msgid "User Options" +msgstr "ជម្រើស​អ្នកប្រើ" + +msgid "_Local alias:" +msgstr "ឈ្មោះក្លែងក្លាយ​មូលដ្ឋាន ៖" + +msgid "New _mail notifications" +msgstr "ការ​ជូនដំណឹង​សំបុត្រ​ថ្មី" + +#. Buddy icon +msgid "Use this buddy _icon for this account:" +msgstr "ប្រើ​រូបតំណាង​មិត្តភក្ដិ​នេះ​សម្រាប់គណនី​នេះ ៖" + +#. Build the protocol options frame. +#, c-format +msgid "%s Options" +msgstr "ជម្រើស %s" + +msgid "Use GNOME Proxy Settings" +msgstr "ប្រើ​ការ​កំណត់​ប្រូកស៊ី​របស់ GNOME" + +msgid "Use Global Proxy Settings" +msgstr "ប្រើ​ការ​កំណត់​ប្រូកស៊ី​សកល" + +msgid "No Proxy" +msgstr "គ្មានប្រូកស៊ី" + +msgid "HTTP" +msgstr "HTTP" + +msgid "SOCKS 4" +msgstr "SOCKS 4" + +msgid "SOCKS 5" +msgstr "SOCKS 5" + +msgid "Use Environmental Settings" +msgstr "ការ​កំណត់​បរិស្ថាន​អ្នក​ប្រើ" + +#. This is an easter egg. +#. It means one of two things, both intended as humourus: +#. A) your network is really slow and you have nothing better to do than +#. look at butterflies. +#. B)You are looking really closely at something that shouldn't matter. +msgid "If you look real closely" +msgstr "ប្រសិនបើ​អ្នក​មើល​ទៅ​ពិតជា​ជិត​ណាស់" + +#. This is an easter egg. See the comment on the previous line in the source. +msgid "you can see the butterflies mating" +msgstr "អ្នកអាច​មើល​ butterflies mating" + +msgid "Proxy Options" +msgstr "ជម្រើសប្រូកស៊ី" + +msgid "Proxy _type:" +msgstr "ប្រភេទ​ប្រូកស៊ី ៖" + +msgid "_Host:" +msgstr "ម៉ាស៊ីន ៖" + +msgid "_Port:" +msgstr "ច្រក ៖" + +msgid "Pa_ssword:" +msgstr "ពាក្យ​សម្ងាត់ ៖" + +msgid "Unable to save new account" +msgstr "មិនអាច​រក្សាទុក​គណនី​ថ្មី​បានទេ" + +msgid "An account already exists with the specified criteria." +msgstr "មានគណនី​រួច​ហើយ​ជា​មួយនឹង​លក្ខខណ្ឌ​ដែល​បាន​បញ្ជាក់ ។" + +msgid "Add Account" +msgstr "បន្ថែម​គណនី" + +msgid "_Basic" +msgstr "មូលដ្ឋាន" + +msgid "Create _this new account on the server" +msgstr "បង្កើត​គណនី​ថ្មី​នៅ​លើ​ម៉ាស៊ីនបម្រើ" + +msgid "_Advanced" +msgstr "កម្រិត​ខ្ពស់" + +msgid "Enabled" +msgstr "បានបើក" + +msgid "Protocol" +msgstr "ពិធីការ" + +#, c-format +msgid "" +"Welcome to %s!\n" +"\n" +"You have no IM accounts configured. To start connecting with %s press the " +"Add... button below and configure your first account. If you want %s " +"to connect to multiple IM accounts, press Add... again to configure " +"them all.\n" +"\n" +"You can come back to this window to add, edit, or remove accounts from " +"Accounts->Manage Accounts in the Buddy List window" +msgstr "" +"សូម​ស្វាគមន៍​មកកាន់ %s!\n" +"\n" +"អ្នក​មិនមាន​គណនី IM បានកំណត់​រចនាសម្ព័ន្ធ​ទេ ។ ដើម្បីចាប់ផ្ដើម​ការ​តភ្ជាប់​ជា​មួយ​ %s ចុចប៊ូតុង " +"បន្ថែម... ខាង​ក្រោម​ និង​កំណត់​រចនាសម្ព័ន្ធ​គណនី​ដំបូង​របស់​អ្នក ។ ប្រសិនបើ​អ្នក​ចង់​ឲ្យ %s តភ្ជាប់​ទៅ​" +"គណនី IM ជា​ច្រើន ចុច​ បន្ថែម... ដើម្បី​កំណត់​រចនាសម្ព័ន្ធ​ពួកវា​ទាំង​អស់ ។\n" +"\n" +"You can come back to this window to add, edit, or remove accounts from " +"Accounts->Manage Accounts in the Buddy List window" + +#, c-format +msgid "You have %d contact named %s. Would you like to merge them?" +msgid_plural "" +"You currently have %d contacts named %s. Would you like to merge them?" +msgstr[0] "អ្នកបច្ចុប្បន្ន​មាន​ទំនាក់ទំនង %d ដែល​មាន​ឈ្មោះ %s ។ តើ​អ្នកចង់​បញ្ចូល​ពួកវា​ដែរឬទេ ?" + +msgid "" +"Merging these contacts will cause them to share a single entry on the buddy " +"list and use a single conversation window. You can separate them again by " +"choosing 'Expand' from the contact's context menu" +msgstr "" +"បញ្ចូល​ទំនាក់ទំនង​ទាំង​នេះ​នឹង​បណ្ដាល​ឲ្យ​ពួកវា​ចែករំលែក​ធាតុតែ​មួយ​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ ហើយ​ប្រើ​បង្អួច​សន្ទនា​តែ​" +"មួយ ។ អ្នកអាច​បំបែក​ពួកវា​ម្ដង​ទៀត ដោយ​ជ្រើស 'ពង្រីក' ពី​ម៉ឺនុយ​បរិបទ​របស់ទំនាក់ទំនង" + +msgid "Please update the necessary fields." +msgstr "សូម​ធ្វើ​ឲ្យ​វាល​ដែល​ចាំបាច់ទាន់សម័យ ។" + +msgid "Room _List" +msgstr "បញ្ជី​បន្ទប់" + +msgid "" +"Please enter the appropriate information about the chat you would like to " +"join.\n" +msgstr "សូម​បញ្ចូល​ព័ត៌មាន​ដេល​សមរម្យ​អំពីការជជែក​ដែល​នឹង​ចូលរួម ។\n" + +msgid "_Account:" +msgstr "គណនី ៖" + +msgid "_Block" +msgstr "ទប់ស្កាត់" + +msgid "Un_block" +msgstr "មិន​ទប់ស្កាត់" + +msgid "Move to" +msgstr "ផ្លាស់ទី​ទៅ" + +msgid "Get _Info" +msgstr "យក​ព័ត៌មាន" + +msgid "I_M" +msgstr "IM" + +msgid "_Send File..." +msgstr "ផ្ញើ​ឯកសារ..." + +msgid "Add Buddy _Pounce..." +msgstr "បន្ថែម​ក្រុម​មិត្តភក្ដិ..." + +msgid "View _Log" +msgstr "កំណត់​ហេតុ​មើល" + +msgid "Hide when offline" +msgstr "លាក់​នៅពេល​នៅ​ក្រៅបណ្ដាញ" + +msgid "_Alias..." +msgstr "ឈ្មោះ​ក្លែងក្លាយ..." + +msgid "_Remove" +msgstr "យក​ចេញ" + +msgid "Set Custom Icon" +msgstr "កំណត់​រូបតំណាង​ផ្ទាល់ខ្លួន" + +msgid "Remove Custom Icon" +msgstr "យក​រូបតំណាង​ផ្ទាល់ខ្លួន​ចេញ" + +msgid "Add _Buddy..." +msgstr "បន្ថែម​មិត្តភក្ដិ..." + +msgid "Add C_hat..." +msgstr "បន្ថែមការ​ជជែក..." + +msgid "_Delete Group" +msgstr "លុបក្រុម" + +msgid "_Rename" +msgstr "ប្តូរ​​ឈ្មោះ​" + +#. join button +msgid "_Join" +msgstr "ចូលរួម" + +msgid "Auto-Join" +msgstr "ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Persistent" +msgstr "មិនព្រម" + +msgid "_Edit Settings..." +msgstr "កែសម្រួល​ការ​កំណត់..." + +msgid "_Collapse" +msgstr "វេញ" + +msgid "_Expand" +msgstr "ពង្រីក" + +msgid "/Tools/Mute Sounds" +msgstr "/ឧបករណ៍/ស្ងាត់" + +msgid "" +"You are not currently signed on with an account that can add that buddy." +msgstr "អ្នកបច្ចុប្បន្នមិន​ត្រូវ​បានចូល​ដោយ​ប្រើ​គណនី​ដែលអាច​បន្ថែម​មិត្តភក្ដិ​នោះ​ទេ ។" + +#. I don't believe this can happen currently, I think +#. * everything that calls this function checks for one of the +#. * above node types first. +msgid "Unknown node type" +msgstr "មិនស្គាល់ប្រភេទ​ថ្នាំង" + +#. Buddies menu +msgid "/_Buddies" +msgstr "/មិត្តភក្ដិ" + +msgid "/Buddies/New Instant _Message..." +msgstr "/មិត្តភក្ដិ/សារ​បន្ទាន់​ថ្មី..." + +msgid "/Buddies/Join a _Chat..." +msgstr "/មិត្តភក្ដិ/ចូលរួម​ក្នុងកា​រជជែក..." + +msgid "/Buddies/Get User _Info..." +msgstr "/មិត្តភក្ដិ/យក​ព័ត៌មាន​អ្នកប្រើ..." + +msgid "/Buddies/View User _Log..." +msgstr "/មិត្តភក្ដិ/មើល​កំណត់​ហេតុ​អ្នក​ប្រើ..." + +msgid "/Buddies/Sh_ow" +msgstr "/មិត្តភក្ដិ/បង្ហាញ" + +msgid "/Buddies/Show/_Offline Buddies" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/មិត្តភក្ដិក្រៅ​បណ្ដាញ" + +msgid "/Buddies/Show/_Empty Groups" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/ក្រុម​ទទេ" + +msgid "/Buddies/Show/Buddy _Details" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/សេចក្ដី​លម្អិត​មិត្តភក្ដិ" + +msgid "/Buddies/Show/Idle _Times" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/ពេលវេលា​ទំនេរ" + +msgid "/Buddies/Show/_Protocol Icons" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/រូបតំណាង​ពិធីការ" + +msgid "/Buddies/_Sort Buddies" +msgstr "/មិត្តភក្ដិ/តម្រៀប​មិត្តភក្ដិ" + +msgid "/Buddies/_Add Buddy..." +msgstr "/មិត្តភក្ដិ/បន្ថែម​មិត្តភក្ដិ..." + +msgid "/Buddies/Add C_hat..." +msgstr "/មិត្តភក្ដិ/បន្ថែម​ការ​ជជែក..." + +msgid "/Buddies/Add _Group..." +msgstr "/មិត្តភក្ដិ/បន្ថែម​ក្រុម..." + +msgid "/Buddies/_Quit" +msgstr "/មិត្តភក្ដិ/ចេញ" + +#. Accounts menu +msgid "/_Accounts" +msgstr "/គណនី" + +msgid "/Accounts/Manage Accounts" +msgstr "/គណនី/គ្រប់គ្រង​គណនី" + +#. Tools +msgid "/_Tools" +msgstr "/ឧបករណ៍" + +msgid "/Tools/Buddy _Pounces" +msgstr "/ឧបករណ៍/ក្រុមមិត្តភក្ដិ" + +msgid "/Tools/_Certificates" +msgstr "/ឧបករណ៍/វិញ្ញាបនបត្រ" + +msgid "/Tools/Plu_gins" +msgstr "/ឧបករណ៍/កម្មវិធី​ជំនួយ" + +msgid "/Tools/Pr_eferences" +msgstr "/ឧបករណ៍/ចំណូល​ចិត្ត" + +msgid "/Tools/Pr_ivacy" +msgstr "/ឧបករណ៍/ភាព​ឯកជន" + +msgid "/Tools/Smile_y" +msgstr "/ឧបករណ៍/សញ្ញាណ​អារម្មណ៍" + +msgid "/Tools/_File Transfers" +msgstr "/ឧបករណ៍/ការ​ផ្ទេរ​ឯកសារ" + +msgid "/Tools/R_oom List" +msgstr "/ឧបករណ៍/បញ្ជី​បន្ទប់" + +msgid "/Tools/System _Log" +msgstr "/ឧបករណ៍/កំណត់ហេតុ​ប្រព័ន្ធ" + +msgid "/Tools/Mute _Sounds" +msgstr "/ឧបករណ៍/ស្ងាត់" + +#. Help +msgid "/_Help" +msgstr "/ជំនួយ" + +msgid "/Help/Online _Help" +msgstr "/ជំនួយ/ជំនួយ​លើ​បណ្ដាញ" + +msgid "/Help/_Debug Window" +msgstr "/ជំនួយ/បង្អួច​បំបាត់​កំហុស" + +msgid "/Help/_About" +msgstr "/ជំនួយ/អំពី" + +#, c-format +msgid "Account: %s" +msgstr "គណនី ៖ %s" + +#, c-format +msgid "" +"\n" +"Occupants: %d" +msgstr "" +"\n" +"មុខរបរ ៖ %d" + +#, c-format +msgid "" +"\n" +"Topic: %s" +msgstr "" +"\n" +"ប្រធានបទ ៖ %s" + +msgid "(no topic set)" +msgstr "(គ្មានប្រធានបទ​បានកំណត់​ទេ)" + +msgid "Buddy Alias" +msgstr "ឈ្មោះ​ក្លែង​ក្លាយ​មិត្តភក្ដិ" + +msgid "Logged In" +msgstr "បាន​ចូល" + +msgid "Last Seen" +msgstr "បានឃើញ​ចុងក្រោយ" + +msgid "Spooky" +msgstr "ធ្វើ​ឲ្យ​ឈឺ" + +msgid "Awesome" +msgstr "ខ្លាច" + +msgid "Rockin'" +msgstr "Rockin'" + +msgid "Total Buddies" +msgstr "មិត្តភក្ដិ​សរុប" + +#, c-format +msgid "Idle %dd %dh %02dm" +msgstr "ទំនេរ %dd %dh %02dm" + +#, c-format +msgid "Idle %dh %02dm" +msgstr "ទំនេរ %dh %02dm" + +#, c-format +msgid "Idle %dm" +msgstr "ទំនេរ %dm" + +msgid "/Buddies/New Instant Message..." +msgstr "/មិត្តភក្ដិ/សារ​បន្ទាន់​ថ្មី..." + +msgid "/Buddies/Join a Chat..." +msgstr "/មិត្តភក្ដិ/ចូលរួម​ក្នុងកា​រជជែក..." + +msgid "/Buddies/Get User Info..." +msgstr "/មិត្តភក្ដិ/យក​ព័ត៌មាន​អ្នកប្រើ..." + +msgid "/Buddies/Add Buddy..." +msgstr "/មិត្តភក្ដិ/បន្ថែម​មិត្តភក្ដិ..." + +msgid "/Buddies/Add Chat..." +msgstr "/មិត្តភក្ដិ/បន្ថែម​ការ​ជជែក..." + +msgid "/Buddies/Add Group..." +msgstr "/មិត្តភក្ដិ/បន្ថែម​ក្រុម..." + +msgid "/Tools/Privacy" +msgstr "/ឧបករណ៍/ភាព​ឯកជន" + +msgid "/Tools/Room List" +msgstr "/ឧបករណ៍/បញ្ជី​បន្ទប់" + +#, c-format +msgid "%d unread message from %s\n" +msgid_plural "%d unread messages from %s\n" +msgstr[0] "សារ​មិនអាន %d ពី %s\n" + +msgid "Manually" +msgstr "ដោយដៃ" + +msgid "By status" +msgstr "តាម​ស្ថានភាព" + +msgid "By log size" +msgstr "តាម​ទំហំ​កំណត់ហេតុ" + +#, c-format +msgid "%s disconnected" +msgstr "បាន​ផ្ដាច់ %s" + +#, c-format +msgid "%s disabled" +msgstr "បានបិទ %s" + +msgid "Reconnect" +msgstr "តភ្ជាប់​ឡើង​វិញ" + +msgid "Re-enable" +msgstr "បើក​ឡើង​វិញ" + +msgid "Welcome back!" +msgstr "សូម​ស្វាគមន៍ការ​​ត្រឡប់​មក​វិញ !" + +#, c-format +msgid "%d account was disabled because you signed on from another location:" +msgid_plural "" +"%d accounts were disabled because you signed on from another location:" +msgstr[0] "គណនី %d ត្រូវ​បាន​បិទ​ ពីព្រោះ​អ្នក​បានចូល​ពី​ទីតាំង​ផ្សេរ ៖" + +msgid "Username:" +msgstr " ឈ្មោះ​អ្នក​ប្រើ ៖" + +msgid "Password:" +msgstr "ពាក្យ​សម្ងាត់ ៖" + +msgid "_Login" +msgstr "ចូល" + +msgid "/Accounts" +msgstr "/គណនី" + +#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy +#, c-format +msgid "" +"Welcome to %s!\n" +"\n" +"You have no accounts enabled. Enable your IM accounts from the Accounts window at Accounts->Manage Accounts. Once you enable accounts, " +"you'll be able to sign on, set your status, and talk to your friends." +msgstr "" +"សូម​ស្វាគមន៍​មក​កាន់ %s !\n" +"\n" +"អ្នក​​គ្មាន​គណនី​បាន​បើក​ទេ ។ បើកគណនី IM របស់​អ្នកពី​បង្អួច គណនី នៅ គណនី->គ្រប់គ្រង​គណនី ។ នៅពេល​អ្នកបើក​គណនី អ្នក​នឹង​អាច​ចូល កំណត់​ស្ថានភាព​របស់​អ្នក ហើយ​និយាយាជា​មួយមិត្តភក្ដិ ។" + +#. set the Show Offline Buddies option. must be done +#. * after the treeview or faceprint gets mad. -Robot101 +#. +msgid "/Buddies/Show/Offline Buddies" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/មិត្តភក្ដិ​ក្រៅ​បណ្ដាញ" + +msgid "/Buddies/Show/Empty Groups" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/ក្រុម​ទទេ" + +msgid "/Buddies/Show/Buddy Details" +msgstr "/មិត្តភក្ដិ/បង្ហាញ​/សេចក្ដី​លម្អិត​របស់មិត្តភក្ដិ" + +msgid "/Buddies/Show/Idle Times" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/ពេលវេលា​ទំនេរ" + +msgid "/Buddies/Show/Protocol Icons" +msgstr "/មិត្តភក្ដិ/បង្ហាញ/រូបតំណាង​ពិធីការ" + +msgid "Add a buddy.\n" +msgstr "បន្ថែម​មិត្តភក្ដិ ។\n" + +msgid "Buddy's _username:" +msgstr "ឈ្មោះ​អ្នក​ប្រើ​របស់​មិត្តភក្ដិ ៖" + +msgid "(Optional) A_lias:" +msgstr "ឈ្មោះ​ក្លែងក្លាយ (ជម្រើស) ៖" + +msgid "Add buddy to _group:" +msgstr "បន្ថែម​មិត្តភក្ដិ​ទៅ​ក្រុម ៖ " + +msgid "This protocol does not support chat rooms." +msgstr "ពិធីការ​នេះ​មិន​គាំទ្រ​បន្ទប់​ជជែក​នេះ​ទេ ។" + +msgid "" +"You are not currently signed on with any protocols that have the ability to " +"chat." +msgstr "អ្នក​បច្ចុប្បន្ន​មិន​បានចូល​ជា​មួយ​ពិធីការ​​ណាមួយ​ដែល​មាន​លទ្ធភាព​ជជែក ។" + +msgid "" +"Please enter an alias, and the appropriate information about the chat you " +"would like to add to your buddy list.\n" +msgstr "" +"សូម​បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ និង​ព័ត៌មាន​ដែល​សមរម្យ​អំពី​ការជជែក ដែល​អ្នកចង់​បន្ថែម​ទៅបញ្ជីមិត្តភក្ដិ​របស់​អ្នក " +"។\n" + +msgid "A_lias:" +msgstr "ឈ្មោះ​ក្លែងក្លាយ ៖" + +msgid "Auto_join when account becomes online." +msgstr "ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​ នៅពេល​គណនី​ក្លាយ​ជា​នៅ​លើ​បណ្ដាញ ។" + +msgid "_Remain in chat after window is closed." +msgstr "នៅ​ក្នុង​ការជជែក​បន្ទាប់​ពី​បង្អួច​ត្រូវ​បានបិទ ។" + +msgid "Please enter the name of the group to be added." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស​ក្រុម​ដែល​ត្រូ​វ​បន្ថែម ។" + +msgid "Enable Account" +msgstr "បើក​គណនី" + +msgid "/Accounts/Enable Account" +msgstr "/គណនី/បើក​គណនី" + +msgid "/Accounts/" +msgstr "/គណនី/" + +msgid "_Edit Account" +msgstr "កែសម្រួល​គណនី" + +msgid "No actions available" +msgstr "គ្មាន​សកម្មភាព" + +msgid "_Disable" +msgstr "បិទ" + +msgid "/Tools" +msgstr "/ឧបករណ៍" + +msgid "/Buddies/Sort Buddies" +msgstr "/មិត្តភក្ដិ/តម្រៀប​មិត្តភក្ដិ" + +#. Widget creation function +msgid "SSL Servers" +msgstr "ម៉ាស៊ីនបម្រើស SSL" + +msgid "Unknown command." +msgstr "មិនស្គាល់​ពាក្យ​បញ្ជា ។" + +msgid "That buddy is not on the same protocol as this chat." +msgstr "មិត្តភក្ដិនេះ​មិន​នៅ​លើ​ពិធីការ​ដដែល​ដូច​ម៉ាស៊ីន​ភ្ញៀវ​នេះ​ទេ ។" + +msgid "" +"You are not currently signed on with an account that can invite that buddy." +msgstr "អ្នកបច្ចុប្បន្នមិនបាន​ចូល​ដោយ​ប្រើ​គណនី​ ដែល​អាចអញ្ជើញ​មិត្តភក្ដិ​នោះ​ទេ ។" + +msgid "Invite Buddy Into Chat Room" +msgstr "អញ្ជើញ​មិត្តភក្ដិ​ទៅ​ក្នុង​បន្ទប់​ជជែក" + +#. Put our happy label in it. +msgid "" +"Please enter the name of the user you wish to invite, along with an optional " +"invite message." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស់​អ្នកប្រើ​ដែល​អ្នក​ចង់​អញ្ជើញ រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។" + +msgid "_Buddy:" +msgstr "មិត្តភក្ដិ ៖" + +msgid "_Message:" +msgstr "សារ ៖" + +#, c-format +msgid "

Conversation with %s

\n" +msgstr "

សន្ទនា​ជា​មួយ %s

\n" + +msgid "Save Conversation" +msgstr "រក្សា​​ទុក​​​ការ​សន្ទនា" + +msgid "Find" +msgstr "រក" + +msgid "_Search for:" +msgstr "ស្វែងរក ៖" + +msgid "Un-Ignore" +msgstr "​អើពើ" + +msgid "Ignore" +msgstr "មិន​អើពើ" + +msgid "Get Away Message" +msgstr "យក​សារ​ចាកឆ្ងាយ" + +msgid "Last said" +msgstr "បាន​និយាយ​ចុង​ក្រោយ" + +msgid "Unable to save icon file to disk." +msgstr "មិនអាច​រក្សាទុក​ឯកសារ​​រូបតំណាង​ទៅ​ថាស​បានទេ ។" + +msgid "Save Icon" +msgstr "រក្សា​​ទុក​​​រូបតំណាង" + +msgid "Animate" +msgstr "ចលនា" + +msgid "Hide Icon" +msgstr "លាក់​​រូបតំណាង" + +msgid "Save Icon As..." +msgstr "រក្សា​​ទុក​​​រូបតំណាង​ជា..." + +msgid "Set Custom Icon..." +msgstr "កំណត់​រូបតំណាង​ផ្ទាល់ខ្លួន..." + +msgid "Change Size" +msgstr "ផ្លាស់ប្ដូរ​ទំហំ" + +msgid "Show All" +msgstr "បង្ហាញ​ទាំងអស់" + +#. Conversation menu +msgid "/_Conversation" +msgstr "/សន្ទនា" + +msgid "/Conversation/New Instant _Message..." +msgstr "/សន្ទនា/សារ​បន្ទាន់​ថ្មី..." + +msgid "/Conversation/_Find..." +msgstr "/សន្ទនា/រក..." + +msgid "/Conversation/View _Log" +msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ" + +msgid "/Conversation/_Save As..." +msgstr "/សន្ទនា/រក្សាទុកជា..." + +msgid "/Conversation/Clea_r Scrollback" +msgstr "/សន្ទនា/ជំម្រះ" + +msgid "/Conversation/Se_nd File..." +msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..." + +msgid "/Conversation/Add Buddy _Pounce..." +msgstr "/សន្ទនា/បន្ថែម​ក្រុម​មិត្តភក្ដិ..." + +msgid "/Conversation/_Get Info" +msgstr "/សន្ទនា/យក​ព័ត៌មាន" + +msgid "/Conversation/In_vite..." +msgstr "/សន្ទនា/អញ្ជើញ..." + +msgid "/Conversation/M_ore" +msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត" + +msgid "/Conversation/Al_ias..." +msgstr "/សន្ទនា/ឈ្មោះ​ក្លែងក្លាយ..." + +msgid "/Conversation/_Block..." +msgstr "/សន្ទនា/ទប់ស្កាត់..." + +msgid "/Conversation/_Unblock..." +msgstr "/សន្ទនា/មិនទប់ស្កាត់..." + +msgid "/Conversation/_Add..." +msgstr "/សន្ទនា/បន្ថែម..." + +msgid "/Conversation/_Remove..." +msgstr "/សន្ទនា/យកចេញ..." + +msgid "/Conversation/Insert Lin_k..." +msgstr "/សន្ទនា/បញ្ចូលតំណ..." + +msgid "/Conversation/Insert Imag_e..." +msgstr "/សន្ទនា/បញ្ចូល​រូបភាព..." + +msgid "/Conversation/_Close" +msgstr "/សន្ទនា/បិទ" + +#. Options +msgid "/_Options" +msgstr "/ជម្រើស" + +msgid "/Options/Enable _Logging" +msgstr "/ជម្រើស/បើក​ការ​ចូល" + +msgid "/Options/Enable _Sounds" +msgstr "/ជម្រើស/បើក​សំឡេង" + +msgid "/Options/Show Formatting _Toolbars" +msgstr "/ជម្រើស/បង្ហាញ​របារ​ឧបករណ៍​ធ្វើទ្រង់ទ្រាយ" + +msgid "/Options/Show Ti_mestamps" +msgstr "/ជម្រើស/បង្ហាញ​ត្រាពេលវេលា" + +msgid "/Conversation/More" +msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត" + +msgid "/Options" +msgstr "/ជម្រើស​" + +#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time +#. * the 'Conversation' menu pops up. +#. Make sure the 'Conversation -> More' menuitems are regenerated whenever +#. * the 'Conversation' menu pops up because the entries can change after the +#. * conversation is created. +msgid "/Conversation" +msgstr "/សន្ទនា" + +msgid "/Conversation/View Log" +msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ" + +msgid "/Conversation/Send File..." +msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..." + +msgid "/Conversation/Add Buddy Pounce..." +msgstr "/សន្ទនា/បន្ថែម​ក្រុម​មិត្តភក្ដិ..." + +msgid "/Conversation/Get Info" +msgstr "/សន្ទនា/យក​ព័ត៌មាន" + +msgid "/Conversation/Invite..." +msgstr "/សន្ទនា/អញ្ជើញ..." + +msgid "/Conversation/Alias..." +msgstr "/សន្ទនា/ឈ្មោះ​ក្លែងក្លាយ..." + +msgid "/Conversation/Block..." +msgstr "/សន្ទនា/ទប់ស្កាត់..." + +msgid "/Conversation/Unblock..." +msgstr "/សន្ទនា/មិនទប់ស្កាត់..." + +msgid "/Conversation/Add..." +msgstr "/សន្ទនា/បន្ថែម..." + +msgid "/Conversation/Remove..." +msgstr "/សន្ទនា/យកចេញ..." + +msgid "/Conversation/Insert Link..." +msgstr "/សន្ទនា/បញ្ចូល​តំណ..." + +msgid "/Conversation/Insert Image..." +msgstr "/សន្ទនា/បញ្ចូលរូបភាព..." + +msgid "/Options/Enable Logging" +msgstr "/ជម្រើស/បើក​ការ​ចូល" + +msgid "/Options/Enable Sounds" +msgstr "/ជម្រើស/បើក​សំឡេង" + +msgid "/Options/Show Formatting Toolbars" +msgstr "/ជម្រើស/បង្ហាញ​របារ​ឧបករណ៍​ធ្វើ​ទ្រង់ទ្រាយ" + +msgid "/Options/Show Timestamps" +msgstr "/ជម្រើស​/បង្ហាញ​ត្រាពេលវេលា" + +msgid "User is typing..." +msgstr "អ្នកប្រើ​កំពុង​វាយ..." + +#, c-format +msgid "" +"\n" +"%s has stopped typing" +msgstr "" +"\n" +"%s បានឈប់​វាយ" + +#. Build the Send To menu +msgid "S_end To" +msgstr "ផ្ញើ​ទៅ" + +msgid "_Send" +msgstr "ផ្ញើ" + +#. Setup the label telling how many people are in the room. +msgid "0 people in room" +msgstr "គ្មានមនុស្ស​នៅ​ក្នុង​បន្ទប់​ទេ" + +#, c-format +msgid "%d person in room" +msgid_plural "%d people in room" +msgstr[0] "មនុស្ស %d នៅ​ក្នុង​បន្ទប់" + +msgid "Typing" +msgstr "វាយ" + +msgid "Stopped Typing" +msgstr "ឈប់​វាយ" + +msgid "Nick Said" +msgstr "សម្មតិនាម​បាន​និយាយ" + +msgid "Unread Messages" +msgstr "សារ​មិន​បានអាន" + +msgid "New Event" +msgstr "ព្រឹត្តិការណ៍​ថ្មី" + +msgid "clear: Clears all conversation scrollbacks." +msgstr "ជម្រះ ៖ ជម្រះ​ការ​សន្ទនា​ទាំង​អស់ ។" + +msgid "Confirm close" +msgstr "អះអាង​ការ​បិទ" + +msgid "You have unread messages. Are you sure you want to close the window?" +msgstr "អ្នកមាន​សារ​មិនទាន់អាន ។ តើអ្នក​ប្រាកដ​ជា​ចង់​បិទ​បង្អួច​នេះ​ឬ ?" + +msgid "Close other tabs" +msgstr "បិទ​ផ្ទាំង​ផ្សេងៗ​ទៀត" + +msgid "Close all tabs" +msgstr "បិទ​ផ្ទាំង​ទាំង​អស់" + +msgid "Detach this tab" +msgstr "ផ្ដាច់​ផ្ទាំង​នេះ" + +msgid "Close this tab" +msgstr "បិទ​​ផ្ទាំង​នេះ" + +msgid "Close conversation" +msgstr "បិទ​ការ​សន្ទនា" + +msgid "Last created window" +msgstr "បង្អួច​បាន​បង្កើត​ចុងក្រោយ" + +msgid "Separate IM and Chat windows" +msgstr "បំបែកបង្អួច IM និង​ជជែក" + +msgid "New window" +msgstr "បង្អួច​ថ្មី" + +msgid "By group" +msgstr "តាម​ក្រុម" + +msgid "By account" +msgstr "តាមគណនី" + +msgid "Save Debug Log" +msgstr "រក្សាទុក​កំណត់​ហេតុ​បំបាត់​កំហុស" + +msgid "Invert" +msgstr "ដាក់​បញ្ច្រាស" + +msgid "Highlight matches" +msgstr "បន្លិច​ការ​ផ្គូផ្គង" + +msgid "_Icon Only" +msgstr "តែ​រូបតំណាង" + +msgid "_Text Only" +msgstr "តែ​អត្ថបទ" + +msgid "_Both Icon & Text" +msgstr "ទាំង​រូបតំណាង និង​អត្ថបទ" + +msgid "Filter" +msgstr "តម្រង" + +msgid "Right click for more options." +msgstr "ចុច​កណ្ដុរ​ខាង​ស្ដាំ​ដើម្បី​មើល​​ជម្រើ​សជា​ច្រើន​ទៀត ។" + +msgid "Level " +msgstr "កម្រិត" + +msgid "Select the debug filter level." +msgstr "ជ្រើស​កម្រិត​តម្រង​បំបាត់​កំហុស ។" + +msgid "All" +msgstr "ទាំង​អស់" + +msgid "Misc" +msgstr "ផ្សេងៗ" + +msgid "Warning" +msgstr "ការ​ព្រមាន" + +msgid "Error " +msgstr "កំហុស" + +msgid "Fatal Error" +msgstr "កំហុស​ធ្ងន់ធ្ងរ" + +msgid "bug master" +msgstr "កំហុស​មេ" + +msgid "artist" +msgstr "សិល្បករ" + +#. feel free to not translate this +msgid "Ka-Hing Cheung" +msgstr "Ka-Hing Cheung" + +msgid "support" +msgstr "គាំទ្រ" + +msgid "webmaster" +msgstr "ប្រធាន​បណ្ដាញ" + +msgid "Senior Contributor/QA" +msgstr "អ្នក​ចែកចាយ​ជាន់ខ្ពស់/QA" + +msgid "win32 port" +msgstr "ច្រក win32" + +msgid "maintainer" +msgstr "អ្នក​ថែទា" + +msgid "libfaim maintainer" +msgstr "អ្នក​ថែទាំ libfaim" + +#. If "lazy bum" translates literally into a serious insult, use something else or omit it. +msgid "hacker and designated driver [lazy bum]" +msgstr "អ្នកលួច និង​កម្មវិធី​បញ្ជាដែល​បាន​ជ្រើស [អាល់ប៊ុម​កម្ជិល]" + +msgid "support/QA" +msgstr "គាំទ្រ/QA" + +msgid "XMPP" +msgstr "XMPP" + +msgid "original author" +msgstr "អ្នកនិពន្ធ​ដើម" + +msgid "lead developer" +msgstr "ប្រធាន​អ្នកអភិវឌ្ឍ" + +msgid "Afrikaans" +msgstr "អាហ្វ្រីកាអាន" + +msgid "Arabic" +msgstr "អារ៉ាប់" + +msgid "Belarusian Latin" +msgstr "បេឡារុស្ស ឡាទីន" + +msgid "Bulgarian" +msgstr "ប៊ុលហ្គារី" + +msgid "Bengali" +msgstr "បេន្កាលី" + +msgid "Bosnian" +msgstr "បូស្នី" + +msgid "Catalan" +msgstr "កាតាឡាន" + +msgid "Valencian-Catalan" +msgstr "កាតាឡាន-វ៉ាឡេនហ្សង់" + +msgid "Czech" +msgstr "ឆេក" + +msgid "Danish" +msgstr "ដាណឺម៉ាក" + +msgid "German" +msgstr "​​អា​ល្លឺម៉ង់" + +msgid "Dzongkha" +msgstr "ដុងហ្កា" + +msgid "Greek" +msgstr "ក្រិក" + +msgid "Australian English" +msgstr "​​​អង់គ្លេស​អូស្ត្រាលី" + +msgid "Canadian English" +msgstr "​​​អង់គ្លេស​កាណាដា" + +msgid "British English" +msgstr "​​​អង់គ្លេស អង់គ្លេស" + +msgid "Esperanto" +msgstr "អេស្ពេរ៉ាន់តូ\t" + +msgid "Spanish" +msgstr "​អេស៉្បាញ" + +msgid "Estonian" +msgstr "អេស្តូនី" + +msgid "Euskera(Basque)" +msgstr "អឺ​ស្កេរ៉ា (​​បាស្កេ)" + +msgid "Persian" +msgstr "ប៉ឺស៊ីយ៉ាន" + +msgid "Finnish" +msgstr "ហ្វាំង​ឡង់" + +msgid "French" +msgstr "បារាំង" + +msgid "Irish" +msgstr "អៀរឡង់" + +msgid "Galician" +msgstr "ហ្គាលីស្យាន" + +msgid "Gujarati" +msgstr "ហ្កុយ៉ារាទី" + +msgid "Gujarati Language Team" +msgstr "ប្រធានក្រុម​ភាសា​ហ្កុយ៉ារាទី" + +msgid "Hebrew" +msgstr "ហេប្រូ" + +msgid "Hindi" +msgstr "ហិណ្ឌូ" + +msgid "Hungarian" +msgstr "ហុងគ្រី" + +msgid "Indonesian" +msgstr "ឥណ្ឌូនេស៊ី" + +msgid "Italian" +msgstr "អ៊ីតាលី" + +msgid "Japanese" +msgstr "ជប៉ុន" + +msgid "Georgian" +msgstr "ហ្សកហ្ស៊ី" + +msgid "Ubuntu Georgian Translators" +msgstr "អ្នកប្រើ​ប្រែ​​ហ្សកហ្ស៊ី​របស់​អូប៊ុនទូ" + +msgid "Kannada" +msgstr "កិណាដា" + +msgid "Kannada Translation team" +msgstr "ក្រុម​អ្នកបកប្រែ​ភាសា​កិណាដា" + +msgid "Korean" +msgstr "កូរ៉េ" + +msgid "Kurdish" +msgstr "ឃឺដ" + +msgid "Lao" +msgstr "ឡាវ" + +msgid "Lithuanian" +msgstr "លីទុយអានី" + +msgid "Macedonian" +msgstr "​ម៉ាសេដូនី" + +msgid "Mongolian" +msgstr "ម៉ុងហ្គោលី" + +msgid "Bokmål Norwegian" +msgstr "ប៊ុកម៉ល​ណរវ៉េ" + +msgid "Nepali" +msgstr "នេប៉ាល់" + +msgid "Dutch, Flemish" +msgstr "ហុល្លង់" + +msgid "Norwegian Nynorsk" +msgstr "ណរវ៉េ នីណ័រ" + +msgid "Occitan" +msgstr "អុកស៊ីតង់" + +msgid "Punjabi" +msgstr "ពូនយ៉ាប៊ី" + +msgid "Polish" +msgstr "ប៉ូឡូញ" + +msgid "Portuguese" +msgstr "ព័រទុយហ្គាល់" + +msgid "Portuguese-Brazil" +msgstr "ព័រទុយហ្គាល់-ប្រេស៊ីល" + +msgid "Pashto" +msgstr "ប៉ាស្តូ" + +msgid "Romanian" +msgstr "រូម៉ានី" + +msgid "Russian" +msgstr "រុស្ស៊ី" + +msgid "Slovak" +msgstr "ស្លូវ៉ាគី" + +msgid "Slovenian" +msgstr "​​​ស្លូវ៉ានី" + +msgid "Albanian" +msgstr "អាល់បានី" + +msgid "Serbian" +msgstr "សែប៊ី" + +msgid "Sinhala" +msgstr "ស៊ីនហាលា" + +msgid "Swedish" +msgstr "ស៊ុយអែដ" + +msgid "Tamil" +msgstr "តាមីល" + +msgid "Telugu" +msgstr "តេលូហ្គូ" + +msgid "Thai" +msgstr "ថៃ" + +msgid "Turkish" +msgstr "ទួរគី" + +msgid "Urdu" +msgstr "​អ៊ូរ្ឌូ" + +msgid "Vietnamese" +msgstr "វៀតណាម" + +msgid "T.M.Thanh and the Gnome-Vi Team" +msgstr "T.M.Thanh និង​ក្រុម Gnome-Vi" + +msgid "Simplified Chinese" +msgstr "ចិន​សាមញ្ញ" + +msgid "Hong Kong Chinese" +msgstr "ចិន​ហុងកុង" + +msgid "Traditional Chinese" +msgstr "ចិនបុរាណ" + +msgid "Amharic" +msgstr "អាមហារីច" + +#, c-format +msgid "About %s" +msgstr "អំពី %s" + +#, c-format +msgid "" +"%s is a graphical modular messaging client based on libpurple which is " +"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, " +"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and " +"QQ all at once. It is written using GTK+.

You may modify and " +"redistribute the program under the terms of the GPL (version 2 or later). A " +"copy of the GPL is contained in the 'COPYING' file distributed with %s. %s " +"is copyrighted by its contributors. See the 'COPYRIGHT' file for the " +"complete list of contributors. We provide no warranty for this program." +"

" +msgstr "" +"%s គឺ​ជា​ម៉ាស៊ីន​ភ្ញៀវ​សារ​ម៉ូឌុល​ក្រាហ្វិក​​ដែល​មាន​មូលដ្ឋាន​លើ libpurple ដែល​មាន​សមត្ថភាព​តភ្ជាប់​ទៅ​កាន់ " +"AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus " +"Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ ទាំង​អស់​នៅ​ពេល​តែ​មួយ ។ វា​" +"ត្រូវ​បានសរសេរ​ដោយ​ប្រើ GTK+ ។

អ្នកអាចកែប្រែ និង​ចែកចាយ​ឡើង​វិញ​នូវ​កម្មវិធី​ក្រោម​លក្ខខណ្ឌ " +"GPL (កំណែ ២ ឬ​ខ្ពស់​ជាង​នេះ) ។ ច្បាប់​ចម្លង GPL មាន​ឯកសារ 'COPYING' បាន​ចែកចាយជា​មួយ %s ។ " +"%s ត្រូ​វបាន​រក្សាសិទ្ធិ​អ្នកចែកចាយ​របស់​ខ្លួន ។ សូម​មើល​ឯកសារ 'COPYRIGHT' សម្រាប់​បញ្ជី​អ្នកចែកចាយ​" +"ពេញលេញ ។ យើង​​មិន​ធានា​លើ​កម្មវិធី​នេះ​ទេ ។

" + +#, c-format +msgid "" +"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 "" +"ជួយ​តាមរយៈ​អ៊ីមែល ៖ support@pidgin.im

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

" +msgstr " ឆានែល

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

" +msgstr " XMPPdevel@conference.pidgin.im

" + +msgid "Current Developers" +msgstr "អ្នក​អភិវឌ្ឍន៍​បច្ចុប្បន្ន" + +msgid "Crazy Patch Writers" +msgstr "អ្នក​សរសេរ​បំណះ​មិនល្អ" + +msgid "Retired Developers" +msgstr "អ្នក​អភិវឌ្ឍន៍​ដែល​ចូល​និវត្តន៍" + +msgid "Retired Crazy Patch Writers" +msgstr "អ្នក​សរសេរ​បំណះ​ដែល​ចូល​និវត្តន៍" + +msgid "Current Translators" +msgstr "អ្នកបកប្រែ​បច្ចុប្បន្ន" + +msgid "Past Translators" +msgstr "អ្នក​បកប្រែ​មុន" + +msgid "Debugging Information" +msgstr "ព័ត៌មាន​បំបាត់​កំហុស" + +msgid "_Name" +msgstr "ឈ្មោះ" + +msgid "_Account" +msgstr "គណនី" + +msgid "Get User Info" +msgstr "យក​ព័ត៌មាន​អ្នកប្រើ" + +msgid "" +"Please enter the username or alias of the person whose info you would like " +"to view." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ដែល​អ្នក​ចង់​មើល ។" + +msgid "View User Log" +msgstr "មើល​កំណត់​ហេតុ​អ្នកប្រើ​" + +msgid "Alias Contact" +msgstr "ទំនាក់ទំនង​ឈ្មោះក្លែងក្លាយ" + +msgid "Enter an alias for this contact." +msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់​ទំនាក់ទំនង​នេះ ។" + +#, c-format +msgid "Enter an alias for %s." +msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់ %s ។" + +msgid "Alias Buddy" +msgstr "ឈ្មោះ​ក្លែងក្លាយ​របស់មិត្តភក្ដិ" + +msgid "Alias Chat" +msgstr "ឈ្មោះ​ក្លែងក្លាយ​ក្នុងកា​រជជែក" + +msgid "Enter an alias for this chat." +msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់​ការ​ជជែក​នេះ ។" + +#, c-format +msgid "" +"You are about to remove the contact containing %s and %d other buddy from " +"your buddy list. Do you want to continue?" +msgid_plural "" +"You are about to remove the contact containing %s and %d other buddies from " +"your buddy list. Do you want to continue?" +msgstr[0] "" +"អ្នក​រៀប​នឹង​យក​​​​ទំនាក់ទំនង​មិត្តភក្ដិ​ផ្សេង​​ដែល​មាន %s និង %d ចេញពី​បញ្ជីមិត្តភក្ដិ​របស់អ្នក ។ តើ​អ្នក​ចង់​បន្ត​" +"ដែរឬទេ ?" + +msgid "Remove Contact" +msgstr "យក​​ទំនាក់ទំនង​ចេញ" + +msgid "_Remove Contact" +msgstr "យក​ទំនាក់ទំនង​ចេញ" + +#, c-format +msgid "" +"You are about to merge the group called %s into the group called %s. Do you " +"want to continue?" +msgstr "អ្នករៀប​នឹង​បញ្ចូល​ក្រុម​ដែល​ហៅ​ថា %s ចូល​គ្នា​ទៅ​ក្នុង​ក្រុម​ដែលហៅ​ថា %s ។ តើ​អ្នក​ចង់​បន្ត​ដែរឬទេ ?" + +msgid "Merge Groups" +msgstr "បញ្ចូល​ក្រុម​ចូលគ្នា" + +msgid "_Merge Groups" +msgstr "បញ្ចូល​ក្រុម​ចូលគ្នា" + +#, c-format +msgid "" +"You are about to remove the group %s and all its members from your buddy " +"list. Do you want to continue?" +msgstr "" +"អ្នក​រៀបនឹង​យក​ក្រុម​ដែល %s ចេញ ហើយ​សមាជិករបស់​វា​ទាំងអស់​ពី​បញ្ជីមិត្តភក្ដិ ។ តើ​អ្នក​ចង់​បន្តដែរឬទេ ?" + +msgid "Remove Group" +msgstr "យក​​ក្រុម​ចេញ" + +msgid "_Remove Group" +msgstr "យក​ក្រុម​ចេញ" + +#, c-format +msgid "" +"You are about to remove %s from your buddy list. Do you want to continue?" +msgstr "អ្នក​រៀបនឹង​យក %s ពី​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ តើ​អ្នកចង់​បន្ត​ដែរឬទេ ?" + +msgid "Remove Buddy" +msgstr "យក​​មិត្តភក្ដិ​ចេញ" + +msgid "_Remove Buddy" +msgstr "យក​​មិត្តភក្ដិ​ចេញ" + +#, c-format +msgid "" +"You are about to remove the chat %s from your buddy list. Do you want to " +"continue?" +msgstr "អ្នក​រៀបនឹង​យក​ការ​ជជែក %s ចេញពី​​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ តើ​អ្នកចង់​បន្តដែរឬទេ ?" + +msgid "Remove Chat" +msgstr "យក​​កា​រជជែក​ចេញ" + +msgid "_Remove Chat" +msgstr "យក​​ការ​ជជែក​ចេញ" + +msgid "Right-click for more unread messages...\n" +msgstr "ចុច​កណ្ដុរ​ស្ដាំ​ដើម្បី​មើលសារ​​មិនទាន់អាន​បន្ថែម​ទៀត...\n" + +msgid "_Change Status" +msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព" + +msgid "Show Buddy _List" +msgstr "បង្ហាញ​បញ្ជីមិត្តភក្ដិ" + +msgid "_Unread Messages" +msgstr "សារ​មិនទាន់អាន" + +msgid "New _Message..." +msgstr "សារ​ថ្មី..." + +msgid "_Accounts" +msgstr "គណនី" + +msgid "Plu_gins" +msgstr "កម្មវិធី​ជំនួយ" + +msgid "Pr_eferences" +msgstr "ចំណូល​ចិត្ត" + +msgid "Mute _Sounds" +msgstr "ស្ងាត់" + +msgid "_Blink on New Message" +msgstr "លោត​ភ្លឹបភ្លែង​នៅពេល​មាន​សារ​ថ្មី" + +msgid "_Quit" +msgstr "ចេញ" + +msgid "Not started" +msgstr "មិន​បានចាប់ផ្ដើម​ទេ" + +msgid "Receiving As:" +msgstr "ទទួល​ជា ៖" + +msgid "Receiving From:" +msgstr "ទទួល​ពីរ ៖" + +msgid "Sending To:" +msgstr "ផ្ញើ​ទៅ ៖" + +msgid "Sending As:" +msgstr "ផ្ញើជា ៖" + +msgid "There is no application configured to open this type of file." +msgstr "គ្មាន​កម្មវិធី​បានកំណត់​រចនាសម្ព័ន្ធទេ ដើម្បីបើក​ឯកសារ​ប្រភេទ​នេះ ។" + +msgid "An error occurred while opening the file." +msgstr "កំហុស​មួយ​បានកើត​ឡើង​ខណៈពេល​បើក​ឯកសារ ។" + +#, c-format +msgid "Error launching %s: %s" +msgstr "កំហុស​ក្នុងកា​រចាប់ផ្ដើម %s: %s" + +#, c-format +msgid "Error running %s" +msgstr "កំហុស​ក្នុងការ %s" + +#, c-format +msgid "Process returned error code %d" +msgstr "ដំណើរការ​បានត្រឡប់កូដ​កំហុស %d" + +msgid "Filename:" +msgstr "ឈ្មោះ​ឯកសារ ៖" + +msgid "Local File:" +msgstr "ឯកសារ​មូលដ្ឋាន ៖" + +msgid "Speed:" +msgstr "ល្បឿន ៖" + +msgid "Time Elapsed:" +msgstr "ពេល​វេលា​​កន្លង​ទៅ ៖" + +msgid "Time Remaining:" +msgstr "ពេល​វេលា​​នៅ​សល់ ៖" + +msgid "Close this window when all transfers _finish" +msgstr "បិទ​បង្អួច​នេះ​នៅពេល​កា​រផ្ទេរ​ទាំងអស់​ចប់" + +msgid "C_lear finished transfers" +msgstr "ជម្រះ​ការ​ផ្ទេរ​ដែលចប់" + +#. "Download Details" arrow +msgid "File transfer _details" +msgstr "សេចក្ដីលម្អិត​ការ​ផ្ទេរ​ឯកសារ" + +#. Pause button +msgid "_Pause" +msgstr "ផ្អាក" + +#. Resume button +msgid "_Resume" +msgstr "បន្ត" + +msgid "Paste as Plain _Text" +msgstr "បិទភ្ជាប់​ជា​អត្ថបទ​ធម្មតា" + +msgid "_Reset formatting" +msgstr "កំណត់​ការ​ធ្វើ​ទ្រង់ទ្រាយ​ឡើង​វិញ" + +msgid "Disable _smileys in selected text" +msgstr "បិទ​សញ្ញាណអារម្មណ៍​នៅ​ក្នុងអត្ថបទ​ដែលបានជ្រើស" + +msgid "Hyperlink color" +msgstr "ពណ៌​តំណខ្ពស់" + +msgid "Color to draw hyperlinks." +msgstr "ពណ៌​ត្រូវគូ​តំណខ្ពស់ ។" + +msgid "Hyperlink visited color" +msgstr "ពណ៌ដែល​បាន​ទស្សនា​តំណខ្ពស់" + +msgid "Color to draw hyperlinks after it has been visited (or activated)." +msgstr "ពណ៌​ត្រូវគូ​តំណខ្ពស់​បន្ទាប់ពី​វា​ត្រូវ​បានទស្សនា (ឬ​ធ្វើ​ឲ្យ​សកម្ម) ។" + +msgid "Hyperlink prelight color" +msgstr "ពណ៌​ពន្លឺ​មុន​តំណខ្ពស់" + +msgid "Color to draw hyperlinks when mouse is over them." +msgstr "ពណ៌​ត្រូវ​គូ​តំណខ្ពស់​នៅពេល​ដាក់​កណ្ដុរ​លើ​ពួកវា ។" + +msgid "Sent Message Name Color" +msgstr "បានផ្ញើ​ពណ៌​ឈ្មោះ​សារ" + +msgid "Color to draw the name of a message you sent." +msgstr "ពណ៌​ត្រូវ​គូរ​ឈ្មោះ​សារ​ដែលអ្នកបានផ្ញើ ។" + +msgid "Received Message Name Color" +msgstr "បាន​ទទួល​ពណ៌​ឈ្មោះ​សារ" + +msgid "Color to draw the name of a message you received." +msgstr "ពណ៌​ត្រូវគូរ​ឈ្មោះ​សារ​ដែលអ្នកបានទទួល ។" + +msgid "\"Attention\" Name Color" +msgstr "\"ប្រយ័ត្ន\" ពណ៌​ឈ្មោះ" + +msgid "Color to draw the name of a message you received containing your name." +msgstr "ពណ៌​ត្រូវ​គូរ​ឈ្មោះ​សារ​ដែល​អ្នកបានទទួល មានឈ្មោះរបស់​អ្នក ។" + +msgid "Action Message Name Color" +msgstr "សកម្មភាព​​ពណ៌​ឈ្មោះ​សារ​" + +msgid "Color to draw the name of an action message." +msgstr "ពណ៌​ត្រូវគូរ​ឈ្មោះ​សារ​សកម្មភាព ។" + +msgid "Action Message Name Color for Whispered Message" +msgstr "សកម្មភាព​ពណ៌​ឈ្មោះ​សារ​​សម្រាប់​សារ​ដែល​ខ្សឹប" + +msgid "Whisper Message Name Color" +msgstr "ពណ៌​ឈ្មោះ​សារ​ខ្សឹប" + +msgid "Typing notification color" +msgstr "វាយ​ពណ៌​ជូនដំណឹង" + +msgid "The color to use for the typing notification font" +msgstr "ពណ៌​ត្រូវ​ប្រើ​ដើម្បីវាយ​ពុម្ពអក្សរ​ជូនដំណឹង" + +msgid "Typing notification font" +msgstr "វាយ​ពុម្ពអក្សរ​ជូនដំណឹង" + +msgid "The font to use for the typing notification" +msgstr "ពុម្ពអក្សរ​ត្រូវ​ប្រើ​សម្រាប់វាយ​ការ​ជូនដំណឹង" + +msgid "Enable typing notification" +msgstr "អនុញ្ញាត​វាយ​ការជូនដំណឹង" + +msgid "_Copy Email Address" +msgstr "ចម្លង​អាសយដ្ឋាន​អ៊ីមែល" + +msgid "_Open Link in Browser" +msgstr "បើក​តំណ​នៅ​ក្នុង​កម្មវិធីរុករក" + +msgid "_Copy Link Location" +msgstr "ចម្លង​ទីតាំង​តំណ" + +msgid "" +"Unrecognized file type\n" +"\n" +"Defaulting to PNG." +msgstr "" +"មិនស្គាល់​ប្រភេទ​ឯកសារ\n" +"\n" +"កំណត់​លំនាំដើម​ទៅ PNG ។" + +msgid "" +"Unrecognized file type\n" +"\n" +"Defaulting to PNG." +msgstr "" +"ប្រភេទសារ​ដែល​មិនស្គាល់\n" +"\n" +"កំណត់​លំនាំដើម​ទៅ PNG ។" + +#, c-format +msgid "" +"Error saving image\n" +"\n" +"%s" +msgstr "" +"កំហុស​ក្នុងការ​រក្សាទុក​រូបភាព\n" +"\n" +"%s" + +#, c-format +msgid "" +"Error saving image\n" +"\n" +"%s" +msgstr "" +"កំហុស​ក្នុងការ​រក្សាទុក​រូបភាព\n" +"\n" +"%s" + +msgid "Save Image" +msgstr "រក្សា​​ទុក​​​រូបភាព" + +#, c-format +msgid "_Save Image..." +msgstr "រក្សាទុក​រូបភាព..." + +#, c-format +msgid "_Add Custom Smiley..." +msgstr "បន្ថែម​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន..." + +msgid "Select Font" +msgstr "ជ្រើស​ពុម្ព​អក្សរ" + +msgid "Select Text Color" +msgstr "ជ្រើស​ពណ៌​អត្ថបទ" + +msgid "Select Background Color" +msgstr "ជ្រើស​ពណ៌​ផ្ទៃ​ខាងក្រោយ" + +msgid "_URL" +msgstr "URL" + +msgid "_Description" +msgstr "សេចក្ដីពិពណ៌នា" + +msgid "" +"Please enter the URL and description of the link that you want to insert. " +"The description is optional." +msgstr "សូម​បញ្ចូល URL និង​សេចក្ដីពិពណ៌នា​របស់តំណ​ដែល​អ្នក​ចង់​បញ្ចូល ។ សេចក្ដី​ពិពណ៌នា​គឺជា​ជម្រើស ។" + +msgid "Please enter the URL of the link that you want to insert." +msgstr "សូម​បញ្ចូល​ URL របស់​តំណ​ដែល​អ្នកចង់​បញ្ចូល ។" + +msgid "Insert Link" +msgstr "បញ្ចូល​តំណ" + +msgid "_Insert" +msgstr "បញ្ចូល​" + +#, c-format +msgid "Failed to store image: %s\n" +msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព ៖ %s\n" + +msgid "Insert Image" +msgstr "បញ្ចូល​​រូបភាព" + +#, c-format +msgid "" +"This smiley is disabled because a custom smiley exists for this shortcut:\n" +" %s" +msgstr "" +"សញ្ញាណ​អារម្មណ៍​ត្រូវ​បានបិទ​ពីព្រោះ​មាន​សញ្ញាណ​អារម្មណ៍​សម្រាប់​ផ្លូវកាត់​នេះ​រួច​ហើយ ៖\n" +" %s" + +msgid "Smile!" +msgstr "សញ្ញាណ​អារម្មណ៍ !" + +msgid "_Manage custom smileys" +msgstr "គ្រប់គ្រង​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន" + +msgid "This theme has no available smileys." +msgstr "ស្បែក​នេះ​មិនមាន​សញ្ញាណ​អារម្មណ៍​ទេ ។" + +msgid "_Font" +msgstr "ពុម្ព​អក្សរ" + +msgid "Group Items" +msgstr "ដាក់​ធាតុ​ជា​ក្រុម" + +msgid "Ungroup Items" +msgstr "បំបែក​​ក្រុម​ធាតុ" + +msgid "Bold" +msgstr "ដិត​" + +msgid "Italic" +msgstr "ទ្រេត" + +msgid "Underline" +msgstr "គូស​បន្ទាត់​ក្រោម" + +msgid "Strikethrough" +msgstr "បន្ទាត់​ឆូត" + +msgid "Increase Font Size" +msgstr "បង្កើន​ទំហំ​ពុម្ពអក្សរ" + +msgid "Decrease Font Size" +msgstr "បន្ថយ​ទំហំ​ពុម្ពអក្សរ" + +msgid "Font Face" +msgstr "លក្ខណៈ​ពុម្ព​អក្សរ" + +msgid "Background Color" +msgstr "ពណ៌​ផ្ទៃ​ខាង​ក្រោយ​" + +msgid "Foreground Color" +msgstr "ពណ៌​ផ្ទៃ​ខាងមុខ" + +msgid "Reset Formatting" +msgstr "កំណត់​ការ​ធ្វើ​ទ្រង់ទ្រាយ​ឡើងវិញ" + +msgid "Insert IM Image" +msgstr "បញ្ចូល​រូបភាព IM" + +msgid "Insert Smiley" +msgstr "បញ្ចូល​​សញ្ញាណអារម្មណ៍" + +msgid "_Bold" +msgstr "ដិត" + +msgid "_Italic" +msgstr "ទ្រេត" + +msgid "_Underline" +msgstr "គូស​បន្ទាត់​ក្រោម" + +msgid "Strikethrough" +msgstr "បន្ទាត់​ឆូត" + +msgid "_Larger" +msgstr "ធំជាង" + +msgid "_Normal" +msgstr "ធម្មតា" + +msgid "_Smaller" +msgstr "តូចជាង" + +#. If we want to show the formatting for the following items, we would +#. * need to update them when formatting changes. The above items don't need +#. * no updating nor nothin' +msgid "_Font face" +msgstr "លក្ខណៈ​ពុម្ព​អក្សរ" + +msgid "Foreground _color" +msgstr "ពណ៌​ផ្ទៃខាង​មុខ" + +msgid "Bac_kground color" +msgstr "ពណ៌​ផ្ទៃ​ខាងក្រោយ" + +msgid "_Image" +msgstr "រូបភាព" + +msgid "_Link" +msgstr "តំណ" + +msgid "_Horizontal rule" +msgstr "ក្បួន​ផ្ដេក" + +msgid "_Smile!" +msgstr "សញ្ញាណ​អារម្មណ៍" + +msgid "Log Deletion Failed" +msgstr "បានបរាជ័យ​ក្នុងការ​លុប​កំណត់​ហេតុ" + +msgid "Check permissions and try again." +msgstr "ពិនិត្យ​មើល​សិទ្ធិ​ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។" + +#, c-format +msgid "" +"Are you sure you want to permanently delete the log of the conversation with " +"%s which started at %s?" +msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​កំណត់​សន្ទនា​ជា​មួយ %s ជា​អចិន្ត្រៃយ៍​ដែល​ចាប់ផ្ដើមនៅ %s ដែរឬទេ ?" + +#, c-format +msgid "" +"Are you sure you want to permanently delete the log of the conversation in %" +"s which started at %s?" +msgstr "តើ​អ្នកប្រាកដ​ជា​ចង់​លុប​កំណត់​ហេតុ​សន្ទនា​នៅក្នុង %s ជា​អចិន្ត្រៃយ៍​​ដែល​ចាប់​ផ្ដើ​ម​នៅ %s ដែរឬទេ ?" + +#, c-format +msgid "" +"Are you sure you want to permanently delete the system log which started at %" +"s?" +msgstr "តើ​អ្នក​ប្រាកដជា​ចង់លុប​កំណត់​ហេតុ​ប្រព័ន្ធ​ដែល​ចាប់ផ្ដើម​នៅ %s ជា​អចិន្ត្រៃយ៍​ឬ ?" + +msgid "Delete Log?" +msgstr "លុប​កំណត់​ហេតុ ?" + +msgid "Delete Log..." +msgstr "លុប​កំណត់​ហេតុ..." + +#, c-format +msgid "Conversation in %s on %s" +msgstr "សន្ទនា​នៅ​ក្នុង %s លើ %s" + +#, c-format +msgid "Conversation with %s on %s" +msgstr "សន្ទនា​ជា​មួយ %s នៅ​លើ %s" + +#. Steal the "HELP" response and use it to trigger browsing to the logs folder +msgid "_Browse logs folder" +msgstr "រកមើល​ថត​កំណត់​ហេតុ" + +#, c-format +msgid "%s %s. Try `%s -h' for more information.\n" +msgstr "%s %s ។ ព្យាយាម `%s -h' សម្រាប់​ព័ត៌មាន​បន្ថែម ។\n" + +#, c-format +msgid "" +"%s %s\n" +"Usage: %s [OPTION]...\n" +"\n" +" -c, --config=DIR use DIR for config files\n" +" -d, --debug print debugging messages to stdout\n" +" -h, --help display this help and exit\n" +" -m, --multiple do not ensure single instance\n" +" -n, --nologin don't automatically login\n" +" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n" +" specifies account(s) to use, separated by commas.\n" +" Without this only the first account will be enabled).\n" +" --display=DISPLAY X display to use\n" +" -v, --version display the current version and exit\n" +msgstr "" +"%s %s\n" +"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n" +"\n" +" -c, --config=DIR ប្រើ DIR សម្រាប់​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ\n" +" -d, --debug បោះពុម្ព​សារ​បំបាត់​កំហុស​ទៅ stdout\n" +" -h, --help បង្ហាញ​ជំនួយ​នេះ ហើយ​ចេញ\n" +" -m, --multiple មិនប្រាកដ​ធាតុ​តែ​មួយ\n" +" -n, --nologin កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n" +" -l, --login[=NAME] បើក​គណនី​ដែល​បានបញ្ជាក់ (អាគុយម៉ង​ជម្រើស NAME\n" +" បញ្ជាក់​គណនី​ត្រូវ​ប្រើ បំបែក​ដោយ​សញ្ញា (,) ។\n" +" ដោយ​គ្មាន​គណនី​ដំបូង​នេះ​នឹង​ត្រូវ​បានបើក) ។\n" +" --display=DISPLAY ការ​បង្ហាញ X ត្រូវ​ប្រើ\n" +" -v, --version បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n" + +#, c-format +msgid "" +"%s %s\n" +"Usage: %s [OPTION]...\n" +"\n" +" -c, --config=DIR use DIR for config files\n" +" -d, --debug print debugging messages to stdout\n" +" -h, --help display this help and exit\n" +" -m, --multiple do not ensure single instance\n" +" -n, --nologin don't automatically login\n" +" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n" +" specifies account(s) to use, separated by commas.\n" +" Without this only the first account will be enabled).\n" +" -v, --version display the current version and exit\n" +msgstr "" +"%s %s\n" +"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n" +"\n" +" -c, --config=DIR ប្រើ DIR សម្រាប់​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ\n" +" -d, --debug បោះពុម្ព​សារ​បំបាត់​កំហុស​ទៅ stdout\n" +" -h, --help បង្ហាញជំនួយ​នេះ​ ហើយ​ចេញ\n" +" -m, --multiple កុំ​ប្រាកដ​ធាតុ​តែ​មួយ\n" +" -n, --nologin កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n" +" -l, --login[=NAME] បើក​គណនី​ដែលបាន​បញ្ជាក់ (អាគុយម៉ង់​ជម្រើស NAME\n" +" បញ្ជាក់​គណនី​ត្រូវ​ប្រើ បំបែក​ដោយ​សញ្ញា​ (,)។\n" +" ដោយ​គ្មាន​គណនី​ដំបូង​នឹង​ត្រូវ​បានបើក) ។\n" +" -v, --version បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n" + +#, c-format +msgid "" +"%s %s has segfaulted and attempted to dump a core file.\n" +"This is a bug in the software and has happened through\n" +"no fault of your own.\n" +"\n" +"If you can reproduce the crash, please notify the developers\n" +"by reporting a bug at:\n" +"%ssimpleticket/\n" +"\n" +"Please make sure to specify what you were doing at the time\n" +"and post the backtrace from the core file. If you do not know\n" +"how to get the backtrace, please read the instructions at\n" +"%swiki/GetABacktrace\n" +msgstr "" +"%s %s has segfaulted and attempted to dump a core file.\n" +"This is a bug in the software and has happened through\n" +"no fault of your own.\n" +"\n" +"If you can reproduce the crash, please notify the developers\n" +"by reporting a bug at:\n" +"%ssimpleticket/\n" +"\n" +"Please make sure to specify what you were doing at the time\n" +"and post the backtrace from the core file. If you do not know\n" +"how to get the backtrace, please read the instructions at\n" +"%swiki/GetABacktrace\n" + +#. Translators may want to transliterate the name. +#. It is not to be translated. +msgid "Pidgin" +msgstr "Pidgin" + +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "ចេញ ដោយ​សារ​តែ​ម៉ាស៊ីន​ភ្ញើ libpurple ផ្សេង​ទៀត​កំពុង​រត់​រួច​ហើយ ។\n" + +msgid "Open All Messages" +msgstr "បើក​សារ​ទាំងអស់" + +msgid "You have mail!" +msgstr "អ្នក​មាន​សំបុត្រ !" + +#, c-format +msgid "%s has %d new message." +msgid_plural "%s has %d new messages." +msgstr[0] "%s មាន​សារ​ថ្មី %d ។" + +#, c-format +msgid "%d new email." +msgid_plural "%d new emails." +msgstr[0] "អ៊ីមែល​ថ្មី %d ។" + +#, c-format +msgid "The browser command \"%s\" is invalid." +msgstr "ពាក្យ​បញ្ជា​កម្មវិធីរុករក \"%s\" មិន​ត្រឹមត្រូវ ។" + +msgid "Unable to open URL" +msgstr "មិនអាច​បើក URL" + +#, c-format +msgid "Error launching \"%s\": %s" +msgstr "កំហុស​ក្នុងកា​រចាប់ផ្ដើម \"%s\" ៖ %s" + +msgid "" +"The 'Manual' browser command has been chosen, but no command has been set." +msgstr "ពាក្យ​បញ្ជា​កម្មវិធី​រុករក 'ដោយដៃ' ត្រូវ​បាន​ជ្រើស ប៉ុន្តែ​គ្មាន​ពាក្យ​បញ្ជា​ត្រូវ​បាន​ជ្រើស​ទេ ។" + +msgid "The following plugins will be unloaded." +msgstr "កម្មវិធី​ជំនួយ​ដូច​ខាងក្រោម​នឹង​ត្រូវ​បានផ្ទុក​ឡើង ។" + +msgid "Multiple plugins will be unloaded." +msgstr "កម្មវិធី​ជំនួយ​ជា​ច្រើន​នឹង​ត្រូវ​បានផ្ទុក​ឡើង ។" + +msgid "Unload Plugins" +msgstr "ផ្ទុក​ឡើង​កម្មវិធី​ជំនួយ" + +msgid "Could not unload plugin" +msgstr "មិនអាច​ផ្ទុក​កម្មវិធី​ជំនួយ​ឡើង​បានទេ" + +msgid "" +"The plugin could not be unloaded now, but will be disabled at the next " +"startup." +msgstr "កម្មវិធី​ជំនួយ​មិនអាច​ត្រូវ​បានផ្ទុក​ឡើង​ឥឡូវ​ទេ ប៉ុន្តែ​នឹង​ត្រូ​វបាន​បិទនៅពេល​ចាប់ផ្ដើមលើក​ក្រោយ ។" + +#, c-format +msgid "" +"Error: %s\n" +"Check the plugin website for an update." +msgstr "" +"កំហុស ៖ %s\n" +"ពិនិត្យមើល​តំបន់​បណ្ដាញ​កម្មវិធី​ជំនួយ​សម្រាប់​ភាព​ទាន់សម័យ ។" + +msgid "Author" +msgstr "អ្នកនិពន្ធ ​" + +msgid "Written by:" +msgstr "បាន​សរសេរ​ដោ​យ ៖" + +msgid "Web site:" +msgstr "តំបន់​បណ្ដាញ ៖" + +msgid "Filename:" +msgstr "ឈ្មោះ​ឯកសារ ៖" + +msgid "Configure Pl_ugin" +msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​ជំនួយ" + +msgid "Plugin Details" +msgstr "សេចក្ដី​លម្អិត​កម្មវិធី​ជំនួយ" + +msgid "Select a file" +msgstr "ជ្រើស​ឯកសារ" + +#. Create the "Pounce on Whom" frame. +msgid "Pounce on Whom" +msgstr "ក្រុម​នៅ​លើ​អ្នកណា" + +msgid "_Buddy name:" +msgstr "ឈ្មោះ​មិត្តភក្ដិ ៖" + +msgid "Si_gns on" +msgstr "ចូល" + +msgid "Signs o_ff" +msgstr "ចេញ" + +msgid "Goes a_way" +msgstr "ចាកឆ្ងាយ" + +msgid "Ret_urns from away" +msgstr "ត្រឡប់​ពី​ការ​ចាកឆ្ងាយ" + +msgid "Becomes _idle" +msgstr "ក្លាយជា​ទំនេរ" + +msgid "Is no longer i_dle" +msgstr "មិន​ទំនេរ​ទៀតទេ" + +msgid "Starts _typing" +msgstr "ចាប់ផ្ដើម​វាយ" + +msgid "P_auses while typing" +msgstr "ផ្អាក​ខណៈពេល​វាយ" + +msgid "Stops t_yping" +msgstr "ឈប់​វាយ" + +msgid "Sends a _message" +msgstr "ផ្ញើសារ" + +msgid "Ope_n an IM window" +msgstr "បើក​បង្អួច IM" + +msgid "_Pop up a notification" +msgstr "កា​រជូនដំណឹង​លេច​ឡើង" + +msgid "Send a _message" +msgstr "ផ្ញើ​សារ" + +msgid "E_xecute a command" +msgstr "ប្រតិបត្តិ​ពាក្យ​បញ្ជា" + +msgid "P_lay a sound" +msgstr "ចាក់​សំឡេង" + +msgid "Brows_e..." +msgstr "រកមើល..." + +msgid "Br_owse..." +msgstr "រកមើល..." + +msgid "Pre_view" +msgstr "មើលជា​មុន" + +msgid "P_ounce only when my status is not Available" +msgstr "តែ​ក្រុម​នៅពេល​ដែល​ស្ថានភាព​ខ្ញុំ​មិនអាច​ជជែក​បាន" + +msgid "_Recurring" +msgstr "កើតឡើង​វិញ" + +msgid "Pounce Target" +msgstr "ក្រុម​គោល​ដៅ​" + +msgid "Smiley theme failed to unpack." +msgstr "ស្បែក​សញ្ញាណអារម្មណ៍​បានបរាជ័យ​ក្នុងការ​ស្រាយ ។" + +msgid "Install Theme" +msgstr "ដំឡើង​ស្បែក" + +msgid "" +"Select a smiley theme that you would like to use from the list below. New " +"themes can be installed by dragging and dropping them onto the theme list." +msgstr "" +"ជ្រើស​ស្បែក​សញ្ញាណ​ញញឹម​ដែល​អ្នក​ចង់​ប្រើ​ពី​បញ្ជី​ខាង​ក្រោម ។ ស្បែក​ថ្មី​អាច​ត្រូវ​បាន​អូស និង​ទម្លាក់​ពួកវា​ទៅ​ក្នុង​" +"បញ្ជី​ស្បែក ។" + +msgid "Icon" +msgstr "រូបតំណាង" + +msgid "Keyboard Shortcuts" +msgstr "ផ្លូវ​កាត់​ក្តារចុច" + +msgid "Cl_ose conversations with the Escape key" +msgstr "បិទ​ការ​សន្ទនា​ដោយ​ប្រើ​គ្រាប់ចុច​គេច (Escape)" + +msgid "System Tray Icon" +msgstr "រូបតំណាង​ថាស​ប្រព័ន្ធ" + +msgid "_Show system tray icon:" +msgstr "បង្ហាញ​​រូបតំណាង​ថាស​ប្រព័ន្ធ ៖" + +msgid "On unread messages" +msgstr "សារ​មិន​ទាន់អាន" + +msgid "Conversation Window Hiding" +msgstr "លាក់​បង្អួច​សន្ទនា" + +msgid "_Hide new IM conversations:" +msgstr "លាក់​កា​រសន្ទនា IM ថ្មី ៖" + +msgid "When away" +msgstr "នៅពេល​ចាកឆ្ងាយ" + +#. All the tab options! +msgid "Tabs" +msgstr "ថេប" + +msgid "Show IMs and chats in _tabbed windows" +msgstr "បង្ហាញ IMs និង​ការជជែក​នៅ​ក្នុង​បង្អួច​ជា​ថេប" + +msgid "Show close b_utton on tabs" +msgstr "បង្ហាញ​ប៊ូតុង​បិទ​នៅ​លើ​ថេប" + +msgid "_Placement:" +msgstr "ការ​ដាក់ ៖" + +msgid "Top" +msgstr "កំពូល" + +msgid "Bottom" +msgstr "បាត" + +msgid "Left" +msgstr "ឆ្វេង" + +msgid "Right" +msgstr "​ស្តាំ" + +msgid "Left Vertical" +msgstr "បញ្ឈរ​ឆ្វេង" + +msgid "Right Vertical" +msgstr "បញ្ឈរ​ស្ដាំ" + +msgid "N_ew conversations:" +msgstr "ការ​សន្ទនា​ថ្មី ៖" + +msgid "Show _formatting on incoming messages" +msgstr "បង្ហាញ​កា​រធ្វើ​ទ្រង់ទ្រាយ​នៅ​ពេល​មានសារ​ចូល" + +msgid "Close IMs immediately when the tab is closed" +msgstr "បិទ​ IMs ភ្លាមៗ​នៅពេល​បិទ​ផ្ទាំង" + +msgid "Show _detailed information" +msgstr "បង្ហាញ​ព័ត៌មាន​លម្អិត" + +msgid "Enable buddy ic_on animation" +msgstr "បើក​ចលនា​រូបតំណាង​របស់​មិត្តភក្ដិ" + +msgid "_Notify buddies that you are typing to them" +msgstr "ជូនដំណឹង​មិត្តភក្ដិ​ដេល​អ្នក​កំពុង​វាយ​ទៅ​កាន់​ពួកគេ" + +msgid "Highlight _misspelled words" +msgstr "បន្លិច​ពាក្យ​ដែល​ខុស" + +msgid "Use smooth-scrolling" +msgstr "ប្រើ​រមូរ​រលូន" + +msgid "F_lash window when IMs are received" +msgstr "បង្អួច Flash នៅពេល​បានទទួល IMs" + +msgid "Minimi_ze new conversation windows" +msgstr "បង្រួម​បង្អួច​សន្ទនា​ថ្មី​អប្បបរមា" + +msgid "Minimum input area height in lines:" +msgstr "បង្រួម​កម្ពស់​ផ្ទៃ​បញ្ចូល​គិតជា​បន្ទាត់ ៖" + +msgid "Font" +msgstr "ពុម្ព​អក្សរ" + +msgid "Use document font from _theme" +msgstr "ប្រើ​ពុម្ពអក្សរ​ឯកសារ​ពី​ស្បែក" + +msgid "Use font from _theme" +msgstr "ប្រើ​ពុម្ពអក្សរ​ពី​ស្បែក" + +msgid "Conversation _font:" +msgstr "ពុម្ពអក្សរ​សន្ទនា ៖" + +msgid "Default Formatting" +msgstr "ការ​ធ្វើទ្រង់ទ្រាយ​លំនាំដើម" + +msgid "" +"This is how your outgoing message text will appear when you use protocols " +"that support formatting." +msgstr "" +"នេះ​ជា​វិធី​ដែល​អត្ថបទ​សារ​ចេញ​របស់​នឹង​បង្ហាញ នៅពេល​ដែល​អ្នក​ប្រើ​ពិធីការ​ដែល​គាំទ្រ​ការ​ធ្វើទ្រង់ទ្រាយ ។" + +msgid "Cannot start proxy configuration program." +msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី​បានទេ ។" + +msgid "Cannot start browser configuration program." +msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក​បានទេ ។" + +msgid "ST_UN server:" +msgstr "ម៉ាស៊ីនបម្រើ STUN ៖" + +msgid "Example: stunserver.org" +msgstr "ឧទាហរណ៍ ៖ stunserver.org" + +msgid "_Autodetect IP address" +msgstr "រកឃើញ​អាសយដ្ឋាន IP ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Public _IP:" +msgstr "IP សាធារណៈ" + +msgid "Ports" +msgstr "ច្រក" + +msgid "_Enable automatic router port forwarding" +msgstr "បើក​ការ​បញ្ជូន​ច្រក​រ៉ោត័រ​បន្ត​ដោយ​ស្វ័យ​ប្រវត្តិ" + +msgid "_Manually specify range of ports to listen on" +msgstr "បញ្ជាក់ជួរ​ច្រក​ដែល​ត្រូវ​ស្ដាប់​ដោយ​ដៃ" + +msgid "_Start port:" +msgstr "ច្រក​ចាប់ផ្ដើម ៖" + +msgid "_End port:" +msgstr "ច្រក​បញ្ចប់ ៖" + +msgid "Proxy Server & Browser" +msgstr "ម៉ាស៊ីនបម្រើ​ប្រូកស៊ី & កម្មវិធី​រុករក​" + +msgid "Proxy configuration program was not found." +msgstr "រក​មិន​ឃើញ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី ។" + +msgid "Browser configuration program was not found." +msgstr "រក​មិនឃើញ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​របស់​កម្មវិធី​រុករក​ទេ ។" + +msgid "" +"Proxy & Browser preferences are configured\n" +"in GNOME Preferences" +msgstr "បានកំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក និង​ប្រូកស៊ី​នៅ​ក្នុង​ចំណូល​ចិត្ត​​របស់ GNOME" + +msgid "Configure _Proxy" +msgstr "កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី" + +msgid "Configure _Browser" +msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក" + +msgid "Proxy Server" +msgstr "ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី" + +msgid "No proxy" +msgstr "គ្មានប្រូកស៊ី" + +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "ប្រើ" + +msgid "_User:" +msgstr "អ្នក​ប្រើ ៖" + +msgid "Seamonkey" +msgstr "Seamonkey" + +msgid "Opera" +msgstr "Opera" + +msgid "Netscape" +msgstr "Netscape" + +msgid "Mozilla" +msgstr "Mozilla" + +msgid "Konqueror" +msgstr "Konqueror" + +msgid "Desktop Default" +msgstr "ផ្ទៃតុ​លំនាំដើម" + +msgid "GNOME Default" +msgstr "GNOME លំនាំដើម" + +msgid "Galeon" +msgstr "Galeon" + +msgid "Firefox" +msgstr "Firefox" + +msgid "Firebird" +msgstr "Firebird" + +msgid "Epiphany" +msgstr "Epiphany" + +msgid "Manual" +msgstr "សៀវភៅ​ដៃ" + +msgid "Browser Selection" +msgstr "ជម្រើស​កម្មវិធី​រុករក" + +msgid "_Browser:" +msgstr "កម្មវិធី​រុករក ៖" + +msgid "_Open link in:" +msgstr "បើក​តំណ​នៅ​ក្នុង ៖" + +msgid "Browser default" +msgstr "កម្មវិធីរុករក​លំនាំដើម" + +msgid "Existing window" +msgstr "មាន​បង្អួចរួច​ហើយ" + +msgid "New tab" +msgstr "ផ្ទាំង​ថ្មី" + +#, c-format +msgid "" +"_Manual:\n" +"(%s for URL)" +msgstr "" +"សៀវភៅ​ដៃ ​៖\n" +"(%s សម្រាប់ URL)" + +msgid "Log _format:" +msgstr "ទ្រង់ទ្រាយ​កំណត់​ហេតុ ៖" + +msgid "Log all _instant messages" +msgstr "ចុះ​កំណត់​ហេតុ​សារ​បន្ទាន់​ទាំង​អស់" + +msgid "Log all c_hats" +msgstr "ចុះ​​កំណត់ហេតុ​ការ​ជជែក​ទាំង​អស់" + +msgid "Log all _status changes to system log" +msgstr "ចុះ​កំណត់​ហេតុ​ការ​​ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅ​កំណត់ហេតុ​ប្រព័ន្ធ" + +msgid "Sound Selection" +msgstr "ការ​ជ្រើស​សំឡេង" + +#, c-format +msgid "Quietest" +msgstr "ស្ងាត់​បំផុត" + +#, c-format +msgid "Quieter" +msgstr "ស្ងាត់​ជាង" + +#, c-format +msgid "Quiet" +msgstr "ស្ងាត់" + +#, c-format +msgid "Loud" +msgstr "ឮ" + +#, c-format +msgid "Louder" +msgstr "ឮខ្លាំង​ជាង" + +#, c-format +msgid "Loudest" +msgstr "ឮខ្លាំង​បំផុត" + +msgid "_Method:" +msgstr "វិធីសាស្ត្រ ៖" + +msgid "Console beep" +msgstr "ប៊ីប​របស់កុង​សូល" + +msgid "No sounds" +msgstr "គ្មាន​សំឡេង" + +#, c-format +msgid "" +"Sound c_ommand:\n" +"(%s for filename)" +msgstr "" +"ពាក្យ​បញ្ជា​សំឡេង ៖\n" +"(%s សម្រាប់​ឈ្មោះ​ឯកសារ)" + +msgid "M_ute sounds" +msgstr "ស្ងាត់" + +msgid "Sounds when conversation has _focus" +msgstr "សំឡេង​នៅពេល​ផ្ដោត​ការ​សន្ទនា" + +msgid "_Enable sounds:" +msgstr "បើក​ជម្រើស ៖" + +msgid "V_olume:" +msgstr "កម្រិត​សំឡេង​ ៖" + +msgid "Play" +msgstr "ចាក់" + +msgid "_Browse..." +msgstr "រកមើល..." + +msgid "_Reset" +msgstr "កំណត់​ឡើង​វិញ" + +msgid "_Report idle time:" +msgstr "រាយការណ៍​ពេលវេលា​ទំនេរ ៖" + +msgid "Based on keyboard or mouse use" +msgstr "មាន​មូលដ្ឋាន​លើ​កា​រប្រើក្ដារចុច ឬ​កណ្ដុរ" + +msgid "_Auto-reply:" +msgstr "ឆ្លើយ​តប​ដោយ​ស្វ័យ​ប្រវត្តិ ៖" + +msgid "When both away and idle" +msgstr "នៅពេល​អ្នកទាំង​ពីរ​ចាកឆ្ងាយ ឬ​​ទំនេរ" + +#. Auto-away stuff +msgid "Auto-away" +msgstr "ចាកឆ្ងាយ​ស្វ័យ​ប្រវត្តិ" + +msgid "Change status when _idle" +msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ" + +msgid "_Minutes before becoming idle:" +msgstr "ប៉ុន្មាន​នាទី​មុន​នឹង​ក្លាយជា​ទំនេរ ៖" + +msgid "Change _status to:" +msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅជា ៖" + +#. Signon status stuff +msgid "Status at Startup" +msgstr "ស្ថានភាព​នៅពេល​ចាប់ផ្ដើម" + +msgid "Use status from last _exit at startup" +msgstr "ប្រើ​ស្ថានភាព​ពី​ការ​ចេញ​ចុងក្រោយ​នៅពេល​ចាប់ផ្ដើម" + +msgid "Status to a_pply at startup:" +msgstr "ស្ថានភាព​ត្រូវ​​អនុវត្ត​នៅពេល​ចាប់ផ្ដើម ៖" + +msgid "Interface" +msgstr "ចំណុច​ប្រទាក់" + +msgid "Smiley Themes" +msgstr "ស្បែក​សញ្ញាណ​អារម្មណ៍" + +msgid "Browser" +msgstr "កម្មវិធី​រុករក" + +msgid "Status / Idle" +msgstr "ស្ថានភាព/ទំនេរ" + +msgid "Allow all users to contact me" +msgstr "អនុញ្ញាត​ឲ្យ​អ្នកប្រើទាំង​អស់​ទាក់ទង​ខ្ញុំ" + +msgid "Allow only the users on my buddy list" +msgstr "អនុញ្ញាត​តែ​អ្នកប្រើ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​ខ្ញុំ​ប៉ុណ្ណោះ" + +msgid "Allow only the users below" +msgstr "អនុញ្ញាត​តែ​អ្នកប្រើខាងក្រោម​ប៉ុណ្ណោះ" + +msgid "Block all users" +msgstr "ទប់ស្កាត់​អ្នក​ប្រើ​ទាំង​អស់" + +msgid "Block only the users below" +msgstr "ទប់ស្កាត់តែ​អ្នកប្រើ​ខាងក្រោមប៉ុណ្ណោះ" + +msgid "Privacy" +msgstr "ភាព​ឯកជន" + +msgid "Changes to privacy settings take effect immediately." +msgstr "ផ្លាស់ប្ដូរ​ទៅការ​កំណត់​ភាព​ឯកជន​នឹង​មានប្រសិទ្ធភាព​ភ្លាម ។" + +msgid "Set privacy for:" +msgstr "កំណត់​ភាព​ឯកជន​សម្រាប់ ៖" + +#. Remove All button +msgid "Remove Al_l" +msgstr "យក​ចេញ​ទាំង​អស់" + +msgid "Permit User" +msgstr "អនុញ្ញាត​អ្នកប្រើ" + +msgid "Type a user you permit to contact you." +msgstr "វាយ​អ្នកប្រើ ដែល​អ្នកអនុញ្ញាត​ឲ្យ​ទាក់ទង​អ្នក ។" + +msgid "Please enter the name of the user you wish to be able to contact you." +msgstr "សូម​បញ្ចូល​ឈ្មោះអ្នកប្រើ​ ដែល​អ្នកចង់​ឲ្យទាក់ទង​អ្នក ។" + +msgid "_Permit" +msgstr "អនុញ្ញាត" + +#, c-format +msgid "Allow %s to contact you?" +msgstr "អនុញ្ញាតឲ្យ %s ទាក់ទង​អ្នក ?" + +#, c-format +msgid "Are you sure you wish to allow %s to contact you?" +msgstr "តើអ្នក​ប្រាកដ​ជា​ចង់​អនុញ្ញាតឲ្យ %s ទាក់ទង​អ្នក​ឬ ?" + +msgid "Block User" +msgstr "ទប់ស្កាត់​អ្នក​ប្រើ" + +msgid "Type a user to block." +msgstr "វាយ​​អ្នកប្រើត្រូវ​ទប់ស្កាត់ ។" + +msgid "Please enter the name of the user you wish to block." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នក​ចង់​ទប់ស្កាត់ ។" + +#, c-format +msgid "Block %s?" +msgstr "ទប់ស្កាត់ %s?" + +#, c-format +msgid "Are you sure you want to block %s?" +msgstr "តើអ្នកប្រាកដ​ជា​ចង់​ទប់ស្កាត់ %s ឬ ?" + +msgid "Apply" +msgstr "អនុវត្ត" + +msgid "That file already exists" +msgstr "មាន​ឯកសារ​នោះ​រួច​ហើយ" + +msgid "Would you like to overwrite it?" +msgstr "តើអ្នក​ចង់សរសេរ​ជាន់​លើវា​ឬ ?" + +msgid "Overwrite" +msgstr "សរសេរ​ជាន់​លើ" + +msgid "Choose New Name" +msgstr "ជ្រើស​​ឈ្មោះ​ថ្មី" + +msgid "Select Folder..." +msgstr "ជ្រើស​ថត ។" + +#. list button +msgid "_Get List" +msgstr "យក​បញ្ជី" + +#. add button +msgid "_Add Chat" +msgstr "បន្ថែម​ការជជែក" + +msgid "Are you sure you want to delete the selected saved statuses?" +msgstr "តើ​អ្នក​ប្រាកដ​ជា​​លុប​ស្ថានភាព​ដែល​បាន​រក្សាទុក​ដែលបានជ្រើស​ឬ ?" + +#. Use button +msgid "_Use" +msgstr "ប្រើ" + +msgid "Title already in use. You must choose a unique title." +msgstr "មាន​ចំណង​ជើង​រួច​ហើយ ។ អ្នក​ត្រូវ​តែ​ជ្រើស​ចំណង​ជើង​តែ​មួយ ។" + +msgid "Different" +msgstr "ខុសគ្នា" + +msgid "_Title:" +msgstr "ចំណង​ជើង ៖" + +msgid "_Status:" +msgstr "ស្ថានភាព ៖" + +#. Different status message expander +msgid "Use a _different status for some accounts" +msgstr "ប្រើ​ស្ថានភាព​ផ្សេង​សម្រាប់គណនី​មួយ​ចំនួន" + +#. Save & Use button +msgid "Sa_ve & Use" +msgstr "រក្សាទុក​ការ​ប្រើ" + +#, c-format +msgid "Status for %s" +msgstr "ស្ថានភាព​សម្រាប់ %s" + +msgid "Custom Smiley" +msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន" + +msgid "More Data needed" +msgstr "ត្រូវការ​ទិន្នន័យ​បន្ថែម​ទៀត" + +msgid "Please provide a shortcut to associate with the smiley." +msgstr "សូម​ផ្ដល់​នូវ​ផ្លូវកាត់​ដើម្បី​ភ្ជាប់​ជា​មួយ​នឹង​សញ្ញា​អារម្មណ៍ ។" + +msgid "Duplicate Shortcut" +msgstr "ផ្លូវកាត់​ស្ទួន" + +msgid "" +"A custom smiley for the selected shortcut already exists. Please specify a " +"different shortcut." +msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន​សម្រាប់​ផ្លូវកាត់​ដែល​បាន​ជ្រើស​មាន​រួច​ហើយ ។ សូម​បញ្ជី​ផ្លូវកាត់​ផ្សេង ។" + +msgid "Please select an image for the smiley." +msgstr "សូម​ជ្រើស​រូបភាព​សម្រាប់​សញ្ញាអារម្មណ៍ ។" + +msgid "Edit Smiley" +msgstr "កែ​សម្រួល​សញ្ញាអារម្មណ៍" + +msgid "Add Smiley" +msgstr "បន្ថែម​សញ្ញាអារម្មណ៍" + +msgid "Smiley _Image" +msgstr "រូបភាព​សញ្ញាអារម្មណ៍" + +#. Smiley shortcut +msgid "Smiley S_hortcut" +msgstr "ផ្លូវ​កាត់​សញ្ញាអារម្មណ៍" + +msgid "Smiley" +msgstr "សញ្ញាអារម្មណ៍" + +msgid "Custom Smiley Manager" +msgstr "កម្មវិធី​គ្រប់គ្រង​សញ្ញាអារម្មណ៍​ផ្ទាល់ខ្លួន" + +msgid "Click to change your buddyicon for this account." +msgstr "ចុច​ដើម្បី​ផ្លាស់ប្ដូរ​រូបតំណាង​មិត្តភក្ដិ​របស់​អ្នកសម្រាប់គណនី​នេះ ។" + +msgid "Click to change your buddyicon for all accounts." +msgstr "ចុច​ដើម្បី​ផ្លាស់ប្ដូរ​រូបតំណាង​មិត្តភក្ដិ​របស់​អ្នក​សម្រាប់គណនី​ទាំង​អស់ ។" + +msgid "Waiting for network connection" +msgstr "រង់ចាំ​ការ​តភ្ជាប់បណ្ដាញ" + +msgid "New status..." +msgstr "ស្ថានភាព​ថ្មី..." + +msgid "Saved statuses..." +msgstr "ស្ថាន​ភាព​ដែលបាន​រក្សាទុក..." + +msgid "Status Selector" +msgstr "កម្មវិធី​ជ្រើស​ស្ថានភាព" + +msgid "Google Talk" +msgstr "Google Talk" + +#, c-format +msgid "The following error has occurred loading %s: %s" +msgstr "កំហុស​ដូច​ខាងក្រោម​បានកើតឡើង​​កំឡុង​ពេល​ផ្ទុក %s ៖ %s" + +msgid "Failed to load image" +msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព" + +#, c-format +msgid "Cannot send folder %s." +msgstr "មិនអាច​ផ្ញើថត %s បានទេ ។" + +#, c-format +msgid "" +"%s cannot transfer a folder. You will need to send the files within " +"individually." +msgstr "%s មិនអាច​ផ្ទេរ​ថត​បានទេ ។ អ្នកនឹង​ត្រូវ​ផ្ញើ​ឯកសារ​រៀងខ្លួនៗ ។" + +msgid "You have dragged an image" +msgstr "អ្នកបាន​អូស​រូបភាព" + +msgid "" +"You can send this image as a file transfer, embed it into this message, or " +"use it as the buddy icon for this user." +msgstr "" +"អ្នក​អាច​ផ្ញើ​រូបភាព​នេះ​ជា​ការ​ផ្ទេរ​ឯកសារ បង្កប់​វា​ក្នុងសារ​នេះ ឬ​ប្រើ​វា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់ការ​" +"ប្រើ​នេះ ។" + +msgid "Set as buddy icon" +msgstr "កំណត់​ជា​រូបតំណាង​មិត្តភក្ដិ" + +msgid "Send image file" +msgstr "ផ្ញើ​ឯកសារ​រូបភាព" + +msgid "Insert in message" +msgstr "បញ្ចូល​ក្នុងសារ" + +msgid "Would you like to set it as the buddy icon for this user?" +msgstr "តើអ្នក​ចង់​កំណត់​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើនេះ​ដែរឬទេ ?" + +msgid "" +"You can send this image as a file transfer, or use it as the buddy icon for " +"this user." +msgstr "អ្នកអាច​ផ្ញើរូបភាព​នេះ​ជា​ការ​ផ្ទេរ​ឯកសារ ឬ​ប្រើវា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើ​នេះ ។" + +msgid "" +"You can insert this image into this message, or use it as the buddy icon for " +"this user" +msgstr "អ្នក​អាច​បញ្ចូល​រូបភាព​នេះ​​ក្នុង​សារ​នេះ ឬ​ប្រើ​វា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើ​នេះ" + +#. I don't know if we really want to do anything here. Most of the desktop item types are crap like +#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really +#. * send. The only logical one is "Application," but do we really want to send a binary and nothing else? +#. * 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 "មិនអាច​ផ្ញើ​កម្មវិធី​ចាប់ផ្ដើម​បានទេ" + +msgid "" +"You dragged a desktop launcher. Most likely you wanted to send whatever this " +"launcher points to instead of this launcher itself." +msgstr "" +"អ្នកបានអូស​កម្មវិធី​ចាប់ផ្ដើម​ផ្ទៃតុ ។ ទំនង​ជា​អ្នក​ចង់​ផ្ញើ​អ្វី​កម្មវិធី​នេះ​ចង្អុល​​ទៅ​កម្មវិធី​ចាប់ផ្ដើម​នេះ​ជំនួស​វិញ " +"។" + +#, c-format +msgid "" +"File: %s\n" +"File size: %s\n" +"Image size: %dx%d" +msgstr "" +"ឯកសារ ៖ %s\n" +"ទំហំ​ឯកសារ ៖ %s\n" +"ទំហំ​រូបភាព ៖ %dx%d" + +#, c-format +msgid "The file '%s' is too large for %s. Please try a smaller image.\n" +msgstr "ឯកសារ '%s' ធំពេក​សម្រាប់ %s ។ សូម​ព្យាយាម​រូបភាព​ដែល​តូចជាង​នេះ ។\n" + +msgid "Icon Error" +msgstr "កំហុស​រូបតំណាង" + +msgid "Could not set icon" +msgstr "មិនអាច​កំណត់​រូបតំណាង​បានទេ" + +#, c-format +msgid "Failed to open file '%s': %s" +msgstr "បានបរាជ័យ​ក្នុងការ​បើក​ឯកសារ '%s' ៖ %s" + +#, c-format +msgid "" +"Failed to load image '%s': reason not known, probably a corrupt image file" +msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព '%s' ៖ មិនស្គាល់ហេតុផល ប្រហែលជា​ឯកសារ​រូបភាព​តូច" + +msgid "Save File" +msgstr "រក្សា​​ទុក​​​ឯកសារ" + +msgid "Select color" +msgstr "ជ្រើស​ពណ៌" + +msgid "_Alias" +msgstr "ឈ្មោះ​ក្លែងក្លាយ" + +msgid "Close _tabs" +msgstr "បិទ​​ផ្ទាំង" + +msgid "_Get Info" +msgstr "យក​ព័ត៌មាន" + +msgid "_Invite" +msgstr "អញ្ជើញ" + +msgid "_Modify..." +msgstr "កែប្រែ..." + +msgid "_Add..." +msgstr "បន្ថែម..." + +msgid "_Open Mail" +msgstr "បើក​សំបុត្រ" + +msgid "_Edit" +msgstr "កែ​សម្រួល" + +msgid "Pidgin Tooltip" +msgstr "ព័ត៌មាន​ជំនួយ Pidgin" + +msgid "Pidgin smileys" +msgstr "សញ្ញាអារម្មណ៍​របស់ Pidgin" + +msgid "Penguin Pimps" +msgstr "Penguin Pimps" + +msgid "Selecting this disables graphical emoticons." +msgstr "ជ្រើស​សញ្ញាអារម្មណ៍​ក្រាហ្វិក​ដែល​បិទ​នេះ ។" + +msgid "none" +msgstr "គ្មាន" + +msgid "Small" +msgstr "តូច" + +msgid "Smaller versions of the default smilies" +msgstr "កំណែ​តូច​របស់​សញ្ញាអារម្មណ៍​លំនាំដើម" + +msgid "Response Probability:" +msgstr "ប្រូបាប៊ីលីតេឆ្លើយតប ៖" + +msgid "Statistics Configuration" +msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​ស្ថិតិ" + +#. msg_difference spinner +msgid "Maximum response timeout:" +msgstr "អស់ពេល​ឆ្លើយតប​អតិបរមា ៖" + +msgid "minutes" +msgstr "នាទី" + +#. last_seen spinner +msgid "Maximum last-seen difference:" +msgstr "ភាព​ខុសគ្នា​ដែល​បានឃើញ​ចុងក្រោយ​អតិបរមា ៖" + +#. threshold spinner +msgid "Threshold:" +msgstr "កម្រិត​ពន្លឺ ៖" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Contact Availability Prediction" +msgstr "មាន​ការទាយ​ទំនាក់ទំនង" + +#. *< name +#. *< version +msgid "Contact Availability Prediction plugin." +msgstr "មាន​កម្មវិធី​ជំនួយ​ទាយ​ទំនាក់ទំនង ។" + +#. * summary +msgid "Displays statistical information about your buddies' availability" +msgstr "បង្ហាញ​ព័ត៌មាន​ស្ថិតិ​អំពី​ភាព​អាច​ប្រើ​បាន​នៃ​មិត្តភក្ដិ​របស់​អ្នក" + +msgid "Buddy is idle" +msgstr "មិត្តភក្ដិ​ទំនេរ" + +msgid "Buddy is away" +msgstr "មិត្តភក្ដិ​ចាកឆ្ងាយ" + +msgid "Buddy is \"extended\" away" +msgstr "មិត្តភក្ដិ​ត្រូវបាន \"ពន្យារ\" ការ​ចាកឆ្ងាយ" + +#. Not used yet. +msgid "Buddy is mobile" +msgstr "មិត្តភក្ដិ​ចល័ត" + +msgid "Buddy is offline" +msgstr "មិត្តភក្ដិ​ក្រៅបណ្ដាញ" + +msgid "Point values to use when..." +msgstr "ចង្អុល​តម្លៃ​ត្រូវ​ប្រើនៅ​ពេល..." + +msgid "" +"The buddy with the largest score is the buddy who will have priority " +"in the contact.\n" +msgstr "មិត្តភក្ដិ​ដែលមាន ពិន្ទុធំ គឺជា​មិត្តភក្ដិ​ដែល​នឹង​មាន​អាទិភាព​នៅ​ក្នុងការជជែក ។\n" + +msgid "Use last buddy when scores are equal" +msgstr "ប្រើ​មិត្តភក្ដិ​ចុងក្រោយ​នៅពេល​ពិន្ទុ​ស្មើគ្នា" + +msgid "Point values to use for account..." +msgstr "ចង្អុល​តម្លៃ​ដើម្បីប្រើ​សម្រាប់គណនី..." + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Contact Priority" +msgstr "អាទិភាព​ទំនាក់ទំនង" + +#. *< name +#. *< version +#. *< summary +msgid "" +"Allows for controlling the values associated with different buddy states." +msgstr "អនុញ្ញាត​សម្រាប់​ពិនិត្យ​តម្លៃ​ដែល​ភ្ជាប់​ជា​មួយ​នឹង​ស្ថានភាព​មិត្តភក្ដិ​ផ្សេងៗ ។" + +#. *< description +msgid "" +"Allows for changing the point values of idle/away/offline states for buddies " +"in contact priority computations." +msgstr "" +"អនុញ្ញាត​ឲ្យ​ផ្លាស់ប្ដូរ​តម្លៃចង្អុល​នៃ​ស្ថានភាព​​ទំនេរ/ចាកឆ្ងាយ/ក្រៅបណ្ដាញ​សម្រាប់​មិត្តភក្ដិ​នៅ​ក្នុង​ការ​គណនា​" +"អាទិភាព​ទំនាក់ទំនង ។" + +msgid "Conversation Colors" +msgstr "ពណ៌​សន្ទនា" + +msgid "Customize colors in the conversation window" +msgstr "ប្ដូរ​ពណ៌​តាម​បំណង​នៅ​ក្នុង​បង្អួច​សន្ទនា" + +msgid "Error Messages" +msgstr "សារ​កំហុស" + +msgid "Highlighted Messages" +msgstr "សារ​ដែល​បាន​បន្លិច" + +msgid "System Messages" +msgstr "សារ​ប្រព័ន្ធ" + +msgid "Sent Messages" +msgstr "សារ​បានផ្ញើ" + +msgid "Received Messages" +msgstr "សារ​បានទទួល" + +#, c-format +msgid "Select Color for %s" +msgstr "ជ្រើស​ពណ៌​សម្រាប់ %s" + +msgid "Ignore incoming format" +msgstr "មិនអើពើ​ទ្រង់ទ្រាយ​ចូល" + +msgid "Apply in Chats" +msgstr "អនុវត្ត​ក្នុង​ការជជែក" + +msgid "Apply in IMs" +msgstr "អនុវត្ត​ក្នុង IMs" + +msgid "By conversation count" +msgstr "តាម​ចំនួន​សន្ទនា" + +msgid "Conversation Placement" +msgstr "ការ​ដាក់ការ​សន្ទនា" + +#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above +msgid "" +"Note: The preference for \"New conversations\" must be set to \"By " +"conversation count\"." +msgstr "ចំណាំ ៖ ចំណូលចិត្ត​សម្រាប់ \"ការ​សន្ទនា​ថ្មី\" ត្រូវ​តែ​បានកំណត់​ទៅ \"តាម​ចំនួន​សន្ទនា\" ។" + +msgid "Number of conversations per window" +msgstr "ចំនួន​សន្ទនា​ក្នុង​មួយ​បង្អួច" + +msgid "Separate IM and Chat windows when placing by number" +msgstr "បំបែក​ IM និង​បង្អួចជជែក​នៅពេល​ដាក់​តាម​លេខ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "ExtPlacement" +msgstr "ExtPlacement" + +#. *< name +#. *< version +msgid "Extra conversation placement options." +msgstr "ជម្រើស​ដាក់​កា​រសន្ទនា​បន្ថែម" + +#. *< summary +#. * description +msgid "" +"Restrict the number of conversations per windows, optionally separating IMs " +"and Chats" +msgstr "ដាក់កម្រិត​ចំនួន​សន្ទនា​ក្នុង​មួយ​បង្អួច ជា​ជម្រើស​បំបែក IMs និង​​ការ​ជជែក" + +#. Configuration frame +msgid "Mouse Gestures Configuration" +msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​កាយវិការ​កណ្ដុរ" + +msgid "Middle mouse button" +msgstr "ប៊ូតុង​កណ្ដុរ​កណ្ដាល" + +msgid "Right mouse button" +msgstr "ប៊ូតុង​កណ្ដុរ​ស្ដាំ" + +#. "Visual gesture display" checkbox +msgid "_Visual gesture display" +msgstr "បង្ហាញ​កាយវិការ​ដែលមើលឃើញ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Mouse Gestures" +msgstr "កាយវិការ​កណ្ដុរ" + +#. *< name +#. *< version +#. * summary +msgid "Provides support for mouse gestures" +msgstr "ផ្ដល់​នូវការ​គាំទ្រ​សម្រាប់​កាយវិកា​រកណ្ដុរ" + +#. * description +msgid "" +"Allows support for mouse gestures in conversation windows. Drag the middle " +"mouse button to perform certain actions:\n" +" • Drag down and then to the right to close a conversation.\n" +" • 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 "" +"អនុញ្ញាត​ឲ្យ​គាំទ្រ​កាយវិការ​កណ្ដុរ​នៅក្នុង​បង្អួច​សន្ទនា ។ អូស​​ប៊ូតុង​កណ្ដុរ​កណ្ដាល​ដើម្បី​អនុវត្ត​សកម្មភាព​​មួយចំនួន​ដូច​" +"ខាងក្រោម ៖\n" +" • អូស​ចុះក្រោម ហើយ​បន្ទាប់មក​ទៅ​ស្ដាំដើម្បី​បិទ​ការ​សន្ទនា ។\n" +" • អូស​ឡើង​លើ ហើយ​បន្ទាប់​មក​ទៅ​ឆ្វេង​ដើម្បីប្ដូរ​ទៅ​ការ​សន្ទនា​មុន ។\n" +" • អូស​ឡើង​លើ ហើយ​បន្ទាប់​មក​ទៅ​ស្ដាំ​ដើម្បីប្ដូរ​ទៅ​ការ​សន្ទនា​បន្ទាប់ ។" + +msgid "Instant Messaging" +msgstr "ការ​ផ្ញើសារ​បន្ទាន់" + +#. Add the label. +msgid "Select a person from your address book below, or add a new person." +msgstr "ជ្រើស​មនុស្ស​ពី​សៀវភៅ​អាសយដ្ឋាន​ខាងក្រោម ឬ​បន្ថែម​មនុស្ស​ថ្មី ។" + +msgid "Group:" +msgstr "ក្រុម ៖" + +#. "New Person" button +msgid "New Person" +msgstr "មនុស្ស​ថ្មី" + +#. "Select Buddy" button +msgid "Select Buddy" +msgstr "ជ្រើស​មិត្តភក្ដិ" + +#. Add the label. +msgid "" +"Select a person from your address book to add this buddy to, or create a new " +"person." +msgstr "ជ្រើស​មនុស្ស​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នក ដើម្បីបន្ថែម​មិត្តភក្ដិ ឬ​បង្កើត​មនុស្ស​ថ្មី ។" + +#. Add the expander +msgid "User _details" +msgstr "សេចក្ដី​លម្អិត​អ្នក​ប្រើ" + +#. "Associate Buddy" button +msgid "_Associate Buddy" +msgstr "ភ្ជាប់​មិត្តភក្ដិ" + +msgid "Unable to send email" +msgstr "មិនអាច​ផ្ញើ​អ៊ីមែល​បានទេ" + +msgid "The evolution executable was not found in the PATH." +msgstr "រក​មិនឃើញ​ evolution ដែល​អាច​ប្រតិបត្តិបាន​នៅ​ក្នុង PATH ។" + +msgid "An email address was not found for this buddy." +msgstr "រក​មិនឃើញអាសយដ្ឋាន​អ៊ីមែល​សម្រាប់​មិត្តភក្ដិ​នេះ​ទេ ។" + +msgid "Add to Address Book" +msgstr "បន្ថែម​ទៅ​សៀវភៅ​អាសយដ្ឋាន" + +msgid "Send Email" +msgstr "ផ្ញើ​អ៊ីមែល" + +#. Configuration frame +msgid "Evolution Integration Configuration" +msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​​ការ​រួមបញ្ចូល Evolution" + +#. Label +msgid "Select all accounts that buddies should be auto-added to." +msgstr "ជ្រើស​គណនី​ទាំង​អស់​ដែលមិត្តភក្ដិ​គួរ​ត្រូវ​បាន​បន្ថែម​ដោយ​ស្វ័យ​ប្រវត្តិ ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Evolution Integration" +msgstr "ការ​រួម​បញ្ចូល Evolution" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Provides integration with Evolution." +msgstr "ផ្ដល់​នូវការ​បញ្ចូល​ជា​មួយ Evolution ។" + +msgid "Please enter the person's information below." +msgstr "សូម​បញ្ចូល​ព័ត៌មាន​របស់​មនុស្ស​ខាង​ក្រោម ។" + +msgid "Please enter the buddy's username and account type below." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​របស់​មិត្តភក្ដិ និង​ប្រភេទ​គណនី​ខា​ងក្រោម ។" + +msgid "Account type:" +msgstr "ប្រភេទ​គណនី ៖" + +#. Optional Information section +msgid "Optional information:" +msgstr "ព័ត៌មាន​ជម្រើស ៖" + +msgid "First name:" +msgstr "នាមខ្លួន ៖" + +msgid "Last name:" +msgstr "នាម​ត្រកូល ៖" + +msgid "Email:" +msgstr "អ៊ីមែល ៖" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "GTK Signals Test" +msgstr "ការ​សាកល្បង​សញ្ញា​ GTK" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Test to see that all ui signals are working properly." +msgstr "សាកល្បង​ដើម្បី​មើល​សញ្ញា​ចំណុច​ប្រទាក់​អ្នកប្រើ​ទាំង​អស់​ដែល​កំពុង​ដំណើរការ​យ៉ាង​ត្រឹមត្រូវ ។" + +#, c-format +msgid "" +"\n" +"Buddy Note: %s" +msgstr "" +"\n" +"ចំណាំ​មិត្តភក្ដិ ៖ %s" + +msgid "History" +msgstr "ប្រវត្តិ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Iconify on Away" +msgstr "កំណត់​រូបតំណាង​នៅពេល​ចាកឆ្ងាយ" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Iconifies the buddy list and your conversations when you go away." +msgstr "កំណត់​រូបតំណាង​បញ្ជីមិត្តភក្ដិ និង​ការ​សន្ទនា​របស់​អ្នកនៅពេល​ចាកឆ្ងាយ ។" + +msgid "Mail Checker" +msgstr "កម្មវិធី​ពិនិត្យ​សំបុត្រ" + +msgid "Checks for new local mail." +msgstr "ពិនិត្យ​មើល​សំបុត្រ​មូលដ្ឋាន​ថ្មី ។" + +msgid "Adds a small box to the buddy list that shows if you have new mail." +msgstr "បន្ថែម​ប្រអប់​តូច​ទៅ​កាន់បញ្ជី​មិត្តភក្ដិ ដែល​បង្ហាញ​ប្រសិន​បើ​អ្នក​មាន​សំបុត្រ​ថ្មី ។" + +msgid "Markerline" +msgstr "បន្ទាត់​សញ្ញា​សម្គាល់" + +msgid "Draw a line to indicate new messages in a conversation." +msgstr "គូរ​បន្ទាត់​ដើម្បី​បង្ហាញ​សារ​ថ្មី​នៅ​ក្នុង​កសារ​សន្ទនា ។" + +msgid "Jump to markerline" +msgstr "លោត​ទៅ​បន្ទាត់​សញ្ញា​សម្គាល់" + +msgid "Draw Markerline in " +msgstr "គូរ​បន្ទាត់​សញ្ញា​សម្គាល់​នៅ​ក្នុង" + +msgid "_IM windows" +msgstr "បង្អួច IM" + +msgid "C_hat windows" +msgstr "បង្អួច​ការ​ជជែក" + +msgid "" +"A music messaging session has been requested. Please click the MM icon to " +"accept." +msgstr "បាន​ស្នើ​សម័យ​ផ្ញើសារ​តន្ត្រី ។ សូម​ចុច​រូបតំណាង MM ដើម្បីទទួល​យក ។" + +msgid "Music messaging session confirmed." +msgstr "បានអះអាង​សម័យ​ផ្ញើសារ​តន្ត្រី ។" + +msgid "Music Messaging" +msgstr "កា​រផ្ញើសារ​តន្ត្រី" + +msgid "There was a conflict in running the command:" +msgstr "មាន​កា​រប៉ះទង្គិច​ក្នុងការ​រត់​ពាក្យ​បញ្ជា ៖" + +msgid "Error Running Editor" +msgstr "កំហុស​ក្នុងការ​រត់​កម្មវិធី​កែសម្រួល" + +msgid "The following error has occurred:" +msgstr "កំហុស​ដូច​ខាងក្រោម​បានកើត​ឡើង ៖" + +#. Configuration frame +msgid "Music Messaging Configuration" +msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​ការ​ផ្ញើសារ​តន្ត្រី" + +msgid "Score Editor Path" +msgstr "ដាក់​ពិន្ទុ​ផ្លូវ​កម្មវិធី​កែសម្រួល" + +msgid "_Apply" +msgstr "អនុវត្ត" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +#. *< name +#. *< version +msgid "Music Messaging Plugin for collaborative composition." +msgstr "កម្មវិធី​ជំនួយ​ផ្ញើសារ​តន្ត្រី​សម្រាប់​ការ​តែង​សហការណ៍ ។" + +#. * summary +msgid "" +"The Music Messaging Plugin allows a number of users to simultaneously work " +"on a piece of music by editting a common score in real-time." +msgstr "" +"កម្មវិធី​ផ្ញើសារ​តន្ត្រី​អនុញ្ញាត​ឲ្យ​អ្នកប្រើជា​ច្រើន​ធ្វើការ​ដំណាល​គ្នា​លើ​ផ្នែក​តន្ត្រី​ដោយ​កែសម្រួល​ពិន្ទុ​ធម្មតា​នៅ​" +"ក្នុង​ពេលវេលា​ពិតប្រាកដ ។" + +#. ---------- "Notify For" ---------- +msgid "Notify For" +msgstr "ជូន​ដំណឹង​សម្រាប់" + +msgid "\t_Only when someone says your username" +msgstr "\tតែ​នៅពេល​មាន​អ្នកណាម្នាក់​និយាយ​អំពីឈ្មោះ​អ្នកប្រើ​របស់​អ្នក" + +msgid "_Focused windows" +msgstr "បង្អួច​បានផ្ដោត​អារម្មណ៍" + +#. ---------- "Notification Methods" ---------- +msgid "Notification Methods" +msgstr "វិធីសាស្ត្រ​ជូនដំណឹង" + +msgid "Prepend _string into window title:" +msgstr "បន្ថែម​ខ្សែអក្សរ​ទៅ​ចំណង​ជើង​បង្អួច ៖" + +#. Count method button +msgid "Insert c_ount of new messages into window title" +msgstr "បញ្ចូល​ចំនួន​សារ​ថ្មី​ទៅ​ក្នុង​ចំណង​ជើង​បង្អួច" + +#. Count xprop method button +msgid "Insert count of new message into _X property" +msgstr "បញ្ចូល​ចំនួនសារ​ថ្មី​ទៅ​ក្នុងលក្ខណៈសម្បត្តិ X" + +#. Urgent method button +msgid "Set window manager \"_URGENT\" hint" +msgstr "កំណត់​ជំនួយ​កម្មវិធី​គ្រប់គ្រង​បង្អួច \"_URGENT\"" + +msgid "_Flash window" +msgstr "បញ្ចេញពន្លឺ" + +#. Raise window method button +msgid "R_aise conversation window" +msgstr "លើក​បង្អួច​សន្ទនា​ឡើង​លើ" + +#. Present conversation method button +msgid "_Present conversation window" +msgstr "បង្ហាញ​បង្អួច​សន្ទនា" + +#. ---------- "Notification Removals" ---------- +msgid "Notification Removal" +msgstr "យក​ការ​ជូនដំណឹ​ង​ចេញ" + +#. Remove on focus button +msgid "Remove when conversation window _gains focus" +msgstr "យកចេញ​នៅពេល​មានការ​ផ្ដោត​លើ​បង្អួច​សន្ទនា" + +#. Remove on click button +msgid "Remove when conversation window _receives click" +msgstr "យកចេញ​នៅពេល​ចុច​បង្អួច​សន្ទនា" + +#. Remove on type button +msgid "Remove when _typing in conversation window" +msgstr "យកចេញ​នៅពេល​វាយ​ក្នុង​បង្អួច​សន្ទនា" + +#. Remove on message send button +msgid "Remove when a _message gets sent" +msgstr "យកចេញ​នៅពេល​បានផ្ញើសារ" + +#. Remove on conversation switch button +msgid "Remove on switch to conversation ta_b" +msgstr "យកចេញ​នៅពេល​ប្ដូរ​ទៅ​ផ្ទាង​សន្ទនា" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Message Notification" +msgstr "កា​រជូនដំណឹង​សារ" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "Provides a variety of ways of notifying you of unread messages." +msgstr "ផ្ដល់​នូវវិធីផ្សេងៗ​នៃ​ការ​ជូនដំណឹង​​អ្នក​អំពី​សារ​មិនទាន់អាន ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Pidgin Demonstration Plugin" +msgstr "កម្មវិធី​ជំនួយបង្ហាញ​របស់ Pidgin" + +#. *< name +#. *< version +#. * summary +msgid "An example plugin that does stuff - see the description." +msgstr "កម្មវិធីជំនួយ​គំរូ​ដែល​ធ្វើការ - សូម​សេចក្ដិពិពណ៌នា ​​​។" + +#. * description +msgid "" +"This is a really cool plugin that does a lot of stuff:\n" +"- It tells you who wrote the program when you log in\n" +"- It reverses all incoming text\n" +"- It sends a message to people on your list immediately when they sign on" +msgstr "" +"នេះ​គឺជា​កម្មវិធី​ជំនួយ​ពិតជា​ល្អ​ដែល​ធ្វើការជា​ច្រើន ៖\n" +"- វា​ប្រាប់អ្នក​ថាអ្នកបានសរសេរ​កម្មវិធី​នៅពេល​អ្នកចូល\n" +"- វា​បម្រុង​ទុក​អត្ថបទ​ចូល​ទាំង​អស់\n" +"- វា​ផ្ញើ​សារ​ទៅមនុស្ស​នៅ​ក្នុង​បញ្ជី​របស់​អ្នក​ភ្លាមៗ នៅពេល​ពួកគេ​ចូល" + +msgid "Cursor Color" +msgstr "ពណ៌​ទស្សន៍ទ្រនិច" + +msgid "Secondary Cursor Color" +msgstr "ពណ៌​ទស្សន៍​ទ្រនិចទីពីរ" + +msgid "Hyperlink Color" +msgstr "ពណ៌​តំណខ្ពស់" + +msgid "Visited Hyperlink Color" +msgstr "ពណ៌​តំណខ្ពស់​ដែលបានទស្សនា" + +msgid "Highlighted Message Name Color" +msgstr "ពណ៌​ឈ្មោះសារ​ដែល​បាន​បន្លិច" + +msgid "GtkTreeView Horizontal Separation" +msgstr "ការ​បំបែក​ផ្ដេក​របស់ GtkTreeView" + +msgid "Conversation Entry" +msgstr "ធាតុ​​​សន្ទនា" + +msgid "Request Dialog" +msgstr "ប្រអប់​សំណើ" + +msgid "Notify Dialog" +msgstr "ប្រអប់​ជូនដំណឹង" + +msgid "Select Color" +msgstr "ជ្រើស​ពណ៌" + +#, c-format +msgid "Select Interface Font" +msgstr "ជ្រើស​ពុម្ពអក្សរ​ចំណុច​ប្រទាក់" + +#, c-format +msgid "Select Font for %s" +msgstr "ជ្រើស​ពុម្ពអក្សរ​សម្រាប់ %s" + +msgid "GTK+ Interface Font" +msgstr "GTK+ ពុម្ពអក្សរ​ចំណុច​ប្រទាក់" + +msgid "GTK+ Text Shortcut Theme" +msgstr "GTK+ ស្បែក​ផ្លូវកាត់អត្ថបទ" + +#. +#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) { +#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); +#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0); +#. +#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]), +#. widget_bool_prefs_set[i], hbox); +#. gtk_size_group_add_widget(labelsg, check); +#. +#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox); +#. * +#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]); +#. * +#. gtk_widget_set_sensitive(widget_bool_widgets[i], +#. purple_prefs_get_bool(widget_bool_prefs_set[i])); +#. g_signal_connect(G_OBJECT(check), "toggled", +#. G_CALLBACK(pidgin_toggle_sensitive), +#. widget_bool_widgets[i]); +#. } +#. +msgid "Interface colors" +msgstr "ពណ៌​ចំណុច​ប្រទាក់" + +msgid "Widget Sizes" +msgstr "ទំហំ​ធាតុក្រាហ្វិក" + +msgid "Fonts" +msgstr "ពុម្ព​​អក្សរ" + +msgid "Gtkrc File Tools" +msgstr "ឧបករណ៍​ឯកសារ Gtkrc" + +#, c-format +msgid "Write settings to %s%sgtkrc-2.0" +msgstr "សរសេរ​ការ​កំណត់​ទៅ​កាន់ %s%sgtkrc-2.0" + +msgid "Re-read gtkrc files" +msgstr "អាន​ឯកសារ gtkrc ឡើង​វិញ" + +msgid "Pidgin GTK+ Theme Control" +msgstr "កម្មវិធី​ជំនួយ GTK+ ការ​ត្រួតពិនិត្យ​ស្បែក" + +msgid "Provides access to commonly used gtkrc settings." +msgstr "ផ្ដល់​នូវ​កា​រចូលដំណើរការ​ទៅកាន់​ការ​កំណត់ gtkrc ដែលបាន​ប្រើ​ធម្មតា ។" + +msgid "Raw" +msgstr "ដើម" + +msgid "Lets you send raw input to text-based protocols." +msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​ផ្ញើ​កា​របញ្ចូលដើម​ទៅ​កាន់​​​អត្ថបទ​ដែល​មានមូលដ្ឋាន​លើ​ពិធីការ ។" + +msgid "" +"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit " +"'Enter' in the entry box to send. Watch the debug window." +msgstr "" +"អនុញ្ញាត​ឲ្យ​អ្នក​ផ្ញើ​ការ​បញ្ចូលដើម​ទៅ​អត្ថបទ​ដែលមានមូលដ្ឋាន​លើ​ពិធីការ (XMPP, MSN, IRC, TOC) ។ ចុច​" +"គ្រាប់ចុច 'បញ្ចូល (Enter)' នៅ​ក្នុង​ប្រអប់​ធាតុ​ដើម្បី​ផ្ញើ ។ មើល​បង្អួច​បំបាត់កំហុស ។" + +#, c-format +msgid "You can upgrade to %s %s today." +msgstr "អ្នកអាច​ធ្វើ​ឲ្យ​ប្រសើរ​ទៅ %s %s ថ្ងៃ​នេះ ។" + +msgid "New Version Available" +msgstr "មានកំណែថ្មី" + +msgid "Later" +msgstr "ពេលក្រោយ" + +msgid "Download Now" +msgstr "ទាញយក​ឥឡូវ" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Release Notification" +msgstr "ការ​ជូនដំណឹង​ចេញផ្សាយ" + +#. *< name +#. *< version +#. * summary +msgid "Checks periodically for new releases." +msgstr "ពិនិត្យ​មើល​ការ​ចេញផ្សាយ​តាម​កំណត់​សម្រាប់ការ​ចេញផ្សាយ​ថ្មី ។" + +#. * description +msgid "" +"Checks periodically for new releases and notifies the user with the " +"ChangeLog." +msgstr "ពិនិត្យ​មើល​កា​ចេញផ្សាយ​​តាមកំណត់​សម្រាប់​ការ​ចេញផ្សាយ​ថ្មី និងជូនដំណឹង​អ្នកប្រើ​ក្នុង ChangeLog ។" + +#. *< major version +#. *< minor version +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Send Button" +msgstr "ផ្ញើ​ប៊ូតុង​" + +#. *< name +#. *< version +msgid "Conversation Window Send Button." +msgstr "ប៊ូតុង​​ផ្ញើ​បង្អួច​សន្ទនា ។" + +#. *< summary +msgid "" +"Adds a Send button to the entry area of the conversation window. Intended " +"for when no physical keyboard is present." +msgstr "បន្ថែម​ប៊ូតុង​ផ្ញើ​ទៅ​ផ្ទៃ​ធាតុ​របស់​បង្អួច​សន្ទនា ។ បំណង​សម្រាប់នៅពេល​ដែល​គ្មាន​ក្ដារចុច​ពិត ។" + +msgid "Duplicate Correction" +msgstr "ស្ទួនកំណែ" + +msgid "The specified word already exists in the correction list." +msgstr "មាន​ពាក្យដែលបានបញ្ជាក់រួច​ហើយ​នៅក្នុង​បញ្ជី​កែ ។" + +msgid "Text Replacements" +msgstr "ការ​ជំនួស​អត្ថបទ" + +msgid "You type" +msgstr "អ្នកវាយ" + +msgid "You send" +msgstr "អ្នក​ផ្ញើ" + +msgid "Whole words only" +msgstr "តែ​ពាក្យ​ទាំង​មូល" + +msgid "Case sensitive" +msgstr "ប្រកាន់​អក្សរ​តូចធំ" + +msgid "Add a new text replacement" +msgstr "បន្ថែម​ការ​ជំនួស​អត្ថបទ​ថ្មី" + +msgid "You _type:" +msgstr "អ្នក​វាយ ៖" + +msgid "You _send:" +msgstr "អ្នកផ្ញើ ៖" + +#. Created here so it can be passed to whole_words_button_toggled. +msgid "_Exact case match (uncheck for automatic case handling)" +msgstr "ការ​ផ្គូផ្គង​ករណី​ជាក់លាក់ (ដោះធីក​សម្រាប់​ការ​គ្រប់គ្រង​ករណី​ដោ​យ​ស្វ័យ​ប្រវត្តិ)" + +msgid "Only replace _whole words" +msgstr "តែ​ការ​ជំនួស​ពាក្យ​ទាំង​មូលប៉ុណ្ណោះ" + +msgid "General Text Replacement Options" +msgstr "ជម្រើស​ជំនួស​អត្ថបទ​ទូទៅ" + +msgid "Enable replacement of last word on send" +msgstr "បើក​ការជំនួស​ពាក្យ​ចុងក្រោយ​នៅពេល​ផ្ញើ" + +msgid "Text replacement" +msgstr "កា​រជំនួស​អត្ថបទ" + +msgid "Replaces text in outgoing messages according to user-defined rules." +msgstr "ជំនួស​អត្ថបទ​នៅ​ក្នុង​សារ​ចេញ ដោយ​យោង​តាម​ក្បួន​កំណត់​ដោយ​អ្នកប្រើ ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Buddy Ticker" +msgstr "ការ​បន្លឺ​សំឡេង​របស់​មិត្តភក្ដិ" + +#. *< name +#. *< version +#. * summary +#. * description +msgid "A horizontal scrolling version of the buddy list." +msgstr "កំណែ​រមូរ​ផ្ដេក​របស់​បញ្ជីមិត្តភក្ដិ ។" + +msgid "Display Timestamps Every" +msgstr "បង្ហាញ​ត្រាពេលវេលា​រៀងរាល់" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Timestamp" +msgstr "ត្រា​ពេលវេលា" + +#. *< name +#. *< version +#. * summary +msgid "Display iChat-style timestamps" +msgstr "បង្ហាញ​ត្រាពេលវេលា​របស់ iChat-style" + +#. * description +msgid "Display iChat-style timestamps every N minutes." +msgstr "បង្ហាញ​ត្រា​ពេលវេលា​របស់ iChat-style រៀងរាល់ N នាទី ។" + +msgid "Timestamp Format Options" +msgstr "ជម្រើស​ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា" + +#, c-format +msgid "_Force 24-hour time format" +msgstr "បង្ខំ​ទ្រង់ទ្រាយ​ពេលវេលា​ ២៤- ម៉ោង" + +msgid "Show dates in..." +msgstr "បង្ហាញ​កាលបរិច្ឆេទ​ក្នុង..." + +msgid "Co_nversations:" +msgstr "ការ​សន្ទនា ៖" + +msgid "For delayed messages" +msgstr "សម្រាប់សារ​ដែលបានពន្យារ" + +msgid "For delayed messages and in chats" +msgstr "សម្រាប់សារ​ដែលបាន​ពន្យារ​ និង​ក្នុង​គំនូស​តាង" + +msgid "_Message Logs:" +msgstr "កំណត់​ហេតុ​សារ ៖" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Message Timestamp Formats" +msgstr "ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា​សារ" + +#. *< name +#. *< version +#. * summary +msgid "Customizes the message timestamp formats." +msgstr "ប្ដូរ​ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា​ផ្ទាល់ខ្លួន ។" + +#. * description +msgid "" +"This plugin allows the user to customize conversation and logging message " +"timestamp formats." +msgstr "" +"កម្មវិធី​ជំនួយ​នេះ​អនុញ្ញាត​ឲ្យ​អ្នកប្រើ​ប្ដូរ​ទ្រង់ទ្រាយ​​ការ​សន្ទនា និង​កា​រចុះ​កំណត់ហេតុ​សារ​ត្រាពេលវេលា​" +"ផ្ទាល់ខ្លួន ។" + +msgid "Opacity:" +msgstr "ភាព​ស្រអាប់ ៖" + +#. IM Convo trans options +msgid "IM Conversation Windows" +msgstr "បង្អួច​សន្ទនា IM" + +msgid "_IM window transparency" +msgstr "ភាពថ្លា​បង្អួច​របស់ IM" + +msgid "_Show slider bar in IM window" +msgstr "បង្ហាញ​របារ​គ្រាប់រំកិល​នៅ​ក្នុងបង្អួច IM" + +msgid "Remove IM window transparency on focus" +msgstr "យក​ភាព​ថ្លា​របស់​បង្អួច IM ចេញ​​នៅពេល​ផ្ដោត" + +msgid "Always on top" +msgstr "តែងតែ​នៅ​លើ​ជា​និច្ច" + +#. Buddy List trans options +msgid "Buddy List Window" +msgstr "បង្អួច​បញ្ជី​មិត្តភក្ដិ" + +msgid "_Buddy List window transparency" +msgstr "ភាព​ថ្លា​របស់បង្អួច​បញ្ជីមិត្តភក្ដិ" + +msgid "Remove Buddy List window transparency on focus" +msgstr "យក​ភាព​ថ្លា​របស់​បង្អួច​បញ្ជីមិត្តភក្ដិ​ចេញ​នៅពេល​ផ្ដោត" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "Transparency" +msgstr "ភាព​ថ្លា​" + +#. *< name +#. *< version +#. * summary +msgid "Variable Transparency for the buddy list and conversations." +msgstr "ភាព​ថ្លា​ដែល​មាន​សម្រាប់បញ្ជី​មិត្តភក្ដិ​ និង​ការសន្ទនា ។" + +#. * description +msgid "" +"This plugin enables variable alpha transparency on conversation windows and " +"the buddy list.\n" +"\n" +"* Note: This plugin requires Win2000 or greater." +msgstr "" +"កម្មវិធី​ជំនួយ​នេះ​បើក​ភាព​ថ្លា​អាល់ហ្វា​ដែល​អាច​ប្រើ​បាន​នៅ​ក្នុង​បង្អួច​សន្ទនា និង​បញ្ជីមិត្តភក្ដិ ។\n" +"\n" +"* ចំណាំ ៖ កម្មវិធី​ជំនួយ​នេះ​ត្រូវការ Win2000 ឬ​ខ្ពស់​ជាង​នេះ ។" + +msgid "GTK+ Runtime Version" +msgstr "កំណែ GTK+ Runtime" + +#. Autostart +msgid "Startup" +msgstr "ចាប់ផ្ដើម" + +#, c-format +msgid "_Start %s on Windows startup" +msgstr "ចាប់ផ្ដើម​ %s នៅពេល​បង្អួច​ចាប់ផ្ដើម" + +msgid "_Dockable Buddy List" +msgstr "បញ្ជី​មិត្តភ្ដិ​ដែល​អាច​ចូលផែ​បាន" + +#. Blist On Top +msgid "_Keep Buddy List window on top:" +msgstr "ទុក​បង្អួច​បញ្ជីមិត្តភក្ដិ​​នៅ​កំពូល ៖" + +#. XXX: Did this ever work? +msgid "Only when docked" +msgstr "តែ​នៅពេល​បានចូលផែ​ប៉ុណ្ណោះ" + +msgid "Windows Pidgin Options" +msgstr "ជម្រើស​​បង្អួច​របស់ Pidgin" + +msgid "Options specific to Pidgin for Windows." +msgstr "ជម្រើស​ជាក់លាក់​ទៅ Pidgin សម្រាប់​បង្អួច ។" + +msgid "" +"Provides options specific to Pidgin for Windows , such as buddy list docking." +msgstr "ផ្ដល់​នូវ​ជម្រើស​ជាក់លាក់​ទៅ Pidgin សម្រាប់​វីនដូច​ជា​បញ្ជី​មិត្តភក្ដិ​ចូលផែ ។" + +msgid "Logged out." +msgstr "បានចេញ ។" + +#. *< type +#. *< ui_requirement +#. *< flags +#. *< dependencies +#. *< priority +#. *< id +msgid "XMPP Console" +msgstr "កុងសូល XMPP" + +msgid "Account: " +msgstr "គណនី ៖" + +msgid "Not connected to XMPP" +msgstr "បានតភ្ជាប់​ទៅ​កាន់ XMPP" + +msgid "Insert an stanza." +msgstr "បញ្ចូល stanza ។" + +msgid "Insert a stanza." +msgstr "បញ្ចូល stanza ។" + +msgid "Insert a stanza." +msgstr "បញ្ចូល stanza ។" + +#. *< name +#. *< version +#. * summary +msgid "Send and receive raw XMPP stanzas." +msgstr "ផ្ញើ​ និង​ទទួល​ XMPP stanzas ដើម ។" + +#. * description +msgid "This plugin is useful for debbuging XMPP servers or clients." +msgstr "កម្មវិធី​ជំនួយ​នេះ​មានប្រយោជន៍​សម្រាប់បំបាត់​កំហុស​ម៉ាស៊ីនបម្រើ ឬ​ម៉ាស៊ីន​ភ្ញៀវ XMPP ។" diff -r a0668fbf2483 -r b98519a42e53 po/nb.po --- a/po/nb.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/nb.po Mon Mar 02 22:07:59 2009 +0000 @@ -14,10 +14,10 @@ msgstr "" "Project-Id-Version: nb\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-13 09:58-0500\n" -"PO-Revision-Date: 2009-01-14 01:45+0100\n" +"POT-Creation-Date: 2009-02-24 09:57-0500\n" +"PO-Revision-Date: 2009-02-24 18:47+0100\n" "Last-Translator: Hans Fredrik Nordhaug \n" -"Language-Team: Norsk \n" +"Language-Team: Norwegian Bokmål \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -39,7 +39,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -48,14 +48,20 @@ "Bruk: %s [Valg]...\n" "\n" " -c, --config=DIR bruk DIR for konfigurasjonsfiler\n" -" -d, --debug skriv debugging beskjeder til stdout\n" +" -d, --debug skriv feilsøkingsbeskjeder til stderr\n" " -h, --help vis denne hjelpen og avslutt\n" " -n, --nologin ikke logg automatisk inn\n" " -v, --version vis den nåværende versjon og avslutt\n" #, c-format -msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im" -msgstr "%s det inntraff en feil i migreringen av ditt oppsett fra %s til %s. Vennligst undersøk og gjør ferdig migreringen for hånd. Vennligst raporter denne feilen på http://developer.pidgin.im" +msgid "" +"%s encountered errors migrating your settings from %s to %s. Please " +"investigate and complete the migration by hand. Please report this error at " +"http://developer.pidgin.im" +msgstr "" +"%s det inntraff en feil i migreringen av ditt oppsett fra %s til %s. " +"Vennligst undersøk og gjør ferdig migreringen for hånd. Vennligst raporter " +"denne feilen på http://developer.pidgin.im" msgid "Error" msgstr "Feil" @@ -293,10 +299,12 @@ msgstr "Skriv tom streng for å resette navnet." msgid "Removing this contact will also remove all the buddies in the contact" -msgstr "Fjerning av denne kontakten vil også fjerne alle medlemmene i denne kontakten" +msgstr "" +"Fjerning av denne kontakten vil også fjerne alle medlemmene i denne kontakten" msgid "Removing this group will also remove all the buddies in the group" -msgstr "Fjerning av denne gruppen vil også fjerne alle kontaktene i denne gruppa" +msgstr "" +"Fjerning av denne gruppen vil også fjerne alle kontaktene i denne gruppa" #, c-format msgid "Are you sure you want to remove %s?" @@ -352,8 +360,12 @@ msgid "Unblock" msgstr "Ikke Blokker" -msgid "Please enter the username or alias of the person you would like to Block/Unblock." -msgstr "Skriv inn brukernavnet eller aliaset på den personen du vil blokkere/ikke blokkere." +msgid "" +"Please enter the username or alias of the person you would like to Block/" +"Unblock." +msgstr "" +"Skriv inn brukernavnet eller aliaset på den personen du vil blokkere/ikke " +"blokkere." #. Not multiline #. Not masked? @@ -362,10 +374,12 @@ msgstr "OK" msgid "New Instant Message" -msgstr "Ny direktemelding" +msgstr "Ny lynmelding" msgid "Please enter the username or alias of the person you would like to IM." -msgstr "Skriv inn brukernavnet eller aliaset på den personen du vil sende direktemelding til." +msgstr "" +"Skriv inn brukernavnet eller aliaset på den personen du vil sende " +"lynmelding til." msgid "Channel" msgstr "Kanal" @@ -379,15 +393,18 @@ msgid "Join" msgstr "Bli med" -msgid "Please enter the username or alias of the person whose log you would like to view." -msgstr "Skriv inn brukernavnet eller aliaset til den personen du vil se loggen til." +msgid "" +"Please enter the username or alias of the person whose log you would like to " +"view." +msgstr "" +"Skriv inn brukernavnet eller aliaset til den personen du vil se loggen til." #. Create the "Options" frame. msgid "Options" msgstr "Brukervalg" msgid "Send IM..." -msgstr "Send direktemelding..." +msgstr "Send lynmelding..." msgid "Block/Unblock..." msgstr "Blokker/ikke blokker ..." @@ -526,17 +543,23 @@ msgid "" "%s\n" "\n" -"Finch will not attempt to reconnect the account until you correct the error and re-enable the account." +"Finch will not attempt to reconnect the account until you correct the error " +"and re-enable the account." msgstr "" "%s\n" "\n" -"Finch vil ikke forsøke å koble kontoen til igjen før du har rettet på feilen og slått på kontoen igjen." +"Finch vil ikke forsøke å koble kontoen til igjen før du har rettet på feilen " +"og slått på kontoen igjen." msgid "Re-enable Account" msgstr "Reaktiver konto" -msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects." -msgstr "Denne kontoen er koblet av og du er ikke lenger med i denne samtalen. Du blir automatisk med i samtalen når kontoen kobler til igjen." +msgid "" +"The account has disconnected and you are no longer in this chat. You will be " +"automatically rejoined in the chat when the account reconnects." +msgstr "" +"Denne kontoen er koblet av og du er ikke lenger med i denne samtalen. Du " +"blir automatisk med i samtalen når kontoen kobler til igjen." msgid "No such command." msgstr "Ingen slik kommando." @@ -548,10 +571,10 @@ msgstr "Din kommando feilet av ukjent årsak." msgid "That command only works in chats, not IMs." -msgstr "Den kommandoen virker bare i samtalegrupper, ikke i direktemeldinger." +msgstr "Den kommandoen virker bare i samtalegrupper, ikke i lynmeldinger." msgid "That command only works in IMs, not chats." -msgstr "Den kommandoen virker bare i direktemeldinger, ikke samtalegrupper." +msgstr "Den kommandoen virker bare i lynmeldinger, ikke samtalegrupper." msgid "That command doesn't work on this protocol." msgstr "Denne kommandoen virker ikke på denne protokollen." @@ -579,10 +602,13 @@ msgstr "Du har forlatt denne samtalen." msgid "Logging started. Future messages in this conversation will be logged." -msgstr "Innlogging startet. Fremtidige beskjeder i denne samtalen vil bli logget." - -msgid "Logging stopped. Future messages in this conversation will not be logged." -msgstr "Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget." +msgstr "" +"Innlogging startet. Fremtidige beskjeder i denne samtalen vil bli logget." + +msgid "" +"Logging stopped. Future messages in this conversation will not be logged." +msgstr "" +"Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget." msgid "Send To" msgstr "Send til" @@ -644,21 +670,34 @@ "De følgende kommandoer er tilgjengelige i denne sammenhengen:\n" #, c-format -msgid "%s is not a valid message class. See '/help msgcolor' for valid message classes." -msgstr "%s er ingen gyldig beskjedklasse. Se «/help msgcolor» for gyldige beskjedklasser." +msgid "" +"%s is not a valid message class. See '/help msgcolor' for valid message " +"classes." +msgstr "" +"%s er ingen gyldig beskjedklasse. Se «/help msgcolor» for gyldige " +"beskjedklasser." #, c-format msgid "%s is not a valid color. See '/help msgcolor' for valid colors." msgstr "%s er ingen gyldig farge. Se «/help msgcolor» for gyldige farger." -msgid "say <message>: Send a message normally as if you weren't using a command." -msgstr "say <message>: Send en beskjed normalt som om du ikke brukte en kommando." +msgid "" +"say <message>: Send a message normally as if you weren't using a " +"command." +msgstr "" +"say <message>: Send en beskjed normalt som om du ikke brukte en " +"kommando." msgid "me <action>: Send an IRC style action to a buddy or chat." -msgstr "me <action>: Send en IRC stil handling til en kontakt eller samtale." - -msgid "debug <option>: Send various debug information to the current conversation." -msgstr "debug <option>: Send diverse debug informasjon til den pågående samtalen." +msgstr "" +"me <action>: Send en IRC stil handling til en kontakt eller samtale." + +msgid "" +"debug <option>: Send various debug information to the current " +"conversation." +msgstr "" +"debug <option>: Send diverse debug informasjon til den pågående " +"samtalen." msgid "clear: Clears the conversation scrollback." msgstr "clear: Renser samtale scrollback." @@ -687,8 +726,18 @@ msgid "statuses: Show the savedstatuses window." msgstr "statuses: Vis lagrede statuser i vindu." -msgid "msgcolor <class> <foreground> <background>: Set the color for different classes of messages in the conversation window.
<class>: receive, send, highlight, action, timestamp
<foreground/background>: black, red, green, blue, white, gray, darkgray, magenta, cyan, default

EXAMPLE:
msgcolor send cyan default" -msgstr "msgcolor <klasse> <forgrunn> <bakgrunn>: Velg fargene for de forskjellige beskjedklassene i samtalevinduet.
<klasse>: receive, send, highlight, action, timestamp
<forgrunn/bakgrunn>: black, red, green, blue, white, gray, darkgray, magenta, cyan, default

EKSEMPEL:
msgcolor send cyan default" +msgid "" +"msgcolor <class> <foreground> <background>: Set the color " +"for different classes of messages in the conversation window.
<" +"class>: receive, send, highlight, action, timestamp
<foreground/" +"background>: black, red, green, blue, white, gray, darkgray, magenta, " +"cyan, default

EXAMPLE:
msgcolor send cyan default" +msgstr "" +"msgcolor <klasse> <forgrunn> <bakgrunn>: Velg fargene for " +"de forskjellige beskjedklassene i samtalevinduet.
<klasse>: " +"receive, send, highlight, action, timestamp
<forgrunn/" +"bakgrunn>: black, red, green, blue, white, gray, darkgray, magenta, cyan, " +"default

EKSEMPEL:
msgcolor send cyan default" msgid "Unable to open file." msgstr "Klarte ikke åpne fil." @@ -790,14 +839,24 @@ msgid "%B %Y" msgstr "%B %Y" -msgid "System events will only be logged if the \"Log all status changes to system log\" preference is enabled." -msgstr "System hendelser vil bare bli logget om \"Logg alle status forandringer til system logg\" har blitt slått på." - -msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled." -msgstr "Direktemeldinger vil bare bli logget om \"Logg alle direktemeldinger\" har blitt slått på." - -msgid "Chats will only be logged if the \"Log all chats\" preference is enabled." -msgstr "Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på." +msgid "" +"System events will only be logged if the \"Log all status changes to system " +"log\" preference is enabled." +msgstr "" +"System hendelser vil bare bli logget om \"Logg alle status forandringer til " +"system logg\" har blitt slått på." + +msgid "" +"Instant messages will only be logged if the \"Log all instant messages\" " +"preference is enabled." +msgstr "" +"Lynmeldinger vil bare bli logget om \"Logg alle lynmeldinger\" har " +"blitt slått på." + +msgid "" +"Chats will only be logged if the \"Log all chats\" preference is enabled." +msgstr "" +"Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på." msgid "No logs were found" msgstr "Ingen logger ble funnet" @@ -855,7 +914,7 @@ msgstr "Fortsett" msgid "IM" -msgstr "Direktemelding" +msgstr "Lynmelding" msgid "(none)" msgstr "(uten navn)" @@ -900,8 +959,10 @@ msgid "The selected file is not a valid plugin." msgstr "Den valgte fila er ikke et gyldig tillegg." -msgid "Please open the debug window and try again to see the exact error message." -msgstr "Åpne feilsøkingsvinduet og prøv igjen for å se den eksakte feilmeldingen." +msgid "" +"Please open the debug window and try again to see the exact error message." +msgstr "" +"Åpne feilsøkingsvinduet og prøv igjen for å se den eksakte feilmeldingen." msgid "Select plugin to install" msgstr "Velg tillegg å installere" @@ -981,7 +1042,7 @@ msgstr "Handling" msgid "Open an IM window" -msgstr "Åpne vindu for direktemelding" +msgstr "Åpne vindu for lynmelding" msgid "Pop up a notification" msgstr "Varslingsvindu spretter opp" @@ -1057,6 +1118,7 @@ msgid "%s has sent you a message. (%s)" msgstr "%s har sendt deg en beskjed. (%s)" +#, c-format msgid "Unknown pounce event. Please report this!" msgstr "Ukjent varslingshendelse. Vennligst rapporter dette!" @@ -1102,7 +1164,6 @@ msgid "Change status to" msgstr "Endre status til" -#. Conversations msgid "Conversations" msgstr "Samtaler" @@ -1330,7 +1391,8 @@ msgstr "Kan ikke finne vindu" msgid "This plugin cannot be loaded because it was not built with X11 support." -msgstr "Dette tillegget kan ikke bli lastet fordi det ikke var bygd med X11 støtte." +msgstr "" +"Dette tillegget kan ikke bli lastet fordi det ikke var bygd med X11 støtte." msgid "GntClipboard" msgstr "GntClipboard" @@ -1338,8 +1400,12 @@ msgid "Clipboard plugin" msgstr "Utklipstavle tillegg" -msgid "When the gnt clipboard contents change, the contents are made available to X, if possible." -msgstr "Når innholdet i gnt clipboard forandres, vil innholdet bli gjort tilgjengelig for X, om mulig." +msgid "" +"When the gnt clipboard contents change, the contents are made available to " +"X, if possible." +msgstr "" +"Når innholdet i gnt clipboard forandres, vil innholdet bli gjort " +"tilgjengelig for X, om mulig." #, c-format msgid "%s just signed on" @@ -1398,11 +1464,13 @@ msgid "" "Logging can be enabled from Tools -> Preferences -> Logging.\n" "\n" -"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)." +"Enabling logs for instant messages and/or chats will activate history for " +"the same conversation type(s)." msgstr "" "Logging kan slås på gjennom Verktøy -> Innstillinger -> Logging.\n" "\n" -"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for den samme samtaletypen." +"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for " +"den samme samtaletypen." msgid "GntHistory" msgstr "GntHistorikk" @@ -1410,8 +1478,12 @@ msgid "Shows recently logged conversations in new conversations." msgstr "Viser tidligere loggede samtaler i nye samtaler." -msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation." -msgstr "Når en ny samtale startes, vil dette tillegget sette inn den forrige samtalen i den pågående." +msgid "" +"When a new conversation is opened this plugin will insert the last " +"conversation into the current conversation." +msgstr "" +"Når en ny samtale startes, vil dette tillegget sette inn den forrige " +"samtalen i den pågående." msgid "Online" msgstr "Pålogget" @@ -1570,8 +1642,12 @@ #. Prompt the user to authenticate the certificate #. vrq will be completed by user_auth #, c-format -msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked." -msgstr "Sertifikatet presentert av \"%s\" er sjøl signert. Det kan ikke bli automatisk sjekket." +msgid "" +"The certificate presented by \"%s\" is self-signed. It cannot be " +"automatically checked." +msgstr "" +"Sertifikatet presentert av \"%s\" er sjøl signert. Det kan ikke bli " +"automatisk sjekket." #, c-format msgid "The certificate chain presented for %s is not valid." @@ -1589,16 +1665,27 @@ msgstr "Ugyldig sertifikat lenke" #. vrq will be completed by user_auth -msgid "You have no database of root certificates, so this certificate cannot be validated." -msgstr "Du har ingen database av root sertifikater, så dette sertifikatet kan ikke bli validisert." +msgid "" +"You have no database of root certificates, so this certificate cannot be " +"validated." +msgstr "" +"Du har ingen database av root sertifikater, så dette sertifikatet kan ikke " +"bli validisert." #. vrq will be completed by user_auth -msgid "The root certificate this one claims to be issued by is unknown to Pidgin." -msgstr "Root sertifikatet som denne hevder å bli utstedt av er ukjent for Pidgin." - -#, c-format -msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature." -msgstr "Sertifikat lenken presentert av %s har ikke en gyldig digital signatur fra Sertifikat Myndigheten der den hevder å ha en signatur." +msgid "" +"The root certificate this one claims to be issued by is unknown to Pidgin." +msgstr "" +"Root sertifikatet som denne hevder å bli utstedt av er ukjent for Pidgin." + +#, c-format +msgid "" +"The certificate chain presented by %s does not have a valid digital " +"signature from the Certificate Authority from which it claims to have a " +"signature." +msgstr "" +"Sertifikat lenken presentert av %s har ikke en gyldig digital signatur fra " +"Sertifikat Myndigheten der den hevder å ha en signatur." msgid "Invalid certificate authority signature" msgstr "Ugyldig sertifikat myndighet signatur" @@ -1608,8 +1695,12 @@ #. being prompted #. vrq will be completed by user_auth #, c-format -msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead. This could mean that you are not connecting to the service you believe you are." -msgstr "Serifikatet presentert av \"%s\" hevder av være fra \"%s\" istedet. Dette kan bety at du ikke er tilkoblet til den tjenesten du tror du er." +msgid "" +"The certificate presented by \"%s\" claims to be from \"%s\" instead. This " +"could mean that you are not connecting to the service you believe you are." +msgstr "" +"Serifikatet presentert av \"%s\" hevder av være fra \"%s\" istedet. Dette " +"kan bety at du ikke er tilkoblet til den tjenesten du tror du er." #. Make messages #, c-format @@ -1736,6 +1827,7 @@ "Feil under lesing fra oppslagsprosessen:\n" "%s" +#, c-format msgid "Resolver process exited without answering our request" msgstr "Oppslagsprosess avsluttet uten å svare på vår forespørsel" @@ -1781,7 +1873,9 @@ #, c-format msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n" -msgstr "%s er ikke en vanlig fil. Pidgin nekter å overskrive den for å ikke risikere å ødelegge noe.\n" +msgstr "" +"%s er ikke en vanlig fil. Pidgin nekter å overskrive den for å ikke risikere " +"å ødelegge noe.\n" #, c-format msgid "%s wants to send you %s (%s)" @@ -1902,32 +1996,68 @@ msgid "The handler for \"ymsgr\" URLs" msgstr "Håndtereren for «ymsgr»-URLer" -msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «aim»-URLer." - -msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «gg»-URLer." - -msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «icq»-URLer." - -msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «irc»-URLer." - -msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «msnim»-URLer." - -msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «sip»-URLer." - -msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «xmpp»-URLer." - -msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs." -msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «ymsgr»-URLer." - -msgid "True if the command used to handle this type of URL should be run in a terminal." -msgstr "Sann hvis kommandoen som skal håndtere denne type URLer skal kjøres i en terminal." +msgid "" +"True if the command specified in the \"command\" key should handle \"aim\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «aim»-" +"URLer." + +msgid "" +"True if the command specified in the \"command\" key should handle \"gg\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «gg»-" +"URLer." + +msgid "" +"True if the command specified in the \"command\" key should handle \"icq\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «icq»-" +"URLer." + +msgid "" +"True if the command specified in the \"command\" key should handle \"irc\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «irc»-" +"URLer." + +msgid "" +"True if the command specified in the \"command\" key should handle \"msnim\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «msnim»-" +"URLer." + +msgid "" +"True if the command specified in the \"command\" key should handle \"sip\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «sip»-" +"URLer." + +msgid "" +"True if the command specified in the \"command\" key should handle \"xmpp\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «xmpp»-" +"URLer." + +msgid "" +"True if the command specified in the \"command\" key should handle \"ymsgr\" " +"URLs." +msgstr "" +"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «ymsgr»-" +"URLer." + +msgid "" +"True if the command used to handle this type of URL should be run in a " +"terminal." +msgstr "" +"Sann hvis kommandoen som skal håndtere denne type URLer skal kjøres i en " +"terminal." msgid "Whether the specified command should handle \"aim\" URLs" msgstr "Om den spesifike kommandoen skal håndtere «aim»-URLer" @@ -1972,12 +2102,20 @@ msgstr "XML" #, c-format -msgid "(%s) %s <AUTO-REPLY>: %s
\n" -msgstr "(%s) %s <STANDARDSVAR>: %s
\n" - -#, c-format -msgid "(%s) %s <AUTO-REPLY>: %s
\n" -msgstr "(%s) %s <STANDARDSVAR>: %s
\n" +msgid "" +"(%s) %s <AUTO-" +"REPLY>: %s
\n" +msgstr "" +"(%s) %s <" +"STANDARDSVAR>: %s
\n" + +#, c-format +msgid "" +"(%s) %s <AUTO-" +"REPLY>: %s
\n" +msgstr "" +"(%s) %s <" +"STANDARDSVAR>: %s
\n" msgid "Unable to find log path!" msgstr "Klarte ikke finne banen til loggen!" @@ -2005,12 +2143,19 @@ msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" msgstr "ABI versjon mismatch %d.%d.x (trenger %d.%d.x)" -msgid "Plugin does not implement all required functions (list_icon, login and close)" -msgstr "Tillegget implenterer ikke alle funksjoner som kreves (list_icon, login og close)" - -#, c-format -msgid "The required plugin %s was not found. Please install this plugin and try again." -msgstr "Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og prøv igjen." +msgid "" +"Plugin does not implement all required functions (list_icon, login and close)" +msgstr "" +"Tillegget implenterer ikke alle funksjoner som kreves (list_icon, login og " +"close)" + +#, c-format +msgid "" +"The required plugin %s was not found. Please install this plugin and try " +"again." +msgstr "" +"Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og " +"prøv igjen." msgid "Unable to load the plugin" msgstr "Klarte ikke å laste tillegget" @@ -2112,7 +2257,8 @@ #. *< summary msgid "Adds the option to store notes for buddies on your buddy list." -msgstr "Legger til muligheten for å lagre notater for kompiser i kompislisten din." +msgstr "" +"Legger til muligheten for å lagre notater for kompiser i kompislisten din." #. *< type #. *< ui_requirement @@ -2210,8 +2356,12 @@ msgstr "Test IPC-støtte for tillegg (som klient)." #. * description -msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered." -msgstr "Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og kaller de registrerte kommandoene." +msgid "" +"Test plugin IPC support, as a client. This locates the server plugin and " +"calls the commands registered." +msgstr "" +"Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og " +"kaller de registrerte kommandoene." # #. *< type @@ -2231,7 +2381,8 @@ #. * description msgid "Test plugin IPC support, as a server. This registers the IPC commands." -msgstr "Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene." +msgstr "" +"Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene." msgid "Join/Part Hiding Configuration" msgstr "Innstilling for å skjule bli med-/forlat-tilstander" @@ -2261,8 +2412,12 @@ msgstr "Skjul fremmede join/part beskjeder." #. * description -msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation." -msgstr "Denne plugin skjuler join/part beskjeder i store rom, untatt for de brukerne som aktivt deltar i en samtale." +msgid "" +"This plugin hides join/part messages in large rooms, except for those users " +"actively taking part in a conversation." +msgstr "" +"Denne plugin skjuler join/part beskjeder i store rom, untatt for de brukerne " +"som aktivt deltar i en samtale." #. This is used in the place of a timezone abbreviation if the #. * offset is way off. The user should never really see it, but @@ -2287,8 +2442,12 @@ msgid "You were disconnected from the server." msgstr "Du har blitt koblet fra tjeneren." -msgid "You are currently disconnected. Messages will not be received unless you are logged in." -msgstr "Du er for tiden avlogget. Beskjeder vil ikke bli mottatt uten at du er innlogget." +msgid "" +"You are currently disconnected. Messages will not be received unless you are " +"logged in." +msgstr "" +"Du er for tiden avlogget. Beskjeder vil ikke bli mottatt uten at du er " +"innlogget." msgid "Message could not be sent because the maximum length was exceeded." msgstr "Meldingen kunne ikke bli sendt fordi max lengde ble overskredet." @@ -2370,13 +2529,18 @@ #. * description msgid "" -"When viewing logs, this plugin will include logs from other IM clients. Currently, this includes Adium, MSN Messenger, and Trillian.\n" +"When viewing logs, this plugin will include logs from other IM clients. " +"Currently, this includes Adium, MSN Messenger, and Trillian.\n" "\n" -"WARNING: This plugin is still alpha code and may crash frequently. Use it at your own risk!" -msgstr "" -"Når man ser på logger, vil dette tillegget inkludere logger fra andre lynmeldingsklienter. For tiden inkluderer dette Adium, MSN Messenger og Trillian.\n" +"WARNING: This plugin is still alpha code and may crash frequently. Use it " +"at your own risk!" +msgstr "" +"Når man ser på logger, vil dette tillegget inkludere logger fra andre " +"lynmeldingsklienter. For tiden inkluderer dette Adium, MSN Messenger og " +"Trillian.\n" "\n" -"ADVARSEL: Dette tillegget er enda alpha kode og kan krasje ofte. Bruk den på egen risiko!" +"ADVARSEL: Dette tillegget er enda alpha kode og kan krasje ofte. Bruk den " +"på egen risiko!" # msgid "Mono Plugin Loader" @@ -2386,7 +2550,7 @@ msgstr "Laster .NET tillegg med Mono." msgid "Add new line in IMs" -msgstr "Legg til linjeskift i direktemeldinger." +msgstr "Legg til linjeskift i lynmeldinger." msgid "Add new line in Chats" msgstr "Legg til linjeskift i samtaler" @@ -2409,8 +2573,12 @@ msgstr "Setter inn en ny linje foran viste beskjeder." #. *< summary -msgid "Prepends a newline to messages so that the rest of the message appears below the username in the conversation window." -msgstr "Setter inn en ny linje foran beskjeder sånn at resten av teksten kommer frem under brukernavnet i samtalevinduet." +msgid "" +"Prepends a newline to messages so that the rest of the message appears below " +"the username in the conversation window." +msgstr "" +"Setter inn en ny linje foran beskjeder sånn at resten av teksten kommer frem " +"under brukernavnet i samtalevinduet." msgid "Offline Message Emulation" msgstr "Emulering av avlogget-beskjed" @@ -2418,12 +2586,20 @@ msgid "Save messages sent to an offline user as pounce." msgstr "Lagre beskjeder sendt til en avlogget bruker som pounce." -msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog." -msgstr "Resten av beskjedene vil bli lagret som varsling. Du kan forandre/slette varslingen fra kontaktvarslingsdialogen." - -#, c-format -msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?" -msgstr "\"%s\" er for tiden avlogget. Vil du lagre resten av beskjeden i en varsling og automatisk sende den når \"%s\" logger inn igjen?" +msgid "" +"The rest of the messages will be saved as pounce. You can edit/delete the " +"pounce from the `Buddy Pounce' dialog." +msgstr "" +"Resten av beskjedene vil bli lagret som varsling. Du kan forandre/slette " +"varslingen fra kontaktvarslingsdialogen." + +#, c-format +msgid "" +"\"%s\" is currently offline. Do you want to save the rest of the messages in " +"a pounce and automatically send them when \"%s\" logs back in?" +msgstr "" +"\"%s\" er for tiden avlogget. Vil du lagre resten av beskjeden i en varsling " +"og automatisk sende den når \"%s\" logger inn igjen?" msgid "Offline Message" msgstr "Avlogget beskjed" @@ -2464,8 +2640,12 @@ msgid "Psychic mode for incoming conversation" msgstr "Synsk modus for innkommende samtale" -msgid "Causes conversation windows to appear as other users begin to message you. This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" -msgstr "Gjør at samtalevinduet dukker opp idet andre brukere begynner å sende beskjed til deg. Dette fungerer for AIM, ICQ, XMPP, Sametime og Yahoo!" +msgid "" +"Causes conversation windows to appear as other users begin to message you. " +"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" +msgstr "" +"Gjør at samtalevinduet dukker opp idet andre brukere begynner å sende " +"beskjed til deg. Dette fungerer for AIM, ICQ, XMPP, Sametime og Yahoo!" msgid "You feel a disturbance in the force..." msgstr "You feel a disturbance in the force..." @@ -2612,8 +2792,12 @@ #. *< version #. * summary #. * description -msgid "Notifies in a conversation window when a buddy goes or returns from away or idle." -msgstr "Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller returnerer." +msgid "" +"Notifies in a conversation window when a buddy goes or returns from away or " +"idle." +msgstr "" +"Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller " +"returnerer." # msgid "Tcl Plugin Loader" @@ -2623,19 +2807,28 @@ msgid "Provides support for loading Tcl plugins" msgstr "Lar deg laste Tcl-tillegg" -msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n" -msgstr "Klarte ikke finne en ActiveTCL installasjon. Om du ønsker å bruke TCL tillegg, installer ActiveTCL fra http://www.activestate.com\n" - -msgid "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d.pidgin.im/BonjourWindows for more information." -msgstr "Fant ikke verktøysamlingen til Apple Bonjour for Windows. Du finner flere opplysninger på adressa http://d.pidgin.im/BonjourWindows." +msgid "" +"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, " +"install ActiveTCL from http://www.activestate.com\n" +msgstr "" +"Klarte ikke finne en ActiveTCL installasjon. Om du ønsker å bruke TCL " +"tillegg, installer ActiveTCL fra http://www.activestate.com\n" + +msgid "" +"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d." +"pidgin.im/BonjourWindows for more information." +msgstr "" +"Fant ikke verktøysamlingen til Apple Bonjour for Windows. Du finner flere " +"opplysninger på adressa http://d.pidgin.im/BonjourWindows." msgid "Unable to listen for incoming IM connections\n" msgstr "Klarte ikke lage ny tilkobling\n" -msgid "Unable to establish connection with the local mDNS server. Is it running?" -msgstr "Klarte ikke etablere kontakt med den lokale mDNS serveren. Er den igang?" - -#. Creating the options for the protocol +msgid "" +"Unable to establish connection with the local mDNS server. Is it running?" +msgstr "" +"Klarte ikke etablere kontakt med den lokale mDNS serveren. Er den igang?" + msgid "First name" msgstr "Fornavn" @@ -2668,6 +2861,10 @@ msgid "Purple Person" msgstr "Purple-person" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "Lokal port" + msgid "Bonjour" msgstr "Bonjour" @@ -2693,7 +2890,9 @@ msgid "Invalid proxy settings" msgstr "Ugyldige proxyinnstilinger" -msgid "Either the host name or port number specified for your given proxy type is invalid." +msgid "" +"Either the host name or port number specified for your given proxy type is " +"invalid." msgstr "Det spesifiserte maskinnavnet eller portnummeret for proxy er ugyldig." msgid "Token Error" @@ -3154,11 +3353,19 @@ msgid "Invalid nickname" msgstr "Ugyldig brukernavn" -msgid "Your selected nickname was rejected by the server. It probably contains invalid characters." -msgstr "Ditt valgte kallenavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn." - -msgid "Your selected account name was rejected by the server. It probably contains invalid characters." -msgstr "Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn." +msgid "" +"Your selected nickname was rejected by the server. It probably contains " +"invalid characters." +msgstr "" +"Ditt valgte kallenavn ble avvist av tjeneren. Sannsynligvis inneholder det " +"ugyldige tegn." + +msgid "" +"Your selected account name was rejected by the server. It probably contains " +"invalid characters." +msgstr "" +"Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det " +"ugyldige tegn." msgid "Cannot change nick" msgstr "Kan ikke endre kallenavn" @@ -3194,8 +3401,12 @@ msgid "action <action to perform>: Perform an action." msgstr "action <action to perform>: Utfør noe." -msgid "away [message]: Set an away message, or use no message to return from being away." -msgstr "away [melding]: Sett en melding som skal vises når du er fraværende, eller ikke sett noen for å returnere." +msgid "" +"away [message]: Set an away message, or use no message to return from being " +"away." +msgstr "" +"away [melding]: Sett en melding som skal vises når du er fraværende, eller " +"ikke sett noen for å returnere." msgid "ctcp : sends ctcp msg to nick." msgstr "ctcp : sender ctcp beskjed til kallenavn." @@ -3203,26 +3414,56 @@ msgid "chanserv: Send a command to chanserv" msgstr "chanserv: Send en kommando til chanserv" -msgid "deop <nick1> [nick2] ...: Remove channel operator status from someone. You must be a channel operator to do this." -msgstr "deop <nick1> [nick2] ...: Fjern kanal OP status fra noen. Du må være kanal OP for å gjøre dette." - -msgid "devoice <nick1> [nick2] ...: Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this." -msgstr "devoice <nick1> [nick2] ...: Fjern kanal voice status fra noen, hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for å gjøre dette." - -msgid "invite <nick> [room]: Invite someone to join you in the specified channel, or the current channel." -msgstr "invite <nick> [room]: Inviter noen til å joine deg i spsifisert kanel eller den nåværende kanalen." - -msgid "j <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more channels, optionally providing a channel key for each if needed." -msgstr "j <room1>[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig." - -msgid "join <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more channels, optionally providing a channel key for each if needed." -msgstr "join <room1>[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig." - -msgid "kick <nick> [message]: Remove someone from a channel. You must be a channel operator to do this." -msgstr "kick <nick> [message]: Fjern noen fra en kanal. Du må være kanal OP for å gjøre dette." - -msgid "list: Display a list of chat rooms on the network. Warning, some servers may disconnect you upon doing this." -msgstr "list: Vis en liste over samtalerom på nettverket. Advarsel, noen tjenere kan koble fra om du gjør dette." +msgid "" +"deop <nick1> [nick2] ...: Remove channel operator status from " +"someone. You must be a channel operator to do this." +msgstr "" +"deop <nick1> [nick2] ...: Fjern kanal OP status fra noen. Du må være " +"kanal OP for å gjøre dette." + +msgid "" +"devoice <nick1> [nick2] ...: Remove channel voice status from " +"someone, preventing them from speaking if the channel is moderated (+m). You " +"must be a channel operator to do this." +msgstr "" +"devoice <nick1> [nick2] ...: Fjern kanal voice status fra noen, " +"hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for " +"å gjøre dette." + +msgid "" +"invite <nick> [room]: Invite someone to join you in the specified " +"channel, or the current channel." +msgstr "" +"invite <nick> [room]: Inviter noen til å joine deg i spsifisert kanel " +"eller den nåværende kanalen." + +msgid "" +"j <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " +"channels, optionally providing a channel key for each if needed." +msgstr "" +"j <room1>[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller flere " +"kanaler, alternativt gi en nøkkel for hver om nødvendig." + +msgid "" +"join <room1>[,room2][,...] [key1[,key2][,...]]: Enter one or more " +"channels, optionally providing a channel key for each if needed." +msgstr "" +"join <room1>[,room2][,...] [key1[,key2][,...]]: Fyll inn en eller " +"flere kanaler, alternativt gi en nøkkel for hver om nødvendig." + +msgid "" +"kick <nick> [message]: Remove someone from a channel. You must be a " +"channel operator to do this." +msgstr "" +"kick <nick> [message]: Fjern noen fra en kanal. Du må være kanal OP " +"for å gjøre dette." + +msgid "" +"list: Display a list of chat rooms on the network. Warning, some servers " +"may disconnect you upon doing this." +msgstr "" +"list: Vis en liste over samtalerom på nettverket. Advarsel, noen tjenere " +"kan koble fra om du gjør dette." msgid "me <action to perform>: Perform an action." msgstr "me <action to perform>: Utfør noe." @@ -3230,11 +3471,18 @@ msgid "memoserv: Send a command to memoserv" msgstr "memoserv: Send en kommando til memoserv" -msgid "mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel or user mode." -msgstr "mode <+|-><A-Za-z> <nick|channel>: Sett er fjern en kanal eller bruker modus." - -msgid "msg <nick> <message>: Send a private message to a user (as opposed to a channel)." -msgstr "msg <nick> <message>: Send en privat beskjed til en bruker." +msgid "" +"mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel " +"or user mode." +msgstr "" +"mode <+|-><A-Za-z> <nick|channel>: Sett er fjern en kanal " +"eller bruker modus." + +msgid "" +"msg <nick> <message>: Send a private message to a user (as " +"opposed to a channel)." +msgstr "" +"msg <nick> <message>: Send en privat beskjed til en bruker." msgid "names [channel]: List the users currently in a channel." msgstr "names [channel]: Vis brukere i denne kanalen." @@ -3248,23 +3496,41 @@ msgid "notice <target<: Send a notice to a user or channel." msgstr "notice <mål>: Send en varsling til en bruker eller kanal." -msgid "op <nick1> [nick2] ...: Grant channel operator status to someone. You must be a channel operator to do this." -msgstr "op <nick1> [nick2] ...: Tillat OP status til noen. Du må være kanal OP for å gjøre dette." - -msgid "operwall <message>: If you don't know what this is, you probably can't use it." -msgstr "operwall <message>: Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke dette." +msgid "" +"op <nick1> [nick2] ...: Grant channel operator status to someone. You " +"must be a channel operator to do this." +msgstr "" +"op <nick1> [nick2] ...: Tillat OP status til noen. Du må være kanal " +"OP for å gjøre dette." + +msgid "" +"operwall <message>: If you don't know what this is, you probably " +"can't use it." +msgstr "" +"operwall <message>: Om du ikke vet hva dette er, kan du sannsynligvis " +"ikke bruke dette." msgid "operserv: Send a command to operserv" msgstr "operserv: Send en kommando til operserv" -msgid "part [room] [message]: Leave the current channel, or a specified channel, with an optional message." -msgstr "part [room] [message]: Forlat nåværende kanal eller en spesifisert kanal med en beskjed." - -msgid "ping [nick]: Asks how much lag a user (or the server if no user specified) has." +msgid "" +"part [room] [message]: Leave the current channel, or a specified channel, " +"with an optional message." +msgstr "" +"part [room] [message]: Forlat nåværende kanal eller en spesifisert kanal " +"med en beskjed." + +msgid "" +"ping [nick]: Asks how much lag a user (or the server if no user specified) " +"has." msgstr "ping [nick]: Send ping til en bruker." -msgid "query <nick> <message>: Send a private message to a user (as opposed to a channel)." -msgstr "query <nick> <message>: Send en privat beskjed til en bruker (vises ikke i kanal)." +msgid "" +"query <nick> <message>: Send a private message to a user (as " +"opposed to a channel)." +msgstr "" +"query <nick> <message>: Send en privat beskjed til en bruker " +"(vises ikke i kanal)." msgid "quit [message]: Disconnect from the server, with an optional message." msgstr "quit [message]: Disconnect fra server, med evt. beskjed." @@ -3272,8 +3538,12 @@ msgid "quote [...]: Send a raw command to the server." msgstr "quote [...]: Send en rå kommando til serveren." -msgid "remove <nick> [message]: Remove someone from a room. You must be a channel operator to do this." -msgstr "remove <nick> [message]: Fjern noen fra et rom. Du må være kanal OP for å gjøre dette." +msgid "" +"remove <nick> [message]: Remove someone from a room. You must be a " +"channel operator to do this." +msgstr "" +"remove <nick> [message]: Fjern noen fra et rom. Du må være kanal OP " +"for å gjøre dette." msgid "time: Displays the current local time at the IRC server." msgstr "time: Vis nåværende lokaltid på IRC serveren." @@ -3287,17 +3557,26 @@ msgid "version [nick]: send CTCP VERSION request to a user" msgstr "versjon [nick]: send CTCP VERSION forespørsel til en bruker" -msgid "voice <nick1> [nick2] ...: Grant channel voice status to someone. You must be a channel operator to do this." -msgstr "voice <nick1> [nick2] ...: Gi voice til noen. Du må være kanal OP for å gjøre dette." - -msgid "wallops <message>: If you don't know what this is, you probably can't use it." -msgstr "wallops <message>: Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke det." +msgid "" +"voice <nick1> [nick2] ...: Grant channel voice status to someone. You " +"must be a channel operator to do this." +msgstr "" +"voice <nick1> [nick2] ...: Gi voice til noen. Du må være kanal OP for " +"å gjøre dette." + +msgid "" +"wallops <message>: If you don't know what this is, you probably can't " +"use it." +msgstr "" +"wallops <message>: Om du ikke vet hva dette er, kan du sannsynligvis " +"ikke bruke det." msgid "whois [server] <nick>: Get information on a user." msgstr "whois [server] <nick>: Hent informasjon om en bruker." msgid "whowas <nick>: Get information on a user that has logged off." -msgstr "whowas <kallenavn>: Hent informasjon om en bruker som har logget av." +msgstr "" +"whowas <kallenavn>: Hent informasjon om en bruker som har logget av." #, c-format msgid "Reply time from %s: %lu seconds" @@ -3322,17 +3601,25 @@ msgstr "utfør" msgid "Server requires TLS/SSL for login. No TLS/SSL support found." -msgstr "Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke funnet." +msgstr "" +"Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke " +"funnet." msgid "You require encryption, but no TLS/SSL support found." msgstr "Du krever kryptering, men ingen støtte for TLS/SSL ble funnet." msgid "Server requires plaintext authentication over an unencrypted stream" -msgstr "Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert forbindelse" - -#, c-format -msgid "%s requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?" -msgstr "%s krever autentisering i klartekst over eit ukryptert samband. Vil du tillate dette og fortsett med autentiseringen?" +msgstr "" +"Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert " +"forbindelse" + +#, c-format +msgid "" +"%s requires plaintext authentication over an unencrypted connection. Allow " +"this and continue authentication?" +msgstr "" +"%s krever autentisering i klartekst over eit ukryptert samband. Vil du " +"tillate dette og fortsett med autentiseringen?" msgid "Plaintext Authentication" msgstr "Identitetsbekreftelse i ren tekst" @@ -3402,8 +3689,12 @@ msgid "Edit XMPP vCard" msgstr "Rediger vCard for XMPP" -msgid "All items below are optional. Enter only the information with which you feel comfortable." -msgstr "Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den informasjonen du ønsker." +msgid "" +"All items below are optional. Enter only the information with which you feel " +"comfortable." +msgstr "" +"Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den " +"informasjonen du ønsker." msgid "Client" msgstr "Klient" @@ -3632,8 +3923,12 @@ msgstr "Følgende resultat fra ditt søk" #. current comment from Jabber User Directory users.jabber.org -msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)" -msgstr "Finn en kontakt ved å skrive inn søkekriterier i gitte felter. NB: Hvert felt har støtte for wild card søk (%)" +msgid "" +"Find a contact by entering the search criteria in the given fields. Note: " +"Each field supports wild card searches (%)" +msgstr "" +"Finn en kontakt ved å skrive inn søkekriterier i gitte felter. NB: Hvert " +"felt har støtte for wild card søk (%)" msgid "Directory Query Failed" msgstr "Mappeforespørsel feilet" @@ -3740,7 +4035,8 @@ msgstr "Finn samtalerom" msgid "You require encryption, but it is not available on this server." -msgstr "Du krever kryptering, men det er ikke støtte for det på denne serveren." +msgstr "" +"Du krever kryptering, men det er ikke støtte for det på denne serveren." msgid "Write error" msgstr "Feil ved skriving" @@ -3810,7 +4106,8 @@ msgid "Unregister" msgstr "Avregistrer" -msgid "Please fill out the information below to change your account registration." +msgid "" +"Please fill out the information below to change your account registration." msgstr "Fyll ut feltene under for å endre din kontoregistrering." msgid "Please fill out the information below to register your new account." @@ -4168,11 +4465,19 @@ msgid "ban <user> [reason]: Ban a user from the room." msgstr "ban <bruker> [grunn]: Forby en bruker fra rommet." -msgid "affiliate <user> <owner|admin|member|outcast|none>: Set a user's affiliation with the room." -msgstr "Knytt <bruker> <eier|admin|medlem|utstøtt|ingen>: Sett en brukers tilknyting til rommet." - -msgid "role <user> <moderator|participant|visitor|none>: Set a user's role in the room." -msgstr "rolle <user> <moderator|deltaker|besøkende|ingen>: Sett en brukers rolle i rommet." +msgid "" +"affiliate <user> <owner|admin|member|outcast|none>: Set a user's " +"affiliation with the room." +msgstr "" +"Knytt <bruker> <eier|admin|medlem|utstøtt|ingen>: Sett en " +"brukers tilknyting til rommet." + +msgid "" +"role <user> <moderator|participant|visitor|none>: Set a user's " +"role in the room." +msgstr "" +"rolle <user> <moderator|deltaker|besøkende|ingen>: Sett en " +"brukers rolle i rommet." msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <bruker> [rom]: Inviter en bruker til rommet." @@ -4183,8 +4488,11 @@ msgid "kick <user> [reason]: Kick a user from the room." msgstr "kick <bruker> [grunn]: Spark en bruker ut av rommet." -msgid "msg <user> <message>: Send a private message to another user." -msgstr "msg <bruker> <melding>: Send en privatmelding til en annen bruker." +msgid "" +"msg <user> <message>: Send a private message to another user." +msgstr "" +"msg <bruker> <melding>: Send en privatmelding til en annen " +"bruker." msgid "ping <jid>:\tPing a user/component/server." msgstr "ping <jid>:\tPing en bruker/komponent/server." @@ -4272,8 +4580,12 @@ msgid "Create New Room" msgstr "Skap nytt samtalerom" -msgid "You are creating a new room. Would you like to configure it, or accept the default settings?" -msgstr "Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller bruke standardinnstillingene?" +msgid "" +"You are creating a new room. Would you like to configure it, or accept the " +"default settings?" +msgstr "" +"Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller " +"bruke standardinnstillingene?" msgid "_Configure Room" msgstr "_Konfigurer rom" @@ -4333,8 +4645,12 @@ msgid "Please specify a new nickname for you." msgstr "Oppgi et nytt kallenavn for deg." -msgid "This information is visible to all contacts on your contact list, so choose something appropriate." -msgstr "Denne informasjonen vises til alle dine kontakter i kontaktlisten din, så velg noe passende." +msgid "" +"This information is visible to all contacts on your contact list, so choose " +"something appropriate." +msgstr "" +"Denne informasjonen vises til alle dine kontakter i kontaktlisten din, så " +"velg noe passende." msgid "Set Nickname..." msgstr "Sett Nick..." @@ -4345,9 +4661,6 @@ msgid "Select an action" msgstr "Velg en handling" -msgid "Unable to retrieve MSN Address Book" -msgstr "Klarte ikke hente MSN-adressebok" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it @@ -4366,172 +4679,233 @@ msgstr "Synkronisasjonsproblem med kontaktlisten i %s (%s)" #, c-format -msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?" -msgstr "%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?" - -#, c-format -msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?" -msgstr "%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?" - +msgid "" +"%s on the local list is inside the group \"%s\" but not on the server list. " +"Do you want this buddy to be added?" +msgstr "" +"%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. " +"Ønsker du at denne kontakten skal bli lagt til?" + +#, c-format +msgid "" +"%s is on the local list but not on the server list. Do you want this buddy " +"to be added?" +msgstr "" +"%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne " +"kontakten skal bli lagt til?" + +#, c-format msgid "Unable to parse message" msgstr "Klarte ikke tolke beskjed" +#, c-format msgid "Syntax Error (probably a client bug)" msgstr "Syntaksfeil (sannsynligvis en Pidgin-bug)" +#, c-format msgid "Invalid email address" msgstr "Ugyldig epostadresse" +#, c-format msgid "User does not exist" msgstr "Brukeren eksisterer ikke" +#, c-format msgid "Fully qualified domain name missing" msgstr "Fullstending domenenavn mangler" +#, c-format msgid "Already logged in" msgstr "Allerede logget inn" +#, c-format msgid "Invalid username" msgstr "Ugyldig brukernavn" +#, c-format msgid "Invalid friendly name" msgstr "Ugyldig vennlig navn" +#, c-format msgid "List full" msgstr "Listen er full" +#, c-format msgid "Already there" msgstr "Du er allerede der" +#, c-format msgid "Not on list" msgstr "Ikke på listen" +#, c-format msgid "User is offline" msgstr "Brukeren er avlogget" +#, c-format msgid "Already in the mode" msgstr "Du er allerede i modusen" +#, c-format msgid "Already in opposite list" msgstr "Du er allerede i den andre listen" +#, c-format msgid "Too many groups" msgstr "For mange grupper" +#, c-format msgid "Invalid group" msgstr "Ugyldig gruppe" +#, c-format msgid "User not in group" msgstr "Brukeren er ikke i gruppen" +#, c-format msgid "Group name too long" msgstr "Gruppenavnet er for langt" +#, c-format msgid "Cannot remove group zero" msgstr "Kan ikke fjerne gruppe null" +#, c-format msgid "Tried to add a user to a group that doesn't exist" msgstr "Prøvde å legge en bruker til i en ikke-eksisterende gruppe" +#, c-format msgid "Switchboard failed" msgstr "Feil med switchboard-tjenesten" +#, c-format msgid "Notify transfer failed" msgstr "Overføring av varsling feilet" +#, c-format msgid "Required fields missing" msgstr "Du har ikke fylt inn alle nødvendige felt" +#, c-format msgid "Too many hits to a FND" msgstr "For mange treff på en FND" +#, c-format msgid "Not logged in" msgstr "Ikke pålogget" +#, c-format msgid "Service temporarily unavailable" msgstr "Tjenesten midlertidig uttilgjengelig" +#, c-format msgid "Database server error" msgstr "Feil på databasetjeneren" +#, c-format msgid "Command disabled" msgstr "Kommando deaktivert" +#, c-format msgid "File operation error" msgstr "Filoperasjonsfeil" +#, c-format msgid "Memory allocation error" msgstr "Feil ved minneallokering" +#, c-format msgid "Wrong CHL value sent to server" msgstr "Feil CHL-verdi sendt til tjener" +#, c-format msgid "Server busy" msgstr "Tjeneren er opptatt" +#, c-format msgid "Server unavailable" msgstr "Tjeneren er ikke tilgjengelig" +#, c-format msgid "Peer notification server down" msgstr "Varslingstjeneren er ikke tilgjengelig" +#, c-format msgid "Database connect error" msgstr "Klarte ikke koble til databasen" +#, c-format msgid "Server is going down (abandon ship)" msgstr "Tjeneren er på vei nei (redde seg den som kan)" +#, c-format msgid "Error creating connection" msgstr "Feil: kunne ikke koble til" +#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "CVR-parametre er enten ukjent eller ikke tillatt" +#, c-format msgid "Unable to write" msgstr "Klarte ikke skrive" +#, c-format msgid "Session overload" msgstr "Sesjonsoverlast" +#, c-format msgid "User is too active" msgstr "Brukeren er for aktiv" +#, c-format msgid "Too many sessions" msgstr "For mange sesjoner" +#, c-format msgid "Passport not verified" msgstr "Passport-konto er ikke blitt verifisert" +#, c-format msgid "Bad friend file" msgstr "Ugyldig 'friend'-fil" +#, c-format msgid "Not expected" msgstr "Uventet" +#, c-format msgid "Friendly name changes too rapidly" msgstr "Visningsnavnet endres for raskt" +#, c-format msgid "Server too busy" msgstr "Tjeneren er for opptatt" +#, c-format msgid "Authentication failed" msgstr "Autentisering feilet" +#, c-format msgid "Not allowed when offline" msgstr "Ikke tillatt når avlogget" +#, c-format msgid "Not accepting new users" msgstr "Nye brukere vil ikke bli godtatt" +#, c-format msgid "Kids Passport without parental consent" msgstr "Passport for barn, men har ikke foreldregodkjenning" +#, c-format msgid "Passport account not yet verified" msgstr "Passport-konto er ikke blitt verifisert enda" msgid "Passport account suspended" msgstr "Passport-konto inndratt" +#, c-format msgid "Bad ticket" msgstr "Bad ticket" @@ -4548,7 +4922,7 @@ msgstr "Andre kontakter" msgid "Non-IM Contacts" -msgstr "Ikke-direktemeldingskontakter" +msgstr "Ikke-lynmeldingskontakter" msgid "Nudge" msgstr "Dytt" @@ -4585,8 +4959,11 @@ msgid "Allow MSN Mobile pages?" msgstr "Tillat tekstmeldinger via MSN?" -msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?" -msgstr "Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?" +msgid "" +"Do you want to allow or disallow people on your buddy list to send you MSN " +"Mobile pages to your cell phone or other mobile device?" +msgstr "" +"Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?" msgid "Allow" msgstr "Tillat" @@ -4602,7 +4979,8 @@ msgstr "Ingen tekst blokkert for denne kontoen." #, c-format -msgid "MSN servers are currently blocking the following regular expressions:
%s" +msgid "" +"MSN servers are currently blocking the following regular expressions:
%s" msgstr "MSN-tjenere blokkerer for øyeblikket følgende regulære uttrykk:
%s" msgid "This account does not have email enabled." @@ -4693,7 +5071,8 @@ msgstr "Start gruppesamtale" msgid "SSL support is needed for MSN. Please install a supported SSL library." -msgstr "SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek." +msgstr "" +"SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek." msgid "Failed to connect to server." msgstr "Klarte ikke koble til tjener." @@ -4808,19 +5187,19 @@ msgstr "Arbeidsadresse" msgid "Work Mobile" -msgstr "Mobil Jobb" +msgstr "Mobil arbeid" msgid "Work Pager" -msgstr "Telefonsøker Jobb" +msgstr "Telefonsøker arbeid" msgid "Work Fax" -msgstr "Fax Jobb" +msgstr "Fax arbeid" msgid "Work Email" -msgstr "E-post Arbeid" +msgstr "E-post arbeid" msgid "Work IM" -msgstr "Lynmelding Arbeid" +msgstr "Lynmelding arbeid" msgid "Start Date" msgstr "Startdato" @@ -4837,11 +5216,20 @@ msgid "The user has not created a public profile." msgstr "Brukeren har ikke opprettet en offentlig profil." -msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile." -msgstr "MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke eksisterer, eller at brukeren ikke har opprettet en offentlig profil." - -msgid "Could not find any information in the user's profile. The user most likely does not exist." -msgstr "Pidgin klarte ikke finne noen informasjon i brukerens profil. Antakelig eksisterer brukeren ikke." +msgid "" +"MSN reported not being able to find the user's profile. This either means " +"that the user does not exist, or that the user exists but has not created a " +"public profile." +msgstr "" +"MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke " +"eksisterer, eller at brukeren ikke har opprettet en offentlig profil." + +msgid "" +"Could not find any information in the user's profile. The user most likely " +"does not exist." +msgstr "" +"Pidgin klarte ikke finne noen informasjon i brukerens profil. Antakelig " +"eksisterer brukeren ikke." msgid "View web profile" msgstr "Vis nettprofil" @@ -4917,7 +5305,8 @@ #, c-format msgid "%s could not be added because your buddy list is full." -msgstr "%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full." +msgstr "" +"%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full." #, c-format msgid "%s is not a valid passport account." @@ -4937,24 +5326,36 @@ #, c-format msgid "" -"The MSN server will shut down for maintenance in %d minute. You will automatically be signed out at that time. Please finish any conversations in progress.\n" +"The MSN server will shut down for maintenance in %d minute. You will " +"automatically be signed out at that time. Please finish any conversations " +"in progress.\n" "\n" -"After the maintenance has been completed, you will be able to successfully sign in." +"After the maintenance has been completed, you will be able to successfully " +"sign in." msgid_plural "" -"The MSN server will shut down for maintenance in %d minutes. You will automatically be signed out at that time. Please finish any conversations in progress.\n" +"The MSN server will shut down for maintenance in %d minutes. You will " +"automatically be signed out at that time. Please finish any conversations " +"in progress.\n" "\n" -"After the maintenance has been completed, you will be able to successfully sign in." +"After the maintenance has been completed, you will be able to successfully " +"sign in." msgstr[0] "" -"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n" +"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du " +"vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n" "\n" "Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen." msgstr[1] "" -"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n" +"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. " +"Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n" "\n" "Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen." -msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist." -msgstr "Beskjeden ble ikke sendt fordi system er utilgjengelig. Dette skjer normalt når brukeren er blokkert eller ikke eksisterer." +msgid "" +"Message was not sent because the system is unavailable. This normally " +"happens when the user is blocked or does not exist." +msgstr "" +"Beskjeden ble ikke sendt fordi system er utilgjengelig. Dette skjer normalt " +"når brukeren er blokkert eller ikke eksisterer." msgid "Message was not sent because messages are being sent too quickly." msgstr "Meldingen ble ikke sendt fordi meldinger blir sendt for raskt." @@ -4992,7 +5393,8 @@ msgstr "Du ble logget av fordi du har logget på et annet sted." msgid "The MSN servers are temporarily unavailable. Please wait and try again." -msgstr "MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere." +msgstr "" +"MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere." msgid "The MSN servers are going down temporarily." msgstr "MSN-tjenerne vil bli utilgjengelig en liten stund." @@ -5001,8 +5403,11 @@ msgid "Unable to authenticate: %s" msgstr "Klarte ikke autentisere: %s" -msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again." -msgstr "Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen senere." +msgid "" +"Your MSN buddy list is temporarily unavailable. Please wait and try again." +msgstr "" +"Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen " +"senere." msgid "Handshaking" msgstr "Håndtrykk" @@ -5035,7 +5440,8 @@ msgstr "Meldingen ble kanskje ikke sendt, et tidsavbrudd inntraff:" msgid "Message could not be sent, not allowed while invisible:" -msgstr "Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:" +msgstr "" +"Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:" msgid "Message could not be sent because the user is offline:" msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:" @@ -5046,11 +5452,18 @@ msgid "Message could not be sent because we are sending too quickly:" msgstr "Meldingen ble ikke sendt fordi vi sender for raskt:" -msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:" -msgstr "Beskjeden kunne ikke bli sendt fordi vi kunne ikke opprette en økt med serveren. Dette er sannsynligvis et server problem, prøv igjen om noen minutter:" - -msgid "Message could not be sent because an error with the switchboard occurred:" -msgstr "Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:" +msgid "" +"Message could not be sent because we were unable to establish a session with " +"the server. This is likely a server problem, try again in a few minutes:" +msgstr "" +"Beskjeden kunne ikke bli sendt fordi vi kunne ikke opprette en økt med " +"serveren. Dette er sannsynligvis et server problem, prøv igjen om noen " +"minutter:" + +msgid "" +"Message could not be sent because an error with the switchboard occurred:" +msgstr "" +"Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:" msgid "Message may have not been sent because an unknown error occurred:" msgstr "Meldingen kunne ikke bli sendt på grunn av en ukjent feil:" @@ -5142,10 +5555,18 @@ msgstr "Lynmeldingsvenner" #, c-format -msgid "%d buddy was added or updated from the server (including buddies already on the server-side list)" -msgid_plural "%d buddies were added or updated from the server (including buddies already on the server-side list)" -msgstr[0] "%d kontakt ble lagt til eller oppdatert fra serveren (inkludert kontakter allerede på tjenerside-listen)" -msgstr[1] "%d kontakter ble lagt til eller oppdatert fra serveren (inkludert kontakter allerede på tjenerside-listen)" +msgid "" +"%d buddy was added or updated from the server (including buddies already on " +"the server-side list)" +msgid_plural "" +"%d buddies were added or updated from the server (including buddies already " +"on the server-side list)" +msgstr[0] "" +"%d kontakt ble lagt til eller oppdatert fra serveren (inkludert kontakter " +"allerede på tjenerside-listen)" +msgstr[1] "" +"%d kontakter ble lagt til eller oppdatert fra serveren (inkludert kontakter " +"allerede på tjenerside-listen)" msgid "Add contacts from server" msgstr "Ugyldig svar fra tjener" @@ -5161,8 +5582,15 @@ msgstr "Protokoll feil, kode %d: %s" #, c-format -msgid "%s Your password is %d characters, greater than the expected maximum length of %d for MySpaceIM. Please shorten your password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again." -msgstr "%s Passordet ditt er på %d tegn. MySpaceIM godtar bare %d tegn. Gjør passordet ditt kortere på nettsiden http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv på nytt." +msgid "" +"%s Your password is %d characters, greater than the expected maximum length " +"of %d for MySpaceIM. Please shorten your password at http://profileedit." +"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try " +"again." +msgstr "" +"%s Passordet ditt er på %d tegn. MySpaceIM godtar bare %d tegn. Gjør " +"passordet ditt kortere på nettsiden http://profileedit.myspace.com/index.cfm?" +"fuseaction=accountSettings.changePassword og prøv på nytt." msgid "MySpaceIM Error" msgstr "MySpaceIM-feil" @@ -5204,8 +5632,12 @@ msgid "The RC4 cipher could not be found" msgstr "RC4 summeringen kunne ikke bli funnet" -msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded." -msgstr "Oppgrader til en libpurple med RC4 støtte (>= 2.0.1). MySpaceIM tillegg vil ikke bli lastet." +msgid "" +"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " +"not be loaded." +msgstr "" +"Oppgrader til en libpurple med RC4 støtte (>= 2.0.1). MySpaceIM tillegg vil " +"ikke bli lastet." msgid "Add friends from MySpace.com" msgstr "Legg til venner fra MySpace.com" @@ -5481,8 +5913,12 @@ msgid "Could not recognize the host of the username you entered" msgstr "Klarte ikke kjenne igjen verten til det brukernavnet du tastet inn" -msgid "Your account has been disabled because too many incorrect passwords were entered" -msgstr "Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede passord" +msgid "" +"Your account has been disabled because too many incorrect passwords were " +"entered" +msgstr "" +"Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede " +"passord" msgid "You cannot add the same person twice to a conversation" msgstr "Du kan ikke legge til den samme personen to ganger til en samtale" @@ -5502,8 +5938,11 @@ msgid "The user has blocked you" msgstr "Brukeren har blokkert deg" -msgid "This evaluation version does not allow more than ten users to log in at one time" -msgstr "Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere" +msgid "" +"This evaluation version does not allow more than ten users to log in at one " +"time" +msgstr "" +"Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere" msgid "The user is either offline or you are blocked" msgstr "Brukeren er enten frakoplet, eller så er du blokkert" @@ -5535,19 +5974,28 @@ #, c-format msgid "Unable to send message to %s. Could not create the conference (%s)." -msgstr "Klarte ikke sende beskjed til %s. Klarte ikke sette opp konferansen (%s)." +msgstr "" +"Klarte ikke sende beskjed til %s. Klarte ikke sette opp konferansen (%s)." #, c-format msgid "Unable to send message. Could not create the conference (%s)." msgstr "Klarte ikke sende beskjed. Klarte ikke sette opp konferansen (%s)." #, c-format -msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)." -msgstr "Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil oppsto under opprettelse av mappe (%s)." - -#, c-format -msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)." -msgstr "Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i lista på tjenersiden (%s)." +msgid "" +"Unable to move user %s to folder %s in the server side list. Error while " +"creating folder (%s)." +msgstr "" +"Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil " +"oppsto under opprettelse av mappe (%s)." + +#, c-format +msgid "" +"Unable to add %s to your buddy list. Error creating folder in server side " +"list (%s)." +msgstr "" +"Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i " +"lista på tjenersiden (%s)." #, c-format msgid "Could not get details for user %s (%s)." @@ -5636,20 +6084,27 @@ msgstr "Ønsker du å bli med i samtalen?" msgid "You have been logged out because you logged in at another workstation." -msgstr "Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted." - -#, c-format -msgid "%s appears to be offline and did not receive the message that you just sent." +msgstr "" +"Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted." + +#, c-format +msgid "" +"%s appears to be offline and did not receive the message that you just sent." msgstr "%s ser ut til å være frakoplet, og mottok ikke meldingen du sendte." -msgid "Unable to connect to server. Please enter the address of the server you wish to connect to." -msgstr "Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å kople til." +msgid "" +"Unable to connect to server. Please enter the address of the server you wish " +"to connect to." +msgstr "" +"Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å " +"kople til." msgid "Error. SSL support is not installed." msgstr "Feil: SSL-støtte er ikke installert." msgid "This conference has been closed. No more messages can be sent." -msgstr "Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt." +msgstr "" +"Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt." #. *< type #. *< ui_requirement @@ -5742,8 +6197,12 @@ msgstr "Direkte lynmelding opprettet" #, c-format -msgid "%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n" -msgstr "%s prøvde å sende deg en %s fil, men vi tillater kun filer opp til %s over Direct IM. Prøv å bruke filoverføring istedenfor.\n" +msgid "" +"%s tried to send you a %s file, but we only allow files up to %s over Direct " +"IM. Try using file transfer instead.\n" +msgstr "" +"%s prøvde å sende deg en %s fil, men vi tillater kun filer opp til %s over " +"Direct IM. Prøv å bruke filoverføring istedenfor.\n" #, c-format msgid "File %s is %s, which is larger than the maximum size of %s." @@ -5821,12 +6280,24 @@ msgid "Not while on AOL" msgstr "Ikke mens du er på AOL" -msgid "(There was an error receiving this message. The buddy you are speaking with is probably using a different encoding than expected. If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)" -msgstr "(Det oppsto en feil i mottak av denne beskjeden. Kontakten du snakker med bruker sannsynligvis en annen koding enn forventet. Om du vet hvilken koding han bruker, kan du spesifisere dette i avanserte kontoinstillinger for din AIM/ICQ konto.)" - -#, c-format -msgid "(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)" -msgstr "(Det oppstod en feil under mottaket av denne beskjeden. Enten har du og %s valgt ulike tegnkoding, eller så bruker %s en klient med feil i.)" +msgid "" +"(There was an error receiving this message. The buddy you are speaking with " +"is probably using a different encoding than expected. If you know what " +"encoding he is using, you can specify it in the advanced account options for " +"your AIM/ICQ account.)" +msgstr "" +"(Det oppsto en feil i mottak av denne beskjeden. Kontakten du snakker med " +"bruker sannsynligvis en annen koding enn forventet. Om du vet hvilken " +"koding han bruker, kan du spesifisere dette i avanserte kontoinstillinger " +"for din AIM/ICQ konto.)" + +#, c-format +msgid "" +"(There was an error receiving this message. Either you and %s have " +"different encodings selected, or %s has a buggy client.)" +msgstr "" +"(Det oppstod en feil under mottaket av denne beskjeden. Enten har du og %s " +"valgt ulike tegnkoding, eller så bruker %s en klient med feil i.)" #. Label msgid "Buddy Icon" @@ -5946,8 +6417,15 @@ msgstr "Fullfører tilkobling" #, c-format -msgid "Unable to login: Could not 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 "Får ikke til å logge inn: Klarte ikke logge på som %s fordi brukernavnet er ugyldig. Brukernavn må være en gyldig e-postadresse, eller begynna med en bokstav og bare inneholde bokstaver, tall og mellomrom, eller bare inneholde tall." +msgid "" +"Unable to login: Could not 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 "" +"Får ikke til å logge inn: Klarte ikke logge på som %s fordi brukernavnet er " +"ugyldig. Brukernavn må være en gyldig e-postadresse, eller begynna med en " +"bokstav og bare inneholde bokstaver, tall og mellomrom, eller bare inneholde " +"tall." #. Unregistered screen name #. uid is not exist @@ -5967,8 +6445,12 @@ #. screen name connecting too frequently #. IP address connecting too frequently -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 "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger." +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 "" +"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. " +"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger." #, c-format msgid "The client version you are using is too old. Please upgrade at %s" @@ -5997,7 +6479,9 @@ #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." -msgstr "Du kan bli frakoblet ganske snart. Hvis det skjer, sjekk %s for oppdateringer." +msgstr "" +"Du kan bli frakoblet ganske snart. Hvis det skjer, sjekk %s for " +"oppdateringer." msgid "Unable to get a valid AIM login hash." msgstr "Klarte ikke å motta gyldig AIM-påloggingshash." @@ -6016,7 +6500,8 @@ msgstr "Klarte ikke lage ny tilkobling" msgid "Please authorize me so I can add you to my buddy list." -msgstr "Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min." +msgstr "" +"Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min." msgid "Authorization Request Message:" msgstr "Beskjed i godkjenningsforespørsel:" @@ -6032,10 +6517,12 @@ #, c-format msgid "" -"The user %u has denied your request to add them to your buddy list for the following reason:\n" +"The user %u has denied your request to add them to your buddy list for the " +"following reason:\n" "%s" msgstr "" -"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grunn:\n" +"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste " +"med følgende grunn:\n" "%s" msgid "ICQ authorization denied." @@ -6044,7 +6531,9 @@ #. Someone has granted you authorization #, c-format msgid "The user %u has granted your request to add them to your buddy list." -msgstr "Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten din." +msgstr "" +"Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten " +"din." #, c-format msgid "" @@ -6108,22 +6597,37 @@ msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi de var for store." #, 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] "Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt overskredet." -msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt overskredet." - -#, c-format -msgid "You missed %hu message from %s because his/her warning level is too high." -msgid_plural "You missed %hu messages from %s because his/her warning level is too high." -msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi hans/hennes advarselsnivå er for høyt." -msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi hans/hennes advarselsnivå er for høyt." +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] "" +"Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt " +"overskredet." +msgstr[1] "" +"Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt " +"overskredet." + +#, c-format +msgid "" +"You missed %hu message from %s because his/her warning level is too high." +msgid_plural "" +"You missed %hu messages from %s because his/her warning level is too high." +msgstr[0] "" +"Du har gått glipp av %hu beskjed fra %s fordi hans/hennes advarselsnivå er " +"for høyt." +msgstr[1] "" +"Du har gått glipp av %hu beskjeder fra %s fordi hans/hennes advarselsnivå er " +"for høyt." #, 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] "Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt." -msgstr[1] "Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt." +msgid_plural "" +"You missed %hu messages from %s because your warning level is too high." +msgstr[0] "" +"Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt." +msgstr[1] "" +"Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt." #, c-format msgid "You missed %hu message from %s for an unknown reason." @@ -6160,11 +6664,19 @@ msgstr "AIM-tilkoblingen kan være brutt." #. The conversion failed! -msgid "[Unable to display a message from this user because it contained invalid characters.]" -msgstr "[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige tegn.]" - -msgid "The last action you attempted could not be performed because you are over the rate limit. Please wait 10 seconds and try again." -msgstr "Den siste kommandoen ble ikke utført fordi du har overskredet hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen." +msgid "" +"[Unable to display a message from this user because it contained invalid " +"characters.]" +msgstr "" +"[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige " +"tegn.]" + +msgid "" +"The last action you attempted could not be performed because you are over " +"the rate limit. Please wait 10 seconds and try again." +msgstr "" +"Den siste kommandoen ble ikke utført fordi du har overskredet " +"hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen." #, c-format msgid "You have been disconnected from chat room %s." @@ -6217,28 +6729,48 @@ msgstr "Kontobekreftelse forespurt" #, c-format -msgid "Error 0x%04x: Unable to format username because the requested name differs from the original." -msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet er forskjellig fra det opprinnelige." +msgid "" +"Error 0x%04x: Unable to format username because the requested name differs " +"from the original." +msgstr "" +"Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet " +"er forskjellig fra det opprinnelige." #, c-format msgid "Error 0x%04x: Unable to format username because it is invalid." msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det er ugyldig." #, c-format -msgid "Error 0x%04x: Unable to format username because the requested name is too long." -msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet er for langt." - -#, c-format -msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this username." -msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi det finnes en pågående forespørsel for dette brukernavnet." - -#, c-format -msgid "Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it." -msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen har for mange brukernavn assosiert ved seg." - -#, c-format -msgid "Error 0x%04x: Unable to change email address because the given address is invalid." -msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen er ugyldig." +msgid "" +"Error 0x%04x: Unable to format username because the requested name is too " +"long." +msgstr "" +"Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet " +"er for langt." + +#, c-format +msgid "" +"Error 0x%04x: Unable to change email address because there is already a " +"request pending for this username." +msgstr "" +"Feil 0x%04x: Klarte ikke endre e-postadressen fordi det finnes en pågående " +"forespørsel for dette brukernavnet." + +#, c-format +msgid "" +"Error 0x%04x: Unable to change email address because the given address has " +"too many usernames associated with it." +msgstr "" +"Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen har " +"for mange brukernavn assosiert ved seg." + +#, c-format +msgid "" +"Error 0x%04x: Unable to change email address because the given address is " +"invalid." +msgstr "" +"Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen er " +"ugyldig." #, c-format msgid "Error 0x%04x: Unknown error." @@ -6254,36 +6786,67 @@ msgid "Account Info" msgstr "Kontoinformasjon" -msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images." -msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du må være direkte tilkoblet for å sende direktemeldingsbilder." +msgid "" +"Your IM Image was not sent. You must be Direct Connected to send IM Images." +msgstr "" +"Ditt lynmeldingsbilde ble ikke sendt. Du må være direkte tilkoblet for å " +"sende lynmeldingsbilder." msgid "Unable to set AIM profile." msgstr "Klarte ikke sette AIM-profil." -msgid "You have probably requested to set your profile before the login procedure completed. Your profile remains unset; try setting it again when you are fully connected." -msgstr "Du har antakeligvis prøvd å lagre profilinformasjon før innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv å lagre den igjen når du er ferdig pålogget." - -#, c-format -msgid "The maximum profile length of %d byte has been exceeded. It has been truncated for you." -msgid_plural "The maximum profile length of %d bytes has been exceeded. It has been truncated for you." -msgstr[0] "Maksimum profillengde på %d byte har blitt overskredet. Pidgin har avkortet den før den ble lagret." -msgstr[1] "Maksimum profillengde på %d bytes har blitt overskredet. Pidgin har avkortet den før den ble lagret." +msgid "" +"You have probably requested to set your profile before the login procedure " +"completed. Your profile remains unset; try setting it again when you are " +"fully connected." +msgstr "" +"Du har antakeligvis prøvd å lagre profilinformasjon før " +"innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv " +"å lagre den igjen når du er ferdig pålogget." + +#, c-format +msgid "" +"The maximum profile length of %d byte has been exceeded. It has been " +"truncated for you." +msgid_plural "" +"The maximum profile length of %d bytes has been exceeded. It has been " +"truncated for you." +msgstr[0] "" +"Maksimum profillengde på %d byte har blitt overskredet. Pidgin har avkortet " +"den før den ble lagret." +msgstr[1] "" +"Maksimum profillengde på %d bytes har blitt overskredet. Pidgin har avkortet " +"den før den ble lagret." msgid "Profile too long." msgstr "Profilen er for stor." #, c-format -msgid "The maximum away message length of %d byte has been exceeded. It has been truncated for you." -msgid_plural "The maximum away message length of %d bytes has been exceeded. It has been truncated for you." -msgstr[0] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Pidgin har avkortet den." -msgstr[1] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Pidgin har avkortet den." +msgid "" +"The maximum away message length of %d byte has been exceeded. It has been " +"truncated for you." +msgid_plural "" +"The maximum away message length of %d bytes has been exceeded. It has been " +"truncated for you." +msgstr[0] "" +"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. " +"Pidgin har avkortet den." +msgstr[1] "" +"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. " +"Pidgin har avkortet den." msgid "Away message too long." msgstr "Fraværsbeskjeden er for lang." #, c-format -msgid "Could not 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 "Klarte ikke legge til kontakten %s fordi brukernavnet er ugyldig. Brukernavn må enten være en gyldig e-postadresse eller starte med en bokstav og inneholde kun bokstaver, tall og mellomrom, eller bare inneholde nummer." +msgid "" +"Could not 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 "" +"Klarte ikke legge til kontakten %s fordi brukernavnet er ugyldig. Brukernavn " +"må enten være en gyldig e-postadresse eller starte med en bokstav og " +"inneholde kun bokstaver, tall og mellomrom, eller bare inneholde nummer." msgid "Unable to Add" msgstr "Klarte ikke legge til" @@ -6291,15 +6854,23 @@ msgid "Unable to Retrieve Buddy List" msgstr "Klarte ikke hente kontaktliste" -msgid "The AIM servers were temporarily unable to send your buddy list. Your buddy list is not lost, and will probably become available in a few minutes." -msgstr "Klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få minutter." +msgid "" +"The AIM servers were temporarily unable to send your buddy list. Your buddy " +"list is not lost, and will probably become available in a few minutes." +msgstr "" +"Klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er " +"ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få minutter." msgid "Orphans" msgstr "Ugrupperte" #, c-format -msgid "Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again." -msgstr "Klarte ikke legge til kontakten %s fordi du har for mange kontakter i listen. Vennligst fjern en og prøv igjen." +msgid "" +"Could not add the buddy %s because you have too many buddies in your buddy " +"list. Please remove one and try again." +msgstr "" +"Klarte ikke legge til kontakten %s fordi du har for mange kontakter i " +"listen. Vennligst fjern en og prøv igjen." msgid "(no name)" msgstr "(uten navn)" @@ -6309,8 +6880,12 @@ msgstr "Klarte ikke legge til kontakten %s pga ukjent årsak." #, c-format -msgid "The user %s has given you permission to add him or her to your buddy list. Do you want to add this user?" -msgstr "Brukeren %s har gitt deg tillatelse til å legge han eller henne til i kontaktlisten din. Ønsker du å legge til denne brukeren?" +msgid "" +"The user %s has given you permission to add him or her to your buddy list. " +"Do you want to add this user?" +msgstr "" +"Brukeren %s har gitt deg tillatelse til å legge han eller henne til i " +"kontaktlisten din. Ønsker du å legge til denne brukeren?" msgid "Authorization Given" msgstr "Godkjent" @@ -6318,7 +6893,9 @@ #. Granted #, c-format msgid "The user %s has granted your request to add them to your buddy list." -msgstr "Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten din." +msgstr "" +"Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten " +"din." msgid "Authorization Granted" msgstr "Godkjent" @@ -6326,10 +6903,12 @@ #. Denied #, c-format msgid "" -"The user %s has denied your request to add them to your buddy list for the following reason:\n" +"The user %s has denied your request to add them to your buddy list for the " +"following reason:\n" "%s" msgstr "" -"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grun:\n" +"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste " +"med følgende grun:\n" "%s" msgid "Authorization Denied" @@ -6339,7 +6918,9 @@ msgstr "_Utveksling:" msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats." -msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du kan ikke sende direktemeldingsbilder i AIM-samtalegrupper." +msgstr "" +"Ditt lynmeldingsbilde ble ikke sendt. Du kan ikke sende " +"lynmeldingsbilder i AIM-samtalegrupper." msgid "iTunes Music Store Link" msgstr "iTunes Music Store Link" @@ -6353,10 +6934,14 @@ #, c-format msgid "You have selected to open a Direct IM connection with %s." -msgstr "Du har valgt å åpne en direktemelding til %s." - -msgid "Because this reveals your IP address, it may be considered a security risk. Do you wish to continue?" -msgstr "Fordi dette avslører IP-adressen din, kan det betraktes som en (minimal) sikkerhetsrisiko. Ønsker du å fortsette?" +msgstr "Du har valgt å åpne en lynmelding til %s." + +msgid "" +"Because this reveals your IP address, it may be considered a security risk. " +"Do you wish to continue?" +msgstr "" +"Fordi dette avslører IP-adressen din, kan det betraktes som en (minimal) " +"sikkerhetsrisiko. Ønsker du å fortsette?" msgid "C_onnect" msgstr "K_oble til" @@ -6390,7 +6975,8 @@ msgstr "Den nye formateringen er ugyldig." msgid "Username formatting can change only capitalization and whitespace." -msgstr "Brukernavn-formatering kan bare endre på store/små bokstaver og mellomrom." +msgstr "" +"Brukernavn-formatering kan bare endre på store/små bokstaver og mellomrom." msgid "Change Address To:" msgstr "Endre adresse til:" @@ -6401,8 +6987,12 @@ msgid "You are awaiting authorization from the following buddies" msgstr "Du venter på godkjenning fra disse kontaktene" -msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\"" -msgstr "Du kan spørre om godkjenning på nytt hos disse kontaktene ved å høyreklikke på dem og velge «Spør på nytt om godkjenning»." +msgid "" +"You can re-request authorization from these buddies by right-clicking on " +"them and selecting \"Re-request Authorization.\"" +msgstr "" +"Du kan spørre om godkjenning på nytt hos disse kontaktene ved å høyreklikke " +"på dem og velge «Spør på nytt om godkjenning»." msgid "Find Buddy by Email" msgstr "Finn kontakt utifra e-post" @@ -6427,7 +7017,7 @@ #. ICQ actions msgid "Set Privacy Options..." -msgstr "Sett Privatliv Instillinger..." +msgstr "Sett personvernvalg" #. AIM actions msgid "Confirm Account" @@ -6475,8 +7065,14 @@ msgid "%s has just asked to directly connect to %s" msgstr "%s har akkurat spurt om direkte tilkobling til %s" -msgid "This requires a direct connection between the two computers and is necessary for IM Images. Because your IP address will be revealed, this may be considered a privacy risk." -msgstr "Dette krever at det opprettes en direkte tilkobling mellom de to datamaskinene, men er nødvendig for å sende bilder. Dette kan være en (minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din." +msgid "" +"This requires a direct connection between the two computers and is necessary " +"for IM Images. Because your IP address will be revealed, this may be " +"considered a privacy risk." +msgstr "" +"Dette krever at det opprettes en direkte tilkobling mellom de to " +"datamaskinene, men er nødvendig for å sende bilder. Dette kan være en " +"(minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din." msgid "Aquarius" msgstr "Vannmannen" @@ -6940,6 +7536,9 @@ msgid "

Acknowledgement:
\n" msgstr "

Takk til:
\n" +msgid "

Scrupulous Testers:
\n" +msgstr "

Nøyaktige testere:
\n" + msgid "

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

Og, alle guttene på bakrommet ...
\n" @@ -6965,6 +7564,9 @@ msgid "About OpenQ" msgstr "Om OpenQ" +msgid "Modify Buddy Memo" +msgstr "Endre kontaktmemo" + #. *< type #. *< ui_requirement #. *< flags @@ -7003,6 +7605,9 @@ msgid "Show server news" msgstr "Vis tjenernytt" +msgid "Show chat room when msg comes" +msgstr "Vis praterommet når meldinga kommer" + msgid "Keep alive interval (seconds)" msgstr "Intervall vedlikeholdstilkobling (sekund)" @@ -7218,7 +7823,8 @@ msgstr "Starter tjenester" #, c-format -msgid "A Sametime administrator has issued the following announcement on server %s" +msgid "" +"A Sametime administrator has issued the following announcement on server %s" msgstr "En Sametime administrator har satt følgende kunngjøring på tjeneren %s" msgid "Sametime Administrator Announcement" @@ -7268,8 +7874,12 @@ msgstr "Opprett konferanse med bruker" #, c-format -msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s" -msgstr "Vennligst sett topic for en ny konferanse, og en invitasjons beskjed vil bli sendt til %s" +msgid "" +"Please enter a topic for the new conference, and an invitation message to be " +"sent to %s" +msgstr "" +"Vennligst sett topic for en ny konferanse, og en invitasjons beskjed vil bli " +"sendt til %s" msgid "New Conference" msgstr "Ny konferanse" @@ -7287,8 +7897,14 @@ msgstr "Inviter bruker til en konferanse" #, c-format -msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to." -msgstr "Velg en konferanse fra listen under for å sende en invitasjon til bruker %s. Velg \"Start Ny Konferanse\" om du vil starte en ny konferanse og invitere denne brukeren til." +msgid "" +"Select a conference from the list below to send an invite to user %s. Select " +"\"Create New Conference\" if you'd like to create a new conference to invite " +"this user to." +msgstr "" +"Velg en konferanse fra listen under for å sende en invitasjon til bruker %s. " +"Velg \"Start Ny Konferanse\" om du vil starte en ny konferanse og invitere " +"denne brukeren til." msgid "Invite to Conference" msgstr "Innviter til Konferanse" @@ -7306,8 +7922,12 @@ msgstr "Ingen Sametime fellesskapstjener oppgitt " #, c-format -msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in." -msgstr "Ingen vert eller IP adresse har blitt konfigurert for Meanwhile kontoen %s. Skriv inn en under for å fortsette innloggingen." +msgid "" +"No host or IP address has been configured for the Meanwhile account %s. " +"Please enter one below to continue logging in." +msgstr "" +"Ingen vert eller IP adresse har blitt konfigurert for Meanwhile kontoen %s. " +"Skriv inn en under for å fortsette innloggingen." msgid "Meanwhile Connection Setup" msgstr "Meanwhile tilkoblingsinnstillinger" @@ -7335,8 +7955,12 @@ msgstr "En ugyldig bruker ID ble skrevet" #, c-format -msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list." -msgstr "Men enn en bruker ble funnet med det samme navnet %s. Velg den korrekte brukeren fra lista for å legge til kontaktlista." +msgid "" +"The identifier '%s' may possibly refer to any of the following users. Please " +"select the correct user from the list below to add them to your buddy list." +msgstr "" +"Men enn en bruker ble funnet med det samme navnet %s. Velg den korrekte " +"brukeren fra lista for å legge til kontaktlista." msgid "Select User" msgstr "Velg bruker" @@ -7345,8 +7969,12 @@ msgstr "Klarte ikke legge til bruker - bruker ikke funnet" #, c-format -msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list." -msgstr "Brukeren %s matchet ikke noen av brukerne i ditt Sametime nettverk. Denne oppføringen har blitt fjernet fra kontaktlisten din." +msgid "" +"The identifier '%s' did not match any users in your Sametime community. This " +"entry has been removed from your buddy list." +msgstr "" +"Brukeren %s matchet ikke noen av brukerne i ditt Sametime nettverk. Denne " +"oppføringen har blitt fjernet fra kontaktlisten din." #, c-format msgid "" @@ -7399,8 +8027,14 @@ msgstr "Noterer Adressebok resultater for gruppe" #, c-format -msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list." -msgstr "'%s' kan referere til hvilken som helst av Notat Adressebok gruppene. Vennligst velg den rette gruppen fra listen under for å legge den til i kontaktlisten din." +msgid "" +"The identifier '%s' may possibly refer to any of the following Notes Address " +"Book groups. Please select the correct group from the list below to add it " +"to your buddy list." +msgstr "" +"'%s' kan referere til hvilken som helst av Notat Adressebok gruppene. " +"Vennligst velg den rette gruppen fra listen under for å legge den til i " +"kontaktlisten din." msgid "Select Notes Address Book" msgstr "Velg Notes adressebok" @@ -7409,22 +8043,35 @@ msgstr "Klarte ikke legge til gruppe: gruppa finnes ikke" #, c-format -msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community." -msgstr "'%s' matchet inne noen Notat Adressebok gruppe i ditt Sametime nettverk." +msgid "" +"The identifier '%s' did not match any Notes Address Book groups in your " +"Sametime community." +msgstr "" +"'%s' matchet inne noen Notat Adressebok gruppe i ditt Sametime nettverk." msgid "Notes Address Book Group" msgstr "Notes adressebokgruppe" -msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list." -msgstr "Skriv inn navnet på en Notat Adressebok gruppe i feltet nedenfor, for å legge til gruppen og dens medlemmer til kontaktlisten din." +msgid "" +"Enter the name of a Notes Address Book group in the field below to add the " +"group and its members to your buddy list." +msgstr "" +"Skriv inn navnet på en Notat Adressebok gruppe i feltet nedenfor, for å " +"legge til gruppen og dens medlemmer til kontaktlisten din." #, c-format msgid "Search results for '%s'" msgstr "Søkeresultater for «%s»" #, c-format -msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below." -msgstr "'%s' kan referere til hvilken som helst av de følgende brukerne. Du kan legge til disse brukerne til kontaktlisten din eller sende dem beskjeder med handlings knappene under." +msgid "" +"The identifier '%s' may possibly refer to any of the following users. You " +"may add these users to your buddy list or send them messages with the action " +"buttons below." +msgstr "" +"'%s' kan referere til hvilken som helst av de følgende brukerne. Du kan " +"legge til disse brukerne til kontaktlisten din eller sende dem beskjeder med " +"handlings knappene under." msgid "Search Results" msgstr "Søkeresultater" @@ -7443,8 +8090,12 @@ msgid "Search for a user" msgstr "Søk etter en bruker" -msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community." -msgstr "Skriv inn et navn eller delvis ID i feltet under for å søke etter matchende brukere i ditt Sametime nettverk." +msgid "" +"Enter a name or partial ID in the field below to search for matching users " +"in your Sametime community." +msgstr "" +"Skriv inn et navn eller delvis ID i feltet under for å søke etter matchende " +"brukere i ditt Sametime nettverk." msgid "User Search" msgstr "Bruker Søk" @@ -7500,8 +8151,11 @@ msgstr "Fjerntliggende bruker kan ikke nås over nettverket lenger" #, c-format -msgid "Key agreement request received from %s. Would you like to perform the key agreement?" -msgstr "Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?" +msgid "" +"Key agreement request received from %s. Would you like to perform the key " +"agreement?" +msgstr "" +"Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?" #, c-format msgid "" @@ -7517,13 +8171,13 @@ msgstr "Nøkkelavtaleforespørsel" msgid "IM With Password" -msgstr "Direktemelding med passord" +msgstr "Lynmelding med passord" msgid "Cannot set IM key" -msgstr "Klarer ikke sette direktemeldingsnøkkel" +msgstr "Klarer ikke sette lynmeldingsnøkkel" msgid "Set IM Password" -msgstr "Sett direktemeldingspassord" +msgstr "Sett lynmeldingspassord" msgid "Get Public Key" msgstr "Hent offentlig nøkkel" @@ -7547,8 +8201,13 @@ msgid "The %s buddy is not trusted" msgstr "Ikke tillit til kontakten %s" -msgid "You cannot receive buddy notifications until you import his/her public key. You can use the Get Public Key command to get the public key." -msgstr "Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den offentlige nøkkelen." +msgid "" +"You cannot receive buddy notifications until you import his/her public key. " +"You can use the Get Public Key command to get the public key." +msgstr "" +"Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige " +"nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den " +"offentlige nøkkelen." #. Open file selector to select the public key. msgid "Open..." @@ -7558,8 +8217,12 @@ msgid "The %s buddy is not present in the network" msgstr "Kontakten %s er ikke tilgjengelig på nettverket" -msgid "To add the buddy you must import his/her public key. Press Import to import a public key." -msgstr "For å legge til kontakten må du importere hans/hennes offentlige nøkkel. Trykk Import for å importere en offentlig nøkkel." +msgid "" +"To add the buddy you must import his/her public key. Press Import to import " +"a public key." +msgstr "" +"For å legge til kontakten må du importere hans/hennes offentlige nøkkel. " +"Trykk Import for å importere en offentlig nøkkel." msgid "_Import..." msgstr "_Importer..." @@ -7567,11 +8230,19 @@ msgid "Select correct user" msgstr "Velg korrekt bruker" -msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list." -msgstr "Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den korrekte brukeren fra lista for å legge til kontaktlista." - -msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list." -msgstr "Men enn en bruker ble funnet med det samme navnet. Velg den korrekte brukeren fra lista for å legge til kontaktlista." +msgid "" +"More than one user was found with the same public key. Select the correct " +"user from the list to add to the buddy list." +msgstr "" +"Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den " +"korrekte brukeren fra lista for å legge til kontaktlista." + +msgid "" +"More than one user was found with the same name. Select the correct user " +"from the list to add to the buddy list." +msgstr "" +"Men enn en bruker ble funnet med det samme navnet. Velg den korrekte " +"brukeren fra lista for å legge til kontaktlista." msgid "Detached" msgstr "Løsnet" @@ -7642,13 +8313,13 @@ msgstr "Sted" msgid "Reset IM Key" -msgstr "Nullstill direktemeldingsnøkkel" +msgstr "Nullstill lynmeldingsnøkkel" msgid "IM with Key Exchange" -msgstr "Direktemelding med nøkkelsentral" +msgstr "Lynmelding med nøkkelsentral" msgid "IM with Password" -msgstr "Direktemelding med passord" +msgstr "Lynmelding med passord" msgid "Get Public Key..." msgstr "Hent offentlig nøkkel ..." @@ -7698,6 +8369,7 @@ msgid "
Channel Topic:
%s" msgstr "
Kanaltema:
%s" +#, c-format msgid "
Channel Modes: " msgstr "
Kanaltilstander: " @@ -7722,8 +8394,19 @@ msgid "Channel Public Keys List" msgstr "Liste over kanalen sine offentlige nøkler" -msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join." -msgstr "Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. Autentifikasjonen kan være basert på en nøkkelsetning og digitale signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige nøkkler er listet bli med." +#, c-format +msgid "" +"Channel authentication is used to secure the channel from unauthorized " +"access. The authentication may be based on passphrase and digital " +"signatures. If passphrase is set, it is required to be able to join. If " +"channel public keys are set then only users whose public keys are listed are " +"able to join." +msgstr "" +"Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. " +"Autentifikasjonen kan være basert på en nøkkelsetning og digitale " +"signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. " +"Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige " +"nøkkler er listet bli med." msgid "Channel Authentication" msgstr "Kanalautentifikasjon" @@ -7748,7 +8431,8 @@ msgstr "Brukergrense" msgid "Set user limit on channel. Set to zero to reset user limit." -msgstr "Velg brukergrense til kanalen. Velg null for å nullstille brukergrense." +msgstr "" +"Velg brukergrense til kanalen. Velg null for å nullstille brukergrense." msgid "Invite List" msgstr "Inviteringsliste" @@ -7787,7 +8471,8 @@ msgstr "Velg hemmelig kanal" #, c-format -msgid "You have to join the %s channel before you are able to join the private group" +msgid "" +"You have to join the %s channel before you are able to join the private group" msgstr "Du må bli med i %s-kanalen før du kan bli med i den private gruppa" msgid "Join Private Group" @@ -8028,8 +8713,12 @@ msgstr "Nøkkelsetning kreves" #, c-format -msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?" -msgstr "Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?" +msgid "" +"Received %s's public key. Your local copy does not match this key. Would you " +"still like to accept this public key?" +msgstr "" +"Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med " +"denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?" #, c-format msgid "Received %s's public key. Would you like to accept this public key?" @@ -8066,8 +8755,11 @@ msgstr "Nøkkelutveksling feilet" # Er det virkelig "kople til på nytt"? -msgid "Resuming detached session failed. Press Reconnect to create new connection." -msgstr "Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en ny forbindelse." +msgid "" +"Resuming detached session failed. Press Reconnect to create new connection." +msgstr "" +"Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en " +"ny forbindelse." msgid "Connection failed" msgstr "Tilkobling feilet" @@ -8101,6 +8793,7 @@ msgid "Your Current Mood" msgstr "Dit nåværende humør" +#, c-format msgid "Normal" msgstr "Normal" @@ -8147,8 +8840,14 @@ msgid "User Online Status Attributes" msgstr "Brukeren sine tilkoblingsstatusattributt" -msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself." -msgstr "Du kan la andre brukere se din tilkoblingsstatusinformasjon og din personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om deg." +msgid "" +"You can let other users see your online status information and your personal " +"information. Please fill the information you would like other users to see " +"about yourself." +msgstr "" +"Du kan la andre brukere se din tilkoblingsstatusinformasjon og din " +"personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om " +"deg." msgid "Message of the Day" msgstr "Dagens melding" @@ -8232,7 +8931,8 @@ msgstr "topic [<new topic>]: Vis eller forandre topic" msgid "join <channel> [<password>]: Join a chat on this network" -msgstr "join <channel> [<password>]: Join en samtale på dette nettverket" +msgstr "" +"join <channel> [<password>]: Join en samtale på dette nettverket" msgid "list: List channels on this network" msgstr "list: Vis kanaler på dette nettverket" @@ -8241,10 +8941,12 @@ msgstr "whois <nick>: Vis nick'ets info" msgid "msg <nick> <message>: Send a private message to a user" -msgstr "msg <nick> <message>: Send en privat beskjed til en bruker" +msgstr "" +"msg <nick> <message>: Send en privat beskjed til en bruker" msgid "query <nick> [<message>]: Send a private message to a user" -msgstr "query <nick> [<message>]: Send en privat beskjed til en bruker" +msgstr "" +"query <nick> [<message>]: Send en privat beskjed til en bruker" msgid "motd: View the server's Message Of The Day" msgstr "motd: Vis serverens Message Of The Day" @@ -8267,11 +8969,19 @@ msgid "whowas <nick>: View nick's information" msgstr "whowas <nick>: Vis nick info" -msgid "cmode <channel> [+|-<modes>] [arguments]: Change or display channel modes" -msgstr "cmode <channel> [+|-<modes>] [arguments]: Forandre eller vis kanal modus" - -msgid "cumode <channel> +|-<modes> <nick>: Change nick's modes on channel" -msgstr "cumode <channel> +|-<modes> <nick>: Forandre nick modus på kanal" +msgid "" +"cmode <channel> [+|-<modes>] [arguments]: Change or display " +"channel modes" +msgstr "" +"cmode <channel> [+|-<modes>] [arguments]: Forandre eller vis " +"kanal modus" + +msgid "" +"cumode <channel> +|-<modes> <nick>: Change nick's modes " +"on channel" +msgstr "" +"cumode <channel> +|-<modes> <nick>: Forandre nick modus " +"på kanal" msgid "umode <usermodes>: Set your modes in the network" msgstr "umode <usermodes>: Sett modusene dine i nettverket" @@ -8279,8 +8989,12 @@ msgid "oper <nick> [-pubkey]: Get server operator privileges" msgstr "oper <nick> [-pubkey]: Få server OP rettigheter" -msgid "invite <channel> [-|+]<nick>: invite nick or add/remove from channel invite list" -msgstr "invite <channel> [-|+]<nick>: inviter nick eller legg til/fjern fra kanalens invitasjonsliste" +msgid "" +"invite <channel> [-|+]<nick>: invite nick or add/remove from " +"channel invite list" +msgstr "" +"invite <channel> [-|+]<nick>: inviter nick eller legg til/fjern " +"fra kanalens invitasjonsliste" msgid "kick <channel> <nick> [comment]: Kick client from channel" msgstr "kick <channel> <nick> [comment]: Kick klient fra kanal" @@ -8292,7 +9006,8 @@ msgstr "ban [<channel> +|-<nick>]: Bannlys klient fra kanal" msgid "getkey <nick|server>: Retrieve client's or server's public key" -msgstr "getkey <nick|server>: Få klientens eller serverens offentlige nøkkel" +msgstr "" +"getkey <nick|server>: Få klientens eller serverens offentlige nøkkel" msgid "stats: View server and network statistics" msgstr "stats: Vis server og nettverk statistikk" @@ -8303,8 +9018,12 @@ msgid "users <channel>: List users in channel" msgstr "users <channel>: Vis brukere i kanal" -msgid "names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: List specific users in channel(s)" -msgstr "names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: Vis spesifiserte brukere i kanalen/kanlaene" +msgid "" +"names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: List " +"specific users in channel(s)" +msgstr "" +"names [-count|-ops|-halfops|-voices|-normal] <channel(s)>: Vis " +"spesifiserte brukere i kanalen/kanlaene" #. *< type #. *< ui_requirement @@ -8344,7 +9063,7 @@ msgstr "Offentlig nøkkel autentisering" msgid "Block IMs without Key Exchange" -msgstr "Blokker direktemeldinger uten nøkkelutveksling" +msgstr "Blokker lynmeldinger uten nøkkelutveksling" msgid "Block messages to whiteboard" msgstr "Blokker beskjeder til tavle" @@ -8441,7 +9160,9 @@ msgstr "%s sendte beskjed til tavle. Vil du åpne tavlen?" #, c-format -msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?" +msgid "" +"%s sent message to whiteboard on %s channel. Would you like to open the " +"whiteboard?" msgstr "%s sendte en beskjed til tavle på kanal %s. Vil du åpne tavlen?" msgid "Whiteboard" @@ -8450,33 +9171,44 @@ msgid "No server statistics available" msgstr "Ingen tjenerstatistikk tilgjengelig" +#, c-format msgid "Failure: Version mismatch, upgrade your client" msgstr "Feil: Versjonskonflikt, oppgrader din klient" +#, c-format msgid "Failure: Remote does not trust/support your public key" -msgstr "Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel" - +msgstr "" +"Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel" + +#, c-format msgid "Failure: Remote does not support proposed KE group" msgstr "Feil: Fjerntliggende part støtter ikke foreslått KE-gruppe" +#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "Fjerntliggende part støtter ikke foreslått krypteringsmetode" +#, c-format msgid "Failure: Remote does not support proposed PKCS" msgstr "Feil: Fjerntliggende part støtter ikke foreslått PKCS" +#, c-format msgid "Failure: Remote does not support proposed hash function" msgstr "Feil: Fjerntliggende part støtter ikke foreslått nøkkelfunksjon" +#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "Fjerntliggende part støtter ikke foreslått HMAC" +#, c-format msgid "Failure: Incorrect signature" msgstr "Ugyldig signatur" +#, c-format msgid "Failure: Invalid cookie" msgstr "Ugyldig informasjonskapsel" +#, c-format msgid "Failure: Authentication failed" msgstr "Autentisering feilet" @@ -8576,6 +9308,7 @@ msgid "Warning of %s not allowed." msgstr "Advarsel %s er ikke tillatt." +#, c-format msgid "A message has been dropped, you are exceeding the server speed limit." msgstr "En beskjed ble forkastet. Du overskrider tjenerens fartsgrense." @@ -8595,30 +9328,39 @@ msgid "You missed an IM from %s because it was sent too fast." msgstr "Du gikk glipp av en beskjed fra %s fordi den ble sendt for raskt." +#, c-format msgid "Failure." msgstr "Feil." +#, c-format msgid "Too many matches." msgstr "For mange treff." +#, c-format msgid "Need more qualifiers." msgstr "Trenger flere parametre." +#, c-format msgid "Dir service temporarily unavailable." msgstr "Katalogtjenesten er midlertidig utilgjengelig." +#, c-format msgid "Email lookup restricted." msgstr "E-postoppslag er begrenset." +#, c-format msgid "Keyword ignored." msgstr "Nøkkelord ignorert." +#, c-format msgid "No keywords." msgstr "Ingen nøkkelord." +#, c-format msgid "User has no directory information." msgstr "Brukeren har ingen kataloginformasjon." +#, c-format msgid "Country not supported." msgstr "Land ikke støttet." @@ -8626,17 +9368,25 @@ msgid "Failure unknown: %s." msgstr "Ukjent feil: %s." +#, c-format msgid "Incorrect username or password." msgstr "Feil brukernavn eller passord." +#, c-format msgid "The service is temporarily unavailable." msgstr "Tjenesten er midlertidig utilgjengelig." +#, c-format msgid "Your warning level is currently too high to log in." msgstr "Advarselsnivået ditt er satt for høyt for å logge inn." -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 "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger." +#, c-format +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 "" +"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. " +"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger." #, c-format msgid "An unknown signon error has occurred: %s." @@ -8721,26 +9471,42 @@ msgstr "Yahoo! systemmelding for %s:" #, c-format -msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s." -msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten med følgende grunn: %s." +msgid "" +"%s has (retroactively) denied your request to add them to your list for the " +"following reason: %s." +msgstr "" +"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i " +"kontaktlisten med følgende grunn: %s." #, c-format msgid "%s has (retroactively) denied your request to add them to your list." -msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten din." +msgstr "" +"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i " +"kontaktlisten din." msgid "Add buddy rejected" msgstr "Legge til kontakt avslått" #, c-format -msgid "The Yahoo server has requested the use of an unrecognized authentication method. You will probably not be able to successfully sign on to Yahoo. Check %s for updates." -msgstr "Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne versjonen av Pidgin vil antakeligvis ikke være i stand til å logge på Yahoo. Sjekk %s for oppdateringer." +msgid "" +"The Yahoo server has requested the use of an unrecognized authentication " +"method. You will probably not be able to successfully sign on to Yahoo. " +"Check %s for updates." +msgstr "" +"Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne " +"versjonen av Pidgin vil antakeligvis ikke være i stand til å logge på Yahoo. " +"Sjekk %s for oppdateringer." msgid "Failed Yahoo! Authentication" msgstr "Yahoo!-autentisering feilet" #, c-format -msgid "You have tried to ignore %s, but the user is on your buddy list. Clicking \"Yes\" will remove and ignore the buddy." -msgstr "Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du klikker på \"Ja\" vil kontakten fjernes og ignoreres." +msgid "" +"You have tried to ignore %s, but the user is on your buddy list. Clicking " +"\"Yes\" will remove and ignore the buddy." +msgstr "" +"Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du " +"klikker på \"Ja\" vil kontakten fjernes og ignoreres." msgid "Ignore buddy?" msgstr "Ignorere kontakt?" @@ -8750,11 +9516,13 @@ #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." -msgstr "Ukjent feilkode %d. Å logge inn på Yahoo!s nettside, kan kanskje løse dette." +msgstr "" +"Ukjent feilkode %d. Å logge inn på Yahoo!s nettside, kan kanskje løse dette." #, c-format msgid "Could not add buddy %s to group %s to the server list on account %s." -msgstr "Klarte ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s." +msgstr "" +"Klarte ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s." msgid "Could not add buddy to server list" msgstr "Klarte ikke legge kontakt til tjenerens kontaktliste" @@ -8925,11 +9693,18 @@ msgid "Yahoo! Profile" msgstr "Yahoo!-profil" -msgid "Sorry, profiles marked as containing adult content are not supported at this time." -msgstr "Beklager, profiler som er markert med vokseninnhold er for tiden ikke støttet." - -msgid "If you wish to view this profile, you will need to visit this link in your web browser:" -msgstr "Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser:" +msgid "" +"Sorry, profiles marked as containing adult content are not supported at this " +"time." +msgstr "" +"Beklager, profiler som er markert med vokseninnhold er for tiden ikke " +"støttet." + +msgid "" +"If you wish to view this profile, you will need to visit this link in your " +"web browser:" +msgstr "" +"Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser:" msgid "Yahoo! ID" msgstr "Yahoo! ID" @@ -8955,14 +9730,27 @@ msgid "Last Update" msgstr "Sist oppdatert" -msgid "This profile is in a language or format that is not supported at this time." -msgstr "Denne profilen er i et språk eller format som for øyeblikket ikke er støttet." - -msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later." -msgstr "Klarte ikke hente ned brukerens profil. Dette er mest sannsynlig et midlertidig server-problem. Prøv igjen senere." - -msgid "Could not retrieve the user's profile. This most likely means that the user does not exist; however, Yahoo! sometimes does fail to find a user's profile. If you know that the user exists, please try again later." -msgstr "Klarte ikke hente ned brukerens profil. Dette betyr sannsynligvis at brukeren ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne en brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen senere." +msgid "" +"This profile is in a language or format that is not supported at this time." +msgstr "" +"Denne profilen er i et språk eller format som for øyeblikket ikke er støttet." + +msgid "" +"Could not retrieve the user's profile. This most likely is a temporary " +"server-side problem. Please try again later." +msgstr "" +"Klarte ikke hente ned brukerens profil. Dette er mest sannsynlig et " +"midlertidig server-problem. Prøv igjen senere." + +msgid "" +"Could not retrieve the user's profile. This most likely means that the user " +"does not exist; however, Yahoo! sometimes does fail to find a user's " +"profile. If you know that the user exists, please try again later." +msgstr "" +"Klarte ikke hente ned brukerens profil. Dette betyr sannsynligvis at " +"brukeren ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne " +"en brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen " +"senere." msgid "The user's profile is empty." msgstr "Brukerens profil er tom." @@ -8989,8 +9777,12 @@ msgid "Not available" msgstr "Ikke tilgjengelig" -msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom" -msgstr "Ukjent feil. Det kan hende du må logge ut og vente fem minutter før du kan entre samtalerommet igjen" +msgid "" +"Unknown error. You may need to logout and wait five minutes before being " +"able to rejoin a chatroom" +msgstr "" +"Ukjent feil. Det kan hende du må logge ut og vente fem minutter før du kan " +"entre samtalerommet igjen" #, c-format msgid "You are now chatting in %s." @@ -9028,8 +9820,12 @@ "Du har blitt koblet fra tjeneren\n" "%s" -msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)" -msgstr "(En feil oppstod under konverteringen av denne beskjeden.\t Kontroller «Tegnkoding»-valget i kontohåndteren)" +msgid "" +"(There was an error converting this message.\t Check the 'Encoding' option " +"in the Account Editor)" +msgstr "" +"(En feil oppstod under konverteringen av denne beskjeden.\t Kontroller " +"«Tegnkoding»-valget i kontohåndteren)" #, c-format msgid "Unable to send to chat %s,%s,%s" @@ -9065,28 +9861,45 @@ msgstr "zl <nick>: Finn bruker" msgid "instance <instance>: Set the instance to be used on this class" -msgstr "instance <instance>: Sett hendelse som skal brukes for denne klassen" +msgstr "" +"instance <instance>: Sett hendelse som skal brukes for denne klassen" msgid "inst <instance>: Set the instance to be used on this class" msgstr "inst <instance>: Sett hendelse som skal brukes for denne klassen" msgid "topic <instance>: Set the instance to be used on this class" -msgstr "topic <instance>: Sett hendelse som skal brukes for denne klassen" +msgstr "" +"topic <instance>: Sett hendelse som skal brukes for denne klassen" msgid "sub <class> <instance> <recipient>: Join a new chat" -msgstr "ub <class> <instance> <recipient>: Join en ny samtale" - -msgid "zi <instance>: Send a message to <message,instance,*>" -msgstr "zi <instance>: Send en beskjed til <beskjed,instance,*>" - -msgid "zci <class> <instance>: Send a message to <class,instance,*>" -msgstr "zci <class> <instance>: Send en beskjed til <class,instance,*>" - -msgid "zcir <class> <instance> <recipient>: Send a message to <class,instance,recipient>" -msgstr "zcir <class> <instance> <recipient>: Send en beskjed til <class,instance,recipient>" - -msgid "zir <instance> <recipient>: Send a message to <MESSAGE,instance,recipient>" -msgstr "zir <instance> <recipient>: Send en beskjed til <MESSAGE,instance,recipient>" +msgstr "" +"ub <class> <instance> <recipient>: Join en ny samtale" + +msgid "" +"zi <instance>: Send a message to <message,instance,*>" +msgstr "" +"zi <instance>: Send en beskjed til <beskjed,instance,*>" + +msgid "" +"zci <class> <instance>: Send a message to <class," +"instance,*>" +msgstr "" +"zci <class> <instance>: Send en beskjed til <class," +"instance,*>" + +msgid "" +"zcir <class> <instance> <recipient>: Send a message to <" +"class,instance,recipient>" +msgstr "" +"zcir <class> <instance> <recipient>: Send en beskjed til " +"<class,instance,recipient>" + +msgid "" +"zir <instance> <recipient>: Send a message to <MESSAGE," +"instance,recipient>" +msgstr "" +"zir <instance> <recipient>: Send en beskjed til <MESSAGE," +"instance,recipient>" msgid "zc <class>: Send a message to <class,PERSONAL,*>" msgstr "zc <class>: Send en beskjed til <class,PERSONAL,*>" @@ -9296,8 +10109,12 @@ msgstr "Feil ved lesing av %s" #, c-format -msgid "An error was encountered reading your %s. They have not been loaded, and the old file has been renamed to %s~." -msgstr "Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den gamle filen ble flyttet til %s~." +msgid "" +"An error was encountered reading your %s. They have not been loaded, and " +"the old file has been renamed to %s~." +msgstr "" +"Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den " +"gamle filen ble flyttet til %s~." msgid "Calculating..." msgstr "Beregner..." @@ -9354,8 +10171,12 @@ msgstr "Klarte ikke lese fra %s: for langt svar (%d bytes-grense)" #, c-format -msgid "Unable to allocate enough memory to hold the contents from %s. The web server may be trying something malicious." -msgstr "Klarte ikke allokere nok minne til å holde på innholdet fra %s. Det kan hende web serveren prøver på noe ondskapsfullt." +msgid "" +"Unable to allocate enough memory to hold the contents from %s. The web " +"server may be trying something malicious." +msgstr "" +"Klarte ikke allokere nok minne til å holde på innholdet fra %s. Det kan " +"hende web serveren prøver på noe ondskapsfullt." #, c-format msgid "Error reading from %s: %s" @@ -9378,22 +10199,27 @@ msgstr "(%s)" #. 10053 +#, c-format msgid "Connection interrupted by other software on your computer." msgstr "Forbindelsen ble avbrutt av annen programvare på din datamaskin." #. 10054 +#, c-format msgid "Remote host closed connection." msgstr "Fjern vert lukket forbindelsen." #. 10060 +#, c-format msgid "Connection timed out." msgstr "Tilkoblingen lyktes ikke innenfor tidsgrensen." #. 10061 +#, c-format msgid "Connection refused." msgstr "Tilkoblingen avvist." #. 10048 +#, c-format msgid "Address already in use." msgstr "Adressen er allerede i bruk" @@ -9520,24 +10346,39 @@ msgid "" "Welcome to %s!\n" "\n" -"You have no IM accounts configured. To start connecting with %s press the Add... button below and configure your first account. If you want %s to connect to multiple IM accounts, press Add... again to configure them all.\n" +"You have no IM accounts configured. To start connecting with %s press the " +"Add... button below and configure your first account. If you want %s " +"to connect to multiple IM accounts, press Add... again to configure " +"them all.\n" "\n" -"You can come back to this window to add, edit, or remove accounts from Accounts->Manage Accounts in the Buddy List window" +"You can come back to this window to add, edit, or remove accounts from " +"Accounts->Manage Accounts in the Buddy List window" msgstr "" "Velkommen til %s!\n" "\n" -"Du har ikke satt opp noen lynmeldingskontoer. For å starte tilkobling til %s trykk Legg til ...-knappen nedenfor og sett opp kontoen din først. Om du vil at %s skal koble til flere lynmeldingskontoer, trykk Legg til ... igjen for å sette opp alle sammen.\n" +"Du har ikke satt opp noen lynmeldingskontoer. For å starte tilkobling til %s " +"trykk Legg til ...-knappen nedenfor og sett opp kontoen din først. Om " +"du vil at %s skal koble til flere lynmeldingskontoer, trykk Legg til ... igjen for å sette opp alle sammen.\n" "\n" -"Du kan komme tilbake til dette vinduet for å legge til, redigere eller fjerne kontoer fra Kontoer->Håndter kontoer i kontaktliste-vinduet." +"Du kan komme tilbake til dette vinduet for å legge til, redigere eller " +"fjerne kontoer fra Kontoer->Håndter kontoer i kontaktliste-vinduet." #, c-format msgid "You have %d contact named %s. Would you like to merge them?" -msgid_plural "You currently have %d contacts named %s. Would you like to merge them?" +msgid_plural "" +"You currently have %d contacts named %s. Would you like to merge them?" msgstr[0] "Du har kontakten %d som %s. Vil du flette dem sammen?" msgstr[1] "Du har kontaktene %d som %s. Vil du flette dem sammen?" -msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu" -msgstr "Sammenfletting av disse kontaktene vil føre til at de deler en enkelt oppføring i kontaktlisten og bruker ett enkelt samtalevindu. Du kan separere dem igjen ved å velge Utvid fra kontaktens meny i kontaktlisten" +msgid "" +"Merging these contacts will cause them to share a single entry on the buddy " +"list and use a single conversation window. You can separate them again by " +"choosing 'Expand' from the contact's context menu" +msgstr "" +"Sammenfletting av disse kontaktene vil føre til at de deler en enkelt " +"oppføring i kontaktlisten og bruker ett enkelt samtalevindu. Du kan separere " +"dem igjen ved å velge Utvid fra kontaktens meny i kontaktlisten" msgid "Please update the necessary fields." msgstr "Oppdater de nødvendige feltene." @@ -9545,7 +10386,9 @@ msgid "Room _List" msgstr "Rom_liste" -msgid "Please enter the appropriate information about the chat you would like to join.\n" +msgid "" +"Please enter the appropriate information about the chat you would like to " +"join.\n" msgstr "Skriv inn informasjon om samtalegruppen du ønsker å bli med i.\n" msgid "_Account:" @@ -9624,7 +10467,8 @@ msgid "/Tools/Mute Sounds" msgstr "/Verktøy/Skru av lyder" -msgid "You are not currently signed on with an account that can add that buddy." +msgid "" +"You are not currently signed on with an account that can add that buddy." msgstr "Du er ikke pålogget med noen kontoer som kan legge til den kontakten." #. I don't believe this can happen currently, I think @@ -9638,7 +10482,7 @@ msgstr "/_Kontakter" msgid "/Buddies/New Instant _Message..." -msgstr "/Kontakter/_Ny direktemelding..." +msgstr "/Kontakter/_Ny lynmelding..." msgid "/Buddies/Join a _Chat..." msgstr "/Kontakter/_Bli med i samtalegruppe..." @@ -9793,7 +10637,7 @@ msgstr "Inaktiv %dm" msgid "/Buddies/New Instant Message..." -msgstr "/Kontakter/Ny direktemelding..." +msgstr "/Kontakter/Ny lynmelding..." msgid "/Buddies/Join a Chat..." msgstr "/Kontakter/Bli med i samtalegruppe..." @@ -9811,7 +10655,7 @@ msgstr "/Kontakter/Legg til gruppe..." msgid "/Tools/Privacy" -msgstr "/Verktøy/Blokkeringer" +msgstr "/Verktøy/Personvern" msgid "/Tools/Room List" msgstr "/Verktøy/Romliste" @@ -9850,7 +10694,8 @@ #, c-format msgid "%d account was disabled because you signed on from another location:" -msgid_plural "%d accounts were disabled because you signed on from another location:" +msgid_plural "" +"%d accounts were disabled because you signed on from another location:" msgstr[0] "%d konto ble deaktivert fordi du har logget på et annet sted:" msgstr[1] "%d kontoer ble deaktivert fordi du har logget på et annet sted:" @@ -9871,11 +10716,16 @@ msgid "" "Welcome to %s!\n" "\n" -"You have no accounts enabled. Enable your IM accounts from the Accounts window at Accounts->Manage Accounts. Once you enable accounts, you'll be able to sign on, set your status, and talk to your friends." +"You have no accounts enabled. Enable your IM accounts from the Accounts window at Accounts->Manage Accounts. Once you enable accounts, " +"you'll be able to sign on, set your status, and talk to your friends." msgstr "" "Velkommen til %s!\n" "\n" -"Du har ingen kontoer aktivert. Aktiver dine lynmeldingskontoer fra Kontoer-vinduet ved Kontoer->Håndter kontoer. Når du har aktivert kontoene, kan du logge inn, sette din status og snakke med dine venner." +"Du har ingen kontoer aktivert. Aktiver dine lynmeldingskontoer fra " +"Kontoer-vinduet ved Kontoer->Håndter kontoer. Når du har " +"aktivert kontoene, kan du logge inn, sette din status og snakke med dine " +"venner." #. set the Show Offline Buddies option. must be done #. * after the treeview or faceprint gets mad. -Robot101 @@ -9910,10 +10760,14 @@ msgid "This protocol does not support chat rooms." msgstr "Denne protokollversjonen støtter ikke samtalerom." -msgid "You are not currently signed on with any protocols that have the ability to chat." +msgid "" +"You are not currently signed on with any protocols that have the ability to " +"chat." msgstr "Du er ikke pålogget med noen protokoller som støtter samtalegrupper." -msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n" +msgid "" +"Please enter an alias, and the appropriate information about the chat you " +"would like to add to your buddy list.\n" msgstr "Skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n" msgid "A_lias:" @@ -9960,17 +10814,24 @@ msgstr "Ukjent kommando." msgid "That buddy is not on the same protocol as this chat." -msgstr "Denne kontakten er ikke på den samme protokollen som denne samtalegruppa." - -msgid "You are not currently signed on with an account that can invite that buddy." -msgstr "Du er ikke pålogget pålogget med en konto som kan invitere denne kontakten." +msgstr "" +"Denne kontakten er ikke på den samme protokollen som denne samtalegruppa." + +msgid "" +"You are not currently signed on with an account that can invite that buddy." +msgstr "" +"Du er ikke pålogget pålogget med en konto som kan invitere denne kontakten." msgid "Invite Buddy Into Chat Room" msgstr "Inviter kontakten inn i samtalerom" #. Put our happy label in it. -msgid "Please enter the name of the user you wish to invite, along with an optional invite message." -msgstr "Skriv inn navnet på brukeren som du vil invitere, og en eventuell invitasjonsbeskjed." +msgid "" +"Please enter the name of the user you wish to invite, along with an optional " +"invite message." +msgstr "" +"Skriv inn navnet på brukeren som du vil invitere, og en eventuell " +"invitasjonsbeskjed." msgid "_Buddy:" msgstr "_Kontakt:" @@ -10235,7 +11096,7 @@ msgstr "Sist opprettede vindu" msgid "Separate IM and Chat windows" -msgstr "Skill direktemeldings- og gruppesamtalevinduer" +msgstr "Skill lynmeldings- og gruppesamtalevinduer" msgid "New window" msgstr "Nytt vindu" @@ -10445,7 +11306,7 @@ msgstr "Kannada" msgid "Kannada Translation team" -msgstr "Kannada Translation team" +msgstr "Kannada oversettelseslag" msgid "Korean" msgstr "Koreansk" @@ -10460,7 +11321,10 @@ msgstr "Litauisk" msgid "Macedonian" -msgstr "Makedons" +msgstr "Makedonsk" + +msgid "Mongolian" +msgstr "Mongolsk" msgid "Bokmål Norwegian" msgstr "Norsk Bokmål" @@ -10555,11 +11419,50 @@ msgstr "Om %s" #, c-format -msgid "%s is a graphical modular messaging client based on libpurple which is capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ all at once. It is written using GTK+.

You may modify and redistribute the program under the terms of the GPL (version 2 or later). A copy of the GPL is contained in the 'COPYING' file distributed with %s. %s is copyrighted by its contributors. See the 'COPYRIGHT' file for the complete list of contributors. We provide no warranty for this program.

" -msgstr "%s er en modulær grafisk samtaleklient basert på libpurple som kan koble til AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC,SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr,MySpaceIM, Gadu-Gadu, og QQ samtidig. Den er skravet ved bruk av GTK+.

Du kan modifisere og redistribuere programmet under GPL (versjon 2 eller senere) En kopi av GPL er plassert i COPYING filen distribuert med %s. %s er kopibeskyttet av utgiverne. Se COPYRIGHT filen for en komplett liste av utgivere. Vi gir ingen garanti for dette programmet.

" - -msgid "IRC: #pidgin on irc.freenode.net

" -msgstr "IRC: #pidgin på irc.freenode.net

" +msgid "" +"%s is a graphical modular messaging client based on libpurple which is " +"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, " +"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and " +"QQ all at once. It is written using GTK+.

You may modify and " +"redistribute the program under the terms of the GPL (version 2 or later). A " +"copy of the GPL is contained in the 'COPYING' file distributed with %s. %s " +"is copyrighted by its contributors. See the 'COPYRIGHT' file for the " +"complete list of contributors. We provide no warranty for this program." +"

" +msgstr "" +"%s er en modulær grafisk samtaleklient basert på libpurple som kan koble til " +"AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC,SIP/SIMPLE, Novell GroupWise, Lotus " +"Sametime, Bonjour, Zephyr,MySpaceIM, Gadu-Gadu, og QQ samtidig. Den er " +"skravet ved bruk av GTK+.

Du kan modifisere og redistribuere " +"programmet under GPL (versjon 2 eller senere) En kopi av GPL er plassert i " +"COPYING filen distribuert med %s. %s er kopibeskyttet av utgiverne. Se " +"COPYRIGHT filen for en komplett liste av utgivere. Vi gir ingen garanti for " +"dette programmet.

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

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

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

" +msgstr "" +"Hjelp per e-post: support@pidgin.im

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

" +msgstr "IRC-kanal: #pidgin på irc.freenode.net

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

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

" msgid "Current Developers" msgstr "Tidligere utviklere" @@ -10591,8 +11494,12 @@ msgid "Get User Info" msgstr "Hent brukerinfo" -msgid "Please enter the username or alias of the person whose info you would like to view." -msgstr "Skriv inn brukernavnet eller aliaset til den personen du vil se informasjon om." +msgid "" +"Please enter the username or alias of the person whose info you would like " +"to view." +msgstr "" +"Skriv inn brukernavnet eller aliaset til den personen du vil se informasjon " +"om." msgid "View User Log" msgstr "Se på brukerlogg" @@ -10617,10 +11524,18 @@ msgstr "Skriv inn aliasnavn for denne samtalegruppa." #, c-format -msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list. Do you want to continue?" -msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list. Do you want to continue?" -msgstr[0] "Du er i ferd med å fjerne kontakten som inneholder %s og %d annen kontakt fra kontaktlista di. Ønsker du å fortsette?" -msgstr[1] "Du er i ferd med å fjerne kontakten som inneholder %s og %d andre kontakter fra kontaktlista di. Ønsker du å fortsette?" +msgid "" +"You are about to remove the contact containing %s and %d other buddy from " +"your buddy list. Do you want to continue?" +msgid_plural "" +"You are about to remove the contact containing %s and %d other buddies from " +"your buddy list. Do you want to continue?" +msgstr[0] "" +"Du er i ferd med å fjerne kontakten som inneholder %s og %d annen kontakt " +"fra kontaktlista di. Ønsker du å fortsette?" +msgstr[1] "" +"Du er i ferd med å fjerne kontakten som inneholder %s og %d andre kontakter " +"fra kontaktlista di. Ønsker du å fortsette?" msgid "Remove Contact" msgstr "Fjern kontakt" @@ -10629,8 +11544,12 @@ msgstr "_Fjern kontakt" #, c-format -msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?" -msgstr "Du er i ferd med å slå gruppa med navnet %s sammen med gruppa %s. Øsnker du å fortsette?" +msgid "" +"You are about to merge the group called %s into the group called %s. Do you " +"want to continue?" +msgstr "" +"Du er i ferd med å slå gruppa med navnet %s sammen med gruppa %s. Øsnker du " +"å fortsette?" msgid "Merge Groups" msgstr "Slå sammen grupper" @@ -10639,8 +11558,12 @@ msgstr "_Slå sammen grupper" #, c-format -msgid "You are about to remove the group %s and all its members from your buddy list. Do you want to continue?" -msgstr "Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra kontaktlisten din?" +msgid "" +"You are about to remove the group %s and all its members from your buddy " +"list. Do you want to continue?" +msgstr "" +"Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra " +"kontaktlisten din?" msgid "Remove Group" msgstr "Fjern gruppe" @@ -10649,7 +11572,8 @@ msgstr "_Fjern gruppe" #, c-format -msgid "You are about to remove %s from your buddy list. Do you want to continue?" +msgid "" +"You are about to remove %s from your buddy list. Do you want to continue?" msgstr "Er du sikker på at du vil fjerne %s fra kontaktlisten din?" msgid "Remove Buddy" @@ -10659,8 +11583,11 @@ msgstr "_Fjern kontakt" #, c-format -msgid "You are about to remove the chat %s from your buddy list. Do you want to continue?" -msgstr "Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?" +msgid "" +"You are about to remove the chat %s from your buddy list. Do you want to " +"continue?" +msgstr "" +"Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?" msgid "Remove Chat" msgstr "Fjern samtalegruppe" @@ -10810,7 +11737,8 @@ msgstr "Farge for navn på «oppmerksomhet» " msgid "Color to draw the name of a message you received containing your name." -msgstr "Farge for å tegne navnet på en beskjed du mottok som innholdt navnet ditt." +msgstr "" +"Farge for å tegne navnet på en beskjed du mottok som innholdt navnet ditt." msgid "Action Message Name Color" msgstr "Farge for navn på handlingsbeskjed" @@ -10889,9 +11817,11 @@ msgid "Save Image" msgstr "Lagre bilde" +#, c-format msgid "_Save Image..." msgstr "_Lagre bilde..." +#, c-format msgid "_Add Custom Smiley..." msgstr "_Legg til tilpassede smilefjes" @@ -10910,11 +11840,17 @@ msgid "_Description" msgstr "_Beskrivelse" -msgid "Please enter the URL and description of the link that you want to insert. The description is optional." -msgstr "Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt." +msgid "" +"Please enter the URL and description of the link that you want to insert. " +"The description is optional." +msgstr "" +"Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet " +"er valgfritt." msgid "Please enter the URL of the link that you want to insert." -msgstr "Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt." +msgstr "" +"Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet " +"er valgfritt." msgid "Insert Link" msgstr "Sett inn lenke" @@ -10934,7 +11870,8 @@ "This smiley is disabled because a custom smiley exists for this shortcut:\n" " %s" msgstr "" -"Smilefjeset er deaktivert fordi et tilpasset smilefjes eksisterer for denne snarveien:\n" +"Smilefjeset er deaktivert fordi et tilpasset smilefjes eksisterer for denne " +"snarveien:\n" "%s" msgid "Smile!" @@ -10986,7 +11923,7 @@ msgstr "Nullstill formatering" msgid "Insert IM Image" -msgstr "Sett inn direktemeldingsbilde" +msgstr "Sett inn lynmeldingsbilde" msgid "Insert Smiley" msgstr "Sett inn smilefjes" @@ -11043,16 +11980,27 @@ msgstr "Undersøk rettigheter og prøv igjen." #, c-format -msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?" -msgstr "Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som startet på %s?" - -#, c-format -msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?" -msgstr "Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som startet på %s?" - -#, c-format -msgid "Are you sure you want to permanently delete the system log which started at %s?" -msgstr "Er du sikker på at du for alltid vil slette systemloggen som starte på %s?" +msgid "" +"Are you sure you want to permanently delete the log of the conversation with " +"%s which started at %s?" +msgstr "" +"Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som " +"startet på %s?" + +#, c-format +msgid "" +"Are you sure you want to permanently delete the log of the conversation in %" +"s which started at %s?" +msgstr "" +"Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som " +"startet på %s?" + +#, c-format +msgid "" +"Are you sure you want to permanently delete the system log which started at %" +"s?" +msgstr "" +"Er du sikker på at du for alltid vil slette systemloggen som starte på %s?" msgid "Delete Log?" msgstr "Slette logg?" @@ -11101,7 +12049,8 @@ " -m, --multiple Ikke garantere en enkelt instans\n" " -n, --nologin Ikke logg inn automatisk\n" " -l, --login[=NAVN] Logg inn automatisk (Valgfritt argument NAVN \n" -" angir hvilke kontoer som skal brukes med komma som skilletegn.\n" +" angir hvilke kontoer som skal brukes med komma som " +"skilletegn.\n" " Uten dette brukes kun den første kontoen.)\n" " --display=DISPLAY X display for bruk\n" " -v, --version Vis den nårværende versjon og avslutt\n" @@ -11130,7 +12079,8 @@ " -m, --multiple Ikke garantere en enkelt instans\n" " -n, --nologin Ikke logg inn automatisk\n" " -l, --login[=NAVN] Logg inn automatisk (Valgfritt argument NAVN \n" -" angir hvilke kontoer som skal brukes med komma som skilletegn.\n" +" angir hvilke kontoer som skal brukes med komma som " +"skilletegn.\n" " Uten dette brukes kun den første kontoen.)\n" " -v, --version Vis den nårværende versjon og avslutt\n" @@ -11167,6 +12117,10 @@ msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "Avslutter fordi en annen libpurple-klient allerede kjører.\n" + msgid "Open All Messages" msgstr "Åpne alle beskjeder" @@ -11196,8 +12150,11 @@ msgid "Error launching \"%s\": %s" msgstr "Feil under starting av «%s
:%s" -msgid "The 'Manual' browser command has been chosen, but no command has been set." -msgstr "Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er valgt, men ingen kommando for denne har blitt satt." +msgid "" +"The 'Manual' browser command has been chosen, but no command has been set." +msgstr "" +"Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er " +"valgt, men ingen kommando for denne har blitt satt." msgid "The following plugins will be unloaded." msgstr "Følgende tillegg kunne ikke losses." @@ -11211,7 +12168,9 @@ msgid "Could not unload plugin" msgstr "Klarte ikke fjerne tillegget" -msgid "The plugin could not be unloaded now, but will be disabled at the next startup." +msgid "" +"The plugin could not be unloaded now, but will be disabled at the next " +"startup." msgstr "Tillegget kan ikke fjernes nå, men blir deaktivert ved neste oppstart." #, c-format @@ -11281,7 +12240,7 @@ msgstr "Sender en _beskjed" msgid "Ope_n an IM window" -msgstr "Åpn_e vindu for direktemelding" +msgstr "Åpn_e vindu for lynmelding" msgid "_Pop up a notification" msgstr "_Varslingsvindu spretter opp" @@ -11319,8 +12278,12 @@ msgid "Install Theme" msgstr "Installer tema" -msgid "Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list." -msgstr "Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan installeres ved å dra og slippe dem over temalisten." +msgid "" +"Select a smiley theme that you would like to use from the list below. New " +"themes can be installed by dragging and dropping them onto the theme list." +msgstr "" +"Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan " +"installeres ved å dra og slippe dem over temalisten." msgid "Icon" msgstr "Ikon" @@ -11344,7 +12307,7 @@ msgstr "Skjuling av samtalevindu" msgid "_Hide new IM conversations:" -msgstr "_Gjem nye direktemeldingssamtaler:" +msgstr "_Gjem nye lynmeldingssamtaler:" msgid "When away" msgstr "Når fraværende" @@ -11354,7 +12317,7 @@ msgstr "Faner" msgid "Show IMs and chats in _tabbed windows" -msgstr "Vis direktemeldinger og samtalegrupper i _faner" +msgstr "Vis lynmeldinger og samtalegrupper i _faner" msgid "Show close b_utton on tabs" msgstr "Vis _lukkeknapp på faner" @@ -11387,7 +12350,7 @@ msgstr "Vis _formateringsverktøy på innkommende beskjeder" msgid "Close IMs immediately when the tab is closed" -msgstr "Lukk direktemeldinger straks når fanen er lukket" +msgstr "Lukk lynmeldinger straks når fanen er lukket" msgid "Show _detailed information" msgstr "Vis _detaljert informasjon" @@ -11405,7 +12368,7 @@ msgstr "Bruk behagelig scrolling" msgid "F_lash window when IMs are received" -msgstr "B_link vinduet når nye direktemeldinger mottas" +msgstr "B_link vinduet når nye lynmeldinger mottas" msgid "Minimi_ze new conversation windows" msgstr "Mini_mer nye samtalevinduer" @@ -11428,8 +12391,12 @@ msgid "Default Formatting" msgstr "Standardformatering" -msgid "This is how your outgoing message text will appear when you use protocols that support formatting." -msgstr "Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter formatering." +msgid "" +"This is how your outgoing message text will appear when you use protocols " +"that support formatting." +msgstr "" +"Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter " +"formatering." msgid "Cannot start proxy configuration program." msgstr "Klarte ikke starte innstillingsprogrammet for mellomlageret." @@ -11492,6 +12459,10 @@ msgid "No proxy" msgstr "Ingen proxy" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "Bruk fjern DNS med SOCKS4-mellomtenarar" + msgid "_User:" msgstr "_Bruker:" @@ -11572,21 +12543,27 @@ msgid "Sound Selection" msgstr "Lydvalg" +#, c-format msgid "Quietest" msgstr "Stillest" +#, c-format msgid "Quieter" msgstr "Stillere" +#, c-format msgid "Quiet" msgstr "Stille" +#, c-format msgid "Loud" msgstr "Høy" +#, c-format msgid "Louder" msgstr "Høyere" +#, c-format msgid "Loudest" msgstr "Høyest" @@ -11690,14 +12667,14 @@ msgid "Block only the users below" msgstr "Blokker kun brukerne vist nedenfor" -msgid "Privacy" +msgid "Personvern" msgstr "Sikkerhet" msgid "Changes to privacy settings take effect immediately." msgstr "Endringer i sikkerhetsinnstillingene skjer umiddelbart." msgid "Set privacy for:" -msgstr "Sett sikkerhet for:" +msgstr "Sett personvern for:" #. Remove All button msgid "Remove Al_l" @@ -11809,8 +12786,12 @@ msgid "Duplicate Shortcut" msgstr "Duplikat snarvei" -msgid "A custom smiley for the selected shortcut already exists. Please specify a different shortcut." -msgstr "Et tilpasset smilefjes finnes allerede for den valgte snarveien. Oppgi en annen snarvei." +msgid "" +"A custom smiley for the selected shortcut already exists. Please specify a " +"different shortcut." +msgstr "" +"Et tilpasset smilefjes finnes allerede for den valgte snarveien. Oppgi en " +"annen snarvei." msgid "Please select an image for the smiley." msgstr "Velg et bilde for smilefjeset." @@ -11867,14 +12848,20 @@ msgstr "Kan ikke sende mappe %s." #, c-format -msgid "%s cannot transfer a folder. You will need to send the files within individually." +msgid "" +"%s cannot transfer a folder. You will need to send the files within " +"individually." msgstr "%s kan ikke overføre en mappe. Du må sende filene inni hver for seg." msgid "You have dragged an image" msgstr "Du har dratt et bilde" -msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user." -msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kontaktikon for denne brukeren." +msgid "" +"You can send this image as a file transfer, embed it into this message, or " +"use it as the buddy icon for this user." +msgstr "" +"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden " +"eller bruk det som kontaktikon for denne brukeren." msgid "Set as buddy icon" msgstr "Sett som kontaktikon" @@ -11888,11 +12875,19 @@ msgid "Would you like to set it as the buddy icon for this user?" msgstr "Vil du sette dette som kontaktikon for denne brukeren?" -msgid "You can send this image as a file transfer, or use it as the buddy icon for this user." -msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kontaktikon for denne brukeren." - -msgid "You can insert this image into this message, or use it as the buddy icon for this user" -msgstr "Du kan sette inn dette bildet i beskjed eller bruke det som kontaktikon for denne brukeren" +msgid "" +"You can send this image as a file transfer, or use it as the buddy icon for " +"this user." +msgstr "" +"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden " +"eller bruk det som kontaktikon for denne brukeren." + +msgid "" +"You can insert this image into this message, or use it as the buddy icon for " +"this user" +msgstr "" +"Du kan sette inn dette bildet i beskjed eller bruke det som kontaktikon for " +"denne brukeren" #. I don't know if we really want to do anything here. Most of the desktop item types are crap like #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really @@ -11902,8 +12897,12 @@ msgid "Cannot send launcher" msgstr "Klarte ikke sende lasteren" -msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself." -msgstr "Du dro en skrivebordstarter. Sannsynligvis ville du sende det som starteren peker til og ikke selve starteren." +msgid "" +"You dragged a desktop launcher. Most likely you wanted to send whatever this " +"launcher points to instead of this launcher itself." +msgstr "" +"Du dro en skrivebordstarter. Sannsynligvis ville du sende det som starteren " +"peker til og ikke selve starteren." #, c-format msgid "" @@ -11930,8 +12929,10 @@ msgstr "Klarte ikke å åpne fil '%s': %s" #, c-format -msgid "Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "Feilet å laste bilde '%s': grunn ukjent, sannsynligvis en korrupt bilde fil" +msgid "" +"Failed to load image '%s': reason not known, probably a corrupt image file" +msgstr "" +"Feilet å laste bilde '%s': grunn ukjent, sannsynligvis en korrupt bilde fil" msgid "Save File" msgstr "Lagre fil" @@ -12042,8 +13043,12 @@ msgid "Point values to use when..." msgstr "Verdier for bruk når..." -msgid "The buddy with the largest score is the buddy who will have priority in the contact.\n" -msgstr "Kontakten med den største score er kontakten som vil ha prioritet i kontakten.\n" +msgid "" +"The buddy with the largest score is the buddy who will have priority " +"in the contact.\n" +msgstr "" +"Kontakten med den største score er kontakten som vil ha prioritet i " +"kontakten.\n" msgid "Use last buddy when scores are equal" msgstr "Bruk den siste kontakten når resultatene er lik" @@ -12063,12 +13068,18 @@ #. *< name #. *< version #. *< summary -msgid "Allows for controlling the values associated with different buddy states." -msgstr "Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i." +msgid "" +"Allows for controlling the values associated with different buddy states." +msgstr "" +"Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i." #. *< description -msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations." -msgstr "Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i kontaktprioritetsutregninger." +msgid "" +"Allows for changing the point values of idle/away/offline states for buddies " +"in contact priority computations." +msgstr "" +"Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i " +"kontaktprioritetsutregninger." msgid "Conversation Colors" msgstr "Samtalefarger" @@ -12102,7 +13113,7 @@ msgstr "Legg til i Samtaler" msgid "Apply in IMs" -msgstr "Legg til i Direktemeldinger" +msgstr "Legg til i Lynmeldinger" msgid "By conversation count" msgstr "Etter samtaleantall" @@ -12111,14 +13122,20 @@ msgstr "Samtaleplassering" #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above -msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"." -msgstr "NB: Preferansene for \"Nye samtaler\" må være satt til \"By conversation count\"." +msgid "" +"Note: The preference for \"New conversations\" must be set to \"By " +"conversation count\"." +msgstr "" +"NB: Preferansene for \"Nye samtaler\" må være satt til \"By conversation " +"count\"." msgid "Number of conversations per window" msgstr "Antall samtaler per vindu" msgid "Separate IM and Chat windows when placing by number" -msgstr "Separere direktemeldings- og chattevinduer når programet plasserer etter nummer" +msgstr "" +"Separere lynmeldings- og chattevinduer når programet plasserer etter " +"nummer" #. *< type #. *< ui_requirement @@ -12136,8 +13153,12 @@ #. *< summary #. * description -msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats" -msgstr "Begrens det maksimale antallet samtaler per vindu, og eventuelt separering av direktemeldinger og chat" +msgid "" +"Restrict the number of conversations per windows, optionally separating IMs " +"and Chats" +msgstr "" +"Begrens det maksimale antallet samtaler per vindu, og eventuelt separering " +"av lynmeldinger og chat" #. Configuration frame msgid "Mouse Gestures Configuration" @@ -12170,22 +13191,26 @@ #. * description msgid "" -"Allows support for mouse gestures in conversation windows. Drag the middle mouse button to perform certain actions:\n" +"Allows support for mouse gestures in conversation windows. Drag the middle " +"mouse button to perform certain actions:\n" " • Drag down and then to the right to close a conversation.\n" " • 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 "" -"Gir støtte til musebevegelser i samtalevinduer. Dra midtknappen på musa for å utføre enkelte handlinger:\n" +"Gir støtte til musebevegelser i samtalevinduer. Dra midtknappen på musa for " +"å utføre enkelte handlinger:\n" " • dra ned og til høyre: lar deg lukke en samtale.\n" " • dra opp og til venstre: bytter til forrige samtale.\n" " • dra opp og til høyre: bytter til neste samtale." msgid "Instant Messaging" -msgstr "Direktemeldinger" +msgstr "Lynmeldinger" #. Add the label. msgid "Select a person from your address book below, or add a new person." -msgstr "Velg en person fra adresseboken som er vist under, eller legg til en ny person." +msgstr "" +"Velg en person fra adresseboken som er vist under, eller legg til en ny " +"person." msgid "Group:" msgstr "Gruppe:" @@ -12199,8 +13224,12 @@ msgstr "Velg kontakt" #. Add the label. -msgid "Select a person from your address book to add this buddy to, or create a new person." -msgstr "Velg en person fra adresseboka for å legge til denne kontakten, eller lag en ny kontakt." +msgid "" +"Select a person from your address book to add this buddy to, or create a new " +"person." +msgstr "" +"Velg en person fra adresseboka for å legge til denne kontakten, eller lag en " +"ny kontakt." #. Add the expander msgid "User _details" @@ -12223,7 +13252,7 @@ msgstr "Legg til i adresseboka" msgid "Send Email" -msgstr "Send E-post" +msgstr "Send e-post" #. Configuration frame msgid "Evolution Integration Configuration" @@ -12322,7 +13351,8 @@ msgstr "Sjekker for ny lokal e-post." msgid "Adds a small box to the buddy list that shows if you have new mail." -msgstr "Legger til en liten boks i kontaktlista som viser om du har fått e-post." +msgstr "" +"Legger til en liten boks i kontaktlista som viser om du har fått e-post." msgid "Markerline" msgstr "Markeringslinje" @@ -12337,14 +13367,18 @@ msgstr "Tegn Understrek i " msgid "_IM windows" -msgstr "Vinduer for direktemeldinger" +msgstr "Vinduer for lynmeldinger" # msgid "C_hat windows" msgstr "_Samtalevinduer" -msgid "A music messaging session has been requested. Please click the MM icon to accept." -msgstr "En musikk samtale økt har blitt forespurt. Vennligst klikk på MM ikonet for å akseptere." +msgid "" +"A music messaging session has been requested. Please click the MM icon to " +"accept." +msgstr "" +"En musikk samtale økt har blitt forespurt. Vennligst klikk på MM ikonet for " +"å akseptere." msgid "Music messaging session confirmed." msgstr "Musikk samtale økt bekreftet." @@ -12383,8 +13417,12 @@ msgstr "Musikk Samtale Tillegg for samarbeids komposisjon." #. * summary -msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time." -msgstr "Musikk Samtale Tillegg tillater flere brukere å arbeide på et stykke musikk samtidig ved å redigere et felles resultat i samtid." +msgid "" +"The Music Messaging Plugin allows a number of users to simultaneously work " +"on a piece of music by editting a common score in real-time." +msgstr "" +"Musikk Samtale Tillegg tillater flere brukere å arbeide på et stykke musikk " +"samtidig ved å redigere et felles resultat i samtid." #. ---------- "Notify For" ---------- msgid "Notify For" @@ -12527,6 +13565,7 @@ msgid "Select Color" msgstr "Velg farge" +#, c-format msgid "Select Interface Font" msgstr "Velg Grensesnitt Font" @@ -12591,8 +13630,12 @@ msgid "Lets you send raw input to text-based protocols." msgstr "Lar deg sende direktekommandoer til tekstbaserte protokoller." -msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window." -msgstr "Lar deg sende direktekommandoer til tekstbaserte protokoller (XMPP, MSN, IRC, TOC). Trykk «Enter» for å sende og sjekk feilsøkingsvinduet." +msgid "" +"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit " +"'Enter' in the entry box to send. Watch the debug window." +msgstr "" +"Lar deg sende direktekommandoer til tekstbaserte protokoller (XMPP, MSN, " +"IRC, TOC). Trykk «Enter» for å sende og sjekk feilsøkingsvinduet." #, c-format msgid "You can upgrade to %s %s today." @@ -12623,8 +13666,11 @@ msgstr "Sjekker periodisk for nye utgaver." #. * description -msgid "Checks periodically for new releases and notifies the user with the ChangeLog." -msgstr "Sjekker periodisk for nye versjoner, og gir endringslista til brukeren." +msgid "" +"Checks periodically for new releases and notifies the user with the " +"ChangeLog." +msgstr "" +"Sjekker periodisk for nye versjoner, og gir endringslista til brukeren." #. *< major version #. *< minor version @@ -12643,8 +13689,12 @@ msgstr "Send-knapp i samtalevindu" #. *< summary -msgid "Adds a Send button to the entry area of the conversation window. Intended for when no physical keyboard is present." -msgstr "Legg til en Send-knapp i samtalevinduet. Tenkt brukt når intet fysisk tastatur er tilgjengelig." +msgid "" +"Adds a Send button to the entry area of the conversation window. Intended " +"for when no physical keyboard is present." +msgstr "" +"Legg til en Send-knapp i samtalevinduet. Tenkt brukt når intet fysisk " +"tastatur er tilgjengelig." msgid "Duplicate Correction" msgstr "Dupliserings Korrigering" @@ -12736,6 +13786,7 @@ msgid "Timestamp Format Options" msgstr "Innstillinger for Tidsstempel Format" +#, c-format msgid "_Force 24-hour time format" msgstr "_Tving 24-timers format" @@ -12771,24 +13822,28 @@ msgstr "Lager egne tidsstempel formater for beskjeder." #. * description -msgid "This plugin allows the user to customize conversation and logging message timestamp formats." -msgstr "Dette tillegget tillater brukeren å lage egne samtale og loggings tidsstempler." +msgid "" +"This plugin allows the user to customize conversation and logging message " +"timestamp formats." +msgstr "" +"Dette tillegget tillater brukeren å lage egne samtale og loggings " +"tidsstempler." msgid "Opacity:" msgstr "Ugjennomsiktighet:" #. IM Convo trans options msgid "IM Conversation Windows" -msgstr "Samtalevinduer for direktemeldinger" +msgstr "Samtalevinduer for lynmeldinger" msgid "_IM window transparency" -msgstr "Gjennomsiktige vinduer for direktemeldinger" +msgstr "Gjennomsiktige vinduer for lynmeldinger" msgid "_Show slider bar in IM window" -msgstr "Vis _glideknapp i direktemeldingsvindu" +msgstr "Vis _glideknapp i lynmeldingsvindu" msgid "Remove IM window transparency on focus" -msgstr "Ta vekk transparens i direktemeldingsvindu ved fokus" +msgstr "Ta vekk transparens i lynmeldingsvindu ved fokus" # msgid "Always on top" @@ -12821,11 +13876,13 @@ #. * description msgid "" -"This plugin enables variable alpha transparency on conversation windows and the buddy list.\n" +"This plugin enables variable alpha transparency on conversation windows and " +"the buddy list.\n" "\n" "* Note: This plugin requires Win2000 or greater." msgstr "" -"Dette programtillegget gir variabel alfa-transparens i samtalevindu og kontaktlisten.\n" +"Dette programtillegget gir variabel alfa-transparens i samtalevindu og " +"kontaktlisten.\n" "\n" "*Merk: Tillegget krever Windows 2000 eller senere utgaver." @@ -12851,17 +13908,17 @@ msgid "Only when docked" msgstr "Kun når skjult i systemstatusfeltet" -msgid "_Flash window when chat messages are received" -msgstr "La vinduet _blinke når det kommer nye beskjeder" - msgid "Windows Pidgin Options" msgstr "Valg for Windows Pidgin" msgid "Options specific to Pidgin for Windows." msgstr "Innstillinger som er spesifikke for Pidgin på Windows." -msgid "Provides options specific to Pidgin for Windows , such as buddy list docking." -msgstr "Gir spesifikke innstillinger for Pidgin på Windows, slik som skjuling av kontaktliste i systemstatusfeltet." +msgid "" +"Provides options specific to Pidgin for Windows , such as buddy list docking." +msgstr "" +"Gir spesifikke innstillinger for Pidgin på Windows, slik som skjuling av " +"kontaktliste i systemstatusfeltet." msgid "Logged out." msgstr "Logget ut." @@ -12898,7 +13955,14 @@ #. * description msgid "This plugin is useful for debbuging XMPP servers or clients." -msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter." +msgstr "" +"Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter." + +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "Klarte ikke hente MSN-adressebok" + +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "La vinduet _blinke når det kommer nye beskjeder" #, fuzzy #~ msgid "Connection to server lost (no data received within %d second)" @@ -12908,6 +13972,7 @@ #~ "Tilkobling til server mistet (ingen data mottatt iløpet av %d sekunder)" #~ msgstr[1] "" #~ "Tilkobling til server mistet (ingen data mottatt iløpet av %d sekunder)" + #~ msgid "" #~ "You may be disconnected shortly. You may want to use TOC until this is " #~ "fixed. Check %s for updates." @@ -12922,6 +13987,7 @@ #, fuzzy #~ msgid "Can not decrypt get server reply" #~ msgstr "Kan ikke hente tjenerinformasjon" + #~ msgid "Keep alive error" #~ msgstr "Hold i livet feil" @@ -12936,16 +14002,20 @@ #, fuzzy #~ msgid "Connecting server ..." #~ msgstr "Koble til tjener" + #~ msgid "Failed to send IM." -#~ msgstr "Feilet i å sende direktemelding." +#~ msgstr "Feilet i å sende lynmelding." + #~ msgid "User information for %s unavailable" #~ msgstr "Brukerinformasjon for %s er ikke tilgjengelig" + #~ msgid "A group with the name already exists." #~ msgstr "En gruppe med dette navnet eksisterer allerede." #, fuzzy #~ msgid "Primary Information" #~ msgstr "Profilinformasjon" + #~ msgid "Blood Type" #~ msgstr "Blodtype" @@ -12956,6 +14026,7 @@ #, fuzzy #~ msgid "Successed:" #~ msgstr "Hastighet:" + #~ msgid "" #~ "Setting custom faces is not currently supported. Please choose an image " #~ "from %s." @@ -12970,6 +14041,7 @@ #, fuzzy #~ msgid "You rejected %d's request" #~ msgstr "Uventet forespørsel" + #~ msgid "Reject request" #~ msgstr "Avslå forespørsel" @@ -12984,12 +14056,14 @@ #, fuzzy #~ msgid "QQ Number Error" #~ msgstr "QQ Nummer" + #~ msgid "Group Description" #~ msgstr "Gruppebeskrivelse" #, fuzzy #~ msgid "Auth" #~ msgstr "Godkjenn" + #~ msgid "Approve" #~ msgstr "Godkjenn" @@ -13005,20 +14079,24 @@ #, fuzzy #~ msgid "[%d] added to Qun \"%d\"" #~ msgstr "Du [%d] har blitt lagt til i gruppen \"%d\"" + #~ msgid "I am a member" #~ msgstr "Jeg er en medlem" #, fuzzy #~ msgid "I am requesting" #~ msgstr "Ugyldig forespørsel" + #~ msgid "I am the admin" #~ msgstr "Jeg er admin" + #~ msgid "Unknown status" #~ msgstr "Ukjent status" #, fuzzy #~ msgid "Remove from Qun" #~ msgstr "Fjern gruppe" + #~ msgid "You entered a group ID outside the acceptable range" #~ msgstr "Du tastet inn en gruppe ID utenfor den aksepterte rekkevidden" @@ -13059,6 +14137,7 @@ #, fuzzy #~ msgid "Leave the QQ Qun" #~ msgstr "Forlat denne QQ Qun" + #~ msgid "Block this buddy" #~ msgstr "Blokker denne kontakten" @@ -13091,6 +14170,7 @@ #, fuzzy #~ msgid "QQ Budy" #~ msgstr "Legg til kontakt" + #~ msgid "%s wants to add you [%s] as a friend" #~ msgstr "%s ønsker å legge deg [%s] som en venn" @@ -13109,32 +14189,42 @@ #, fuzzy #~ msgid "Network disconnected" #~ msgstr "Frakoblet" + #~ msgid "developer" #~ msgstr "utvikler" + #~ msgid "XMPP developer" #~ msgstr "XMPP-utvikler" + #~ msgid "Artists" #~ msgstr "Artister" + #~ msgid "" #~ "You are using %s version %s. The current version is %s. You can get it " #~ "from %s


" #~ msgstr "" #~ "Du bruker %s versjon %s. Den nåværende versjonen er %s. Du kan hente den " #~ "fra %s
" + #~ msgid "ChangeLog:
%s" #~ msgstr "Endringslogg:
%s" + #~ msgid "Screen name:" #~ msgstr "Skjermnavn:" + #~ msgid "Pounce only when my status is not available" #~ msgstr "Pounce kun når min status er ikke tilgjengelig" + #~ msgid "Someone says your screen name in chat" #~ msgstr "Noen roper skjermnavnet ditt i en samtale" + #~ msgid "EOF while reading from resolver process" #~ msgstr "Feil under lesing fra socket" #, fuzzy #~ msgid "Error setting socket options" #~ msgstr "Feil: kunne ikke koble til" + #~ msgid "" #~ "This server requires plaintext authentication over an unencrypted " #~ "connection. Allow this and continue authentication?" @@ -13153,10 +14243,12 @@ #, fuzzy #~ msgid "Windows Live ID authentication Failed" #~ msgstr "Autentisering feilet" + #~ msgid "" #~ "Sorry, passwords over %d characters in length (yours is %d) are not " #~ "supported by MySpace." #~ msgstr "Sorry, passord over %d tegn (du har %d) er ikke støttet av MySpace." + #~ msgid "" #~ "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile." #~ "username and choose a username and try to login again." @@ -13164,73 +14256,99 @@ #~ "Vennligst gå til http://editprofile.myspace.com/index.cfm?" #~ "fuseaction=profile.username og velg et brukernavn og prøv å logge inn " #~ "igjen." + #~ msgid "Too evil (sender)" #~ msgstr "Altfor ond (sender)" + #~ msgid "Too evil (receiver)" #~ msgstr "Altfor ond (mottaker)" + #~ msgid "Screen name sent" #~ msgstr "Skjermnavn sendt" + #~ msgid "Invalid screen name." #~ msgstr "Ugyldig brukernavn." + #~ msgid "Available Message" #~ msgstr "Tilstedebeskjed" + #~ msgid "Screen name" #~ msgstr "Skjermnavn" + #~ msgid "Away Message" #~ msgstr "Fraværsbeskjed" + #~ msgid "(retrieving)" #~ msgstr "(mottar)" #, fuzzy #~ msgid "Use recent buddies group" #~ msgstr "Brukeren er ikke i gruppen" + #~ msgid "Show how long you have been idle" #~ msgstr "Vis hvor lenge du har vært inaktiv" + #~ msgid "Your information has been updated" #~ msgstr "Din informasjon har blitt oppdatert" + #~ msgid "Input your reason:" #~ msgstr "Sett inn din grunn:" + #~ msgid "You have successfully removed a buddy" #~ msgstr "Fjerning av kompis var vellykket" + #~ msgid "You have successfully removed yourself from your friend's buddy list" #~ msgstr "Fjerning av deg selv fra kompisen dins venneliste var vellykket" + #~ msgid "You have added %d to buddy list" #~ msgstr "Legg til brukeren %d i kontaktlisten din" #, fuzzy #~ msgid "Invalid QQid" #~ msgstr "Ugyldig authzid" + #~ msgid "Please enter external group ID" #~ msgstr "Skriv ekstern gruppe ID" + #~ msgid "Your request to join group %d has been approved by admin %d" #~ msgstr "" #~ "Din forespørsel til å bli med i gruppen %d har blitt godkjent av admin %d" + #~ msgid "This group has been added to your buddy list" #~ msgstr "Denne gruppen har blitt lagt til kontaktlisten din" + #~ msgid "I am applying to join" #~ msgstr "Jeg søker om å bli med" + #~ msgid "You have successfully left the group" #~ msgstr "Du har forlatt gruppen" + #~ msgid "QQ Group Auth" #~ msgstr "QQ Group Auth" + #~ msgid "Your authorization request has been accepted by the QQ server" #~ msgstr "Din autoriserings forespørsel har blitt godtatt av QQ serveren" + #~ msgid "Code [0x%02X]: %s" #~ msgstr "Kode [0x%02X]: %s" #, fuzzy #~ msgid "Group Operation Error" #~ msgstr "Filoperasjonsfeil" + #~ msgid "Enter your reason:" #~ msgstr "Skriv din grunn:" #, fuzzy #~ msgid "Error requesting login token" #~ msgstr "Feil: kunne ikke koble til" + #~ msgid "Unable to login, check debug log" #~ msgstr "Klarte ikke logge inn, sjekk debug logg" + #~ msgid "TCP Address" #~ msgstr "TCP-adresse" + #~ msgid "UDP Address" #~ msgstr "UDP-adresse" @@ -13241,16 +14359,22 @@ #, fuzzy #~ msgid "Login failed, no reply" #~ msgstr "Pålogging feilet (%s)" + #~ msgid "User %s rejected your request" #~ msgstr "Buker %s har avslått din forespørsel" + #~ msgid "User %s approved your request" #~ msgstr "Buker %s har godkjent din forespørsel" + #~ msgid "Cannot find/access ~/.silc directory" #~ msgstr "Kan ikke finne/åpne ~/.silc katalog" + #~ msgid "Screen _name:" #~ msgstr "Skjerm_navn:" + #~ msgid "_Merge" #~ msgstr "_Flette" + #~ msgid "" #~ "Please enter the screen name of the person you would like to add to your " #~ "buddy list. You may optionally enter an alias, or nickname, for the " @@ -13261,14 +14385,19 @@ #~ "kontaktlisten din. I tillegg kan du skrive inn et alias, eller kallenavn, " #~ "for kontakten. Aliaset vil bli vist i stedet for skjermnavnet der det er " #~ "mulig.\n" + #~ msgid "A_ccount:" #~ msgstr "K_onto:" + #~ msgid "_Screen name:" #~ msgstr "_Skjermnavn:" + #~ msgid "User has typed something and stopped" #~ msgstr "Brukeren har skrevet noe og pauset" + #~ msgid "S_mile!" #~ msgstr "S_mil!" + #~ msgid "" #~ "%s%sWritten by:\t%s\n" #~ "Website:\t\t%s\n" @@ -13281,34 +14410,47 @@ #, fuzzy #~ msgid "Display Statistics" #~ msgstr "Vis advarsler om tidsavbrudd" + #~ msgid "" #~ "The contact availability plugin (cap) is used to display statistical " #~ "information about buddies in a users contact list." #~ msgstr "" #~ "Forutsigelse av Kontaktens Tilgjengelighet tillegg (cap) er brukt for å " #~ "vise statistisk informasjon om kontakter i en brukers kontaktliste." + #~ msgid "There were errors unloading the plugin." #~ msgstr "Det oppsto feil i lossing av tillegget." + #~ msgid "Couldn't open file" #~ msgstr "Klarte ikke åpne filen" + #~ msgid "Error initializing session" #~ msgstr "Feil under oppretting av sesjon" + #~ msgid "Unable to connect to contact server" #~ msgstr "Kan ikke koble til tjener" + #~ msgid "Unable to connect to OIM server" #~ msgstr "Kan ikke koble til OIM server" + #~ msgid "Unable to make SSL connection to server." #~ msgstr "Klarte ikke opprette SSL-forbindelse med tjeneren." + #~ msgid "Invalid chat name specified." #~ msgstr "Ugyldig gruppesamtalenavn oppgitt." + #~ msgid "%s changed status from %s to %s" #~ msgstr "%s har endret status fra %s til %s" + #~ msgid "%s is now %s" #~ msgstr "%s er nå %s" + #~ msgid "%s is no longer %s" #~ msgstr "%s er ikke lenger %s" + #~ msgid "%s disconnected: %s" #~ msgstr "%s koblet fra: %s" + #~ msgid "" #~ "%s\n" #~ "\n" @@ -13319,10 +14461,13 @@ #~ "\n" #~ "%s vil ikke prøve og koble til kontoen igjen for du har rettet på feilen " #~ "og slått på kontoen igjen." + #~ msgid "Filter: " #~ msgstr "Filter: " + #~ msgid "The dependent plugin %s failed to unload." #~ msgstr "Det nødvendige tillegget %s kunne ikke lastes." + #~ msgid "" #~ "The AIM servers were temporarily unable to send your buddy list. Your " #~ "buddy list is not lost, and will probably become available in a few hours." @@ -13330,14 +14475,16 @@ #~ "Pidgin klarte ikke å hente kontaktlisten din fra AIM-tjenerne. " #~ "Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet " #~ "av få timer." + #~ msgid "" #~ "Always use ICQ proxy server for file transfers\n" #~ "(slower, but does not reveal your IP address)" #~ msgstr "" #~ "Alltid bruk ICQ proxy server for filoverføring\n" #~ "(saktere, men avslører ikke din IP adresse)" + #~ msgid "/Buddies/Show" #~ msgstr "/Kontakter/Vis" + #~ msgid "Autojoin when account becomes online." #~ msgstr "Autotilknytt når konto er tilkoblet." - diff -r a0668fbf2483 -r b98519a42e53 po/pa.po --- a/po/pa.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/pa.po Mon Mar 02 22:07:59 2009 +0000 @@ -1,22 +1,21 @@ -# translation of pidin.po to Punjabi +# translation of pa.po to Punjabi # This file is distributed under the same license as the PACKAGE package. # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER. # -# Amanpreet Singh Alam[ਆਲਮ] , 2005. -# A S Alam , 2006, 2007. -# A S Alam , 2007. -msgid "" -msgstr "" -"Project-Id-Version: pidin\n" +# A S Alam , 2005,2006, 2007, 2009. +# Amanpreet Singh Alam , 2009. +msgid "" +msgstr "" +"Project-Id-Version: pa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-01 15:52-0800\n" -"PO-Revision-Date: 2007-11-10 06:25+0530\n" -"Last-Translator: A S Alam \n" -"Language-Team: Punjabi \n" +"POT-Creation-Date: 2009-02-22 09:57-0500\n" +"PO-Revision-Date: 2009-02-26 22:23+0530\n" +"Last-Translator: Amanpreet Singh Alam \n" +"Language-Team: Punjabi \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: nplurals=2; plural=(n != 1);\n" "\n" "\n" "X-Generator: KBabel 1.11.4\n" @@ -36,7 +35,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -45,7 +44,7 @@ "ਵਰਤੋਂ: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -64,19 +63,17 @@ msgstr "ਗਲਤੀ" msgid "Account was not added" -msgstr "ਅਕਾਊਂਟ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ" - -#, fuzzy +msgstr "ਅਕਾਊਂਟ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ" + msgid "Username of an account must be non-empty." -msgstr "ਇੱਕ ਅਕਾਊਂਟ ਦਾ ਸਕਰੀਨ ਨਾਂ ਖਾਲੀ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" +msgstr "ਇੱਕ ਅਕਾਊਂਟ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਖਾਲੀ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ" msgid "New mail notifications" -msgstr "ਨਵੀਂ ਚਿੱਠੀ ਸੂਚਨਾ" +msgstr "ਨਵੀਂ ਮੇਲ ਨੋਟੀਫਿਕੇਸ਼ਨ" msgid "Remember password" msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ" -#, fuzzy msgid "There are no protocol plugins installed." msgstr "ਕੋਈ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।" @@ -92,9 +89,8 @@ msgid "Protocol:" msgstr "ਪ੍ਰੋਟੋਕਾਲ:" -#, fuzzy msgid "Username:" -msgstr "ਯੂਜ਼ਰ ਨਾਂ(_U):" +msgstr "ਯੂਜ਼ਰ ਨਾਂ:" msgid "Password:" msgstr "ਪਾਸਵਰਡ:" @@ -103,7 +99,6 @@ msgstr "ਏਲੀਆਸ:" #. Register checkbox -#, fuzzy msgid "Create this account on the server" msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ" @@ -185,9 +180,8 @@ msgid "Default" msgstr "ਡਿਫਾਲਟ" -#, fuzzy msgid "You must provide a username for the buddy." -msgstr "ਤੁਹਾਨੂੰ ਬੱਡੀ ਲਈ ਇੱਕ ਸਕਰੀਨ ਨਾਂ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।" +msgstr "ਤੁਹਾਨੂੰ ਬੱਡੀ ਲਈ ਯੂਜ਼ਰ ਨਾਂ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।" msgid "You must provide a group." msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਗਰੁੱਪ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।" @@ -204,13 +198,11 @@ msgid "Username" msgstr "ਯੂਜ਼ਰ ਨਾਂ" -#, fuzzy msgid "Alias (optional)" -msgstr "ਉਪ ਨਾਂ ਸੰਪਰਕ" - -#, fuzzy +msgstr "ਏਲੀਆਸ (ਚੋਣਵਾਂ)" + msgid "Add in group" -msgstr "ਗਰੁੱਪ ਸ਼ਾਮਿਲ" +msgstr "ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ" msgid "Account" msgstr "ਅਕਾਊਂਟ" @@ -352,9 +344,8 @@ msgid "Plugins" msgstr "ਪਲੱਗਇਨ" -#, fuzzy msgid "Block/Unblock" -msgstr "ਪਾਬੰਦੀ ਹਟਾਓ" +msgstr "ਪਾਬੰਦੀ ਲਗਾਓ/ਹਟਾਓ" msgid "Block" msgstr "ਪਾਬੰਦੀ" @@ -362,11 +353,10 @@ msgid "Unblock" msgstr "ਪਾਬੰਦੀ ਹਟਾਓ" -#, fuzzy msgid "" "Please enter the username or alias of the person you would like to Block/" "Unblock." -msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।" +msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ/ਹਟਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।" #. Not multiline #. Not masked? @@ -377,9 +367,8 @@ msgid "New Instant Message" msgstr "ਨਵਾਂ ਤਰੁੰਤ ਸੁਨੇਹਾ" -#, fuzzy msgid "Please enter the username or alias of the person you would like to IM." -msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।" +msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।" msgid "Channel" msgstr "ਚੈਨਲ" @@ -393,11 +382,10 @@ msgid "Join" msgstr "ਦਾਖਲ" -#, fuzzy msgid "" "Please enter the username or alias of the person whose log you would like to " "view." -msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਦਾ ਲਾਗ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।" +msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਦਾ ਲਾਗ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।" #. Create the "Options" frame. msgid "Options" @@ -406,20 +394,17 @@ msgid "Send IM..." msgstr "IM ਭੇਜੋ..." -#, fuzzy msgid "Block/Unblock..." -msgstr "ਪਾਬੰਦੀ ਹਟਾਓ" +msgstr "ਪਾਬੰਦੀ ਲਗਾਓ/ਹਟਾਓ..." msgid "Join Chat..." -msgstr "ਚੈਟ 'ਚ ਜੁਆਇੰਨ..." - -#, fuzzy +msgstr "ਗੱਲਬਾਤ 'ਚ ਦਾਖਲ..." + msgid "View Log..." -msgstr "ਲਾਗ ਵੇਖੋ" - -#, fuzzy +msgstr "ਲਾਗ ਵੇਖੋ..." + msgid "View All Logs" -msgstr "ਲਾਗ ਵੇਖੋ" +msgstr "ਸਭ ਲਾਗ ਵੇਖੋ" msgid "Show" msgstr "ਵੇਖੋ" @@ -442,16 +427,14 @@ msgid "By Log Size" msgstr "ਲਾਗ ਸਾਈਜ਼ ਰਾਹੀਂ" -#, fuzzy msgid "Buddy" -msgstr "ਬੱਡੀ(_B):" +msgstr "ਬੱਡੀ" msgid "Chat" msgstr "ਗੱਲਬਾਤ" -#, fuzzy msgid "Grouping" -msgstr "ਗਰੁੱਪ" +msgstr "ਗਰੁੱਪਿੰਗ" msgid "Certificate Import" msgstr "ਸਰਟੀਫਿਕੇਟ ਇੰਪੋਰਟ" @@ -562,7 +545,7 @@ msgid "" "The account has disconnected and you are no longer in this chat. You will be " "automatically rejoined in the chat when the account reconnects." -msgstr "" +msgstr "ਅਕਾਊਂਟ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ ਗਿਆ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਹ ਗੱਲਬਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਅਕਾਊਂਟ ਮੁੜ-ਕੁਨੈਕਟ ਹੋਣ ਨਾਲ ਆਟੋਮੈਟਿਕ ਹੀ ਮੁੜ-ਕੁਨੈਕਟ ਹੋ ਜਾਉਗੇ।" msgid "No such command." msgstr "ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ।" @@ -607,25 +590,24 @@ msgid "Logging started. Future messages in this conversation will be logged." msgstr "ਲਾਗ ਕਰਨਾ ਸ਼ੁਰੂ ਕੀਤਾ ਹੈ। ਇਨ੍ਹਾਂ ਗੱਲਾਂ ਲਈ ਅਗਲੇ ਸੁਨੇਹੇ ਲਾਗ ਕੀਤੇ ਜਾਣਗੇ।" -msgid "" -"Logging stopped. Future messages in this conversation will not be logged." +msgid "Logging stopped. Future messages in this conversation will not be logged." msgstr "ਲਾਗ ਕਰਨਾ ਬੰਦ ਕੀਤਾ। ਇਨ੍ਹਾਂ ਗੱਲਾਂ ਲਈ ਅਗਲੇ ਸੁਨੇਹੇ ਲਾਗ ਨਹੀਂ ਕੀਤੇ ਜਾਣਗੇ।" msgid "Send To" msgstr "ਭੇਜੋ" -#, fuzzy msgid "Invite message" -msgstr "ਸਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ" +msgstr "ਸੱਦਾ ਸੁਨੇਹਾ" msgid "Invite" msgstr "ਸੱਦਾ" -#, fuzzy msgid "" "Please enter the name of the user you wish to invite,\n" "along with an optional invite message." -msgstr "ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।" +msgstr "" +"ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਸੱਦਾ ਭੇਜਣਾ ਚਾਹੁੰਦੇ ਹੋ,\n" +"ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।" msgid "Conversation" msgstr "ਗੱਲਾਂਬਾਤਾਂ" @@ -639,9 +621,8 @@ msgid "Add Buddy Pounce..." msgstr "ਬੱਡੀ ਪਉਨਸ ਸ਼ਾਮਲ..." -#, fuzzy msgid "Invite..." -msgstr "ਸੱਦਾ" +msgstr "ਸੱਦਾ..." msgid "Enable Logging" msgstr "ਲਾਗ ਰੱਖਣ ਯੋਗ" @@ -652,11 +633,11 @@ msgid " " msgstr " " -#, fuzzy, c-format +#, c-format msgid "List of %d user:\n" msgid_plural "List of %d users:\n" -msgstr[0] "ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n" -msgstr[1] "ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n" +msgstr[0] "%d ਯੂਜ਼ਰ ਦੀ ਲਿਸਟ:\n" +msgstr[1] "%d ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n" msgid "Supported debug options are: version" msgstr "ਸਹਿਯੋਗੀ ਡੀਬੱਗ ਚੋਣਾਂ ਹਨ: version" @@ -675,11 +656,11 @@ msgid "" "%s is not a valid message class. See '/help msgcolor' for valid message " "classes." -msgstr "" +msgstr "%s ਇੱਕ ਵੈਧ ਸੁਨੇਹਾ ਕਲਾਸ ਨਹੀਂ ਹੈ। ਵੈਧ ਸੁਨੇਹਾ ਕਲਾਸਾਂ ਲਈ '/help msgcolor' ਵੇਖੋ।" #, c-format msgid "%s is not a valid color. See '/help msgcolor' for valid colors." -msgstr "" +msgstr "%s ਇੱਕ ਵੈਧ ਰੰਗ ਨਹੀਂ ਹੈ। ਵੈਧ ਰੰਗਾਂ ਲਈ '/help msgcolor' ਵੇਖੋ।" msgid "" "say <message>: Send a message normally as if you weren't using a " @@ -728,6 +709,9 @@ "background>: black, red, green, blue, white, gray, darkgray, magenta, " "cyan, default

EXAMPLE:
msgcolor send cyan default" msgstr "" +"msgcolor <class> <foreground> <background>: ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਸੁਨੇਹਿਆਂ ਦੀਆਂ ਵੱਖ ਵੱਖ ਕਲਾਸਾਂ ਲਈ ਰੰਗ ਸੈੱਟ ਕਰੋ।
<" +"class>: receive, send, highlight, action, timestamp
<foreground/" +"background>: ਕਾਲਾ, ਲਾਲ, ਹਰਾ, ਨੀਲਾ, ਚਿੱਟਾ, ਗਰੇ, ਗੂੜਾ-ਗਰੇ, ਮੈਗਨਿਟਾ, ਕਿਰਮਚੀ, ਡਿਫਾਲਟ

ਜਿਵੇਂ:
msgcolor send cyan default" msgid "Unable to open file." msgstr "ਫਾਇਲ ਖੋਲਣ ਲਈ ਅਸਫਲ ਹੈ।" @@ -748,11 +732,11 @@ msgid "Pause" msgstr "ਵਿਰਾਮ" -#, fuzzy, c-format +# , c-format msgid "File Transfers - %d%% of %d file" msgid_plural "File Transfers - %d%% of %d files" -msgstr[0] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %d%% ਫਾਇਲਾਂ %d ਵਿੱਚੋਂ" -msgstr[1] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %d%% ਫਾਇਲਾਂ %d ਵਿੱਚੋਂ" +msgstr[0] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %2$d ਵਿੱਚੋਂ %1$d%% ਫਾਇਲ" +msgstr[1] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %2$d ਵਿੱਚੋਂ %1$d%% ਫਾਇਲਾਂ" #. Create the window. msgid "File Transfers" @@ -799,13 +783,11 @@ msgid "%.2f KiB/s" msgstr "%.2f KiB/s" -#, fuzzy msgid "Sent" -msgstr "ਸੈੱਟ" - -#, fuzzy +msgstr "ਭੇਜੇ" + msgid "Received" -msgstr "ਪ੍ਰਾਪਤ ਹੋਏ ਸੁਨੇਹੇ" +msgstr "ਮਿਲੇ" msgid "Finished" msgstr "ਮੁਕੰਮਲ" @@ -814,21 +796,19 @@ msgid "The file was saved as %s." msgstr "ਫਾਇਲ ਨੂੰ %s ਵਾਂਗ ਸੰਭਾਲਿਆ ਗਿਆ।" -#, fuzzy msgid "Sending" -msgstr "ਭੇਜੋ" - -#, fuzzy +msgstr "ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ" + msgid "Receiving" -msgstr "ਬਾਕੀ" - -#, fuzzy, c-format +msgstr "ਮਿਲਿਆ" + +# , c-format msgid "Conversation in %s on %s" -msgstr "%s ਨਾਲ ਗੱਲਾਂ-ਬਾਤਾਂ" - -#, fuzzy, c-format +msgstr "%2$s ਉੱਤੇ %1$s ਗੱਲਬਾਤ" + +#, c-format msgid "Conversation with %s on %s" -msgstr "%s ਨਾਲ ਗੱਲਬਾਤ" +msgstr "%2$s ਉੱਤੇ %1$s ਨਾਲ ਗੱਲਾਂ" msgid "%B %Y" msgstr "%B %Y" @@ -847,8 +827,7 @@ "ਤੁਰੰਤ ਸੁਨੇਹੇ (IM) ਕੇਵਲ ਤਾਂ ਹੀ ਲਾਗ ਕੀਤੇ ਜਾਣਗੇ, ਜੇ \"ਸਭ ਤੁਰੰਤ ਸੁਨੇਹੇ ਲਾਗ ਕਰੋ\" ਪਸੰਦ ਨੂੰ ਯੋਗ ਕੀਤਾ " "ਹੋਵੇਗਾ।" -msgid "" -"Chats will only be logged if the \"Log all chats\" preference is enabled." +msgid "Chats will only be logged if the \"Log all chats\" preference is enabled." msgstr "ਗੱਲਾਂ ਦੀ ਲਾਗ ਤਾਂ ਹੀ ਰੱਖਿਆ ਜਾਵੇਗਾ, ਜੇ \"ਸਭ ਗੱਲਾਂ ਦਾ ਲਾਗ ਰੱਖੋ\" ਪਸੰਦ ਯੋਗ ਕੀਤੀ ਹੋਵੇਗੀ।" msgid "No logs were found" @@ -859,7 +838,7 @@ #. Search box ********* msgid "Scroll/Search: " -msgstr "" +msgstr "ਸਕਰੋਲ/ਖੋਜ:" #, c-format msgid "Conversations in %s" @@ -869,9 +848,8 @@ msgid "Conversations with %s" msgstr "%s ਨਾਲ ਗੱਲਬਾਤ" -#, fuzzy msgid "All Conversations" -msgstr "ਗੱਲਾਂ-ਬਾਤਾਂ" +msgstr "ਸਭ ਗੱਲਾਂ-ਬਾਤਾਂ" msgid "System Log" msgstr "ਸਿਸਟਮ ਲਾਗ" @@ -913,9 +891,8 @@ msgid "(none)" msgstr "(ਕੋਈ ਨਹੀਂ)" -#, fuzzy msgid "URI" -msgstr "UIN" +msgstr "URI" msgid "ERROR" msgstr "ਗਲਤੀ" @@ -954,8 +931,7 @@ msgid "The selected file is not a valid plugin." msgstr "ਚੁਣੀ ਫਾਇਲ ਇੱਕ ਠੀਕ ਪਲੱਗਇਨ ਨਹੀਂ ਹੈ।" -msgid "" -"Please open the debug window and try again to see the exact error message." +msgid "Please open the debug window and try again to see the exact error message." msgstr "ਡੀਬੱਗ ਵਿੰਡੋ ਖੋਲ੍ਹੋ ਅਤੇ ਠੀਕ ਗਲਤੀ ਸੁਨੇਹਾ ਵੇਖਣ ਦੀ ਮੁੜ-ਟਰਾਈ ਕਰੋ।" msgid "Select plugin to install" @@ -1050,9 +1026,8 @@ msgid "Play a sound" msgstr "ਇੱਕ ਆਵਾਜ਼ ਚਲਾਓ" -#, fuzzy msgid "Pounce only when my status is not Available" -msgstr "ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ ਤਾਂ ਹੀ ਪਉਨਸ ਕਰੋ(_o)" +msgstr "ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ ਤਾਂ ਹੀ ਪਉਨਸ ਕਰੋ" msgid "Recurring" msgstr "ਆਵਿਰਤੀ" @@ -1113,7 +1088,6 @@ msgid "%s has sent you a message. (%s)" msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ। (%s)" -#, c-format msgid "Unknown pounce event. Please report this!" msgstr "ਅਣਜਾਣ ਪਉਨਸ ਘਟਨਾ ਹੈ। ਸੂਚਨਾ ਦਿਓ ਜੀ!" @@ -1159,20 +1133,17 @@ msgid "Change status to" msgstr "ਹਾਲਤ ਬਦਲੋ" -#. Conversations msgid "Conversations" msgstr "ਗੱਲਾਂ-ਬਾਤਾਂ" msgid "Logging" msgstr "ਲਾਗਇਨ" -#, fuzzy msgid "You must fill all the required fields." -msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਖੇਤਰ ਭਰੋ।" - -#, fuzzy +msgstr "ਤੁਹਾਨੂੰ ਸਭ ਲੋੜੀਦੇ ਖੇਤਰ ਭਰਨੇ ਪੈਣੇ ਹਨ" + msgid "The required fields are underlined." -msgstr "ਲੋੜੀਦੀ ਪਲੱਗਇਨ %s ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ।" +msgstr "ਲਾਜ਼ਮੀ ਖੇਤਰਾਂ ਹੇਠ ਲਾਈਨਾਂ ਲੱਗੀਆਂ ਹਨ।" msgid "Not implemented yet." msgstr "ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ ਗਿਆ।" @@ -1183,16 +1154,14 @@ msgid "Open File..." msgstr "ਫਾਇਲ ਖੋਲੋ......." -#, fuzzy msgid "Choose Location..." -msgstr "ਯੂਜ਼ਰ ਟਿਕਾਣਾ" +msgstr "ਟਿਕਾਣਾ ਚੁਣੋ..." msgid "Hit 'Enter' to find more rooms of this category." -msgstr "" - -#, fuzzy +msgstr "ਇਸ ਕੈਟਾਗਰੀ ਦੇ ਹੋਰ ਰੂਮ ਲੱਭਣ ਵਾਸਤੇ 'Enter' ਦੱਬੋ।" + msgid "Get" -msgstr "ਸੈੱਟ" +msgstr "ਲਵੋ" #. Create the window. msgid "Room List" @@ -1225,7 +1194,6 @@ msgid "Others talk in chat" msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਹੋਰ ਵਿਸ਼ੇ" -#, fuzzy msgid "Someone says your username in chat" msgstr "ਕਿਸੇ ਨੇ ਤੁਹਾਡਾ ਨਾਂ ਗੱਲਬਾਤ ਦੌਰਾਨ ਲਿਆ ਹੈ" @@ -1480,44 +1448,37 @@ msgid "" "When a new conversation is opened this plugin will insert the last " "conversation into the current conversation." -msgstr "" -"ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।" - -#, c-format +msgstr "ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।" + msgid "Online" -msgstr "ਆਨਲਾਇਨ" +msgstr "ਆਨਲਾਈਨ" msgid "Offline" -msgstr "ਆਫਲਾਇਨ" - -#, fuzzy +msgstr "ਆਫਲਾਈਨ" + msgid "Online Buddies" -msgstr "ਆਫਲਾਇਨ ਬੇਲੀ" - -#, fuzzy +msgstr "ਆਨਲਾਈਨ ਬੱਡੀ" + msgid "Offline Buddies" -msgstr "ਆਫਲਾਇਨ ਬੇਲੀ" - -#, fuzzy +msgstr "ਆਫਲਾਈਨ ਬੇਲੀ" + msgid "Online/Offline" -msgstr "ਆਨਾਲਾਇਨ" +msgstr "ਆਨਲਾਈਨ/ਆਫਲਾਈਨ" msgid "Meebo" -msgstr "" - -#, fuzzy +msgstr "ਮੀਬੋ" + msgid "No Grouping" -msgstr "ਸਾਊਂਡ ਨਹੀਂ" +msgstr "ਗਰੁੱਪਿੰਗ ਨਹੀਂ" msgid "Nested Subgroup" -msgstr "" +msgstr "ਅੰਦਰੂਨੀ ਸਬ-ਗਰੁੱਪ" msgid "Nested Grouping (experimental)" -msgstr "" - -#, fuzzy +msgstr "ਅੰਦਰੂਨੀ ਗਰੁੱਪਿੰਗ (ਤਰਜਬੇ ਅਧੀਨ)" + msgid "Provides alternate buddylist grouping options." -msgstr "ਈਵੇਲੂਸ਼ਨ ਨਾਲ ਸਬੰਧ ਉਪਲੱਬਧ ਕਰਵਾਉਦਾ ਹੈ।" +msgstr "ਬਦਲਵੀਂ ਬੱਡੀ-ਲਿਸਟ ਗਰੁੱਪਿੰਗ ਚੋਣਾਂ ਦਿੰਦਾ ਹੈ।" msgid "Lastlog" msgstr "ਆਖਰੀ-ਲਾਗ" @@ -1648,8 +1609,7 @@ msgid "" "The certificate presented by \"%s\" is self-signed. It cannot be " "automatically checked." -msgstr "" -"ਸਰਟੀਫਿਕੇਟ \"%s\" ਨੂੰ ਖੁਦ-ਸਾਇਨ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਆਟੋਮੈਟਿਕ ਚੈੱਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।" +msgstr "ਸਰਟੀਫਿਕੇਟ \"%s\" ਨੂੰ ਖੁਦ-ਸਾਇਨ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਆਟੋਮੈਟਿਕ ਚੈੱਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।" #, c-format msgid "The certificate chain presented for %s is not valid." @@ -1670,12 +1630,10 @@ msgid "" "You have no database of root certificates, so this certificate cannot be " "validated." -msgstr "" -"ਤੁਹਾਡੇ ਕੋਲ root ਸਰਟੀਫਿਕੇਟ ਲਈ ਕੋਈ ਡਾਟਾਬੇਸ ਨਹੀਂ ਹੈ, ਇਸਕਰਕੇ ਇਹ ਸਰਟੀਫਿਕੇਟ ਵੈਧ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।" +msgstr "ਤੁਹਾਡੇ ਕੋਲ root ਸਰਟੀਫਿਕੇਟ ਲਈ ਕੋਈ ਡਾਟਾਬੇਸ ਨਹੀਂ ਹੈ, ਇਸਕਰਕੇ ਇਹ ਸਰਟੀਫਿਕੇਟ ਵੈਧ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।" #. vrq will be completed by user_auth -msgid "" -"The root certificate this one claims to be issued by is unknown to Pidgin." +msgid "The root certificate this one claims to be issued by is unknown to Pidgin." msgstr "ਇਹ root ਸਰਟੀਫਿਕੇਟ ਇੱਕ ਅਣਜਾਣ ਵਲੋਂ ਪਿਡਗਿਨ ਨੂੰ ਦਿੱਤਾ ਗਿਆ ਜਾਪਦਾ ਹੈ।" #, c-format @@ -1827,9 +1785,8 @@ "ਰਿਜ਼ੋਲਵਰ ਪਰੋਸੈੱਸ ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ:\n" "%s" -#, c-format msgid "Resolver process exited without answering our request" -msgstr "" +msgstr "ਸਾਡੀ ਮੰਗ ਦਾ ਜਵਾਬ ਦਿੱਤੇ ਬਿਨਾਂ ਰਿਜ਼ਾਲਵਰ ਕਾਰਵਾਈ ਬੰਦ ਹੋ ਗਈ ਹੈ।" #, c-format msgid "Thread creation failure: %s" @@ -1917,7 +1874,6 @@ msgid "Transfer of file %s complete" msgstr "ਫਾਇਲ %s ਦਾ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ ਹੋਇਆ" -#, c-format msgid "File transfer complete" msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ" @@ -1925,7 +1881,6 @@ msgid "You canceled the transfer of %s" msgstr "ਤੁਸੀਂ %s ਲਈ ਟਰਾਂਸਫਰ ਰੱਦ ਕੀਤਾ" -#, c-format msgid "File transfer cancelled" msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਰੱਦ ਕੀਤਾ" @@ -2114,7 +2069,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "ਤੁਸੀਂ %s ਵਰਤੇ ਰਹੇ ਹੋ, ਪਰ ਇਹ ਪਲੱਗਇਨ ਲਈ %s ਲੋੜੀਦਾ ਹੈ।" -#, c-format msgid "This plugin has not defined an ID." msgstr "ਇਹ ਪਲੱਗਇਨ ਕੋਈ ID ਨਹੀਂ ਹੈ।" @@ -2126,10 +2080,8 @@ msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" msgstr "ABI ਵਰਜਨ %d.%d.x ਮਿਲਦਾ ਨਹੀਂ (%d.%d.x ਦੀ ਲੋੜ)" -#, fuzzy -msgid "" -"Plugin does not implement all required functions (list_icon, login and close)" -msgstr "ਪਲੱਗਇਨ ਨੇ ਸਭ ਲੋੜੀਦੇ ਫੰਕਸ਼ਨ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਹਨ" +msgid "Plugin does not implement all required functions (list_icon, login and close)" +msgstr "ਪਲੱਗਇਨ ਨੇ ਸਭ ਲੋੜੀਦੇ ਫੰਕਸ਼ਨ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਹਨ (list_icon, login ਅਤੇ close)" #, c-format msgid "" @@ -2147,9 +2099,9 @@ msgid "Unable to load your plugin." msgstr "ਤੁਹਾਡੀ ਪਲੱਗਇਨ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" -#, fuzzy, c-format +# , c-format msgid "%s requires %s, but it failed to unload." -msgstr "ਨਿਰਭਰ ਪਲੱਗਇਨ %s ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।" +msgstr "%s ਨੂੰ %s ਚਾਹੀਦਾ ਸੀ, ਪਰ ਇਹ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" msgid "Autoaccept" msgstr "ਆਟੋ-ਮਨਜ਼ੂਰ ਕਰੋ" @@ -2207,18 +2159,17 @@ "ਪੋਪਅੱਪ ਨਾਲ ਨੋਟੀਫਾਈ ਕਰੋ, ਜਦੋਂ ਵੀ ਇੱਕ ਆਟੋ-ਮਨਜ਼ੂਰ ਫਾਇਲ ਟਰਾਂਸਫਰ ਪੂਰੀ ਹੋ ਜਾਵੇ\n" "(ਕੇਵਲ ਜਦੋਂ ਭੇਜਣ ਵਾਲੇ ਨਾਲ ਕੋਈ ਸੰਵਾਦ ਨਾ ਹੋਵੇ)" -#, fuzzy msgid "Create a new directory for each user" -msgstr "ਖੋਜ ਲਈ ਇੱਕ ਯੂਜ਼ਰ ਡਾਇਰੈਕਟਰੀ ਚੁਣੋ" +msgstr "ਹਰੇਕ ਯੂਜ਼ਰ ਲਈ ਵੱਖਰੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਓ" msgid "Notes" -msgstr "ਸੂਚਨਾ" +msgstr "ਨੋਟਿਸ" msgid "Enter your notes below..." -msgstr "ਆਪਣੀ ਸੂਚਨਾ ਹੇਠਾਂ ਦਿਓ..." +msgstr "ਆਪਣੇ ਨੋਟਿਸ ਹੇਠਾਂ ਦਿਓ..." msgid "Edit Notes..." -msgstr "ਸੂਚਨਾ ਸੋਧ..." +msgstr "ਨੋਟਿਸ ਸੋਧ..." #. *< major version #. *< minor version @@ -2229,7 +2180,7 @@ #. *< priority #. *< id msgid "Buddy Notes" -msgstr "ਬੱਡੀ ਨੋਟ" +msgstr "ਬੱਡੀ ਨੋਟਿਸ" #. *< name #. *< version @@ -2372,7 +2323,7 @@ msgstr "ਯੂਜ਼ਰ ਇਨ-ਐਕਟੀਵਿਟੀ ਟਾਈਮ-ਆਉਟ (ਮਿੰਟਾਂ ਵਿੱਚ)" msgid "Apply hiding rules to buddies" -msgstr "" +msgstr "ਬੱਡੀ ਲਈ ਲੁਕਵਾਂ ਨਿਯਮ ਲਾਗੂ ਕਰੋ" #. *< type #. *< ui_requirement @@ -2423,8 +2374,7 @@ msgid "" "You are currently disconnected. Messages will not be received unless you are " "logged in." -msgstr "" -"ਇਸ ਸਮੇਂ ਤੁਸੀਂ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ। ਸੁਨੇਹੇ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਮਿਲਣਗੇ, ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕਰਦੇ ਹੋ।" +msgstr "ਇਸ ਸਮੇਂ ਤੁਸੀਂ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ। ਸੁਨੇਹੇ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਮਿਲਣਗੇ, ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕਰਦੇ ਹੋ।" msgid "Message could not be sent because the maximum length was exceeded." msgstr "ਲੰਬਾਈ ਵੱਧ ਹੋਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" @@ -2523,11 +2473,10 @@ msgstr "ਮੋਨੋ ਨਾਲ .NET ਪਲੱਗਇਨ ਲੋਡ ਕਰੋ" msgid "Add new line in IMs" -msgstr "" - -#, fuzzy +msgstr "IM ਵਿੱਚ ਨਵੀਂ ਲਾਈਨ ਸ਼ਾਮਲ" + msgid "Add new line in Chats" -msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਲਾਗੂ ਕਰੋ" +msgstr "ਗੱਲਾਬਾਤਾਂ ਵਿੱਚ ਨਵੀਆਂ ਲਾਈਨਾਂ ਸ਼ਾਮਲ" #. *< magic #. *< major version @@ -2539,7 +2488,7 @@ #. *< priority #. *< id msgid "New Line" -msgstr "ਨਵੀਂ ਲਾਇਨ" +msgstr "ਨਵੀਂ ਲਾਈਨ" #. *< name #. *< version @@ -2547,16 +2496,15 @@ msgstr "ਸੁਨੇਹਾ ਵੇਖਾਉਣ ਲਈ ਇੱਕ ਨਵੀਂ ਲਾਇਨ ਜੋੜੋ।" #. *< summary -#, fuzzy msgid "" "Prepends a newline to messages so that the rest of the message appears below " "the username in the conversation window." msgstr "" -"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਸਕਰੀਨ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ " +"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਯੂਜ਼ਰ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ " "ਦੇਣ।" msgid "Offline Message Emulation" -msgstr "ਆਫ਼-ਲਾਈਨ ਸੁਨੇਹੇ ਵਾਂਗ" +msgstr "ਆਫਲਾਈਨ ਸੁਨੇਹਾ ਸਮਰੂਪ" msgid "Save messages sent to an offline user as pounce." msgstr "ਇੱਕ ਆਫਲਾਈਨ ਯੂਜ਼ਰ ਨੂੰ ਭੇਜੇ ਸੁਨੇਹੇ ਪਉਨਸ ਵਾਂਗ ਸੰਭਾਲੋ।" @@ -2782,23 +2730,19 @@ "ActiveTCL ਇੰਸਟਾਲੇਸ਼ਨ ਖੋਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਜੇ ਤੁਸੀਂ TCL ਪਲੱਗਇਨ ਵਰਤਣੀਆਂ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ http://" "www.activestate.com ਤੋਂ ActiveTCL ਇੰਸਟਾਲ ਕਰੋ।\n" -#, fuzzy msgid "" "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d." "pidgin.im/BonjourWindows for more information." msgstr "" -"Windows ਟੂਲਕਿੱਟ ਲਈ ਐਪਸ ਬੋਨਜੋਉਰ ਨਹੀਂ ਲੱਭਿਆ ਸਵਾਲ-ਜਵਾਬ ਵੇਖੋ: ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://" -"developer.pidgin.im/wiki/Using%20Pidgin#CanIusePidginforBonjourLink-" -"LocalMessaging ਵੇਖੋ।" +"Windows ਟੂਲਕਿੱਟ ਲਈ ਐਪਸ ਬੋਨਜੋਉਰ ਨਹੀਂ ਲੱਭਿਆ ਸਵਾਲ-ਜਵਾਬ ਵੇਖੋ: ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://d." +"pidgin.im/BonjourWindows ਵੇਖੋ।" msgid "Unable to listen for incoming IM connections\n" msgstr "ਆ ਰਹੇ IM ਕੁਨੈਕਸ਼ਨ ਸੁਣਨ ਤੋਂ ਅਸਮੱਰਥ ਹੈ\n" -msgid "" -"Unable to establish connection with the local mDNS server. Is it running?" +msgid "Unable to establish connection with the local mDNS server. Is it running?" msgstr "ਇੱਕ ਲੋਕਲ mDNS ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਕੀ ਇਹ ਚੱਲਦਾ ਹੈ?" -#. Creating the options for the protocol msgid "First name" msgstr "ਪਹਿਲਾਂ ਨਾਂ" @@ -2830,6 +2774,10 @@ msgid "Purple Person" msgstr "ਪਰਪਲ ਵਿਅਕਤੀ" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "ਲੋਕਲ ਪੋਰਟ" + msgid "Bonjour" msgstr "ਬੋਨਜੁਉਰ" @@ -2849,9 +2797,8 @@ msgid "Could not listen on socket" msgstr "ਸਾਕਟ ਉੱਤੇ ਸੁਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" -#, fuzzy msgid "Error communicating with local mDNSResponder." -msgstr "ਸਰਵਰ ਨਾਲ ਸੰਪਰਕ ਦੌਰਾਨ ਗਲਤੀ" +msgstr "mDNSResponder ਨਾਲ ਸੰਚਾਰ ਦੌਰਾਨ ਗਲਤੀ ਹੈ।" msgid "Invalid proxy settings" msgstr "ਗਲਤ ਪਰਾਕਸੀ ਸੈਟਿੰਗ" @@ -2876,9 +2823,9 @@ msgid "Buddylist saved successfully!" msgstr "ਬੱਡੀ-ਲਿਸਟ ਠੀਕ ਤਰ੍ਹਾਂ ਸੰਭਾਲੀ ਗਈ!" -#, fuzzy, c-format +# , c-format msgid "Couldn't write buddy list for %s to %s" -msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" +msgstr "%s ਲਈ %s ਉੱਤੇ ਬੱਡੀ ਲਿਸਟ ਲਿਖਣ ਲਈ ਅਸਮਰੱਥ" msgid "Couldn't load buddylist" msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" @@ -2992,7 +2939,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "ਦੂਰ" @@ -3187,7 +3133,7 @@ msgstr "ਇੰਕੋਡਿੰਗ" msgid "Auto-detect incoming UTF-8" -msgstr "" +msgstr "ਆ ਰਹੀ UTF-8 ਆਟੋਮੈਟਿਕ ਖੋਜ" msgid "Real name" msgstr "ਅਸਲੀ ਨਾਂ" @@ -3204,15 +3150,14 @@ #, c-format msgid "Ban on %s by %s, set %s ago" -msgstr "" - -#, fuzzy, c-format +msgstr "%s ਉੱਤੇ %s ਵਲੋਂ ਪਾਬੰਦੀ, %s ਚਿਰ ਪਹਿਲਾਂ" + +#, c-format msgid "Ban on %s" -msgstr "ਕਾਰਨ: %s" - -#, fuzzy +msgstr "%s ਉੱਤੇ ਪਾਬੰਦੀ" + msgid "End of ban list" -msgstr "ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ" +msgstr "ਪਾਬੰਦੀ ਲਿਸਟ ਦਾ ਅੰਤ" #, c-format msgid "You are banned from %s." @@ -3372,7 +3317,7 @@ "away." msgid "ctcp : sends ctcp msg to nick." -msgstr "" +msgstr "ctcp : sends ctcp msg to nick." msgid "chanserv: Send a command to chanserv" msgstr "chanserv: Send a command to chanserv" @@ -3457,9 +3402,8 @@ msgid "nickserv: Send a command to nickserv" msgstr "nickserv: Send a command to nickserv" -#, fuzzy msgid "notice <target<: Send a notice to a user or channel." -msgstr "me <action>: ਇੱਕ ਬੱਡੀ ਜਾਂ ਗੱਲਬਾਤ ਲਈ IRC ਸਟਾਈਲ ਐਕਸ਼ਨ ਭੇਜੋ" +msgstr "notice <target<: ਯੂਜ਼ਰ ਜਾਂ ਚੈਨਲ ਨੂੰ ਨੋਟਿਸ ਭੇਜੋ।" msgid "" "op <nick1> [nick2] ...: Grant channel operator status to someone. You " @@ -3569,9 +3513,8 @@ msgid "Server requires TLS/SSL for login. No TLS/SSL support found." msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।" -#, fuzzy msgid "You require encryption, but no TLS/SSL support found." -msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।" +msgstr "ਤੁਹਾਨੂੰ ਇੰਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਲੱਭਿਆ।" msgid "Server requires plaintext authentication over an unencrypted stream" msgstr "ਸਰਵਰ ਨੂੰ ਇੱਕ ਗ਼ੈਰ-ਇੰਕ੍ਰਿਪਟਡ ਸਟਰੀਮ ਲਈ ਪਲੇਨ-ਟੈਕਸਟ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ।" @@ -3868,7 +3811,6 @@ msgid "Extended Away" msgstr "ਪਹੁੰਚ ਤੋਂ ਦੂਰ" -#, c-format msgid "Do Not Disturb" msgstr "ਤੰਗ ਨਾ ਕਰੋ" @@ -3995,12 +3937,11 @@ msgid "Write error" msgstr "ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ" -#, fuzzy msgid "Ping timeout" -msgstr "ਪਲੇਨ ਟੈਕਸਟ" +msgstr "ਪਿੰਗ ਟਾਈਮ-ਆਉਟ" msgid "Read Error" -msgstr "ਪੜਨ ਗਲਤੀ" +msgstr "ਪੜ੍ਹਨ ਗਲਤੀ" #, c-format msgid "" @@ -4061,8 +4002,7 @@ msgid "Unregister" msgstr "ਅਣ-ਰਜਿਸਟਰ" -msgid "" -"Please fill out the information below to change your account registration." +msgid "Please fill out the information below to change your account registration." msgstr "ਆਪਣੀ ਅਕਾਊਂਟ ਰਜਿਸਟਰੇਸ਼ਨ ਬਦਲਣ ਵਾਸਤੇ ਹੇਠਾਂ ਜਾਣਕਾਰੀ ਭਰੋ ਜੀ।" msgid "Please fill out the information below to register your new account." @@ -4103,6 +4043,9 @@ msgid "Re-initializing Stream" msgstr "ਸਟਰੀਮ ਮੁੜ-ਸ਼ੁਰੂ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" +msgid "Server doesn't support blocking" +msgstr "ਸਰਵਰ ਪਾਬੰਦੀ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + msgid "Not Authorized" msgstr "ਪਰਮਾਣਤ ਨਹੀਂ" @@ -4131,7 +4074,7 @@ msgstr "ਮੂਡ" msgid "Now Listening" -msgstr "" +msgstr "ਹੁਣ ਸੁਣ ਰਿਹਾ ਹੈ" msgid "Mood Text" msgstr "ਮੂਡ ਟੈਕਸਟ" @@ -4410,9 +4353,8 @@ msgid "topic [new topic]: View or change the topic." msgstr "topic [new topic]: View or change the topic." -#, fuzzy msgid "ban <user> [reason]: Ban a user from the room." -msgstr "ban <user> [room]: Ban a user from the room." +msgstr "ban <user> [reason]: Ban a user from the room." msgid "" "affiliate <user> <owner|admin|member|outcast|none>: Set a user's " @@ -4431,18 +4373,14 @@ msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <user> [room]: ਯੂਜ਼ਰ ਨੂੰ ਰੂਮ 'ਚ ਸੱਦੋ।" -#, fuzzy msgid "join: <room> [password]: Join a chat on this server." -msgstr "join: <room> [server]: Join a chat on this server." - -#, fuzzy +msgstr "join: <room> [password]: Join a chat on this server." + msgid "kick <user> [reason]: Kick a user from the room." -msgstr "kick <user> [room]: Kick a user from the room." - -msgid "" -"msg <user> <message>: Send a private message to another user." -msgstr "" -"msg <user> <message>: Send a private message to another user." +msgstr "kick <user> [reason]: Kick a user from the room." + +msgid "msg <user> <message>: Send a private message to another user." +msgstr "msg <user> <message>: Send a private message to another user." msgid "ping <jid>:\tPing a user/component/server." msgstr "ping <jid>:\tਇੱਕ ਯੂਜ਼ਰ/ਭਾਗ/ਸਰਵਰ ਪਿੰਗ ਕਰੋ।" @@ -4485,13 +4423,11 @@ msgid "Connect server" msgstr "ਸਰਵਰ ਨਾਲ ਜੋੜੋ" -#, fuzzy msgid "File transfer proxies" -msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਪੋਰਟ" +msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਪਰਾਕਸੀ" #. this should probably be part of global smiley theme settings later on, #. shared with MSN -#, fuzzy msgid "Show Custom Smileys" msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ" @@ -4518,9 +4454,9 @@ msgid "XMPP Message Error" msgstr "XMPP ਗਲਤੀ ਸੁਨੇਹਾ" -#, fuzzy, c-format +#, c-format msgid "(Code %s)" -msgstr " (ਕੋਡ %s)" +msgstr "(ਕੋਡ %s)" msgid "XML Parse error" msgstr "XML ਪਾਰਸ ਗਲਤੀ" @@ -4571,7 +4507,7 @@ msgid "Unable to send file to %s, not subscribed to user presence" msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਯੂਜ਼ਰ ਮੌਜੂਦਗੀ ਲਈ ਮੈਂਬਰ ਨਹੀਂ" -#, fuzzy, c-format +# , c-format msgid "Please select the resource of %s to which you would like to send a file" msgstr "ਚੁਣੋ ਕਿ ਕਿਹੜੇ %s ਦੇ ਸਰੋਤ ਤੁਸੀਂ ਇੱਕ ਫਾਇਲ ਤੋਂ ਤੁਸੀਂ ਭੇਜਣੇ ਚਾਹੁੰਦੇ ਹੋ" @@ -4612,8 +4548,18 @@ msgid "Select an action" msgstr "ਇੱਕ ਐਕਸ਼ਨ ਚੁਣੋ" -msgid "Unable to retrieve MSN Address Book" -msgstr "MSN ਐਡਰੈੱਸ ਬੁੱਕ ਲੈਣ ਲਈ ਅਸਮਰੱਥ" +#. only notify the user about problems adding to the friends list +#. * maybe we should do something else for other lists, but it probably +#. * won't cause too many problems if we just ignore it +#, c-format +msgid "Unable to add \"%s\"." +msgstr "\"%s\" ਜੋੜਨ ਲਈ ਅਸਫ਼ਲ ਹੈ।" + +msgid "Buddy Add error" +msgstr "ਬੱਡੀ ਸ਼ਾਮਲ ਗਲਤੀ" + +msgid "The username specified does not exist." +msgstr "ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #, c-format msgid "Buddy list synchronization issue in %s (%s)" @@ -4631,222 +4577,167 @@ msgid "" "%s is on the local list but not on the server list. Do you want this buddy " "to be added?" -msgstr "" -"%s ਲੋਕਲ ਲਿਸਟ ਉੱਤੇ ਹੈ, ਪਰ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ। ਕੀ ਤੁਸੀਂ ਇਹ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" - -#, c-format +msgstr "%s ਲੋਕਲ ਲਿਸਟ ਉੱਤੇ ਹੈ, ਪਰ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ। ਕੀ ਤੁਸੀਂ ਇਹ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + msgid "Unable to parse message" msgstr "ਸੁਨੇਹਾ ਪਾਰਸ ਕਰਨ ਲਈ ਅਸਫ਼ਲ" -#, c-format msgid "Syntax Error (probably a client bug)" msgstr "ਸੰਟੈਕਸ ਗਤੀ (ਇੱਕ ਕਲਾਇਟ ਬੱਗ ਹੈ)" -#, c-format msgid "Invalid email address" msgstr "ਗਲਤ ਈਮੇਲ ਐਡਰੈੱਸ" -#, c-format msgid "User does not exist" msgstr "ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" -#, c-format msgid "Fully qualified domain name missing" msgstr "ਫੂਲ ਕੁਆਲੀਫਾਇਡ ਡੋਮੇਨ ਨਾਂ (FQDN) ਗੁੰਮ ਹੈ" -#, c-format msgid "Already logged in" msgstr "ਪਹਿਲਾਂ ਹੀ ਲਾਗਇਨ ਹੈ" -#, fuzzy, c-format msgid "Invalid username" -msgstr "ਗਲਤ ਨਾਂ" - -#, c-format +msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ" + msgid "Invalid friendly name" msgstr "ਗਲਤ ਦੋਸਤਾਨਾ ਨਾਂ" -#, c-format msgid "List full" msgstr "ਲਿਸਟ ਭਰ ਗਈ" -#, c-format msgid "Already there" msgstr "ਪਹਿਲਾਂ ਹੀ ਉਥੇ ਹੈ" -#, c-format msgid "Not on list" msgstr "ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ" -#, c-format msgid "User is offline" msgstr "ਯੂਜ਼ਰ ਆਫਲਾਇਨ ਹੈ" -#, c-format msgid "Already in the mode" msgstr "ਪਹਿਲਾਂ ਹੀ ਮੋਡ 'ਚ ਹੈ" -#, c-format msgid "Already in opposite list" msgstr "ਪਹਿਲਾਂ ਹੀ ਉਲਟ ਲਿਸਟ ਵਿੱਚ ਹੈ" -#, c-format msgid "Too many groups" msgstr "ਕਈ ਗਰੁੱਪ ਹਨ" -#, c-format msgid "Invalid group" msgstr "ਗਲਤ ਗਰੁੱਪ" -#, c-format msgid "User not in group" msgstr "ਯੂਜ਼ਰ ਗਰੁੱਪ 'ਚ ਨਹੀਂ ਹੈ" -#, c-format msgid "Group name too long" msgstr "ਗਰੁੱਪ ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ" -#, c-format msgid "Cannot remove group zero" msgstr "ਗਰੁੱਪ ਜ਼ੀਰੋ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ" -#, c-format msgid "Tried to add a user to a group that doesn't exist" msgstr "ਇੱਕ ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਗਰੁੱਪ ਵਿੱਚ ਜੋੜਨ ਦੀ ਕੋਸ਼ਿਸ਼, ਜੋ ਕਿ ਮੌਜੂਦ ਹੀ ਨਹੀ ਹੈ।" -#, c-format msgid "Switchboard failed" msgstr "ਸਵਿੱਚਬੋਰਡ ਫੇਲ੍ਹ ਹੋਇਆ" -#, c-format msgid "Notify transfer failed" msgstr "ਨੋਟੀਫਾਈ ਟਰਾਂਸਫਰ ਫੇਲ੍ਹ" -#, c-format msgid "Required fields missing" msgstr "ਲੋੜੀਦੇ ਖੇਤਰ ਗੁੰਮ ਹਨ" -#, c-format msgid "Too many hits to a FND" msgstr "ਇੱਕ FND ਲਈ ਬਹੁਤੀਆਂ ਹਿੱਟਾਂ" -#, c-format msgid "Not logged in" msgstr "ਲਾਗਇਨ ਨਹੀਂ ਹੈ" -#, c-format msgid "Service temporarily unavailable" msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਰੂਪ 'ਚ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ" -#, c-format msgid "Database server error" msgstr "ਡਾਟਾਬੇਸ ਸਰਵਰ ਗਲਤੀ" -#, c-format msgid "Command disabled" msgstr "ਕਮਾਂਡ ਆਯੋਗ" -#, c-format msgid "File operation error" msgstr "ਫਾਇਲ ਕਾਰਵਾਈ ਗਲਤੀ" -#, c-format msgid "Memory allocation error" msgstr "ਮੈਮੋਰੀ ਜਾਰੀ ਗਲਤੀ" -#, c-format msgid "Wrong CHL value sent to server" msgstr "ਗਲਤ CHL ਮੁੱਲ ਸਰਵਰ ਨੂੰ ਭੇਜਿਆ" -#, c-format msgid "Server busy" msgstr "ਸਰਵਰ ਰੁੱਝਿਆ ਹੈ" -#, c-format msgid "Server unavailable" msgstr "ਸਰਵਰ ਉਪਲੱਬਧ ਨਹੀਂ" -#, c-format msgid "Peer notification server down" msgstr "ਪੀਰੀਅਰ ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਰਵਰ ਬੰਦ ਹੈ" -#, c-format msgid "Database connect error" msgstr "ਡਾਟਾਬੇਸ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ" -#, c-format msgid "Server is going down (abandon ship)" msgstr "ਸਰਵਰ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ (ਡੁੱਬਦਾ ਜਹਾਜ਼)" -#, c-format msgid "Error creating connection" msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" -#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "CVR ਪੈਰਾਮੀਟਰ ਜਾਂ ਤਾਂ ਅਣਜਾਣ ਹੈ ਜਾਂ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ।" -#, c-format msgid "Unable to write" msgstr "ਲਿਖਣ ਲਈ ਅਸਫਲ" -#, c-format msgid "Session overload" msgstr "ਸ਼ੈਸ਼ਨ ਓਵਰ-ਲੋਡ ਹੋ ਗਿਆ" -#, c-format msgid "User is too active" msgstr "ਯੂਜ਼ਰ ਬਹੁਤ ਛੋਟਾ ਹੈ" -#, c-format msgid "Too many sessions" msgstr "ਕਈ ਸ਼ੈਸ਼ਨ ਹਨ" -#, c-format msgid "Passport not verified" msgstr "ਪਾਸਪੋਰਟ ਜਾਂਚਿਆ ਨਹੀਂ ਹੈ" -#, c-format msgid "Bad friend file" msgstr "ਗਲਤ ਮਿੱਤਰ ਫਾਇਲ" -#, c-format msgid "Not expected" msgstr "ਲੋੜ ਨਹੀਂ ਸੀ" -#, c-format msgid "Friendly name changes too rapidly" msgstr "ਦੋਸਤਾਨਾ ਨਾਂ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਬਦਲਿਆ" -#, c-format msgid "Server too busy" msgstr "ਸਰਵਰ ਰੁਝਿਆ" -#, c-format msgid "Authentication failed" msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ" -#, c-format msgid "Not allowed when offline" msgstr "ਜਦੋਂ ਆਫਲਾਇਨ ਹੋਵੇ ਤਾਂ ਮਨਜ਼ੂਰ ਨਹੀਂ" -#, c-format msgid "Not accepting new users" msgstr "ਨਵੇਂ ਯੂਜ਼ਰ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹਨ" -#, c-format msgid "Kids Passport without parental consent" msgstr "ਬੱਚਾ ਪਾਸਪੋਰਟ ਬਿਨਾਂ ਮਾਪਿਆਂ ਦੀ ਸਹਿਮਤੀ ਦੇ" -#, c-format msgid "Passport account not yet verified" msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹਾਲੇ ਜਾਂਚਿਆ ਨਹੀਂ ਗਿਆ" -#, fuzzy, c-format msgid "Passport account suspended" -msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹਾਲੇ ਜਾਂਚਿਆ ਨਹੀਂ ਗਿਆ" - -#, c-format +msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਸਸਪੈਂਡ ਕੀਤਾ" + msgid "Bad ticket" msgstr "ਗਲਤ ਟਿਕਟ" @@ -4858,16 +4749,14 @@ msgid "MSN Error: %s\n" msgstr "MSN ਗਲਤੀ: %s\n" -#, fuzzy msgid "Other Contacts" -msgstr "ਪਸੰਦੀਦਾ ਸੰਪਰਕ" - -#, fuzzy +msgstr "ਹੋਰ ਸੰਪਰਕ" + msgid "Non-IM Contacts" -msgstr "ਸੰਪਰਕ ਹਟਾਓ" +msgstr "ਗ਼ੈਰ-IM ਸੰਪਰਕ" msgid "Nudge" -msgstr "ਸੈਨਤ (ਨੱਜ)" +msgstr "ਸੈਨਤ" #, c-format msgid "%s has nudged you!" @@ -4875,11 +4764,10 @@ #, c-format msgid "Nudging %s..." -msgstr "%s ਨੂੰ ਸੈਨਤ ਮਾਰੋ..." - -#, fuzzy +msgstr "%s ਨੂੰ ਸੈਨਤ ਮਾਰੀ ਜਾ ਰਹੀ ਹੈ..." + msgid "Email Address..." -msgstr "ਈਮੇਲ ਐਡਰੈੱਸ" +msgstr "ਈਮੇਲ ਐਡਰੈੱਸ..." msgid "Your new MSN friendly name is too long." msgstr "ਤੁਹਾਡਾ ਨਵਾਂ MSN ਦੋਸਤਾਨਾ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ।" @@ -4915,22 +4803,19 @@ msgid "Disallow" msgstr "ਪਾਬੰਦੀ" -#, fuzzy, c-format +#, c-format msgid "Blocked Text for %s" -msgstr "%s ਲਈ ਬੱਡੀ ਟਿੱਪਣੀ" - -#, fuzzy +msgstr "%s ਲਈ ਬੱਡੀ ਟੈਕਸਟ" + msgid "No text is blocked for this account." -msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):" - -#, c-format -msgid "" -"MSN servers are currently blocking the following regular expressions:
%s" -msgstr "" - -#, fuzzy +msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਕੋਈ ਟੈਕਸਟ ਬਲਾਕ ਨਹੀਂ ਹੈ।" + +#, c-format +msgid "MSN servers are currently blocking the following regular expressions:
%s" +msgstr "MSN ਸਰਵਰਾਂ ਉੱਤੇ ਹੇਠ ਦਿੱਤੇ ਨਿਯਮਤ ਸਮੀਕਰਨ ਪਾਬੰਦੀ ਲਗਾਏ ਗਏ ਹਨ:
%s" + msgid "This account does not have email enabled." -msgstr "ਇਹ ਹਾਟਮੇਲ ਅਕਾਊਂਟ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਹੈ।" +msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਈਮੇਲ ਚਾਲੂ ਨਹੀਂ ਹੈ।" msgid "Send a mobile message." msgstr "ਮੋਬਾਇਲ ਸੁਨੇਹਾ ਭੇਜੋ।" @@ -4938,20 +4823,23 @@ msgid "Page" msgstr "ਸਫ਼ਾ" +msgid "Playing a game" +msgstr "ਇੱਕ ਖੇਡ ਖੇਡੀ ਜਾ ਰਹੀ ਹੈ" + +msgid "Working" +msgstr "ਕੰਮ ਕਰ ਰਿਹਾ/ਰਹੀ ਹਾਂ" + msgid "Has you" -msgstr "" - -#, fuzzy +msgstr "ਤੁਸੀਂ ਹੋ" + msgid "Home Phone Number" -msgstr "ਘਰ ਫੋਨ ਨੰਬਰ ਦਿਓ..." - -#, fuzzy +msgstr "ਘਰ ਫੋਨ ਨੰਬਰ" + msgid "Work Phone Number" -msgstr "ਕੰਮ ਫੋਨ ਨੰਬਰ ਦਿਓ..." - -#, fuzzy +msgstr "ਕੰਮ ਫੋਨ ਨੰਬਰ" + msgid "Mobile Phone Number" -msgstr "ਮੋਬਾਇਲ ਨੰਬਰ ਦਿਓ..." +msgstr "ਮੋਬਾਇਲ ਫੋਨ ਨੰਬਰ" msgid "Be Right Back" msgstr "ਆਉਨਾਂ" @@ -4971,13 +4859,17 @@ #. saveable #. should be user_settable some day #. independent -#, fuzzy msgid "Artist" msgstr "ਕਲਾਕਾਰ" -#, fuzzy msgid "Album" -msgstr "ਟਿਊਨ ਐਲਬਮ" +msgstr "ਐਲਬਮ" + +msgid "Game Title" +msgstr "ਖੇਡ ਟਾਈਟਲ" + +msgid "Office Title" +msgstr "ਆਫਿਸ ਟਾਈਟਲ" msgid "Set Friendly Name..." msgstr "ਦੋਸਤਾਨਾ ਨਾਂ ਦਿਓ..." @@ -4998,7 +4890,7 @@ msgstr "ਮੋਬਾਇਲ ਸਫ਼ੇ ਮੰਨਜ਼ੂਰ/ਨਾ-ਮਨਜ਼ੂਰ..." msgid "View Blocked Text..." -msgstr "" +msgstr "ਪਾਬੰਦੀਸ਼ੁਦਾ ਟੈਕਸਟ ਵੇਖੋ..." msgid "Open Hotmail Inbox" msgstr "ਹਾਟਮੇਲ ਇਨ-ਬਾਕਸ ਖੋਲ੍ਹੋ" @@ -5167,8 +5059,8 @@ "does not exist." msgstr "ਯੂਜ਼ਰ ਪ੍ਰੋਫਾਇਲ ਵਿੱਚ ਕੋਈ ਜਾਣਕਾਰੀ ਨਹੀਂ ਮਿਲੀ ਹੈ। ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।" -msgid "Profile URL" -msgstr "ਪ੍ਰੋਫਾਇਲ URL" +msgid "View web profile" +msgstr "ਵੈੱਬ ਪਰੋਫਾਇਲ ਵੇਖੋ" #. *< type #. *< ui_requirement @@ -5197,9 +5089,8 @@ msgid "Windows Live ID authentication:Unable to connect" msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" -#, fuzzy msgid "Windows Live ID authentication:Invalid response" -msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" +msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਗਲਤ ਜਵਾਬ" #, c-format msgid "%s is not a valid group." @@ -5224,9 +5115,8 @@ msgid "Unable to add user" msgstr "ਯੂਜ਼ਰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" -#, fuzzy msgid "The following users are missing from your addressbook" -msgstr "ਤੁਹਾਡੀ ਖੋਜ ਦੇ ਹੇਠ ਦਿੱਤੇ ਨਤੀਜੇ ਹਨ" +msgstr "ਤੁਹਾਡੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਹੇਠ ਦਿੱਤੇ ਯੂਜ਼ਰ ਗੁੰਮ ਹਨ" #, c-format msgid "Unable to add user on %s (%s)" @@ -5251,9 +5141,8 @@ msgid "Service Temporarily Unavailable." msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਰੂਪ 'ਚ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।" -#, fuzzy msgid "Mobile message was not sent because it was too long." -msgstr "ਸੁਨੇਹਾ ਨਹੀਂ ਭੇਜਿਆ ਗਿਆ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਨਹੀਂ ਹੋ।" +msgstr "ਮੋਬਾਇਲ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਗਿਆ, ਕਿਉਂਕਿ ਇਹ ਬਹੁਤ ਲੰਮਾ ਸੀ।" msgid "Unable to rename group" msgstr "ਗਰੁੱਪ ਨਾਂ-ਤਬਦੀਲੀ ਲਈ ਅਸਫਲ" @@ -5261,7 +5150,7 @@ msgid "Unable to delete group" msgstr "ਗਰੁੱਪ ਹਟਾਉਣ ਲਈ ਅਸਫਲ" -#, fuzzy, c-format +#, c-format msgid "" "The MSN server will shut down for maintenance in %d minute. You will " "automatically be signed out at that time. Please finish any conversations " @@ -5277,38 +5166,31 @@ "After the maintenance has been completed, you will be able to successfully " "sign in." msgstr[0] "" -"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ " +"MSN ਸਰਵਰ ਦੇਖਭਾਲ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ " "ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n" "\n" -"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ। MSN ਸਰਵਰ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ " -"ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n" -"\n" "ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।" msgstr[1] "" -"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ " +"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ " "ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n" "\n" -"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ। MSN ਸਰਵਰ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ " -"ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n" -"\n" "ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।" msgid "" "Message was not sent because the system is unavailable. This normally " "happens when the user is blocked or does not exist." msgstr "" - -#, fuzzy +"ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਿਸਟਮ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਇਹ ਅਕਸਰ ਤਾਂ ਹੁੰਦਾ ਹੈ, ਜਦੋਂ " +"ਯੂਜ਼ਰ ਉੱਤੇ ਪਾਬੰਦੀ ਹੋਵੇ ਜਾਂ ਮੌਜੂਦ ਨਾ ਹੋਵੇ।" + msgid "Message was not sent because messages are being sent too quickly." -msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਅਸੀਂ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜ ਰਹੇ ਹਾਂ:" - -#, fuzzy +msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸੁਨੇਹੇ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜੇ ਜਾ ਰਹੇ ਹਨ।" + msgid "Message was not sent because an unknown encoding error occurred." -msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:" - -#, fuzzy +msgstr "ਇੱਕ ਅਣਜਾਣੀ ਇੰਕੋਡਿੰਗ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" + msgid "Message was not sent because an unknown error occurred." -msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:" +msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" msgid "Unable to connect" msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" @@ -5346,8 +5228,7 @@ msgid "Unable to authenticate: %s" msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਅਸਫਲ: %s" -msgid "" -"Your MSN buddy list is temporarily unavailable. Please wait and try again." +msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again." msgstr "ਤੁਹਾਡਾ MSN ਬੱਡੀ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ।" msgid "Handshaking" @@ -5399,8 +5280,7 @@ "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਅਸੀਂ ਸਰਵਰ ਨਾਲ ਸ਼ੈਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹਾਂ। ਇਹ ਇੱਕ ਸਮੱਸਿਆ " "ਜਾਪਦੀ ਹੈ, ਕੁਝ ਮਿੰਟ ਬਾਅਦ ਟਰਾਈ ਕਰੋ ਜੀ:" -msgid "" -"Message could not be sent because an error with the switchboard occurred:" +msgid "Message could not be sent because an error with the switchboard occurred:" msgstr "ਸਵਿੱਚਬੋਰਡ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:" msgid "Message may have not been sent because an unknown error occurred:" @@ -5414,28 +5294,21 @@ msgid "%s has removed you from his or her buddy list." msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚੋਂ ਹਟਾ ਦਿੱਤਾ ਹੈ।" -#, fuzzy msgid "Delete Buddy from Address Book?" -msgstr "ਐਡਰੈੱਸ ਕਿਤਾਬ ਵਿੱਚ ਸ਼ਾਮਿਲ" - -#, fuzzy +msgstr "ਕੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਬੱਡੀ ਹਟਾਉਣਾ ਹੈ?" + msgid "Do you want to delete this buddy from your address book as well?" -msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਆਪਣੇ ਬੱਡੀ ਦੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨਾ ਚਾਹੋਗੇ?" - -#. only notify the user about problems adding to the friends list -#. * maybe we should do something else for other lists, but it probably -#. * won't cause too many problems if we just ignore it -#, c-format -msgid "Unable to add \"%s\"." -msgstr "\"%s\" ਜੋੜਨ ਲਈ ਅਸਫ਼ਲ ਹੈ।" - -#, fuzzy +msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਆਪਣੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਵੀ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + msgid "The username specified is invalid." -msgstr "ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਗਲਤ ਹੈ।" +msgstr "ਦਿੱਤਾ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ" msgid "This Hotmail account may not be active." msgstr "ਇਹ ਹਾਟਮੇਲ ਅਕਾਊਂਟ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਹੈ।" +msgid "Profile URL" +msgstr "ਪ੍ਰੋਫਾਇਲ URL" + #. *< type #. *< ui_requirement #. *< flags @@ -5446,22 +5319,15 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "MSN Protocol Plugin" -msgstr "AIM ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" - -msgid "Missing Cipher" -msgstr "ਸੀਫ਼ਰ ਗੁੰਮ ਹੈ" - -msgid "The RC4 cipher could not be found" -msgstr "RC4 ਸੀਫ਼ਰ ਨਹੀਂ ਲੱਭਿਆ" - -msgid "" -"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " -"not be loaded." -msgstr "" -"RC4 ਸਹਿਯੋਗ (>=2.0.1) ਨਾਲ libpurple ਲਈ ਅੱਪਗਰੇਡ ਕਰੋ। MySpaceIM ਪਲੱਗਇਨ ਲੋਡ ਨਹੀਂ ਕੀਤੀ " -"ਜਾ ਸਕੇਗੀ।" +msgstr "MSN ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" + +#, c-format +msgid "No such user: %s" +msgstr "ਕੋਈ ਯੂਜ਼ਰ ਨਹੀਂ: %s" + +msgid "User lookup" +msgstr "ਯੂਜਰ ਖੋਜ" msgid "Reading challenge" msgstr "ਚੈਲੰਜ਼ ਪੜ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ" @@ -5472,11 +5338,17 @@ msgid "Logging in" msgstr "ਲਾਗਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" -#, fuzzy, c-format -msgid "Connection to server lost (no data received within %d second)" -msgid_plural "Connection to server lost (no data received within %d seconds)" -msgstr[0] "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ (%d ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ)" -msgstr[1] "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ (%d ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ)" +msgid "MySpaceIM - No Username Set" +msgstr "MySpaceIM - ਕੋਈ ਯੂਜ਼ਰ ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ" + +msgid "You appear to have no MySpace username." +msgstr "ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ MySpace ਯੂਜ਼ਰ ਨਾਂ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।" + +msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)" +msgstr "ਕੀ ਤੁਸੀਂ ਹੁਣ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? (ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ!)" + +msgid "Lost connection with server" +msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ" #. Can't write _()'d strings in array initializers. Workaround. msgid "New mail messages" @@ -5497,15 +5369,25 @@ msgid "MySpace" msgstr "MySpace" -#, fuzzy -msgid "MySpaceIM - No Username Set" -msgstr "ਕੋਈ ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ" - -msgid "You appear to have no MySpace username." -msgstr "" - -msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)" -msgstr "" +msgid "IM Friends" +msgstr "IM ਦੋਸਤ" + +#, c-format +msgid "" +"%d buddy was added or updated from the server (including buddies already on " +"the server-side list)" +msgid_plural "" +"%d buddies were added or updated from the server (including buddies already " +"on the server-side list)" +msgstr[0] "" +"%d ਬੱਡੀ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ " +"ਕੀਤੇ)" +msgstr[1] "" +"%d ਬੱਡੀਆਂ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ " +"ਕੀਤੇ)" + +msgid "Add contacts from server" +msgstr "ਸਰਵਰ ਤੋਂ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ" #. The session is now set up, ready to be connected. This emits the #. * signedOn signal, so clients can now do anything with msimprpl, and @@ -5524,10 +5406,25 @@ "myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try " "again." msgstr "" +"%s ਤੁਹਾਡਾ ਪਾਸਵਰਡ %d ਅੱਖਰਾਂ ਦਾ ਹੈ, ਜੋ ਕਿ MySpaceIM ਲਈ %d ਦੀ ਲੰਬਾਈ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ। ਆਪਣਾ ਪਾਸਵਰਡ http://profileedit." +"myspace.com/index.cfm?fuseaction=accountSettings.changePassword ਉੱਤੇ ਛੋਟਾ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ ਜੀ।" msgid "MySpaceIM Error" msgstr "MySpaceIM ਗਲਤੀ" +msgid "Invalid input condition" +msgstr "ਗਲਤ ਇੰਪੁੱਟ ਹਾਲਤ" + +msgid "Read buffer full (2)" +msgstr "ਪੜ੍ਹਨ ਬਫ਼ਰ ਭਰਿਆ (2)" + +msgid "Unparseable message" +msgstr "ਨਾ-ਪਾਰਸਯੋਗ ਸੁਨੇਹਾ" + +#, c-format +msgid "Couldn't connect to host: %s (%d)" +msgstr "ਹੋਸਟ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s (%d)" + msgid "Failed to add buddy" msgstr "ਬੱਡੀ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" @@ -5537,13 +5434,6 @@ msgid "persist command failed" msgstr "persist ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ।" -#, c-format -msgid "No such user: %s" -msgstr "ਕੋਈ ਯੂਜ਼ਰ ਨਹੀਂ: %s" - -msgid "User lookup" -msgstr "ਯੂਜਰ ਖੋਜ" - msgid "Failed to remove buddy" msgstr "ਬੱਡੀ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ" @@ -5553,39 +5443,18 @@ msgid "blocklist command failed" msgstr "blocklist ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ" -msgid "Invalid input condition" -msgstr "ਗਲਤ ਇੰਪੁੱਟ ਹਾਲਤ" - -#, fuzzy -msgid "Read buffer full (2)" -msgstr "ਪੜ੍ਹਨ ਬਫ਼ਰ ਭਰਿਆ" - -msgid "Unparseable message" -msgstr "ਨਾ-ਪਾਰਸਯੋਗ ਸੁਨੇਹਾ" - -#, c-format -msgid "Couldn't connect to host: %s (%d)" -msgstr "ਹੋਸਟ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s (%d)" - -msgid "IM Friends" -msgstr "IM ਦੋਸਤ" - -#, fuzzy, c-format -msgid "" -"%d buddy was added or updated from the server (including buddies already on " -"the server-side list)" -msgid_plural "" -"%d buddies were added or updated from the server (including buddies already " -"on the server-side list)" -msgstr[0] "" -"%d ਬੱਡੀ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ " -"ਕੀਤੇ)" -msgstr[1] "" -"%d ਬੱਡੀ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ " -"ਕੀਤੇ)" - -msgid "Add contacts from server" -msgstr "ਸਰਵਰ ਤੋਂ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ" +msgid "Missing Cipher" +msgstr "ਸੀਫ਼ਰ ਗੁੰਮ ਹੈ" + +msgid "The RC4 cipher could not be found" +msgstr "RC4 ਸੀਫ਼ਰ ਨਹੀਂ ਲੱਭਿਆ" + +msgid "" +"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " +"not be loaded." +msgstr "" +"RC4 ਸਹਿਯੋਗ (>=2.0.1) ਨਾਲ libpurple ਲਈ ਅੱਪਗਰੇਡ ਕਰੋ। MySpaceIM ਪਲੱਗਇਨ ਲੋਡ ਨਹੀਂ ਕੀਤੀ " +"ਜਾ ਸਕੇਗੀ।" msgid "Add friends from MySpace.com" msgstr "MySpace.com ਤੋਂ ਦੋਸਤ ਸ਼ਾਮਲ ਕਰੋ" @@ -5627,9 +5496,6 @@ msgid "User" msgstr "ਯੂਜ਼ਰ" -msgid "Profile" -msgstr "ਪ੍ਰੋਫਾਇਲ" - msgid "Headline" msgstr "ਹੈੱਡਲਾਈਨ" @@ -5642,34 +5508,30 @@ msgid "Client Version" msgstr "ਕਲਾਇਟ ਵਰਜਨ" +msgid "MySpaceIM - Username Available" +msgstr "MySpaceIM - ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਹੈ" + +msgid "This username is available. Would you like to set it?" +msgstr "ਇਹ ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਹੈ। ਕੀ ਤੁਸੀਂ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + +msgid "ONCE SET, THIS CANNOT BE CHANGED!" +msgstr "ਇੱਕ ਵਾਰ ਸੈੱਟ ਕੀਤਾ ਤਾਂ ਮੁੜ-ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕੇਗਾ!" + +msgid "MySpaceIM - Please Set a Username" +msgstr "MySpaceIM - ਯੂਜ਼ਰ ਨਾਂ ਸੈੱਟ ਕਰੋ" + +msgid "This username is unavailable." +msgstr "ਇਹ ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।" + +msgid "Please try another username:" +msgstr "ਹੋਰ ਯੂਜ਼ਰ ਨਾਂ ਨਾਲ ਟਰਾਈ ਕਰੋ ਜੀ:" + #. Protocol won't log in now without a username set.. Disconnect msgid "No username set" msgstr "ਕੋਈ ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ" -msgid "MySpaceIM - Please Set a Username" -msgstr "" - msgid "Please enter a username to check its availability:" -msgstr "" - -#, fuzzy -msgid "MySpaceIM - Username Available" -msgstr "ਸਰਵਿਸ ਉਪਲਬੱਧ ਨਹੀਂ" - -#, fuzzy -msgid "This username is available. Would you like to set it?" -msgstr "%s ਨੇ ਵਾਇਟਬੋਰਡ ਉੱਤੇ ਸੁਨੇਹਾ ਭੇਜਿਆ। ਕੀ ਤੁਸੀਂ ਵਾਇਟਬੋਰਡ ਖੋਲ੍ਹਣਾ ਚਾਹੁੰਦੇ ਹੋ?" - -msgid "ONCE SET, THIS CANNOT BE CHANGED!" -msgstr "" - -#, fuzzy -msgid "This username is unavailable." -msgstr "ਇਸ ਸਰੂਪ ਵਿੱਚ ਕੋਈ ਸਮਾਈਲ ਨਹੀਂ ਹਨ।" - -#, fuzzy -msgid "Please try another username:" -msgstr "%s ਲਈ ਨਵਾਂ ਨਾਂ ਦਿਓ ਜੀ" +msgstr "ਕਿਸੇ ਦੀ ਉਪਲੱਬਧਤਾ ਵੇਖਣ ਲਈ ਯੂਜ਼ਰ ਨਾਂ ਦਿਓ ਜੀ:" #. TODO: icons for each zap #. Lots of comments for translators: @@ -5862,13 +5724,11 @@ msgid "Master archive is misconfigured" msgstr "ਮਾਸਟਰ ਭੰਡਾਰ ਗਲਤ ਸੰਰਚਿਤ ਹੈ" -#, fuzzy msgid "Incorrect username or password" -msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" - -#, fuzzy +msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + msgid "Could not recognize the host of the username you entered" -msgstr "ਤੁਹਾਡੇ ਰਾਹੀਂ ਦਿੱਤੇ ਸਕਰੀਨ ਨਾਂ ਲਈ ਹੋਸਟ ਖੋਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ" +msgstr "ਤੁਹਾਡੇ ਰਾਹੀਂ ਦਿੱਤੇ ਯੂਜ਼ਰ ਨਾਂ ਲਈ ਹੋਸਟ ਖੋਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ" msgid "" "Your account has been disabled because too many incorrect passwords were " @@ -5881,9 +5741,8 @@ msgid "You have reached your limit for the number of contacts allowed" msgstr "ਤੁਸੀਂ ਵੱਧ ਤੋਂ ਵੱਧ ਸਵੀਕਾਰ ਸੰਪਰਕਾਂ ਦੀ ਸੀਮਾ ਤੱਕ ਅੱਪੜ ਗਏ ਹੋ" -#, fuzzy msgid "You have entered an incorrect username" -msgstr "ਤੁਸੀਂ ਇੱਕ ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਦਿੱਤਾ ਹੈ" +msgstr "ਤੁਸੀਂ ਇੱਕ ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਦਿੱਤਾ ਹੈ" msgid "An error occurred while updating the directory" msgstr "ਡਾਇਰੈਕਟਰੀ ਦੇ ਨਵੀਨੀਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ" @@ -6040,8 +5899,7 @@ msgstr "ਤੁਸੀਂ ਲਾਗ ਆਉਟ ਹੋ ਗਏ ਹੋ, ਕਿਉਕਿ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਵਰਕਸਟੇਸ਼ਨ ਉੱਤੇ ਲਾਗਇਨ ਹੋ ਗਏ ਹੋ।" #, c-format -msgid "" -"%s appears to be offline and did not receive the message that you just sent." +msgid "%s appears to be offline and did not receive the message that you just sent." msgstr "%s ਮੌਜੂਦ ਨਹੀਂ (ਆਫਲਾਇਨ) ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਰਾਹੀਂ ਭੇਜੇ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕੇਗਾ।" msgid "" @@ -6052,7 +5910,6 @@ msgid "Error. SSL support is not installed." msgstr "ਗਲਤੀ ਹੈ। SSL ਸਹਿਯੋਗ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।" -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "ਇਹ ਕਾਨਫਰੰਸ ਬੰਦ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ। ਕੋਈ ਹੋਰ ਸੁਨੇਹਾ ਨਹੀਂ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ।" @@ -6075,13 +5932,11 @@ msgid "Server port" msgstr "ਸਰਵਰ ਪੋਰਟ" -#, fuzzy msgid "Could not join chat room" -msgstr "ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#, fuzzy +msgstr "ਚੈਟ ਰੂਮ ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋਇਆ ਜਾ ਸਕਿਆ" + msgid "Invalid chat room name" -msgstr "ਗਲਤ ਰੂਮ ਨਾਂ" +msgstr "ਗਲਤ ਚੈਟ ਰੂਮ ਨਾਂ" msgid "Server closed the connection." msgstr "ਸਰਵਰ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ।" @@ -6111,7 +5966,7 @@ msgstr "AIM ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" msgid "ICQ UIN..." -msgstr "" +msgstr "ICQ UIN..." #. *< type #. *< ui_requirement @@ -6209,10 +6064,10 @@ msgstr "ਲੋਕਲ ਇਜ਼ਾਜਤ/ਪਾਬੰਦੀ" msgid "Warning level too high (sender)" -msgstr "" +msgstr "ਚੇਤਾਵਨੀ ਲੈਵਲ ਬਹੁਤ ਵੱਧ ਹੈ (ਭੇਜਣ ਵਾਲਾ)" msgid "Warning level too high (receiver)" -msgstr "" +msgstr "ਚੇਤਾਵਨੀ ਲੈਵਲ ਬਹੁਤ ਵੱਧ ਹੈ (ਲੈਣ ਵਾਲਾ)" msgid "User temporarily unavailable" msgstr "ਯੂਜ਼ਰ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ" @@ -6314,27 +6169,21 @@ msgid "Camera" msgstr "ਕੈਮਰਾ" -#, fuzzy msgid "Screen Sharing" -msgstr "ਸਕਰੀਨ ਨਾਂ" - -#, c-format +msgstr "ਸਕਰੀਨ ਸਾਂਝੀ" + msgid "Free For Chat" msgstr "ਗੱਲਬਾਤ ਕਰਨ ਲਈ ਵੇਹਲਾ" -#, c-format msgid "Not Available" msgstr "ਉਪਲੱਬਧ ਨਹੀਂ" -#, c-format msgid "Occupied" msgstr "ਰੁਝਿਆ" -#, c-format msgid "Web Aware" msgstr "ਵੈਬ ਜਾਣਕਾਰ" -#, c-format msgid "Invisible" msgstr "ਅਦਿੱਖ" @@ -6363,9 +6212,8 @@ "BOS ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਨਹੀਂ ਸਕਿਆ:\n" "%s" -#, fuzzy msgid "Username sent" -msgstr "ਕੋਈ ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ" +msgstr "ਯੂਜ਼ਰ ਨਾਂ ਭੇਜਿਆ" msgid "Connection established, cookie sent" msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣ ਗਿਆ ਹੈ, ਕੂਕੀ ਭੇਜਿਆ ਗਿਆ" @@ -6374,21 +6222,20 @@ msgid "Finalizing connection" msgstr "ਕੁਨੈਕਸ਼ਨ ਤਿਆਰ" -#, fuzzy, c-format +#, c-format msgid "" "Unable to login: Could not 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 ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। " +"ਯੂਜ਼ਰ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ " "ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।" #. Unregistered screen name #. uid is not exist -#, fuzzy msgid "Invalid username." -msgstr "ਗਲਤ ਨਾਂ" +msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਹੈ।" msgid "Incorrect password." msgstr "ਗਲਤ ਪਾਸਵਰਡ ਹੈ।" @@ -6436,12 +6283,8 @@ msgstr "ਠੀਕ ਹੈ(_O)" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ। ਤੁਸੀਂ ਸਥਿਰ ਹੋਣ ਤੱਕ TOC ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ। ਨਵੇਂ ਲਈ " -"%s ਵੇਖੋ।" +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ। ਇਸਕਰਕੇ ਅੱਪਡੇਟ ਲਈ %s ਵੇਖੋ।" msgid "Unable to get a valid AIM login hash." msgstr "ਇੱਕ ਠੀਕ AIM ਲਾਗਇਨ ਹੈਂਸ਼ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫ਼ਲ।" @@ -6553,27 +6396,22 @@ msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਵੱਡੇ ਹਨ।" #, 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." +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] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਦਰ ਸੀਮਾ ਹੱਦ ਟੱਪ ਗਈ ਹੈ।" msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਦਰ ਸੀਮਾ ਹੱਦ ਟੱਪ ਗਈ ਹੈ।" -#, fuzzy, c-format -msgid "" -"You missed %hu message from %s because his/her warning level is too high." -msgid_plural "" -"You missed %hu messages from %s because his/her warning level is too high." -msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਉਹ ਬੁਰਾ ਹੈ।" -msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਉਹ ਬੁਰਾ ਹੈ।" - -#, fuzzy, c-format +#, c-format +msgid "You missed %hu message from %s because his/her warning level is too high." +msgid_plural "You missed %hu messages from %s because his/her warning level is too high." +msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।" +msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।" + +#, 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] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਤੁਸੀਂ ਬੁਰੇ ਹੋ।" -msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਤੁਸੀਂ ਬੁਰੇ ਹੋ।" +msgid_plural "You missed %hu messages from %s because your warning level is too high." +msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।" +msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ" #, c-format msgid "You missed %hu message from %s for an unknown reason." @@ -6603,6 +6441,9 @@ msgid "Member Since" msgstr "ਮੈਂਬਰ ਹੈ" +msgid "Profile" +msgstr "ਪ੍ਰੋਫਾਇਲ" + msgid "Your AIM connection may be lost." msgstr "ਤੁਹਾਡਾ AIM ਕੁਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ ਹੋ ਸਕਦਾ ਹੈ।" @@ -6652,11 +6493,11 @@ msgid "Pop-Up Message" msgstr "ਪੋਪਅੱਪ ਸੁਨੇਹਾ" -#, fuzzy, c-format +#, c-format msgid "The following username is associated with %s" msgid_plural "The following usernames are associated with %s" -msgstr[0] "ਹੇਠ ਦਿੱਤੀ ਸਕਰੀਨ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ" -msgstr[1] "ਹੇਠ ਦਿੱਤੇ ਸਕਰੀਨ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ" +msgstr[0] "ਹੇਠ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹੈ" +msgstr[1] "ਹੇਠ ਦਿੱਤੇ ਯੂਜ਼ਰ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ" #, c-format msgid "No results found for email address %s" @@ -6669,38 +6510,35 @@ msgid "Account Confirmation Requested" msgstr "ਅਕਾਊਂਟ ਪੁਸ਼ਟੀ ਮੰਗ" -#, fuzzy, c-format +#, c-format msgid "" "Error 0x%04x: Unable to format username because the requested name differs " "from the original." -msgstr "" -"ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।" - -#, fuzzy, c-format +msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।" + +#, c-format msgid "Error 0x%04x: Unable to format username because it is invalid." -msgstr "ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗਲਤ ਹੈ।" - -#, fuzzy, c-format +msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗਲਤ ਹੈ।" + +#, c-format msgid "" "Error 0x%04x: Unable to format username because the requested name is too " "long." -msgstr "ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ।" - -#, fuzzy, c-format +msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ-ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ।" + +#, c-format msgid "" "Error 0x%04x: Unable to change email address because there is already a " "request pending for this username." msgstr "" -"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਿਰਨਾਵੇਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ " +"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਇਸ ਯੂਜ਼ਰ-ਨਾਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ " "ਬੇਨਤੀ ਬਕਾਇਆ ਪਈ ਹੈ।" -#, fuzzy, c-format +#, c-format msgid "" "Error 0x%04x: Unable to change email address because the given address has " "too many usernames associated with it." -msgstr "" -"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਸਕਰੀਨ " -"ਨਾਂ ਸਬੰਧਤ ਹਨ।" +msgstr "ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਯੂਜ਼ਰ-ਨਾਂ ਸਬੰਧਤ ਹਨ।" #, c-format msgid "" @@ -6713,7 +6551,7 @@ msgstr "ਗਲਤੀ 0x%04x: ਅਣਜਾਣੀ ਗਲਤੀ ਹੈ।" msgid "Error Changing Account Info" -msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਕਰਨ ਲਈ ਗਲਤੀ" +msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ" #, c-format msgid "The email address for %s is %s" @@ -6722,8 +6560,7 @@ msgid "Account Info" msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ" -msgid "" -"Your IM Image was not sent. You must be Direct Connected to send IM Images." +msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images." msgstr "ਤੁਹਾਡਾ IM ਭੇਜਿਆ ਨਹੀਂ ਸੀ ਗਿਆ। ਤੁਹਾਨੂੰ IM ਚਿੱਤਰ ਭੇਜਣ ਲਈ ਸਿੱਧਾ ਜੁੜਨਾ ਚਾਹੀਦਾ ਹੈ।" msgid "Unable to set AIM profile." @@ -6738,7 +6575,7 @@ "ਤੁਹਾਡਾ ਪਰੋਫਾਇਲ ਅਣ-ਸੈੱਟ ਹੀ ਰਹੇਗਾ, ਜਦੋਂ ਤੁਸੀਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕੁਨੈਕਟ ਹੋ ਜਾਵੋ ਤਾਂ ਫੇਰ ਸੈਟਿੰਗ ਕਰਨ ਦੀ " "ਟਰਾਈ ਕਰਨੀ।" -#, fuzzy, c-format +#, c-format msgid "" "The maximum profile length of %d byte has been exceeded. It has been " "truncated for you." @@ -6746,51 +6583,43 @@ "The maximum profile length of %d bytes has been exceeded. It has been " "truncated for you." msgstr[0] "" -"ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ " -"ਹੈ।ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) " -"ਦਿੱਤਾ ਹੈ।" +"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ " +"ਹੈ।" msgstr[1] "" -"ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ " -"ਹੈ।ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) " +"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) " "ਦਿੱਤਾ ਹੈ।" msgid "Profile too long." -msgstr "ਪ੍ਰੋਫਾਇਲ ਬਹੁਤ ਲੰਮਾ ਹੈ।" - -#, fuzzy, c-format +msgstr "ਪਰੋਫਾਇਲ ਬਹੁਤ ਲੰਮਾ ਹੈ।" + +#, c-format msgid "" "The maximum away message length of %d byte has been exceeded. It has been " "truncated for you." msgid_plural "" "The maximum away message length of %d bytes has been exceeded. It has been " "truncated for you." -msgstr[0] "" -"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।ਸੁਨੇਹੇ ਦੀ " -"ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।" -msgstr[1] "" -"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।ਸੁਨੇਹੇ ਦੀ " -"ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।" +msgstr[0] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।" +msgstr[1] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।" msgid "Away message too long." msgstr "ਦੂਰ ਸੁਨੇਹਾ ਬਹੁਤ ਲੰਮਾ ਹੈ।" -#, fuzzy, c-format +#, c-format msgid "" "Could not 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 "" -"ਬੱਡੀ %s ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਕਰੀਨ ਨਾਂ ਗਲਤ ਹੈ। ਸਕਰੀਨ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ " +"ਬੱਡੀ %s ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। ਯੂਜ਼ਰ-ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ " "ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ " "ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।" -#, fuzzy msgid "Unable to Add" -msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" - -#, fuzzy +msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + msgid "Unable to Retrieve Buddy List" -msgstr "ਬੱਡੀ ਲਿਸਟ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫਲ" +msgstr "ਬੱਡੀ ਲਿਸਟ ਲੈਣ ਲਈ ਅਸਮਰੱਥ" msgid "" "The AIM servers were temporarily unable to send your buddy list. Your buddy " @@ -6817,7 +6646,7 @@ msgid "Could not add the buddy %s for an unknown reason." msgstr "ਅਣਜਾਣੇ ਕਾਰਨ ਕਰਨੇ ਬੱਡੀ %s ਨੂੰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" -#, fuzzy, c-format +#, c-format msgid "" "The user %s has given you permission to add him or her to your buddy list. " "Do you want to add this user?" @@ -6831,10 +6660,10 @@ #. Granted #, c-format msgid "The user %s has granted your request to add them to your buddy list." -msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਸਵੀਕਾਰ ਕਰ ਲਿਆ ਹੈ।" +msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਮੰਗ ਮੰਨ ਲਈ ਹੈ।" msgid "Authorization Granted" -msgstr "ਪ੍ਰਮਾਣਕਿਤਾ ਸਵੀਕਾਰ" +msgstr "ਆਗਿਆ ਦਿੱਤੀ" #. Denied #, c-format @@ -6843,7 +6672,7 @@ "following reason:\n" "%s" msgstr "" -"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਨੂੰ ਇਸ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤਾ ਹੈ:\n" +"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਹੇਠ ਦਿੱਤੇ ਕਾਰਨ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤੀ ਹੈ:\n" "%s" msgid "Authorization Denied" @@ -6882,6 +6711,7 @@ msgid "Get AIM Info" msgstr "AIM ਜਾਣਕਾਰੀ ਲਵੋ" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "ਬੱਡੀ ਟਿੱਪਣੀ ਸੋਧ" @@ -6901,23 +6731,22 @@ msgstr "ਵੈੱਬ ਉੱਤੇ ਉਪਲੱਬਧ (ਇਹ ਯੋਗ ਕਰਨ ਨਾਲ ਤੁਹਾਨੂੰ ਸਪਮ (SPAM) ਆਉਣ ਦਾ ਖਤਰਾ!)" msgid "ICQ Privacy Options" -msgstr "ICQ ਰਹੱਸ ਚੋਣਾਂ" +msgstr "ICQ ਪਰਾਈਵੇਸੀ ਚੋਣਾਂ" msgid "The new formatting is invalid." -msgstr "ਨਵਾਂ ਫਾਰਮਿਟ ਗਲਤ ਹੈ।" - -#, fuzzy +msgstr "ਨਵਾਂ ਫਾਰਮੈਟ ਗਲਤ ਹੈ।" + msgid "Username formatting can change only capitalization and whitespace." -msgstr "ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਵਿੱਚ ਵੱਡੇ ਅੱਖਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਹੀ ਤਬਦੀਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।" +msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਵਿੱਚ ਵੱਡੇ ਅੱਖਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਹੀ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।" msgid "Change Address To:" -msgstr "ਐਡਰੈੱਸ ਤਬਦੀਲ:" +msgstr "ਐਡਰੈੱਸ ਬਦਲੋ:" msgid "you are not waiting for authorization" msgstr "ਤੁਸੀਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ" msgid "You are awaiting authorization from the following buddies" -msgstr "ਤੁਸੀਂ ਇਹਨਾਂ ਬੱਡੀ ਵਲੋਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਕਰ ਰਹੇ ਹੋ" +msgstr "ਤੁਸੀਂ ਇਹਨਾਂ ਬੱਡੀਆਂ ਵਲੋਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਕਰ ਰਹੇ ਹੋ" msgid "" "You can re-request authorization from these buddies by right-clicking on " @@ -6938,21 +6767,18 @@ msgid "_Search" msgstr "ਖੋਜ(_S)" -#, fuzzy msgid "Set User Info (web)..." -msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ (URL)..." - -#, fuzzy +msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ (ਵੈੱਬ)..." + msgid "Change Password (web)" -msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲ (URL)" - -#, fuzzy +msgstr "ਪਾਸਵਰਡ ਬਦਲੋ (ਵੈੱਬ)" + msgid "Configure IM Forwarding (web)" -msgstr "IM ਫਾਰਵਿਡਿੰਗ (URL) ਸੰਰਚਨਾ" +msgstr "IM ਫਾਰਵਿਡਿੰਗ ਸੰਰਚਨਾ (ਵੈੱਬ)" #. ICQ actions msgid "Set Privacy Options..." -msgstr "ਰਹੱਸ ਚੋਣਾਂ ਦਿਓ..." +msgstr "ਪਰਾਈਵੇਸੀ ਚੋਣਾਂ ਦਿਓ..." #. AIM actions msgid "Confirm Account" @@ -6973,17 +6799,16 @@ msgid "Search for Buddy by Information" msgstr "ਜਾਣਕਾਰੀ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ" -#, fuzzy msgid "" "Always use AIM/ICQ proxy server for\n" "file transfers and direct IM (slower,\n" "but does not reveal your IP address)" msgstr "" -"ਫਾਇਲ ਟਰਾਂਸਫਰ ਲਈ ICQ ਪਰਾਕਸੀ ਸਰਵਰ ਹਮੇਸ਼ਾਂ ਵਰਤੋਂ\n" -"(ਹੌਲੀ ਹੈ, ਪਰ ਤੁਹਾਡਾ IP ਐਡਰੈੱਸ ਵੇਖਾਉਦਾ ਨਹੀਂ ਹੈ)" +"ਫਾਇਲ ਟਰਾਂਸਫਰ ਅਤੇ ਸਿੱਧਾ IM ਲਈ ICQ ਪਰਾਕਸੀ ਸਰਵਰ\n" +"ਹਮੇਸ਼ਾਂ ਵਰਤੋਂ ਹੌਲੀ ਹੈ, ਪਰ ਤੁਹਾਡਾ IP ਐਡਰੈੱਸ ਵੇਖਾਉਦਾ ਨਹੀਂ ਹੈ)" msgid "Allow multiple simultaneous logins" -msgstr "" +msgstr "ਇੱਕੋ ਵਾਰ ਕਈ ਲਾਗਇਨ ਮਨਜ਼ੂਰ" #, c-format msgid "Asking %s to connect to us at %s:%hu for Direct IM." @@ -6993,7 +6818,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "%s ਨਾਲ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਜਾਰੀ: %hu" -#, c-format msgid "Attempting to connect via proxy server." msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼।" @@ -7084,16 +6908,14 @@ msgid "Other" msgstr "ਹੋਰ" -#, fuzzy msgid "Visible" -msgstr "ਅਦਿੱਖ" - -msgid "Firend Only" -msgstr "" - -#, fuzzy +msgstr "ਦਿੱਖ" + +msgid "Friend Only" +msgstr "ਕੇਵਲ ਦੋਸਤ ਹੀ" + msgid "Private" -msgstr "ਰਹੱਸ" +msgstr "ਪ੍ਰਾਈਵੇਟ" msgid "QQ Number" msgstr "QQ ਨੰਬਰ" @@ -7110,9 +6932,8 @@ msgid "Phone Number" msgstr "ਫੋਨ ਨੰਬਰ" -#, fuzzy msgid "Authorize adding" -msgstr "ਕੀ ਬੱਡੀ ਮਨਜ਼ੂਰ ਹੈ?" +msgstr "ਪਰਮਾਣਿਕਤਾ ਸ਼ਾਮਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" msgid "Cellphone Number" msgstr "ਸੈਲਫੋਨ ਨੰਬਰ" @@ -7120,130 +6941,106 @@ msgid "Personal Introduction" msgstr "ਨਿੱਜੀ ਜਾਣ ਪਛਾਣ" -#, fuzzy msgid "City/Area" -msgstr "ਸ਼ਹਿਰ" - -#, fuzzy +msgstr "ਸ਼ਹਿਰ/ਖੇਤਰ" + msgid "Publish Mobile" -msgstr "ਨਿੱਜੀ ਮੋਬਾਇਲ" - -#, fuzzy +msgstr "ਮੋਬਾਇਲ ਪਬਲਿਸ਼" + msgid "Publish Contact" -msgstr "ਉਪ ਨਾਂ ਸੰਪਰਕ" +msgstr "ਸੰਪਰਕ ਪਬਲਿਸ਼" msgid "College" msgstr "ਕਾਲਜ" -#, fuzzy msgid "Horoscope" -msgstr "ਜੋਤਿਸ਼ ਨਿਸ਼ਾਨ" - -#, fuzzy +msgstr "ਜੋਤਿਸ਼" + msgid "Zodiac" -msgstr "ਰਾਸ਼ੀ ਨਿਸ਼ਾਨ" - -#, fuzzy +msgstr "ਰਾਸ਼ੀ" + msgid "Blood" -msgstr "ਪਾਬੰਦੀ" - -#, fuzzy +msgstr "ਖੂਨ" + msgid "True" -msgstr "ਟੋਰਅਸ" - -#, fuzzy +msgstr "ਸਹੀਂ" + msgid "False" -msgstr "ਅਸਫ਼ਲ" - -#, fuzzy +msgstr "ਗਲਤ" + msgid "Modify Contact" -msgstr "ਅਕਾਊਂਟ ਸੋਧ" - -#, fuzzy +msgstr "ਸੰਪਰਕ ਸੋਧ" + msgid "Modify Address" -msgstr "ਘਰ ਐਡਰੈੱਸ" - -#, fuzzy +msgstr "ਐਡਰੈੱਸ ਸੋਧ" + msgid "Modify Extended Information" -msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੋਧੋ" - -#, fuzzy +msgstr "ਵਾਧੂ ਜਾਣਕਾਰੀ ਸੋਧ" + msgid "Modify Information" -msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੋਧੋ" - -#, fuzzy +msgstr "ਜਾਣਕਾਰੀ ਸੋਧ" + msgid "Update" -msgstr "ਆਖਰੀ ਅੱਪਡੇਟ" - -#, fuzzy +msgstr "ਅੱਪਡੇਟ" + msgid "Could not change buddy information." -msgstr "ਬੱਡੀ ਜਾਣਕਾਰੀ ਦਿਓ ਜੀ।" - -#, c-format -msgid "%d needs Q&A" -msgstr "" - -#, fuzzy -msgid "Add buddy Q&A" -msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ" - -#, fuzzy -msgid "Input answer here" -msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ" +msgstr "ਬੱਡੀ ਜਾਣਕਾਰੀ ਬਦਲੀ ਨਹੀਂ ਜਾ ਸਕੀ" + +#, c-format +msgid "%u requires verification" +msgstr "%u ਲਈ ਪਰਮਾਣਿਕਤਾ ਦੀ ਲੋੜ" + +msgid "Add buddy question" +msgstr "ਬੱਡੀ ਸਵਾਲ ਸ਼ਾਮਲ" + +msgid "Enter answer here" +msgstr "ਇੱਥੇ ਜਵਾਬ ਦਿਓ" msgid "Send" msgstr "ਭੇਜੋ" -#, fuzzy msgid "Invalid answer." -msgstr "ਗਲਤ ਨਾਂ" +msgstr "ਗਲਤ ਜਵਾਬ ਹੈ।" msgid "Authorization denied message:" msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਪਾਬੰਦੀ ਸੁਨੇਹਾ:" -#, fuzzy -msgid "Sorry, You are not my style." -msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ..." - -#, fuzzy, c-format -msgid "%d needs authentication" -msgstr "ਯੂਜ਼ਰ %d ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" - -#, fuzzy +msgid "Sorry, you're not my style." +msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ ਹੋ।" + +#, c-format +msgid "%u needs authorization" +msgstr "%u ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" + msgid "Add buddy authorize" -msgstr "ਕੀ ਬੱਡੀ ਆਪਣੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ?" - -msgid "Input request here" -msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ" +msgstr "ਬੱਡੀ ਪਰਮਾਣਕਿਤਾ ਸ਼ਾਮਲ" + +msgid "Enter request here" +msgstr "ਮੰਗ ਇੱਥੇ ਦਿਓ" msgid "Would you be my friend?" msgstr "ਕੀ ਤੁਸੀਂ ਮੇਰੇ ਦੋਸਤ ਬਣਨਾ ਚਾਹੁੰਦੇ ਹੋ?" -#, fuzzy msgid "QQ Buddy" -msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ" - -#, fuzzy +msgstr "QQ ਬੱਡੀ" + msgid "Add buddy" -msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ" - -#, fuzzy +msgstr "ਬੱਡੀ ਸ਼ਾਮਲ" + msgid "Invalid QQ Number" -msgstr "ਗਲਤ QQ ਮੁੱਖ" - -#, fuzzy +msgstr "ਗਲਤ QQ ਨੰਬਰ" + msgid "Failed sending authorize" -msgstr "ਮੈਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ ਜੀ!" - -#, fuzzy, c-format -msgid "Failed removing buddy %d" -msgstr "ਬੱਡੀ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ" - -#, fuzzy, c-format +msgstr "ਪਰਮਾਣਕਿਤਾ ਭੇਜਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#, c-format +msgid "Failed removing buddy %u" +msgstr "ਬੱਡੀ %u ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ" + +#, c-format msgid "Failed removing me from %d's buddy list" -msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚੋਂ ਹਟਾ ਦਿੱਤਾ ਹੈ।" - -#, fuzzy +msgstr "%d ਦੀ ਬੱਡੀ ਲਿਸਟ ਤੋਂ ਮੈਨੂੰ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ" + msgid "No reason given" msgstr "ਕੋਈ ਕਾਰਨ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।" @@ -7255,9 +7052,9 @@ msgid "Would you like to add him?" msgstr "ਕੀ ਤੁਸੀਂ ਉਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" -#, fuzzy, c-format +#, c-format msgid "Rejected by %s" -msgstr "ਰੱਦ ਕਰੋ" +msgstr "%s ਵਲੋਂ ਰੱਦ ਕਰੋ" #, c-format msgid "Message: %s" @@ -7272,82 +7069,73 @@ msgid "QQ Qun" msgstr "QQ Qun" -#, fuzzy msgid "Please enter Qun number" -msgstr "%s ਲਈ ਨਵਾਂ ਨਾਂ ਦਿਓ ਜੀ" - -#, fuzzy +msgstr "Qun ਨੰਬਰ ਦਿਓ ਜੀ" + msgid "You can only search for permanent Qun\n" -msgstr "ਤੁਸੀਂ ਕੇਵਲ ਪੱਕੇ QQ ਗਰੁੱਪ ਲਈ ਹੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ\n" - -#, fuzzy +msgstr "ਤੁਸੀਂ ਕੇਵਲ ਪੱਕੇ Qun ਹੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ\n" + +msgid "(Invalid UTF-8 string)" +msgstr "(ਗਲਤ UTF-8 ਲਾਇਨ)" + msgid "Not member" -msgstr "ਮੈਂ ਮੈਂਬਰ ਨਹੀਂ ਹਾਂ" - -#, fuzzy +msgstr "ਮੈਂਬਰ ਨਹੀਂ" + msgid "Member" -msgstr "ਮੈਂਬਰ ਹੈ" - -#, fuzzy +msgstr "ਮੈਂਬਰ ਹੋ" + msgid "Requesting" -msgstr "ਮੰਗ ਡਾਈਲਾਗ" - -#, fuzzy +msgstr "ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" + msgid "Admin" -msgstr "Adium" - -#, fuzzy +msgstr "ਐਡਮਿਨ" + msgid "Notice" -msgstr "ਨੋਟ" - -#, fuzzy +msgstr "ਨੋਟਿਸ" + msgid "Detail" -msgstr "ਡਿਫਾਲਟ" +msgstr "ਵੇਰਵਾ" msgid "Creator" msgstr "ਨਿਰਮਾਤਾ" -#, fuzzy msgid "About me" -msgstr "%s ਬਾਰੇ" - -#, fuzzy +msgstr "ਮੇਰੇ ਬਾਰੇ" + msgid "Category" -msgstr "ਗੱਲ ਗਲਤੀ" - -#, fuzzy +msgstr "ਕੈਟਾਗਰੀ" + msgid "The Qun does not allow others to join" -msgstr "ਇਹ ਗਰੁੱਪ ਹੋਰਾਂ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੰਦਾ ਹੈ" - -#, fuzzy +msgstr "Qun ਹੋਰਾਂ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੰਦਾ ਹੈ" + msgid "Join QQ Qun" -msgstr "ਚੈਟ ਜੁਆਇੰਨ" - -#, c-format -msgid "Successfully joined Qun %s (%d)" -msgstr "" - -#, fuzzy +msgstr "QQ Qun ਜੁਆਇੰਨ ਕਰੋ" + +msgid "Input request here" +msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ" + +#, c-format +msgid "Successfully joined Qun %s (%u)" +msgstr "Qun %s (%u) ਠੀਕ ਤਰ੍ਹਾਂ ਜੁਆਇੰਨ ਕੀਤਾ ਗਿਆ" + msgid "Successfully joined Qun" -msgstr "ਤੁਸੀਂ ਕਿਊਨ ਮੈਂਬਰ ਸੋਧਿਆ ਹੈ।" - -#, c-format -msgid "Qun %d denied to join" -msgstr "" +msgstr "Qun ਠੀਕ ਤਰ੍ਹਾਂ ਜੁਆਇੰਨ ਕੀਤਾ" + +#, c-format +msgid "Qun %u denied from joining" +msgstr "ਕੁਆਇੰਨ %u ਨੇ ਜੁਆਇੰਨ ਕਰਵਾਉਣ ਤੇ ਰੋਕ ਲਾਈ" msgid "QQ Qun Operation" -msgstr "QQ Qun ਕਾਰਵਾਈ" - -#, fuzzy +msgstr "QQ Qun ਓਪਰੇਸ਼ਨ" + msgid "Failed:" -msgstr "ਅਸਫ਼ਲ" - -msgid "Join Qun, Unknow Reply" -msgstr "" - -#, fuzzy +msgstr "ਅਸਫ਼ਲ:" + +msgid "Join Qun, Unknown Reply" +msgstr "Qun ਜੁਆਇੰਨ, ਅਣਜਾਣ ਜਵਾਬ" + msgid "Quit Qun" -msgstr "QQ Qun" +msgstr "Qun ਬੰਦ ਕਰੋ" msgid "" "Note, if you are the creator, \n" @@ -7356,194 +7144,180 @@ "ਨੋਟ, ਜੇ ਤੁਸੀਂ ਬਣਾਉਣ ਵਾਲੇ ਹੋ ਤਾਂ,\n" "ਇਸ ਓਪਰੇਸ਼ਨ ਨਾਲ ਇਹ ਕਿਊਨ ਵੀ ਹਟਾਇਆ ਜਾਵੇਗਾ।" -#, fuzzy -msgid "Sorry, you are not our style ..." -msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ..." - -#, fuzzy -msgid "Successfully changed Qun member" -msgstr "ਤੁਸੀਂ ਕਿਊਨ ਮੈਂਬਰ ਸੋਧਿਆ ਹੈ।" - -#, fuzzy +msgid "Sorry, you are not our style" +msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਸਟਾਈਲ ਦੇ ਨਹੀਂ" + +msgid "Successfully changed Qun members" +msgstr "ਕਿਊਨ ਮੈਂਬਰ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ" + msgid "Successfully changed Qun information" -msgstr "ਤੁਸੀਂ ਕਿਊਨ ਜਾਣਕਾਰੀ ਸੋਧੀ ਹੈ" +msgstr "Qun ਜਾਣਕਾਰੀ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲੀ ਗਈ" msgid "You have successfully created a Qun" -msgstr "ਤੁਸੀਂ ਇੱਕ ਕਿਊਨ ਬਣਾਇਆ ਹੈ" - -#, fuzzy -msgid "Would you like to set detailed information now?" -msgstr "ਕੀ ਤੁਸੀਂ ਕਿਊਨ ਲਈ ਵੇਰਵਾ ਹੁਣੇ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" +msgstr "ਤੁਸੀਂ ਇੱਕ Qun ਠੀਕ ਤਰ੍ਹਾਂ ਬਣਾਇਆ" + +msgid "Would you like to set up detailed information now?" +msgstr "ਕੀ ਤੁਸੀਂ ਵੇਰਵੇ ਸਮੇਤ ਸੈੱਟਅੱਪ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ?" msgid "Setup" msgstr "ਸੈੱਟਅੱਪ" -#, fuzzy, c-format -msgid "%d requested to join Qun %d for %s" -msgstr "ਯੂਜ਼ਰ %d ਨੇ ਗਰੁੱਪ %d ਸ਼ਾਮਲ ਕਰਨ ਵਾਸਤੇ ਮੰਗ ਕੀਤੀ" - -#, fuzzy, c-format -msgid "%d request to join Qun %d" -msgstr "ਯੂਜ਼ਰ %d ਨੇ ਗਰੁੱਪ %d ਸ਼ਾਮਲ ਕਰਨ ਵਾਸਤੇ ਮੰਗ ਕੀਤੀ" - -#, fuzzy, c-format -msgid "Failed to join Qun %d, operated by admin %d" -msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਬੱਡੀ ਆਉਣ ਲਈ ਅਸਫਲ" - -#, c-format -msgid "Joining Qun %d is approved by admin %d for %s" -msgstr "" - -#, fuzzy, c-format -msgid "Removed buddy %d." -msgstr "ਬੱਡੀ ਹਟਾਓ" - -#, c-format -msgid "New buddy %d joined." -msgstr "" +#, c-format +msgid "%u requested to join Qun %u for %s" +msgstr "%u ਨੇ Qun %u ਨੂੰ %s ਲਈ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਕੀਤੀ ਹੈ" + +#, c-format +msgid "%u request to join Qun %u" +msgstr "%u ਨੇ Qun %u ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਕੀਤੀ" + +#, c-format +msgid "Failed to join Qun %u, operated by admin %u" +msgstr "Qun %u ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ, ਐਡਮਿਨ %u ਵਲੋਂ ਕਾਰਵਾਈ ਕੀਤੀ" + +#, c-format +msgid "Joining Qun %u is approved by admin %u for %s" +msgstr "Qun %u ਜੁਆਇੰਨ ਕਰਨ ਨੂੰ ਐਡਮਿਨ %u ਵਲੋਂ %s ਲਈ ਮਨਜ਼ੂਰ ਹੈ।" + +#, c-format +msgid "Removed buddy %u." +msgstr "%u ਬੱਡੀ ਹਟਾਓ।" + +#, c-format +msgid "New buddy %u joined." +msgstr "ਨਵਾਂ ਬੱਡੀ %u ਜੁਆਇੰਨ ਕੀਤਾ।" #, c-format msgid "Unknown-%d" msgstr "ਅਣਜਾਣ-%d" msgid "Level" -msgstr "ਪੱਧਰ" +msgstr "ਲੈਵਲ" msgid " VIP" -msgstr "" +msgstr " VIP" msgid " TCP" -msgstr "" - -#, fuzzy +msgstr " TCP" + msgid " FromMobile" -msgstr "ਮੋਬਾਇਲ" - -#, fuzzy +msgstr " ਮੋਬਾਇਲ-ਤੋਂ" + msgid " BindMobile" -msgstr "ਮੋਬਾਇਲ" - -#, fuzzy +msgstr " ਬਾਈਡ-ਮੋਬਾਇਲ" + msgid " Video" -msgstr "ਸਿੱਧੀ ਵੀਡਿਓ" - -#, fuzzy +msgstr " ਵੀਡਿਓ" + msgid " Zone" -msgstr "ਕੋਈ ਨਹੀਂ" +msgstr " ਜ਼ੋਨ" msgid "Flag" -msgstr "" +msgstr "ਫਲੈਗ" msgid "Ver" -msgstr "" +msgstr "Ver" msgid "Invalid name" msgstr "ਗਲਤ ਨਾਂ" -#, fuzzy msgid "Select icon..." -msgstr "ਫੋਲਡਰ ਚੁਣੋ..." - -#, fuzzy, c-format +msgstr "ਆਈਕਾਨ ਚੁਣੋ..." + +#, c-format msgid "Login time: %d-%d-%d, %d:%d:%d
\n" -msgstr "ਲਾਗਇਨ ਸਮਾਂ: %s
\n" - -#, fuzzy, c-format +msgstr "ਲਾਗਇਨ ਸਮਾਂ: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "Total Online Buddies: %d
\n" -msgstr "ਹੁਣ ਆਫਲਾਇਨ: %d
\n" - -#, fuzzy, c-format +msgstr "ਕੁੱਲ ਆਨਲਾਈਨ ਬੱਡੀ: %d
\n" + +#, c-format msgid "Last Refresh: %d-%d-%d, %d:%d:%d
\n" -msgstr "ਆਖਰੀ ਤਾਜ਼ਾ: %s
\n" - -#, fuzzy, c-format +msgstr "ਆਖਰੀ ਤਾਜ਼ਾ: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "Server: %s
\n" -msgstr "ਸਰਵਰ IP: %s: %d
\n" - -#, fuzzy, c-format +msgstr "ਸਰਵਰ: %s
\n" + +#, c-format msgid "Client Tag: %s
\n" -msgstr "ਲਾਗਇਨ ਸਮਾਂ: %s
\n" +msgstr "ਕਲਾਇਟ ਟੈਗ: %s
\n" #, c-format msgid "Connection Mode: %s
\n" msgstr "ਕੁਨੈਕਸ਼ਨ ਢੰਗ: %s
\n" -#, fuzzy, c-format +#, c-format msgid "My Internet IP: %s:%d
\n" -msgstr "ਕੁਨੈਕਸ਼ਨ ਢੰਗ: %s
\n" - -#, fuzzy, c-format +msgstr "ਮੇਰਾ ਇੰਟਰਨੈੱਟ IP: %s:%d
\n" + +#, c-format msgid "Sent: %lu
\n" -msgstr "ਹੁਣ ਆਫਲਾਇਨ: %d
\n" - -#, fuzzy, c-format +msgstr "ਭੇਜੇ: %lu
\n" + +#, c-format msgid "Resend: %lu
\n" -msgstr "ਆਖਰੀ ਤਾਜ਼ਾ: %s
\n" - -#, fuzzy, c-format +msgstr "ਮੁੜ-ਭੇਜੋ: %lu
\n" + +#, c-format msgid "Lost: %lu
\n" -msgstr "ਆਖਰੀ ਤਾਜ਼ਾ: %s
\n" - -#, fuzzy, c-format +msgstr "ਗੁਆਚੇ: %lu
\n" + +#, c-format msgid "Received: %lu
\n" -msgstr "ਆਖਰੀ ਤਾਜ਼ਾ: %s
\n" - -#, fuzzy, c-format +msgstr "ਲਏ: %lu
\n" + +#, c-format msgid "Received Duplicate: %lu
\n" -msgstr "ਮੇਰਾ ਪਬਲਿਕ IP: %s
\n" - -#, fuzzy, c-format +msgstr "ਡੁਪਲੀਕੇਟ ਮਿਲੇ: %lu
\n" + +#, c-format msgid "Time: %d-%d-%d, %d:%d:%d
\n" -msgstr "ਲਾਗਇਨ ਸਮਾਂ: %s
\n" - -#, fuzzy, c-format +msgstr "ਸਮਾਂ: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "IP: %s
\n" -msgstr "ਸਰਵਰ IP: %s: %d
\n" +msgstr "IP: %s
\n" msgid "Login Information" msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ" msgid "

Original Author:
\n" -msgstr "" +msgstr "

ਅਸਲੀ ਲੇਖਕ:
\n" msgid "

Code Contributors:
\n" -msgstr "" - -#, fuzzy +msgstr "

ਕੋਡ ਯੋਗਦਾਨ:
\n" + msgid "

Lovely Patch Writers:
\n" -msgstr "ਆਖਰੀ ਤਾਜ਼ਾ: %s
\n" - -#, fuzzy +msgstr "

ਪਿਆਰੇ ਪੈਚ ਲੇਖਕ:
\n" + msgid "

Acknowledgement:
\n" -msgstr "ਹੁਣ ਆਫਲਾਇਨ: %d
\n" +msgstr "

ਰਸੀਦ:
\n" msgid "

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

ਅਤੇ ਸਾਰੇ ਮੁੰਡੇ ਪਿਛਲੇ ਕਮਰੇ ਵਿੱਚ ਹਨ...
\n" msgid "Feel free to join us! :)" -msgstr "" - -#, fuzzy, c-format -msgid "About OpenQ r%s" -msgstr "%s ਬਾਰੇ" - -#, fuzzy +msgstr "ਸਾਡੇ ਨਾਲ ਹੱਥ ਵਟਾਉਣ ਲਈ ਆ ਜਾਓ! :)" + +#, c-format +msgid "About OpenQ %s" +msgstr "OpenQ %s ਬਾਰੇ" + msgid "Change Icon" -msgstr "ਆਈਕਾਨ ਸੰਭਾਲੋ" +msgstr "ਆਈਕਾਨ ਬਦਲੋ" msgid "Change Password" -msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲ" - -#, fuzzy +msgstr "ਪਾਸਵਰਡ ਬਦਲੋ" + msgid "Account Information" -msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ" +msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ" msgid "Update all QQ Quns" -msgstr "" - -#, fuzzy +msgstr "ਸਭ QQ ਕਉਨ ਅੱਪਡੇਟ ਕਰੋ" + msgid "About OpenQ" -msgstr "%s ਬਾਰੇ" +msgstr "OpenQ ਬਾਰੇ" #. *< type #. *< ui_requirement @@ -7555,132 +7329,110 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "QQ Protocol Plugin" -msgstr "QQ ਪਰੋਟੋਕਾਲ\tਪਲੱਗਇਨ" - -#, fuzzy +msgstr "QQ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" + msgid "Auto" -msgstr "ਪਰਮਾ" - -#, fuzzy +msgstr "ਆਟੋ" + msgid "Select Server" -msgstr "ਯੂਜ਼ਰ ਚੁਣੋ" +msgstr "ਸਰਵਰ ਚੁਣੋ" msgid "QQ2005" -msgstr "" +msgstr "QQ2005" msgid "QQ2007" -msgstr "" +msgstr "QQ2007" msgid "QQ2008" -msgstr "" - -#. #endif -#, fuzzy +msgstr "QQ2008" + msgid "Connect by TCP" msgstr "TCP ਰਾਹੀਂ ਕੁਨੈਕਟ" -#, fuzzy msgid "Show server notice" -msgstr "ਸਰਵਰ ਪੋਰਟ" - -#, fuzzy +msgstr "ਸਰਵਰ ਨੋਟਿਸ ਵੇਖੋ" + msgid "Show server news" -msgstr "ਸਰਵਰ ਐਡਰੈੱਸ" - -#, fuzzy +msgstr "ਸਰਵਰ ਨਿਊਜ਼ ਵੇਖੋ" + +msgid "Show chat room when msg comes" +msgstr "ਜਦੋਂ msg ਆਵੇ ਤਾਂ ਗੱਲਬਾਤ ਰੂਮ ਵੇਖੋ" + msgid "Keep alive interval (seconds)" -msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ" - -#, fuzzy +msgstr "ਚਾਲੂ ਅੰਤਰਾਲ ਰੱਖੋ (ਸਕਿੰਟ)" + msgid "Update interval (seconds)" -msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ" - -#, fuzzy -msgid "Can not decrypt server reply" -msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਸਕੀ" - -#, fuzzy -msgid "Can not decrypt get server reply" -msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਸਕੀ" +msgstr "ਅੱਪਡੇਟ ਅੰਤਰਾਲ (ਸਕਿੰਟ)" + +msgid "Cannot decrypt server reply" +msgstr "ਸਰਵਰ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" #, c-format msgid "Failed requesting token, 0x%02X" -msgstr "" - -#, fuzzy, c-format +msgstr "ਟੋਕਨ ਮੰਗ ਫੇਲ੍ਹ ਹੋਈ, 0x%02X" + +#, c-format msgid "Invalid token len, %d" -msgstr "ਗਲਤ ਟਾਇਟਲ" +msgstr "ਗਲਤ ਟੋਕਨ ਲੰਬਾਈ, %d" #. extend redirect used in QQ2006 msgid "Redirect_EX is not currently supported" -msgstr "" +msgstr "Redirect_EX ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" #. need activation #. need activation #. need activation -#, fuzzy msgid "Activation required" -msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਲੋੜੀਦੀ ਹੈ" - -#, c-format -msgid "Unknow reply code when login (0x%02X)" -msgstr "" - -msgid "Keep alive error" -msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ" - -#, fuzzy -msgid "Requesting captcha ..." -msgstr "%s ਦੇ ਧਿਆਨ ਦੀ ਮੰਗ ਕੀਤੀ ਗਈ ਹੈ..." - -msgid "Checking code of captcha ..." -msgstr "" - -msgid "Failed captcha verify" -msgstr "" - -#, fuzzy +msgstr "ਐਕਟੀਵੇਸ਼ਨ ਲੋੜੀਦੀ" + +#, c-format +msgid "Unknown reply code when logging in (0x%02X)" +msgstr "ਲਾਗਇਨ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ ਕੋਡ (0x%02X)" + +msgid "Could not decrypt server reply" +msgstr "ਸਰਵਰ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" + +msgid "Requesting captcha" +msgstr "ਕੈਪਟਚਾ ਦੀ ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" + +msgid "Checking captcha" +msgstr "ਕੈਪਟਚਾ ਚੈੱਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +msgid "Failed captcha verification" +msgstr "ਕੈਪਟਚਾ ਜਾਂਚ ਲਈ ਫੇਲ੍ਹ" + msgid "Captcha Image" -msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ" - -#, fuzzy +msgstr "ਕੈਪਟਚਾ ਚਿੱਤਰ" + msgid "Enter code" -msgstr "ਪਾਸਵਰਡ ਦਿਓ" - -msgid "QQ Captcha Verifing" -msgstr "" - -#, fuzzy +msgstr "ਕੋਡ ਦਿਓ" + +msgid "QQ Captcha Verification" +msgstr "QQ ਕੈਪਟਚਾ ਜਾਂਚ" + msgid "Enter the text from the image" -msgstr "ਗਰੁੱਪ ਦਾ ਨਾਂ ਦਿਓ" - -#, c-format -msgid "Unknow reply code when checking password (0x%02X)" -msgstr "" - -#, c-format -msgid "" -"Unknow reply code when login (0x%02X):\n" +msgstr "ਚਿੱਤਰ ਤੋਂ ਟੈਕਸਟ ਦਿਓ" + +#, c-format +msgid "Unknown reply when checking password (0x%02X)" +msgstr "ਪਾਸਵਰਡ ਚੈੱਕ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ (0x%02X)" + +#, c-format +msgid "" +"Unknown reply code when logging in (0x%02X):\n" "%s" msgstr "" +"ਲਾਗਇਨ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ ਕੋਡ (0x%02X):\n" +"%s" #. we didn't successfully connect. tdt->toc_fd is valid here msgid "Unable to connect." -msgstr "ਜੁੜਨ ਤੋਂ ਆਯੋਗ" +msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।" msgid "Socket error" msgstr "ਸਾਕਟ ਗਲਤੀ" -#, fuzzy, c-format -msgid "" -"Lost connection with server:\n" -"%d, %s" -msgstr "" -"ਸਰਵਰ ਨਾਲ ਆਖਰੀ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ:\n" -"%s" - msgid "Unable to read from socket" msgstr "ਸਾਕਟ ਤੋਂ ਤਾਜ਼ਾ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" @@ -7690,77 +7442,74 @@ msgid "Connection lost" msgstr "ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ" -#, fuzzy -msgid "Get server ..." -msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ..." - -#, fuzzy -msgid "Request token" -msgstr "ਬੇਨਤੀ ਪਾਬੰਦੀ" +msgid "Getting server" +msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ" + +msgid "Requesting token" +msgstr "ਟੋਕਨ ਲਈ ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" msgid "Couldn't resolve host" msgstr "ਹੋਸਟ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" -#, fuzzy msgid "Invalid server or port" -msgstr "ਗਲਤੀ" - -#, fuzzy -msgid "Connecting server ..." -msgstr "ਸਰਵਰ ਨਾਲ ਜੋੜੋ" - -#, fuzzy +msgstr "ਗਲਤ ਸਰਵਰ ਜਾਂ ਪੋਰਟ" + +msgid "Connecting to server" +msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + msgid "QQ Error" -msgstr "QQid ਗਲਤੀ" - -msgid "Failed to send IM." -msgstr "IM ਭੇਜਣ ਲਈ ਫੇਲ੍ਹ।" - -#, fuzzy, c-format +msgstr "QQ ਗਲਤੀ" + +#, c-format msgid "" "Server News:\n" "%s\n" "%s\n" "%s" -msgstr "ICQ Server Relay" - -#, fuzzy, c-format +msgstr "" +"ਸਰਵਰ ਨਿਊਜ਼:\n" +"%s\n" +"%s\n" +"%s" + +#, c-format +msgid "%s:%s" +msgstr "%s:%s" + +#, c-format msgid "From %s:" -msgstr "ਵੱਲੋਂ" - -#, fuzzy, c-format +msgstr "%s ਵੱਲੋਂ:" + +#, c-format msgid "" "Server notice From %s: \n" "%s" -msgstr "ਸਰਵਰ ਹਦਾਇਤਾਂ: %s" - -msgid "Unknow SERVER CMD" -msgstr "" +msgstr "" +"%s ਵਲੋਂ ਸਰਵਰ ਨੋਟਿਸ: \n" +" %s" + +msgid "Unknown SERVER CMD" +msgstr "ਅਣਜਾਣ ਸਰਵਰ CMD" #, c-format msgid "" "Error reply of %s(0x%02X)\n" -"Room %d, reply 0x%02X" -msgstr "" - -#, fuzzy +"Room %u, reply 0x%02X" +msgstr "" +"%s ਦਾ ਜਵਾਬ ਗਲਤੀ(0x%02X)\n" +"ਰੂਮ %u, ਜਵਾਬ 0x%02X" + msgid "QQ Qun Command" -msgstr "ਕਮਾਂਡ" - -#, c-format -msgid "Not a member of room \"%s\"\n" -msgstr "" - -msgid "Can not decrypt login reply" -msgstr "" - -#, fuzzy -msgid "Unknow LOGIN CMD" -msgstr "ਅਣਜਾਣ ਕਾਰਨ" - -#, fuzzy -msgid "Unknow CLIENT CMD" -msgstr "ਅਣਜਾਣ ਕਾਰਨ" +msgstr "QQ ਕਿਉਨ ਕਮਾਂਡ" + +msgid "Could not decrypt login reply" +msgstr "ਲਾਗਇਨ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" + +msgid "Unknown LOGIN CMD" +msgstr "ਅਣਜਾਣ ਲਾਗਇਨ CMD" + +msgid "Unknown CLIENT CMD" +msgstr "ਅਣਜਾਣ CLIENT CMD" #, c-format msgid "%d has declined the file %s" @@ -7782,20 +7531,20 @@ #, c-format msgid "Notes Group ID: %s
" -msgstr "ਸੂਚਨਾ ਗਰੁੱਪ ID: %s
" +msgstr "ਨੋਟਿਸ ਗਰੁੱਪ ID: %s
" #, c-format msgid "Info for Group %s" msgstr "ਗਰੁੱਪ %s ਲਈ ਜਾਣਕਾਰੀ" msgid "Notes Address Book Information" -msgstr "ਸੂਚਨਾ ਐਡਰੈੱਸ ਕਿਤਾਬ ਜਾਣਕਾਰੀ" +msgstr "ਨੋਟਿਸ ਐਡਰੈੱਸ ਬੁੱਕ ਜਾਣਕਾਰੀ" msgid "Invite Group to Conference..." msgstr "ਗਰੁੱਪ ਨੂੰ ਕਾਨਫਰੰਸ ਲਈ ਸੱਦਾ..." msgid "Get Notes Address Book Info" -msgstr "ਸੂਚਨਾ ਐਡਰੈੱਸ ਕਿਤਾਬ ਜਾਣਕਾਰੀ ਲਵੋ" +msgstr "ਨੋਟਿਸ ਐਡਰੈੱਸ ਬੁੱਕ ਜਾਣਕਾਰੀ ਲਵੋ" msgid "Sending Handshake" msgstr "ਹੈਂਡਸ਼ੇਕ ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ" @@ -7822,8 +7571,7 @@ msgstr "ਸਰਵਿਸਾਂ ਸ਼ੁਰੂ ਕਰੋ" #, c-format -msgid "" -"A Sametime administrator has issued the following announcement on server %s" +msgid "A Sametime administrator has issued the following announcement on server %s" msgstr "ਇੱਕ ਸੇਮ-ਟਾਈਮ ਐਡਮਿਨਸਟੇਟਰ ਨੇ %s ਸਰਵਰ ਉੱਤੇ ਅੱਗੇ ਦਿੱਤੇ ਐਲਾਨ ਕੀਤਾ ਹੈ" msgid "Sametime Administrator Announcement" @@ -7920,8 +7668,7 @@ msgid "" "No host or IP address has been configured for the Meanwhile account %s. " "Please enter one below to continue logging in." -msgstr "" -"ਮੀਨਵਾਇਲ ਅਕਾਊਂਟ %s ਲਈ ਕੋਈ ਹੋਸਟ ਜਾਂ IP ਐਡਰੈੱਸ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਇੱਕ ਦਿਓ।" +msgstr "ਮੀਨਵਾਇਲ ਅਕਾਊਂਟ %s ਲਈ ਕੋਈ ਹੋਸਟ ਜਾਂ IP ਐਡਰੈੱਸ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਇੱਕ ਦਿਓ।" msgid "Meanwhile Connection Setup" msgstr "ਮੀਨਵਾਇਲ ਕੁਨੈਕਸ਼ਨ ਸੈੱਟਅੱਪ" @@ -8039,8 +7786,7 @@ msgid "" "The identifier '%s' did not match any Notes Address Book groups in your " "Sametime community." -msgstr "" -"ਪਛਾਣਕਰਤਾ '%s' ਤੁਹਾਡੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਕਿਸੇ ਨੋਟ ਐਡਰੈੱਸ ਬੁੱਕ ਗਰੁੱਪ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ।" +msgstr "ਪਛਾਣਕਰਤਾ '%s' ਤੁਹਾਡੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਕਿਸੇ ਨੋਟ ਐਡਰੈੱਸ ਬੁੱਕ ਗਰੁੱਪ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ।" msgid "Notes Address Book Group" msgstr "ਨੋਟ ਐਡਰੈੱਸ ਕਿਤਾਬ ਗਰੁੱਪ" @@ -8084,8 +7830,7 @@ msgid "" "Enter a name or partial ID in the field below to search for matching users " "in your Sametime community." -msgstr "" -"ਆਪਣੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਰਲਦੇ ਯੂਜ਼ਰ ਖੋਜਣ ਵਾਸਤੇ ਅੱਗੇ ਖੇਤਰ ਵਿੱਚ ਨਾਂ ਜਾਂ ਅਧੂਰਾ ID ਦਿਓ।" +msgstr "ਆਪਣੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਰਲਦੇ ਯੂਜ਼ਰ ਖੋਜਣ ਵਾਸਤੇ ਅੱਗੇ ਖੇਤਰ ਵਿੱਚ ਨਾਂ ਜਾਂ ਅਧੂਰਾ ID ਦਿਓ।" msgid "User Search" msgstr "ਯੂਜ਼ਰ ਖੋਜ" @@ -8221,14 +7966,12 @@ msgid "" "More than one user was found with the same public key. Select the correct " "user from the list to add to the buddy list." -msgstr "" -"ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇੱਕ ਪਬਲਿਕ ਕੁੰਜੀ ਨਾਲ ਮਿਲੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।" +msgstr "ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇੱਕ ਪਬਲਿਕ ਕੁੰਜੀ ਨਾਲ ਮਿਲੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।" msgid "" "More than one user was found with the same name. Select the correct user " "from the list to add to the buddy list." -msgstr "" -"ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇਸੇ ਨਾਂ ਨਾਲ ਹੀ ਲੱਭੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।" +msgstr "ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇਸੇ ਨਾਂ ਨਾਲ ਹੀ ਲੱਭੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।" msgid "Detached" msgstr "ਅੱਡ" @@ -8352,7 +8095,6 @@ msgid "
Channel Topic:
%s" msgstr "
ਚੈਨਲ ਵਿਸ਼ਾ:
%s" -#, c-format msgid "
Channel Modes: " msgstr "
ਚੈਨਲ ਮੋਡ: " @@ -8377,7 +8119,6 @@ msgid "Channel Public Keys List" msgstr "ਚੈਨਲ ਪਬਲਿਕ ਕੁੰਜੀ ਲਿਸਟ" -#, c-format msgid "" "Channel authentication is used to secure the channel from unauthorized " "access. The authentication may be based on passphrase and digital " @@ -8452,8 +8193,7 @@ msgstr "ਗੁਪਤ ਚੈਨਲ ਸੈੱਟ ਕਰੋ" #, c-format -msgid "" -"You have to join the %s channel before you are able to join the private group" +msgid "You have to join the %s channel before you are able to join the private group" msgstr "ਤੁਹਾਨੂੰ ਪ੍ਰਾਈਵੇਟ ਗਰੁੱਪ ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ %s ਚੈਨਲ ਵਿੱਚ ਦਾਖਲ ਹੋਣਾ ਪਵੇਗਾ" msgid "Join Private Group" @@ -8734,8 +8474,7 @@ msgid "Key Exchange failed" msgstr "ਕੁੰਜੀ ਤਬਾਦਲਾ ਅਸਫਲ" -msgid "" -"Resuming detached session failed. Press Reconnect to create new connection." +msgid "Resuming detached session failed. Press Reconnect to create new connection." msgstr "ਮੁੜ-ਜੁੜਨ ਸਮੇਂ ਸ਼ੈਸ਼ਨ ਅਸਫਲ ਹੈ। ਨਵਾਂ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਮੁੜ-ਜੁੜੋ ਨੂੰ ਦਬਾਓ।" msgid "Connection failed" @@ -8763,14 +8502,13 @@ msgid "Error loading SILC key pair" msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" -#, fuzzy, c-format +#, c-format msgid "Download %s: %s" -msgstr "%s 'ਤੇ ਯੂਜ਼ਰ: %s" +msgstr "%s ਡਾਊਨਲੋਡ: %s" msgid "Your Current Mood" -msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਚਿੱਤ(ਮੂਡ)" - -#, c-format +msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਚਿੱਤ" + msgid "Normal" msgstr "ਸਧਾਰਨ" @@ -8794,10 +8532,10 @@ msgstr "ਵੀਡਿਓ ਕਾਨਫਰੰਸ" msgid "Your Current Status" -msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਸਥਿਤੀ" +msgstr "ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਹਾਲਤ" msgid "Online Services" -msgstr "ਆਨਲਾਇਨ ਸਰਵਿਸਾਂ" +msgstr "ਆਨਲਾਈਨ ਸਰਵਿਸਾਂ" msgid "Let others see what services you are using" msgstr "ਹੋਰਾਂ ਨੂੰ ਇਹ ਵੇਖਣ ਦਿਓ ਕਿ ਤੁਸੀਂ ਕਿਹੜੀਆਂ ਸਰਵਿਸਾਂ ਵਰਤ ਰਹੇ ਹੋ" @@ -8916,8 +8654,7 @@ msgstr "msg <nick> <message>: Send a private message to a user" msgid "query <nick> [<message>]: Send a private message to a user" -msgstr "" -"query <nick> [<message>]: Send a private message to a user" +msgstr "query <nick> [<message>]: Send a private message to a user" msgid "motd: View the server's Message Of The Day" msgstr "motd: ਸਰਵਰ ਦਾ ਦਿਨ ਦਾ ਸੁਨੇਹਾ ਵੇਖੋ" @@ -9141,43 +8878,33 @@ msgid "No server statistics available" msgstr "ਕੋਈ ਸਰਵਰ ਅੰਕੜੇ ਉਪਲੱਬਧ ਨਹੀਂ" -#, c-format msgid "Failure: Version mismatch, upgrade your client" msgstr "ਅਸਫਲ: ਵਰਜਨ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ, ਤੁਹਾਨੂੰ ਨਵੇਂ ਕਲਾਇਟ ਦੀ ਲੋੜ ਹੈ" -#, c-format msgid "Failure: Remote does not trust/support your public key" msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਤੁਹਾਡੀ ਪਬਲਿਕ ਕੁੰਜੀ ਉੱਤੇ ਭਰੋਸਾ/ਸਹਾਇਕ ਨਹੀਂ ਹੈ" -#, c-format msgid "Failure: Remote does not support proposed KE group" msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ KE ਗਰੁੱਪ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" -#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ ਸੀਫ਼ਰ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" -#, c-format msgid "Failure: Remote does not support proposed PKCS" msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ PKCS ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" -#, c-format msgid "Failure: Remote does not support proposed hash function" msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ ਹੈਂਸ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" -#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ HMAC ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" -#, c-format msgid "Failure: Incorrect signature" msgstr "ਗਲਸ: ਗਲਤ ਦਸਤਖਤ" -#, c-format msgid "Failure: Invalid cookie" msgstr "ਅਸਫਲ: ਗਲਤ ਕੂਕੀ" -#, c-format msgid "Failure: Authentication failed" msgstr "ਅਸਫ਼ਲ: ਪ੍ਰਮਾਣਕਿਤਾ ਅਸਫ਼ਲ" @@ -9206,10 +8933,12 @@ msgid "Could not resolve hostname" msgstr "ਹੋਸਟ-ਨਾਂ ਹੱਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" -#, fuzzy msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP ਸਕਰੀਨ ਨਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਜਾਂ @ ਨਿਸ਼ਾਨ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ" +msgid "SIP connect server not specified" +msgstr "SIP ਕੁਨੈਕਟ ਸਰਵਰ ਨਹੀਂ ਦਿੱਤਾ" + #. *< type #. *< ui_requirement #. *< flags @@ -9219,11 +8948,11 @@ #. *< name #. *< version msgid "SIP/SIMPLE Protocol Plugin" -msgstr "SIP/SIMPLE ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" +msgstr "SIP/SIMPLE ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" #. * summary msgid "The SIP/SIMPLE Protocol Plugin" -msgstr "SIP/SIMPLE ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" +msgstr "SIP/SIMPLE ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" msgid "Publish status (note: everyone may watch you)" msgstr "ਸਟੇਟਸ ਦਿਓ (ਨੋਟ: ਹਰੇਕ ਤੁਹਾਨੂੰ ਵੇਖ ਸਕਦਾ ਹੈ)" @@ -9275,7 +9004,6 @@ msgid "Warning of %s not allowed." msgstr "%s ਲਈ ਉਡੀਕ ਸਵੀਕਾਰ ਨਹੀਂ ਹੈ।" -#, c-format msgid "A message has been dropped, you are exceeding the server speed limit." msgstr "ਇੱਕ ਸੁਨੇਹਾ ਗੁਆ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤੁਸੀਂ ਸਰਵਰ ਗਤੀ ਸੀਮਾ ਤੋਂ ਵੱਧ ਗਏ ਹੋ।" @@ -9295,39 +9023,30 @@ msgid "You missed an IM from %s because it was sent too fast." msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜਿਆ ਗਿਆ ਹੈ।" -#, c-format msgid "Failure." msgstr "ਅਸਫਲ ਹੈ।" -#, c-format msgid "Too many matches." msgstr "ਬਹੁਤ ਮੇਲ ਹਨ।" -#, c-format msgid "Need more qualifiers." msgstr "ਹੋਰ ਯੋਗਤਾ ਦੀ ਲੋੜ ਹੈ।" -#, c-format msgid "Dir service temporarily unavailable." msgstr "ਡਾਈ ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।" -#, c-format msgid "Email lookup restricted." msgstr "ਈਮੇਲ ਖੋਜ ਪਾਬੰਦੀ ਹੈ।" -#, c-format msgid "Keyword ignored." msgstr "ਸ਼ਬਦ ਅਣਡਿੱਠਾ" -#, c-format msgid "No keywords." msgstr "ਕੋਈ ਸ਼ਬਦ ਨਹੀਂ ਹੈ।" -#, c-format msgid "User has no directory information." msgstr "ਯੂਜ਼ਰ ਦੀ ਕੋਈ ਡਾਇਰੈਕਟਰੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ।" -#, c-format msgid "Country not supported." msgstr "ਦੇਸ਼ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" @@ -9335,19 +9054,15 @@ msgid "Failure unknown: %s." msgstr "ਅਣਜਾਣੀ ਅਸਫਲਤਾ: %s" -#, fuzzy, c-format msgid "Incorrect username or password." -msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ।" - -#, c-format +msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ।" + msgid "The service is temporarily unavailable." msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।" -#, c-format msgid "Your warning level is currently too high to log in." msgstr "ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਇੰਨਾ ਜ਼ਿਆਦਾ ਹੈ ਕਿ ਲਾਗਇਨ ਨਹੀਂ ਹੋਇਆ ਜਾਂਦਾ ਹੈ।" -#, c-format 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." @@ -9480,13 +9195,11 @@ #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." -msgstr "" -"ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।" +msgstr "ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।" #, c-format msgid "Could not add buddy %s to group %s to the server list on account %s." -msgstr "" -"ਸੁਨੇਹੀ %s ਨੂੰ ਗਰੁੱਪ %s ਵਿੱਚ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਅਕਾਊਂਟ %s ਲਈ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।" +msgstr "ਸੁਨੇਹੀ %s ਨੂੰ ਗਰੁੱਪ %s ਵਿੱਚ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਅਕਾਊਂਟ %s ਲਈ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।" msgid "Could not add buddy to server list" msgstr "ਸਰਵਰ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" @@ -9586,9 +9299,8 @@ msgid "doodle: Request user to start a Doodle session" msgstr "ਡੂਡਲ: ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਘੁੱਗੂ ਘਾਂਘੜੇ (ਡੂਡਲ) ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਮੰਗ" -#, fuzzy msgid "Yahoo ID..." -msgstr "Yahoo! ID" +msgstr "Yahoo ID..." #. *< type #. *< ui_requirement @@ -9601,7 +9313,7 @@ #. * summary #. * description msgid "Yahoo Protocol Plugin" -msgstr "Yahoo ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" +msgstr "Yahoo ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ" msgid "Yahoo Japan" msgstr "Yahoo ਜਾਪਾਨ" @@ -9648,9 +9360,9 @@ msgid "Unable to establish file descriptor." msgstr "ਫਾਇਲ ਵੇਰਵਾ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ।" -#, fuzzy, c-format +#, c-format msgid "%s is trying to send you a group of %d files.\n" -msgstr "%s %s ਫਾਇਲ ਭੇਜਣ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰ ਰਿਹਾ ਹੈ" +msgstr "%s ਤੁਹਾਨੂੰ %d ਫਾਇਲਾਂ ਦਾ ਗਰੁੱਪ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ।।\n" msgid "Yahoo! Japan Profile" msgstr "Yahoo! ਜਾਪਾਨ ਪ੍ਰੋਫਾਇਲ" @@ -9689,19 +9401,13 @@ msgstr "ਸਬੰਧ 2" msgid "Cool Link 3" -msgstr "ਸਬੰਧ 3" +msgstr "ਵਧੀਆ ਲਿੰਕ 3" msgid "Last Update" msgstr "ਆਖਰੀ ਅੱਪਡੇਟ" -#, c-format -msgid "User information for %s unavailable" -msgstr "%s ਲਈ ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ" - -msgid "" -"Sorry, this profile seems to be in a language or format that is not " -"supported at this time." -msgstr "ਅਫਸੋਸ ਹੈ, ਪਰ ਇਹ ਪ੍ਰੋਫਾਇਲ ਉਸ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਅਜੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" +msgid "This profile is in a language or format that is not supported at this time." +msgstr "ਇਹ ਪ੍ਰੋਫਾਇਲ ਉਸ ਭਾਸ਼ਾ ਜਾਂ ਫਾਰਮੈਟ ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਅਜੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" msgid "" "Could not retrieve the user's profile. This most likely is a temporary " @@ -9835,11 +9541,9 @@ msgstr "topic <instance>: Set the instance to be used on this class" msgid "sub <class> <instance> <recipient>: Join a new chat" -msgstr "" -"sub <class> <instance> <recipient>: ਗੱਲਬਾਤ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ" - -msgid "" -"zi <instance>: Send a message to <message,instance,*>" +msgstr "sub <class> <instance> <recipient>: ਗੱਲਬਾਤ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ" + +msgid "zi <instance>: Send a message to <message,instance,*>" msgstr "zi <instance>: <message,instance,* ਨੂੰ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ>" msgid "" @@ -9988,21 +9692,18 @@ msgstr "ਕੀ ਗੱਲਬਾਤ ਸੱਦਾ ਮੰਨਜ਼ੂਰ ਕਰਨਾ ਹੈ?" #. Shortcut -#, fuzzy msgid "Shortcut" -msgstr "ਲੜੀਬੱਧ" - -#, fuzzy +msgstr "ਸ਼ਾਰਟਕੱਟ" + msgid "The text-shortcut for the smiley" -msgstr "GTK+ ਪਾਠ ਸ਼ਾਰਟਕੱਟ ਥੀਮ" +msgstr "ਸਮਾਈਲੀ ਲਈ ਟੈਕਸਟ-ਸ਼ਾਰਟਕੱਟ" #. Stored Image -#, fuzzy msgid "Stored Image" -msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ" +msgstr "ਸੰਭਾਲਿਆ ਚਿੱਤਰ" msgid "Stored Image. (that'll have to do for now)" -msgstr "" +msgstr "ਸੰਭਾਲਿਆ ਚਿੱਤਰ।(ਉਹ ਹੁਣ ਕਰਨਾ ਹੋਵੇਗਾ)" msgid "SSL Connection Failed" msgstr "SSL ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ" @@ -10029,7 +9730,7 @@ msgstr "ਮੋਬਾਇਲ" msgid "Listening to music" -msgstr "" +msgstr "ਸੰਗੀਤ ਸੁਣ ਰਿਹਾ/ਰਹੀ ਹਾਂ" #, c-format msgid "%s (%s) changed status from %s to %s" @@ -10082,7 +9783,7 @@ "ਨਾਂ %s~ ਬਦਲਿਆ ਗਿਆ ਹੈ।" msgid "Calculating..." -msgstr "ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...." +msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..." msgid "Unknown." msgstr "ਅਣਜਾਣ" @@ -10131,9 +9832,9 @@ msgid "Unable to connect to %s" msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਮਰੱਥ" -#, fuzzy, c-format +#, c-format msgid "Error reading from %s: response too long (%d bytes limit)" -msgstr "%s ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: %s" +msgstr "%s ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: ਜਵਾਬ ਬਹੁਤ ਲੰਮਾ ਹੈ (%d ਬਾਈਟ ਲਿਮਟ)" #, c-format msgid "" @@ -10157,36 +9858,31 @@ #, c-format msgid " - %s" -msgstr "" - -#, fuzzy, c-format +msgstr " - %s" + +#, c-format msgid " (%s)" -msgstr "%s (%s)" +msgstr " (%s)" #. 10053 -#, c-format msgid "Connection interrupted by other software on your computer." -msgstr "" +msgstr "ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਕੁਨੈਕਸ਼ਨ ਨੂੰ ਹੋਰ ਸਾਫਟਵੇਅਰਾਂ ਵਲੋਂ ਰੋਕਿਆ।" #. 10054 -#, fuzzy, c-format msgid "Remote host closed connection." -msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।" +msgstr "ਰਿਮੋਟ ਹੋਸਟ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।" #. 10060 -#, fuzzy, c-format msgid "Connection timed out." -msgstr "ਕੁਨੈਕਸ਼ਨ ਟਾਈਮ-ਆਉਟ" +msgstr "ਕੁਨੈਕਸ਼ਨ ਟਾਈਮ-ਆਉਟ ਹੋਇਆ।" #. 10061 -#, fuzzy, c-format msgid "Connection refused." -msgstr "ਕੁਨੈਕਸ਼ਨ ਮੁੜ-ਸੈੱਟ ਕੀਤਾ ਗਿਆ" +msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ।" #. 10048 -#, fuzzy, c-format msgid "Address already in use." -msgstr "ਇਹ ਗੱਲ ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ 'ਚ ਹੈ" +msgstr "ਐਡਰੈੱਸ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ।" msgid "Internet Messenger" msgstr "ਇੰਟਰਨੈਟ ਮੈਸੰਜ਼ਰ" @@ -10295,9 +9991,8 @@ msgid "_Basic" msgstr "ਬੇਸਿਕ(_B)" -#, fuzzy msgid "Create _this new account on the server" -msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ" +msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ(_t)" msgid "_Advanced" msgstr "ਤਕਨੀਕੀ(_A)" @@ -10308,7 +10003,7 @@ msgid "Protocol" msgstr "ਪਰੋਟੋਕਾਲ" -#, fuzzy, c-format +#, c-format msgid "" "Welcome to %s!\n" "\n" @@ -10322,17 +10017,16 @@ msgstr "" "%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!\n" "\n" -"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਸ਼ਾਮਲ ਬਟਨ " +"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਸ਼ਾਮਲ... ਬਟਨ " "ਦੱਬੋ ਅਤੇ ਆਪਣਾ ਪਹਿਲਾਂ ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਕਰੋ। ਜੇ ਤੁਸੀਂ %s ਨੂੰ ਕਈ IM ਅਕਾਊਂਟਾਂ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੇ " -"ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ ਸ਼ਾਮਲ ਨੂੰ ਫੇਰ ਦੱਬੋ।\n" +"ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ ਸ਼ਾਮਲ... ਨੂੰ ਫੇਰ ਦੱਬੋ।\n" "\n" -"ਤੁਸੀਂ ਇਹ ਵਿੰਡੋ ਉੱਤੇ ਬੱਡ ਲਿਸਟ ਵਿੰਡੋ ਵਿੱਚ ਅਕਾਊਂਟ->ਸ਼ਾਮਲ/ਸੋਧ ਰਾਹੀਂ ਅਕਾਊਂਟ ਸ਼ਾਮਲ, ਸੋਧਣ ਜਾਂ " +"ਤੁਸੀਂ ਇਹ ਵਿੰਡੋ ਉੱਤੇ ਬੇਲੀ (ਬੱਡੀ) ਲਿਸਟ ਵਿੰਡੋ ਵਿੱਚ ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ ਰਾਹੀਂ ਅਕਾਊਂਟ ਸ਼ਾਮਲ, ਸੋਧਣ ਜਾਂ " "ਹਟਾਉਣ ਵਾਸਤੇ ਆ ਸਕਦੇ ਹੋ।" #, c-format msgid "You have %d contact named %s. Would you like to merge them?" -msgid_plural "" -"You currently have %d contacts named %s. Would you like to merge them?" +msgid_plural "You currently have %d contacts named %s. Would you like to merge them?" msgstr[0] "ਤੁਹਾਡੇ ਕੋਲ %d ਸੰਪਰਕ %s ਨਾਂ ਨਾਲ ਹਨ। ਕੀ ਤੁਸੀਂ ਮਿਲਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ?" msgstr[1] "ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਸਮੇਂ %d ਸੰਪਰਕ %s ਨਾਂ ਨਾਲ ਹਨ। ਕੀ ਤੁਸੀਂ ਮਿਲਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ?" @@ -10345,13 +10039,11 @@ "ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਰਤਣ ਲਈ ਸਹਾਇਕ ਹੈ। ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਸੰਪਰਕ ਦੇ ਮੇਨੂ ਤੋਂ 'ਫੈਲਾਓ' ਚੁਣ ਕੇ ਫੇਰ ਅੱਡ ਅੱਡ ਕਰ " "ਸਕਦੇ ਹੋ।" -#, fuzzy msgid "Please update the necessary fields." msgstr "ਲੋੜੀਦੇ ਖੇਤਰ ਅੱਪਡੇਟ ਕਰੋ ਜੀ।" -#, fuzzy msgid "Room _List" -msgstr "ਰੂਮ ਲਿਸਟ" +msgstr "ਰੂਮ ਲਿਸਟ(_L)" msgid "" "Please enter the appropriate information about the chat you would like to " @@ -10394,9 +10086,8 @@ msgid "_Remove" msgstr "ਹਟਾਓ(_R)" -#, fuzzy msgid "Set Custom Icon" -msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ..." +msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ ਕਰੋ" msgid "Remove Custom Icon" msgstr "ਕਸਟਮ ਆਈਕਾਨ ਹਟਾਓ" @@ -10423,9 +10114,8 @@ msgid "Persistent" msgstr "ਪੱਕਾ" -#, fuzzy msgid "_Edit Settings..." -msgstr "ਸੈਟਿੰਗ ਸੋਧ" +msgstr "ਸੈਟਿੰਗ ਸੋਧ(_E)..." msgid "_Collapse" msgstr "ਸਮੇਟੋ(_C)" @@ -10436,16 +10126,14 @@ msgid "/Tools/Mute Sounds" msgstr "/ਟੂਲ/ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ" -msgid "" -"You are not currently signed on with an account that can add that buddy." +msgid "You are not currently signed on with an account that can add that buddy." msgstr "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਇੱਕ ਅਕਾਊਂਟ ਨਾਲ ਲਾਗਇਨ ਨਹੀਂ ਹੋ, ਤਾਂ ਕਿ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕੀਤਾ ਜਾ ਸਕੇ।" #. I don't believe this can happen currently, I think #. * everything that calls this function checks for one of the #. * above node types first. -#, fuzzy msgid "Unknown node type" -msgstr "ਅਣਜਾਣ ਗਲਤੀ ਕੋਡ %d" +msgstr "ਅਣਜਾਣ ਨੋਡ ਟਾਈਪ" #. Buddies menu msgid "/_Buddies" @@ -10467,7 +10155,7 @@ msgstr "/ਬੱਡੀ/ਵੇਖੋ(_o)" msgid "/Buddies/Show/_Offline Buddies" -msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਇਨ ਬੱਡੀ(_O)" +msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਈਨ ਬੱਡੀ(_O)" msgid "/Buddies/Show/_Empty Groups" msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਖਾਲੀ ਗਰੁੱਪ(_E)" @@ -10485,13 +10173,13 @@ msgstr "/ਬੱਡੀ/ਬੱਡੀ ਕ੍ਰਮਬੱਧ(_S)" msgid "/Buddies/_Add Buddy..." -msgstr "/ਬੱਡੀ/ਬੱਡੀ ਸ਼ਾਮਿਲ(_A)..." +msgstr "/ਬੱਡੀ/ਬੱਡੀ ਸ਼ਾਮਲ(_A)..." msgid "/Buddies/Add C_hat..." msgstr "/ਬੱਡੀ/ਗੱਲਬਾਤ ਸ਼ਾਮਿਲ(_h)..." msgid "/Buddies/Add _Group..." -msgstr "/ਬੱਡੀ/ਗਰੁੱਪ ਸ਼ਾਮਿਲ(_G)..." +msgstr "/ਬੱਡੀ/ਗਰੁੱਪ ਸ਼ਾਮਲ(_G)..." msgid "/Buddies/_Quit" msgstr "/ਬੱਡੀ/ਬੰਦ ਕਰੋ(_Q)" @@ -10500,9 +10188,8 @@ msgid "/_Accounts" msgstr "/ਅਕਾਊਂਟ(_A)" -#, fuzzy msgid "/Accounts/Manage Accounts" -msgstr "/ਅਕਾਊਂਟ/ਪਰਬੰਧ" +msgstr "/ਅਕਾਊਂਟ/ਅਕਾਊਂਟ ਪਰਬੰਧ" #. Tools msgid "/_Tools" @@ -10521,14 +10208,13 @@ msgstr "/ਟੂਲ/ਮੇਰੀ ਪਸੰਦ(_e)" msgid "/Tools/Pr_ivacy" -msgstr "/ਟੂਲ/ਰਹੱਸ(_i)" - -#, fuzzy +msgstr "/ਟੂਲ/ਪਰਾਈਵੇਸੀ(_i)" + msgid "/Tools/Smile_y" -msgstr "/ਟੂਲ/ਪਰਾਈਵੇਸੀ" +msgstr "/ਟੂਲ/ਸਮਾਈਲੀ(_y)" msgid "/Tools/_File Transfers" -msgstr "/ਟੂਲ/ਫਾਇਲ ਸੰਚਾਰ(_F)" +msgstr "/ਟੂਲ/ਫਾਇਲ ਟਰਾਂਸਫਰ(_F)" msgid "/Tools/R_oom List" msgstr "/ਟੂਲ/ਰੂਮ ਲਿਸਟ(_o)" @@ -10544,7 +10230,7 @@ msgstr "/ਮੱਦਦ(_H)" msgid "/Help/Online _Help" -msgstr "/ਮੱਦਦ/ਆਨਲਾਇਨ ਮੱਦਦ(_H)" +msgstr "/ਮੱਦਦ/ਆਨਲਾਈਨ ਮੱਦਦ(_H)" msgid "/Help/_Debug Window" msgstr "/ਮੱਦਦ/ਡੀਬੱਗ ਵਿੰਡੋ(_D)" @@ -10552,31 +10238,28 @@ msgid "/Help/_About" msgstr "/ਮੱਦਦ/ਇਸ ਬਾਰੇ(_A)" -#, fuzzy, c-format +#, c-format msgid "Account: %s" -msgstr "" -"\n" -"ਅਕਾਊਂਟ: %s" - -#, fuzzy, c-format +msgstr "ਅਕਾਊਂਟ: %s" + +#, c-format msgid "" "\n" "Occupants: %d" msgstr "" "\n" -"ਅਕਾਊਂਟ: %s" - -#, fuzzy, c-format +"ਨਿਵਾਸ: %d " + +#, c-format msgid "" "\n" "Topic: %s" msgstr "" "\n" -"ਅਕਾਊਂਟ: %s" - -#, fuzzy +"ਵਿਸ਼ਾ: %s" + msgid "(no topic set)" -msgstr "ਕੋਈ ਵਿਸ਼ਾ ਨਹੀਂ ਦਿੱਤਾ ਹੈ" +msgstr "(ਕੋਈ ਵਿਸ਼ਾ ਨਹੀਂ ਦਿੱਤਾ ਹੈ)" msgid "Buddy Alias" msgstr "ਬੱਡੀ ਏਲੀਆਸ" @@ -10596,9 +10279,8 @@ msgid "Rockin'" msgstr "ਰਾਕਇਨ'" -#, fuzzy msgid "Total Buddies" -msgstr "ਬੱਡੀ" +msgstr "ਕੁੱਲ ਬੱਡੀ" #, c-format msgid "Idle %dd %dh %02dm" @@ -10655,27 +10337,24 @@ msgid "%s disconnected" msgstr "%s ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਕੀਤਾ" -#, fuzzy, c-format +#, c-format msgid "%s disabled" -msgstr "ਕਮਾਂਡ ਆਯੋਗ" - -#, fuzzy +msgstr "%s ਆਯੋਗ" + msgid "Reconnect" -msgstr "ਕੁਨੈਕਟ ਕਰੋ" - -#, fuzzy +msgstr "ਮੁੜ-ਕੁਨੈਕਟ ਕਰੋ" + msgid "Re-enable" -msgstr "ਅਕਾਊਂਟ ਮੁੜ-ਯੋਗ" +msgstr "ਮੁੜ-ਚਾਲੂ" msgid "Welcome back!" -msgstr "" - -#, fuzzy, c-format +msgstr "ਫੇਰ ਜੀ ਆਇਆਂ ਨੂੰ!" + +#, c-format msgid "%d account was disabled because you signed on from another location:" -msgid_plural "" -"%d accounts were disabled because you signed on from another location:" -msgstr[0] "ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਥਾਂ ਤੋਂ ਲਾਗਇਨ ਹੋਏ" -msgstr[1] "ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਥਾਂ ਤੋਂ ਲਾਗਇਨ ਹੋਏ" +msgid_plural "%d accounts were disabled because you signed on from another location:" +msgstr[0] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:" +msgstr[1] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:" msgid "Username:" msgstr "ਯੂਜ਼ਰ ਨਾਂ:" @@ -10690,7 +10369,7 @@ msgstr "/ਅਕਾਊਂਟ" #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy -#, fuzzy, c-format +#, c-format msgid "" "Welcome to %s!\n" "\n" @@ -10700,7 +10379,7 @@ msgstr "" "%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!\n" "\n" -"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ ਅਕਾਊਂਟ->ਪਰਬੰਧ ਰਾਹੀਂ ਅਕਾਊਂਟ " +"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ ਰਾਹੀਂ ਅਕਾਊਂਟ " "ਤੋਂ ਯੋਗ ਕਰੋ। ਜਦੋਂ ਤੁਸੀਂ ਅਕਾਊਂਟ ਯੋਗ ਕੀਤੇ ਤਾਂ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਕਰ ਸਕਦੇ ਹੋ, ਆਪਣਾ ਸਟੇਟਸ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ " "ਅਤੇ ਆਪਣੇ ਦੋਸਤਾਂ-ਮਿੱਤਰਾਂ ਨਾਲ ਗੱਲਾਂ ਮਾਰ ਸਕਦੇ ਹੋ।" @@ -10708,7 +10387,7 @@ #. * after the treeview or faceprint gets mad. -Robot101 #. msgid "/Buddies/Show/Offline Buddies" -msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਇਨ ਬੱਡੀ" +msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਈਨ ਬੱਡੀ" msgid "/Buddies/Show/Empty Groups" msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਖਾਲੀ ਗਰੁੱਪ" @@ -10722,21 +10401,17 @@ msgid "/Buddies/Show/Protocol Icons" msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਪਰੋਟੋਕਾਲ ਆਈਕਾਨ" -#, fuzzy msgid "Add a buddy.\n" -msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ" - -#, fuzzy +msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ ਕਰੋ।\n" + msgid "Buddy's _username:" -msgstr "ਬੱਡੀ ਨਾਂ:" - -#, fuzzy +msgstr "ਬੱਡੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ(_u):" + msgid "(Optional) A_lias:" -msgstr "ਚੋਣਵੀਂ ਜਾਣਕਾਰੀ:" - -#, fuzzy +msgstr "(ਚੋਣਵਾਂ) ਏਲੀਆਸ(_l):" + msgid "Add buddy to _group:" -msgstr "ਕੀ ਬੱਡੀ ਆਪਣੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ?" +msgstr "ਬੱਡੀ ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ(_g):" msgid "This protocol does not support chat rooms." msgstr "ਇਹ ਪ੍ਰੋਟੋਕਾਲ ਗੱਲਬਾਤ ਰੂਮ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" @@ -10749,25 +10424,22 @@ msgid "" "Please enter an alias, and the appropriate information about the chat you " "would like to add to your buddy list.\n" -msgstr "" -"ਇੱਕ ਏਲੀਆਸ ਅਤੇ ਗੱਲਬਾਤ ਲਈ ਠੀਕ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਬੱਡੀ ਲਿਸਟ ਸ਼ਾਮਿਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ।\n" +msgstr "ਇੱਕ ਏਲੀਆਸ ਅਤੇ ਗੱਲਬਾਤ ਲਈ ਠੀਕ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਬੱਡੀ ਲਿਸਟ ਸ਼ਾਮਿਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ।\n" msgid "A_lias:" msgstr "ਏਲੀਆਸ(_l):" -#, fuzzy msgid "Auto_join when account becomes online." -msgstr "ਜਦੋਂ ਅਕਾਊਂਟ ਆਨਲਾਇਨ ਹੋਵੇ ਤਾਂ ਆਟੋ-ਜੁਆਇੰਨ ਕਰੋ।" - -#, fuzzy +msgstr "ਜਦੋਂ ਅਕਾਊਂਟ ਆਨਲਾਈਨ ਹੋਵੇ ਤਾਂ ਆਟੋ-ਜੁਆਇੰਨ ਕਰੋ(_j)।" + msgid "_Remain in chat after window is closed." -msgstr "ਜਦੋਂ ਵਿੰਡੋ ਬੰਦ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਗੱਲਬਾਤ ਓਹਲੇ।" +msgstr "ਜਦੋਂ ਵਿੰਡੋ ਬੰਦ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਗੱਲਬਾਤ ਵਿੱਚ ਰਹੋ(_R)|" msgid "Please enter the name of the group to be added." msgstr "ਗਰੁੱਪ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਨਾਂ ਦਿਓ ਜੀ।" msgid "Enable Account" -msgstr "ਅਕਾਊਂਟ ਯੋਗ" +msgstr "ਅਕਾਊਂਟ ਚਾਲੂ" msgid "/Accounts/Enable Account" msgstr "/ਅਕਾਊਂਟ/ਅਕਾਊਂਟ ਯੋਗ" @@ -10800,8 +10472,7 @@ msgid "That buddy is not on the same protocol as this chat." msgstr "ਉਸ ਬੱਡੀ ਕੋਈ ਉਹ ਪ੍ਰੋਟੋਕਾਲ ਨਹੀਂ ਹੈ, ਜੋ ਕਿ ਇਸ ਗੱਲਬਾਤ ਦਾ" -msgid "" -"You are not currently signed on with an account that can invite that buddy." +msgid "You are not currently signed on with an account that can invite that buddy." msgstr "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਇਸ ਅਕਾਊਂਟ ਨਾਲ ਲਾਗਇਨ ਨਹੀਂ ਹੋ, ਜਿਸ ਨਾਲ ਬੱਡੀ ਨੂੰ ਸੱਦਿਆ ਜਾ ਸਕੇ।" msgid "Invite Buddy Into Chat Room" @@ -10862,9 +10533,8 @@ msgid "Set Custom Icon..." msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ..." -#, fuzzy msgid "Change Size" -msgstr "ਹਾਲਤ ਬਦਲੋ" +msgstr "ਸਾਈਜ਼ ਬਦਲੋ" msgid "Show All" msgstr "ਸਭ ਵੇਖੋ" @@ -10929,25 +10599,25 @@ #. Options msgid "/_Options" -msgstr "/ਚੋਣ(_O)" +msgstr "/ਚੋਣਾਂ(_O)" msgid "/Options/Enable _Logging" -msgstr "/ਚੋਣ/ਲਾਗ ਯੋਗ(_L)" +msgstr "/ਚੋਣਾਂ/ਲਾਗ ਯੋਗ(_L)" msgid "/Options/Enable _Sounds" -msgstr "/ਚੋਣ/ਸਾਊਂਡ ਯੋਗ(_S)" +msgstr "/ਚੋਣਾਂ/ਸਾਊਂਡ ਯੋਗ(_S)" msgid "/Options/Show Formatting _Toolbars" -msgstr "/ਚੋਣ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ(_T)" +msgstr "/ਚੋਣਾਂ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ(_T)" msgid "/Options/Show Ti_mestamps" -msgstr "/ਚੋਣ/ਟਾਈਮ-ਸਟੈਂਪ ਵੇਖੋ(_M)" +msgstr "/ਚੋਣਾਂ/ਟਾਈਮ-ਸਟੈਂਪ ਵੇਖੋ(_M)" msgid "/Conversation/More" msgstr "/ਗੱਲਬਾਤ/ਹੋਰ" msgid "/Options" -msgstr "/ਚੋਣ" +msgstr "/ਚੋਣਾਂ" #. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time #. * the 'Conversation' menu pops up. @@ -10994,25 +10664,27 @@ msgstr "/ਗੱਲਬਾਤ/ਚਿੱਤਰ ਸ਼ਾਮਲ..." msgid "/Options/Enable Logging" -msgstr "/ਚੋਣ/ਲਾਗ ਰੱਖੋ" +msgstr "/ਚੋਣਾਂ/ਲਾਗ ਰੱਖੋ" msgid "/Options/Enable Sounds" -msgstr "/ਚੋਣ/ਆਵਾਜ਼ ਯੋਗ" +msgstr "/ਚੋਣਾਂ/ਆਵਾਜ਼ ਯੋਗ" msgid "/Options/Show Formatting Toolbars" -msgstr "/ਚੋਣ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ" +msgstr "/ਚੋਣਾਂ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ" msgid "/Options/Show Timestamps" -msgstr "/ਚੋਣ/ਟਾਈਮ ਸਟੈਂਪ ਵੇਖੋ" +msgstr "/ਚੋਣਾਂ/ਟਾਈਮ ਸਟੈਂਪ ਵੇਖੋ" msgid "User is typing..." msgstr "ਯੂਜ਼ਰ ਲਿਖਦਾ/ਲਿਖਦੀ ਹੈ..." -#, fuzzy, c-format +#, c-format msgid "" "\n" "%s has stopped typing" -msgstr "%s ਨੇ ਤੁਹਾਡੇ (%s) ਲਈ ਲਿਖਿਆ ਛੱਡਿਆ ਹੈ" +msgstr "" +"\n" +"%s ਲਿਖਣੋਂ ਹਟਿਆ/ਹਟੀ" #. Build the Send To menu msgid "S_end To" @@ -11131,22 +10803,20 @@ msgstr "ਘਾਤਕ ਗਲਤੀ" msgid "bug master" -msgstr "" - -#, fuzzy +msgstr "ਬੱਗ ਮਾਸਟਰ" + msgid "artist" msgstr "ਕਲਾਕਾਰ" #. feel free to not translate this msgid "Ka-Hing Cheung" -msgstr "" +msgstr "ਕਾ-ਹਿੰਗ ਚੀਉਂਗ" msgid "support" msgstr "ਸਹਿਯੋਗ" -#, fuzzy msgid "webmaster" -msgstr "ਖੋਜੀ ਤੇ ਵੈਬ ਮਾਸਟਰ" +msgstr "ਵੈੱਬਮਾਸਟਰ" msgid "Senior Contributor/QA" msgstr "ਸੀਨੀਅਰ ਯੋਗਦਾਨੀ/QA" @@ -11168,7 +10838,7 @@ msgstr "ਸਹਿਯੋਗ/QA" msgid "XMPP" -msgstr "" +msgstr "XMPP" msgid "original author" msgstr "ਅਸਲੀ ਲੇਖਕ" @@ -11245,9 +10915,8 @@ msgid "French" msgstr "ਫਰੈਂਚ" -#, fuzzy msgid "Irish" -msgstr "ਕੁਰਦ" +msgstr "ਆਈਰਸ਼" msgid "Galician" msgstr "ਗਾਲਿਸਿਕ" @@ -11303,6 +10972,9 @@ msgid "Macedonian" msgstr "ਮੈਕਡੋਨੀਆਈ" +msgid "Mongolian" +msgstr "ਮੰਗੋਲੀਆਈ" + msgid "Bokmål Norwegian" msgstr "ਬੋਕਮਾਲ ਨਾਰਵੇਗਆਈ" @@ -11316,10 +10988,10 @@ msgstr "ਨਾਰਵੇਗੀਅਨ ਨਯਨੋਰਸਕ" msgid "Occitan" -msgstr "" +msgstr "ਅੱਸੀਟਾਨ" msgid "Punjabi" -msgstr "" +msgstr "ਪੰਜਾਬੀ" msgid "Polish" msgstr "ਪੋਲੈਂਡੀ" @@ -11351,9 +11023,8 @@ msgid "Serbian" msgstr "ਸਰਬੀਆਈ" -#, fuzzy msgid "Sinhala" -msgstr "ਸਮਾਜਿਕ" +msgstr "ਸਿੰਹਾਲਾ" msgid "Swedish" msgstr "ਸਵੀਡਸ਼" @@ -11371,7 +11042,7 @@ msgstr "ਤੁਰਕ" msgid "Urdu" -msgstr "" +msgstr "ਉਰਦੂ" msgid "Vietnamese" msgstr "ਵੀਅਤਨਾਮੀ" @@ -11415,9 +11086,25 @@ "ਇਸ ਦੇ ਯੋਗਦਾਨੀਆਂ ਕੋਲ ਕਾਪੀ-ਰਾਈਟ ਹੈ। ਯੋਗਦਾਨੀਆਂ ਦੀ ਲਿਸਟ ਵੇਖਣ ਵਾਸਤੇ 'COPYRIGHT' ਫਾਇਲ ਵੇਖੋ। " "ਇਸ ਪਰੋਗਰਾਮ ਬਾਰੇ ਤੁਹਾਨੂੰ ਅਸੀਂ ਕੋਈ ਵਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦੇ ਹਾਂ।

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

" -msgstr "IRC:irc.freenode.net ਉੱਤੇ #pidgin

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

" +msgstr "" +"ਸਵਾਲ-ਜਵਾਬ: http://developer.pidgin.im/wiki/FAQ

" + +msgid "" +"Help via e-mail: support@pidgin.im

" +msgstr "" +"ਈਮੇਲ ਰਾਹੀਂ ਮੱਦਦ: support@pidgin.im

" + +msgid "IRC Channel: #pidgin on irc.freenode.net

" +msgstr "IRC ਚੈਨਲ:irc.freenode.net ਉੱਤੇ #pidgin

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

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

" msgid "Current Developers" msgstr "ਮੌਜੂਦਾ ਡੀਵੈਲਪਰ" @@ -11449,11 +11136,10 @@ msgid "Get User Info" msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਲਵੋ" -#, fuzzy msgid "" "Please enter the username or alias of the person whose info you would like " "to view." -msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ , ਜਿਸ ਦੀ ਜਾਣਕਾਰੀ ਤੁਸੀਂ ਵੇਖਣੀ ਚਾਹੁੰਦੇ ਹੋ।" +msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ , ਜਿਸ ਦੀ ਜਾਣਕਾਰੀ ਤੁਸੀਂ ਵੇਖਣੀ ਚਾਹੁੰਦੇ ਹੋ।" msgid "View User Log" msgstr "ਯੂਜ਼ਰ ਲਾਗ ਵੇਖੋ" @@ -11477,17 +11163,15 @@ msgid "Enter an alias for this chat." msgstr "ਇਸ ਗੱਲਬਾਤ ਲਈ ਉਪ ਨਾਂ ਦਿਓ।" -#, fuzzy, c-format +#, c-format msgid "" "You are about to remove the contact containing %s and %d other buddy from " "your buddy list. Do you want to continue?" msgid_plural "" "You are about to remove the contact containing %s and %d other buddies from " "your buddy list. Do you want to continue?" -msgstr[0] "" -"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਗੱਲਬਾਤ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।" -msgstr[1] "" -"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਗੱਲਬਾਤ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।" +msgstr[0] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" +msgstr[1] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" msgid "Remove Contact" msgstr "ਸੰਪਰਕ ਹਟਾਓ" @@ -11522,8 +11206,7 @@ msgstr "ਗਰੁੱਪ ਹਟਾਓ(_R)" #, c-format -msgid "" -"You are about to remove %s from your buddy list. Do you want to continue?" +msgid "You are about to remove %s from your buddy list. Do you want to continue?" msgstr "ਤੁਸੀਂ %s ਨੂੰ ਆਪਣੀ ਸੁਨੇਹੀ ਲਿਸਟ ਵਿੱਚੋਂ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" msgid "Remove Buddy" @@ -11547,45 +11230,35 @@ msgid "Right-click for more unread messages...\n" msgstr "ਹੋਰ ਨਾ-ਪੜ੍ਹੇ ਸੁਨੇਹਿਆਂ ਲਈ ਸੱਜਾ-ਕਲਿੱਕ...\n" -#, fuzzy msgid "_Change Status" -msgstr "ਹਾਲਤ ਬਦਲੋ" - -#, fuzzy +msgstr "ਹਾਲਤ ਬਦਲੋ(_C)" + msgid "Show Buddy _List" -msgstr "ਬੱਡੀ ਲਿਸਟ ਵੇਖੋ" - -#, fuzzy +msgstr "ਬੱਡੀ ਲਿਸਟ ਵੇਖੋ(_L)" + msgid "_Unread Messages" -msgstr "ਅਣ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ" - -#, fuzzy +msgstr "ਅਣ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ(_U)" + msgid "New _Message..." -msgstr "ਨਵਾਂ ਸੁਨੇਹਾ..." - -#, fuzzy +msgstr "ਨਵਾਂ ਸੁਨੇਹਾ(_M)..." + msgid "_Accounts" -msgstr "/ਅਕਾਊਂਟ(_A)" - -#, fuzzy +msgstr "ਅਕਾਊਂਟ(_A)" + msgid "Plu_gins" -msgstr "ਪਲੱਗਇਨ" - -#, fuzzy +msgstr "ਪਲੱਗਇਨ(_g)" + msgid "Pr_eferences" -msgstr "ਮੇਰੀ ਪਸੰਦ" - -#, fuzzy +msgstr "ਮੇਰੀ ਪਸੰਦ(_e)" + msgid "Mute _Sounds" -msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ" - -#, fuzzy +msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ(_S)" + msgid "_Blink on New Message" -msgstr "ਨਵੇਂ ਸੁਨੇਹੇ ਉੱਤੇ ਝਪਕੋ" - -#, fuzzy +msgstr "ਨਵੇਂ ਸੁਨੇਹੇ ਉੱਤੇ ਝਪਕੋ(_B)" + msgid "_Quit" -msgstr "ਬਾਹਰ" +msgstr "ਬਾਹਰ(_Q)" msgid "Not started" msgstr "ਸ਼ੁਰੂ ਨਹੀਂ" @@ -11660,77 +11333,70 @@ msgstr "ਫਾਰਮੈਟਿੰਗ ਮੁੜ-ਸੈੱਟ ਕਰੋ(_R)" msgid "Disable _smileys in selected text" -msgstr "" +msgstr "ਚੁਣੇ ਟੈਕਸਟ ਵਿੱਚ ਸਮਾਈਲੀ ਆਯੋਗ(_s)" msgid "Hyperlink color" -msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ" +msgstr "ਹਾਈਪਰਲਿੰਕ ਰੰਗ" msgid "Color to draw hyperlinks." -msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ ਦਿਓ।" - -#, fuzzy +msgstr "ਹਾਈਪਰਲਿੰਕ ਲਈ ਰੰਗ ਦਿਓ।" + msgid "Hyperlink visited color" -msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ" - -#, fuzzy +msgstr "ਖੋਲ੍ਹੋ ਹਾਈਪਰਲਿੰਕ ਰੰਗ" + msgid "Color to draw hyperlinks after it has been visited (or activated)." -msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।" +msgstr "ਹਾਈਪਰਲਿੰਕ ਖੋਲ੍ਹਣ ਤੋਂ ਬਾਅਦ ਵਰਤਣ ਲਈ ਰੰਗ (ਜਾਂ ਐਕਟੀਵੇਟ ਹੋਣ ਤੋਂ ਬਾਅਦ)" msgid "Hyperlink prelight color" -msgstr "ਹਾਇਪਰਲਿੰਕ ਪ੍ਰੀ-ਲਾਇਟ ਰੰਗ" +msgstr "ਹਾਈਪਰਲਿੰਕ ਪ੍ਰੀ-ਲਾਇਟ ਰੰਗ" msgid "Color to draw hyperlinks when mouse is over them." -msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।" - -#, fuzzy +msgstr "ਹਾਈਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।" + msgid "Sent Message Name Color" -msgstr "ਭੇਜੇ ਸੁਨੇਹੇ" +msgstr "ਭੇਜਿਆ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" msgid "Color to draw the name of a message you sent." -msgstr "" - -#, fuzzy +msgstr "ਤੁਹਾਡੇ ਵਲੋਂ ਭੇਜੇ ਸੁਨੇਹੇ ਨਾਂ ਲਈ ਰੰਗ ਹੈ।" + msgid "Received Message Name Color" -msgstr "ਪ੍ਰਾਪਤ ਹੋਏ ਸੁਨੇਹੇ" +msgstr "ਮਿਲਿਆ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" msgid "Color to draw the name of a message you received." -msgstr "" +msgstr "ਤੁਹਾਡੇ ਮਿਲੇ ਸੁਨੇਹੇ ਦੇ ਨਾਂ ਲਈ ਰੰਗ ਹੈ।" msgid "\"Attention\" Name Color" -msgstr "" +msgstr "\"ਸਾਵਧਾਨ\" ਨਾਂ ਰੰਗ" msgid "Color to draw the name of a message you received containing your name." -msgstr "" +msgstr "ਤੁਹਾਡਾ ਨਾਂ ਰੱਖਣ ਵਾਲੇ ਇੱਕ ਸੁਨੇਹੇ, ਜੋ ਤੁਹਾਨੂੰ ਮਿਲਿਆ ਹੈ, ਦੇ ਨਾਂ ਲਈ ਰੰਗ" msgid "Action Message Name Color" -msgstr "" +msgstr "ਕਾਰਵਾਈ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" msgid "Color to draw the name of an action message." -msgstr "" +msgstr "ਇੱਕ ਕਾਰਵਾਈ ਸੁਨੇਹੇ ਲਈ ਨਾਂ ਲਿਖਣ ਲਈ ਰੰਗ ਹੈ।" msgid "Action Message Name Color for Whispered Message" -msgstr "" +msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹੇ ਲਈ ਐਕਟਿਵ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" msgid "Whisper Message Name Color" -msgstr "" - -#, fuzzy +msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" + msgid "Typing notification color" -msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਹਟਾਓ" +msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਰੰਗ" msgid "The color to use for the typing notification font" -msgstr "" - -#, fuzzy +msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਲਈ ਫੋਂਟ ਵਾਸਤੇ ਵਰਤਣ ਲਈ ਰੰਗ" + msgid "Typing notification font" -msgstr "ਇੱਕ ਸੂਚਨਾ ਦਿਓ" +msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਫੋਂਟ" msgid "The font to use for the typing notification" -msgstr "" - -#, fuzzy +msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਫੋਂਟ" + msgid "Enable typing notification" -msgstr "ਨਵੀਂ ਚਿੱਠੀ ਸੂਚਨਾ" +msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਚਾਲੂ" msgid "_Copy Email Address" msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਨਕਲ(_C)" @@ -11782,22 +11448,20 @@ msgid "Save Image" msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ" -#, c-format msgid "_Save Image..." msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ(_S)..." -#, fuzzy, c-format msgid "_Add Custom Smiley..." -msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ" +msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਸ਼ਾਮਲ(_A)..." msgid "Select Font" msgstr "ਫੋਂਟ ਚੁਣੋ" msgid "Select Text Color" -msgstr "ਪਾਠ ਰੰਗ ਚੁਣੋ" +msgstr "ਟੈਕਸਟ ਰੰਗ ਚੁਣੋ" msgid "Select Background Color" -msgstr "ਪਿੱਠਭੂਮੀ ਰੰਗ ਚੁਣੋ" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਚੁਣੋ" msgid "_URL" msgstr "_URL" @@ -11808,13 +11472,13 @@ msgid "" "Please enter the URL and description of the link that you want to insert. " "The description is optional." -msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਸੰਬੰਧ ਦਾ URL ਅਤੇ ਵੇਰਵਾ ਦਿਓ। ਵੇਰਵਾ ਚੋਣਵਾਂ ਹੈ।" +msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਲਿੰਕ ਦਾ URL ਅਤੇ ਵੇਰਵਾ ਦਿਓ। ਵੇਰਵਾ ਚੋਣਵਾਂ ਹੈ।" msgid "Please enter the URL of the link that you want to insert." -msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਸੰਬੰਧ ਦਾ URL ਦਿਓ।" +msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਲਿੰਕ ਦਾ URL ਦਿਓ।" msgid "Insert Link" -msgstr "ਸਬੰਧ ਸ਼ਾਮਿਲ" +msgstr "ਲਿੰਕ ਸ਼ਾਮਲ" msgid "_Insert" msgstr "ਸ਼ਾਮਿਲ(_I)" @@ -11831,13 +11495,14 @@ "This smiley is disabled because a custom smiley exists for this shortcut:\n" " %s" msgstr "" +"ਇਹ ਸਮਾਈਲੀ ਬੰਦ ਹੈ, ਕਿਉਂਕਿ ਕਸਟਮ ਸਮਾਈਲੀ ਇਸ ਸ਼ਾਰਟਕੱਟ ਲਈ ਮੌਜੂਦ ਹੈ:\n" +" %s" msgid "Smile!" msgstr "ਸਮਾਈਲ!" -#, fuzzy msgid "_Manage custom smileys" -msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ" +msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਪਰਬੰਧ(_M)" msgid "This theme has no available smileys." msgstr "ਇਸ ਸਰੂਪ ਵਿੱਚ ਕੋਈ ਸਮਾਈਲ ਨਹੀਂ ਹਨ।" @@ -11932,12 +11597,11 @@ msgid "_Smile!" msgstr "ਸਮਾਇਲ(_S)!" -#, fuzzy msgid "Log Deletion Failed" -msgstr "SSL ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ" +msgstr "ਲਾਗਇਨ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ" msgid "Check permissions and try again." -msgstr "" +msgstr "ਅਧਿਕਾਰਾਂ ਦੀ ਜਾਂਚ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ।" #, c-format msgid "" @@ -11957,13 +11621,11 @@ "s?" msgstr "ਕੀ ਤੁਸੀਂ %s ਉੱਤੇ ਸ਼ੁਰੂ ਕੀਤੇ ਸਿਸਟਮ ਲਾਗ ਨੂੰ ਪੱਕੇ ਤੌਰ ਉੱਤੇ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" -#, fuzzy msgid "Delete Log?" -msgstr "ਹਟਾਓ" - -#, fuzzy +msgstr "ਲਾਗ ਹਟਾਉਣਾ ਹੈ?" + msgid "Delete Log..." -msgstr "ਹਟਾਓ" +msgstr "ਲਾਗ ਹਟਾਓ..." #, c-format msgid "Conversation in %s on %s" @@ -11981,7 +11643,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" @@ -12005,12 +11667,13 @@ " -h, --help display this help and exit\n" " -m, --multiple do not ensure single instance\n" " -n, --nologin don't automatically login\n" -" -l, --login[=NAME] automatically login (optional argument NAME specifies\n" -" account(s) to use, separated by commas)\n" +" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n" +" specifies account(s) to use, separated by commas.\n" +" Without this only the first account will be enabled).\n" " --display=DISPLAY X display to use\n" " -v, --version display the current version and exit\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -12033,12 +11696,12 @@ " -h, --help display this help and exit\n" " -m, --multiple do not ensure single instance\n" " -n, --nologin don't automatically login\n" -" -l, --login[=NAME] automatically login (optional argument NAME specifies\n" -" account(s) to use, separated by commas)\n" -" --display=DISPLAY X display to use\n" +" -l, --login[=NAME] enable specified account(s) (optional argument NAME\n" +" specifies account(s) to use, separated by commas.\n" +" Without this only the first account will be enabled).\n" " -v, --version display the current version and exit\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s has segfaulted and attempted to dump a core file.\n" "This is a bug in the software and has happened through\n" @@ -12065,17 +11728,15 @@ "ਵੀ ਦੇਣਾ ਨਾ ਭੁੱਲੋ। ਜੇ ਤੁਸੀਂ ਇਹ ਨਹੀਂ ਜਾਣਦੇ ਹੋ ਕਿ ਬੈਕਟਰੈਕ ਕਿਵੇਂ ਲੈਣਾ ਹੈ ਤਾਂ,\n" "ਇਸ ਵਾਸਤੇ ਹਦਾਇਤਾਂ ਲਈ ਵੇਖੋ\n" "%swiki/GetABacktrace\n" -"\n" -"ਜੇ ਤੁਹਾਨੂੰ ਹੋਰ ਵੀ ਮੱਦਦ ਦੀ ਲੋੜ ਹੈ ਤਾਂ SeanEgn ਜਾਂ LSchiere (AIM ਰਾਹੀਂ) ਨਾਲ IM\n" -" ਕਰੋ ਜੀ। ਸੀਨ ਅਤੇ ਲੁਕੀ ਬਾਰੇ ਹੋਰ ਪਰੋਟੋਕਾਲਾਂ ਰਾਹੀਂ ਸੰਪਰਕ ਜਾਣਕਾਰੀ\n" -"ਲਈ ਵੇਖੋ:\n" -"%swiki/DeveloperPages\n" #. Translators may want to transliterate the name. #. It is not to be translated. msgid "Pidgin" msgstr "ਪਿਡਗਿਨ" +msgid "Exiting because another libpurple client is already running.\n" +msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਕਿਉਂਕਿ ਇੱਕ ਹੋਰ libpurple ਕਲਾਇਟ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ।\n" + msgid "Open All Messages" msgstr "ਸਭ ਸੁਨੇਹੇ ਖੋਲ੍ਹੋ" @@ -12105,8 +11766,7 @@ msgid "Error launching \"%s\": %s" msgstr "\"%s\" ਚਲਾਉਣ ਦੌਰਾਨ ਗਲਤੀ: %s" -msgid "" -"The 'Manual' browser command has been chosen, but no command has been set." +msgid "The 'Manual' browser command has been chosen, but no command has been set." msgstr "'ਦਸਤੀ' ਝਲਕਾਰਾ ਕਮਾਂਡ ਚੁਣੀ ਗਈ ਹੈ, ਪਰ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਹੈ।" msgid "The following plugins will be unloaded." @@ -12118,39 +11778,33 @@ msgid "Unload Plugins" msgstr "ਪਲੱਗਇਨ ਅਣ-ਲੋਡ" -#, fuzzy msgid "Could not unload plugin" -msgstr "ਪਬਲਿਕ ਕੁੰਜੀ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕਦੀ ਹੈ" +msgstr "ਪਲੱਗਇਨ ਅਣਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" msgid "" "The plugin could not be unloaded now, but will be disabled at the next " "startup." -msgstr "" - -#, fuzzy, c-format +msgstr "ਪਲੱਗਇਨ ਨੂੰ ਅਨ-ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਪਰ ਇਸ ਨੂੰ ਅਗਲੀ ਵਾਰ ਚਾਲੂ ਹੋਣ ਸਮੇਂ ਬੰਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।" + +#, c-format msgid "" "Error: %s\n" "Check the plugin website for an update." msgstr "" -"%s\n" "ਗਲਤੀ: %s\n" "ਇੱਕ ਅੱਪਡੇਟ ਲਈ ਪਲੱਗਇਨ ਵੈੱਬਸਾਇਟ ਵੇਖੋ।" -#, fuzzy msgid "Author" -msgstr "ਪ੍ਰਮਾਣਿਤ" - -#, fuzzy +msgstr "ਲੇਖਕ" + msgid "Written by:" -msgstr "ਨੂੰ ਭੇਜੀ ਜਾਦੀ ਹੈ:" - -#, fuzzy +msgstr "ਵਲੋਂ ਲਿਖਿਆ:" + msgid "Web site:" -msgstr "ਏਦਾਂ ਭੇਜੀ ਜਾਦੀ ਹੈ:" - -#, fuzzy +msgstr "ਵੈੱਬਸਾਈਟ:" + msgid "Filename:" -msgstr "ਯੂਜ਼ਰ ਨਾਂ:" +msgstr "ਫਾਇਲ ਨਾਂ:" msgid "Configure Pl_ugin" msgstr "ਪਲੱਗਇਨ ਸੰਰਚਨਾ(_u)" @@ -12248,11 +11902,10 @@ msgstr "ਆਈਕਾਨ" msgid "Keyboard Shortcuts" -msgstr "" - -#, fuzzy +msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" + msgid "Cl_ose conversations with the Escape key" -msgstr "%s ਨਾਲ ਗੱਲਬਾਤ" +msgstr "ਈਸਕੇਸ (Esc) ਸਵਿੱਚ ਨਾਲ ਗੱਲਾਬਾਤਾਂ ਬੰਦ ਕਰੋ(_o)" msgid "System Tray Icon" msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ" @@ -12334,7 +11987,7 @@ msgstr "ਨਵੀਆਂ ਗੱਲਬਾਤ ਵਿੰਡੋਜ਼ ਘੱਟੋ-ਘੱਟ(_z)" msgid "Minimum input area height in lines:" -msgstr "" +msgstr "ਲਾਈਨਾਂ ਵਿੱਚ ਘੱਟੋ-ਘੱਟੋ ਇੰਪੁੱਟ ਏਰੀਆ ਹਾਈਲਾਈਟ:" msgid "Font" msgstr "ਫੋਂਟ" @@ -12380,7 +12033,7 @@ msgstr "ਪੋਰਟ" msgid "_Enable automatic router port forwarding" -msgstr "" +msgstr "ਆਟੋਮੈਟਿਕ ਰਾਊਟਰ ਪੋਰਟ ਫਾਰਵਰਡਿੰਗ ਚਾਲੂ ਕਰੋ(_E)" msgid "_Manually specify range of ports to listen on" msgstr "ਸੁਣਨ ਲਈ ਦਸਤੀ ਪੋਰਟ ਸੀਮਾ ਦਿਓ(_M)" @@ -12419,6 +12072,10 @@ msgid "No proxy" msgstr "ਕੋਈ ਪਰਾਕਸੀ ਨਹੀਂ" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "ਰਿਮੋਟ DNS SOCKS4 ਪਰਾਕਸੀ ਨਾਲ ਵਰਤੋਂ" + msgid "_User:" msgstr "ਯੂਜ਼ਰ(_U):" @@ -12432,14 +12089,13 @@ msgstr "ਨੈੱਟਸਕੇਪ" msgid "Mozilla" -msgstr "ਮੌਜੀਲਾ" +msgstr "ਮੋਜ਼ੀਲਾ" msgid "Konqueror" msgstr "ਕੌਨਕਿਉਰੋਰ" -#, fuzzy msgid "Desktop Default" -msgstr "ਮੂਲ ਮਨਜ਼ੂਰ ਕਰੋ(_A)" +msgstr "ਵੇਹੜਾ (ਡੈਸਕਟਾਪ) ਡਿਫਾਲਟ" msgid "GNOME Default" msgstr "ਗਨੋਮ ਮੂਲ" @@ -12500,27 +12156,21 @@ msgid "Sound Selection" msgstr "ਆਵਾਜ਼ ਚੋਣ" -#, c-format msgid "Quietest" msgstr "ਸਭ ਤੋਂ ਖਾਮੋਸ਼" -#, c-format msgid "Quieter" msgstr "ਬਹੁਤ ਖਾਮੋਸ਼" -#, c-format msgid "Quiet" msgstr "ਖਾਮੋਸ਼" -#, c-format msgid "Loud" msgstr "ਉੱਚੀ" -#, c-format msgid "Louder" msgstr "ਹੋਰ ਉੱਚੀ" -#, c-format msgid "Loudest" msgstr "ਸਭ ਤੋਂ ਉੱਚੀ" @@ -12541,31 +12191,26 @@ "Sound c_ommand:\n" "(ਫਾਇਲ ਨਾਂ ਲਈ %s)" -#, fuzzy msgid "M_ute sounds" -msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ" +msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ(_u)" msgid "Sounds when conversation has _focus" msgstr "ਗੱਲਬਾਤ ਉੱਤੇ ਕੇਂਦਰਿਤ ਹੋਣ ਸਮੇਂ ਆਵਾਜ਼(_f)" -#, fuzzy msgid "_Enable sounds:" -msgstr "ਸਾਊਂਡ ਯੋਗ:" - -#, fuzzy +msgstr "ਸਾਊਂਡ ਯੋਗ(_E):" + msgid "V_olume:" -msgstr "ਵਾਲੀਅਮ:" +msgstr "ਵਾਲੀਅਮ(_o):" msgid "Play" msgstr "ਚਲਾਓ" -#, fuzzy msgid "_Browse..." -msgstr "ਝਲਕ(_e)..." - -#, fuzzy +msgstr "ਝਲਕ(_B)..." + msgid "_Reset" -msgstr "ਮੁੜ-ਨਿਰਧਾਰਨ" +msgstr "ਮੁੜ-ਸੈੱਟ(_R)" msgid "_Report idle time:" msgstr "ਵੇਹਲਾ ਸਮਾਂ ਗਿਣਾਓ(_R):" @@ -12639,12 +12284,11 @@ msgstr "ਰਹੱਸ ਦਿਓ:" #. Remove All button -#, fuzzy msgid "Remove Al_l" -msgstr "ਹਟਾਓ" +msgstr "ਸਭ ਹਟਾਓ(_l)" msgid "Permit User" -msgstr "ਸਵੀਕਾਰ ਵਿਅਕਤੀ" +msgstr "ਮਨਜ਼ੂਰ ਯੂਜ਼ਰ" msgid "Type a user you permit to contact you." msgstr "ਵਿਅਕਤੀ ਨਾਂ ਦਿਓ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਸੰਪਰਕ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।" @@ -12664,10 +12308,10 @@ msgstr "ਕੀ ਤੁਸੀਂ %s ਨੂੰ ਤੁਹਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?" msgid "Block User" -msgstr "ਵਿਅਕਤੀ ਪਾਬੰਦੀ" +msgstr "ਯੂਜ਼ਰ ਪਾਬੰਦੀ" msgid "Type a user to block." -msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਲਈ ਵਿਅਕਤੀ ਲਿਖੋ।" +msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਲਈ ਯੂਜ਼ਰ ਦਿਓ" msgid "Please enter the name of the user you wish to block." msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਉੱਤੇ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।" @@ -12707,20 +12351,20 @@ msgstr "ਗੱਲਬਾਤ ਸ਼ਾਮਲ(_A)" msgid "Are you sure you want to delete the selected saved statuses?" -msgstr "ਕੀ ਤੁਸੀਂ ਚੁਣੇ ਸੰਭਾਲੇ ਸਟੇਟਸ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" +msgstr "ਕੀ ਤੁਸੀਂ ਚੁਣੇ ਸੰਭਾਲੀ ਹਾਲਤ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" #. Use button msgid "_Use" msgstr "ਵਰਤੋਂ(_U)" msgid "Title already in use. You must choose a unique title." -msgstr "ਟਾਇਟਲ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। ਤੁਹਾਨੂੰ ਵਿਲੱਖਣ ਟਾਇਟਲ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ।" +msgstr "ਟਾਈਟਲ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। ਤੁਹਾਨੂੰ ਵਿਲੱਖਣ ਟਾਈਟਲ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ।" msgid "Different" msgstr "ਵੱਖਰਾ" msgid "_Title:" -msgstr "ਟਾਇਟਲ(_T):" +msgstr "ਟਾਈਟਲ(_T):" msgid "_Status:" msgstr "ਹਾਲਤ(_S):" @@ -12737,75 +12381,62 @@ msgid "Status for %s" msgstr "%s ਲਈ ਹਾਲਤ" -#, fuzzy msgid "Custom Smiley" -msgstr "ਸਮਾਇਲੀ ਸ਼ਾਮਲ ਕਰੋ" +msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ" msgid "More Data needed" -msgstr "" +msgstr "ਹੋਰ ਡਾਟਾ ਚਾਹੀਦਾ ਹੈ" msgid "Please provide a shortcut to associate with the smiley." -msgstr "" - -#, fuzzy +msgstr "ਸਮਾਈਲੀ ਨਾਲ ਸਬੰਧਿਤ ਸ਼ਾਰਟਕੱਟ ਦਿਓ ਜੀ।" + msgid "Duplicate Shortcut" -msgstr "ਡੁਪਲੀਕੇਟ ਸੋਧ" +msgstr "ਡੁਪਲੀਕੇਟ ਸ਼ਾਰਟਕੱਟ" msgid "" "A custom smiley for the selected shortcut already exists. Please specify a " "different shortcut." -msgstr "" - -#, fuzzy +msgstr "ਚੁਣੇ ਸ਼ਾਰਟਕੱਟ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਕਸਟਮ ਸਮਾਈਲੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰੇ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।" + msgid "Please select an image for the smiley." -msgstr "ਲਿਸਤ ਤੋਂ ਆਪਣਾ ਮੂਡ ਚੁਣੋ ਜੀ।" - -#, fuzzy +msgstr "ਸਮਾਈਲੀ ਲਈ ਚਿੱਤਰ ਚੁਣੋ ਜੀ।" + msgid "Edit Smiley" -msgstr "ਸਮਾਇਲੀ ਸ਼ਾਮਲ ਕਰੋ" - -#, fuzzy +msgstr "ਸਮਾਈਲੀ ਸੋਧ" + msgid "Add Smiley" -msgstr "ਸਮਾਈਲ!" - -#, fuzzy +msgstr "ਸਮਾਈਲੀ ਸ਼ਾਮਲ" + msgid "Smiley _Image" -msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ" +msgstr "ਸਮਾਈਲੀ ਚਿੱਤਰ(_I)" #. Smiley shortcut msgid "Smiley S_hortcut" -msgstr "" - -#, fuzzy +msgstr "ਸਮਾਈਲੀ ਸ਼ਾਰਟਕੱਟ(_h)" + msgid "Smiley" -msgstr "ਸਮਾਈਲ!" - -#, fuzzy +msgstr "ਸਮਾਈਲੀ" + msgid "Custom Smiley Manager" -msgstr "ਸਰਟੀਫਿਕੇਟ ਮੈਨੇਜਰ" - -#, fuzzy +msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ ਮੈਨੇਜਰ" + msgid "Click to change your buddyicon for this account." -msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):" - -#, fuzzy +msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਆਪਣਾ ਬੱਡੀ-ਆਈਕਾਨ ਬਦਲਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।" + msgid "Click to change your buddyicon for all accounts." -msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):" +msgstr "ਸਭ ਅਕਾਊਂਟਾਂ ਲਈ ਆਪਣਾ ਬੱਡੀ-ਆਈਖਾਨ ਬਦਲਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।" msgid "Waiting for network connection" msgstr "ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਲਈ ਉਡੀਕ ਜਾਰੀ" -#, fuzzy msgid "New status..." -msgstr "ਨਵਾਂ ਸੁਨੇਹਾ..." - -#, fuzzy +msgstr "ਨਵੀਂ ਹਾਲਤ..." + msgid "Saved statuses..." -msgstr "ਸੰਭਾਲੇ ਹਾਲਤ" - -#, fuzzy +msgstr "ਸੰਭਾਲੇ ਹਾਲਤ..." + msgid "Status Selector" -msgstr "ਹਾਲਤ ਸ਼ਬਦ" +msgstr "ਹਾਲਤ ਚੋਣਕਾਰ" msgid "Google Talk" msgstr "ਗੂਗਲ ਟਾਕ" @@ -12859,8 +12490,7 @@ msgid "" "You can insert this image into this message, or use it as the buddy icon for " "this user" -msgstr "" -"ਤੁਸੀਂ ਇਹ ਚਿੱਤਰ ਨੂੰ ਇਹ ਸੁਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ ਕਰਨ ਸਕਦੇ ਹੋ ਜਾਂ ਇਸ ਯੂਜ਼ਰ ਲਈ ਬੱਡੀ ਆਈਕਾਨ ਵਾਂਗ ਵਰਤ ਸਕਦੇ ਹੋ।" +msgstr "ਤੁਸੀਂ ਇਹ ਚਿੱਤਰ ਨੂੰ ਇਹ ਸੁਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ ਕਰਨ ਸਕਦੇ ਹੋ ਜਾਂ ਇਸ ਯੂਜ਼ਰ ਲਈ ਬੱਡੀ ਆਈਕਾਨ ਵਾਂਗ ਵਰਤ ਸਕਦੇ ਹੋ।" #. I don't know if we really want to do anything here. Most of the desktop item types are crap like #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really @@ -12902,10 +12532,8 @@ msgstr "ਫਾਇਲ '%s' ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ: %s" #, c-format -msgid "" -"Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "" -"ਚਿੱਤਰ '%s' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ" +msgid "Failed to load image '%s': reason not known, probably a corrupt image file" +msgstr "ਚਿੱਤਰ '%s' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ" msgid "Save File" msgstr "ਫਾਇਲ ਸੰਭਾਲੋ" @@ -12925,24 +12553,20 @@ msgid "_Invite" msgstr "ਸੱਦਾ(_I)" -#, fuzzy msgid "_Modify..." -msgstr "ਸੋਧ(_M)" - -#, fuzzy +msgstr "ਸੋਧ(_M)..." + msgid "_Add..." -msgstr "ਸ਼ਾਮਲ(_A)" +msgstr "ਸ਼ਾਮਲ(_A)..." msgid "_Open Mail" msgstr "ਮੇਲ ਖੋਲ੍ਹੋ(_O)" -#, fuzzy msgid "_Edit" -msgstr "ਸੋਧ" - -#, fuzzy +msgstr "ਸੋਧ(_E)" + msgid "Pidgin Tooltip" -msgstr "ਪਿਡਗਿਨ" +msgstr "ਪਿਡਗਿਨ ਟੂਲਟਿੱਪ" msgid "Pidgin smileys" msgstr "ਪਿਡਗਿਨ ਸਮਾਇਲੀ" @@ -12956,12 +12580,11 @@ msgid "none" msgstr "ਕੋਈ ਨਹੀਂ" -#, fuzzy msgid "Small" -msgstr "ਈਮੇਲ" +msgstr "ਛੋਟਾ" msgid "Smaller versions of the default smilies" -msgstr "" +msgstr "ਡਿਫਾਲਟ ਸਮਾਈਲ ਲਈ ਛੋਟਾ ਵਰਜਨ" msgid "Response Probability:" msgstr "ਜਵਾਬ ਸੰਭਾਵਨਾ:" @@ -13000,7 +12623,7 @@ #. * summary msgid "Displays statistical information about your buddies' availability" -msgstr "" +msgstr "ਆਪਣੀ ਬੱਡੀ ਦੀ ਉਪਲੱਬਧਤਾ ਲਈ ਅੰਕੜੇ ਵੇਖੋ।" msgid "Buddy is idle" msgstr "ਬੱਡੀ ਵੇਹਲਾ ਹੈ" @@ -13044,16 +12667,14 @@ #. *< name #. *< version #. *< summary -msgid "" -"Allows for controlling the values associated with different buddy states." +msgid "Allows for controlling the values associated with different buddy states." msgstr "ਵੱਖਰੀ ਬੱਡੀ ਸਥਿਤੀ ਨਾਲ ਸਬੰਧਿਤ ਮੁੱਲਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਦਿਓ।" #. *< description msgid "" "Allows for changing the point values of idle/away/offline states for buddies " "in contact priority computations." -msgstr "" -"ਸੰਪਰਕ ਵਿੱਚ ਦਰਜੇ ਦੇ ਆਧਾਰ ਉੱਤੇ ਬੱਡੀ ਲਈ ਵੇਹਲਾ/ਦੂਰ/ਆਫਲਾਇਨ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਤਬਦੀਲ ਕਰਨਾ ਸਵੀਕਾਰ ਹੈ।" +msgstr "ਸੰਪਰਕ ਵਿੱਚ ਦਰਜੇ ਦੇ ਆਧਾਰ ਉੱਤੇ ਬੱਡੀ ਲਈ ਵੇਹਲਾ/ਦੂਰ/ਆਫਲਾਇਨ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਤਬਦੀਲ ਕਰਨਾ ਸਵੀਕਾਰ ਹੈ।" msgid "Conversation Colors" msgstr "ਗੱਲਬਾਤ ਰੰਗ" @@ -13158,7 +12779,6 @@ msgstr "ਮਾਊਸ ਇਸ਼ਾਰਿਆਂ ਲਈ ਸਹਿਯੋਗ ਦਿੰਦਾ ਹੈ" #. * description -#, fuzzy msgid "" "Allows support for mouse gestures in conversation windows. Drag the middle " "mouse button to perform certain actions:\n" @@ -13169,9 +12789,9 @@ "ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਮਾਊਸ ਗੈਸਟਰ ਲਈ ਸਹਿਯੋਗ ਮਨਜ਼ੂਰ ਕਰੋ।\n" "ਕੁਝ ਐਕਸ਼ਨ ਕਰਨ ਲਈ ਮਿਡਲ ਮਾਊਂਸ ਬਟਨ ਡਰੈਗ ਵਰਤੋਂ:\n" "\n" -"ਇੱਕ ਗੱਲਬਾਤ ਨੂੰ ਬੰਦ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਨੂੰ ਡਰੈਗ ਕਰਕੇ ਸੱਜਾ ਪਾਸੇ ਭੇਜੋ।\n" -"ਪਿਛਲੀ ਗੱਲਬਾਤ ਉੱਤੇ ਸਵਿੱਚ ਕਰਨ ਵਾਸਤੇ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਖੱਬੇ ਸਵਿੱਚ ਕਰੋ।\n" -"ਅਗਲੀ ਗੱਲਬਾਤ ਵਿੱਚ ਜਾਣ ਲਈ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਸੱਜੇ ਪਾਸੇ ਭੇਜੋ।" +" • ਇੱਕ ਗੱਲਬਾਤ ਨੂੰ ਬੰਦ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਨੂੰ ਡਰੈਗ ਕਰਕੇ ਸੱਜਾ ਪਾਸੇ ਭੇਜੋ।\n" +" • ਪਿਛਲੀ ਗੱਲਬਾਤ ਉੱਤੇ ਸਵਿੱਚ ਕਰਨ ਵਾਸਤੇ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਖੱਬੇ ਸਵਿੱਚ ਕਰੋ।\n" +" • ਅਗਲੀ ਗੱਲਬਾਤ ਵਿੱਚ ਜਾਣ ਲਈ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਸੱਜੇ ਪਾਸੇ ਭੇਜੋ।" msgid "Instant Messaging" msgstr "ਤਰੁੰਤ ਸੁਨੇਹੇਦਾਰ" @@ -13247,9 +12867,8 @@ msgid "Please enter the person's information below." msgstr "ਵਿਅਕਤੀ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿਓ ਜੀ।" -#, fuzzy msgid "Please enter the buddy's username and account type below." -msgstr "ਬੱਡੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਅਤੇ ਅਕਾਊਂਟ ਕਿਸਮ ਹੇਠਾਂ ਦਿਓ ਜੀ" +msgstr "ਬੱਡੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਅਕਾਊਂਟ ਕਿਸਮ ਹੇਠਾਂ ਦਿਓ ਜੀ" msgid "Account type:" msgstr "ਅਕਾਊਂਟ ਨਾਂ:" @@ -13325,9 +12944,8 @@ msgid "Draw a line to indicate new messages in a conversation." msgstr "ਇੱਕ ਗੱਲਬਾਤ ਵਿੱਚ ਨਵਾਂ ਸੁਨੇਹਾ ਦਰਸਾਉਣ ਵਾਸਤੇ ਇੱਕ ਲਾਈਨ ਖਿੱਚੋ।" -#, fuzzy msgid "Jump to markerline" -msgstr "ਮਾਰਕ ਲਾਈਨ" +msgstr "ਮਾਰਕ ਲਾਈਨ ਉੱਤੇ ਜਾਓ" msgid "Draw Markerline in " msgstr "ਮਾਰਕ-ਲਾਈਨ ਬਣਾਓ" @@ -13389,11 +13007,10 @@ #. ---------- "Notify For" ---------- msgid "Notify For" -msgstr "ਸੂਚਨਾ" - -#, fuzzy +msgstr "ਸੂਚਨਾ ਦਿਓ" + msgid "\t_Only when someone says your username" -msgstr "\tਜਦੋਂ ਕੋਈ ਤੁਹਾਡਾ ਸਕਰੀਨ ਨਾਂ ਲਵੇ(_O)" +msgstr "\tਜਦੋਂ ਕੋਈ ਤੁਹਾਡਾ ਯੂਜ਼ਰ ਨਾਂ ਲਵੇ(_O)" msgid "_Focused windows" msgstr "ਫੋਕਸ ਹੋਈਆਂ ਵਿੰਡੋਜ਼(_F)" @@ -13417,18 +13034,16 @@ msgid "Set window manager \"_URGENT\" hint" msgstr "ਵਿੰਡੋ ਮੈਨੇਜਰ ਵਿੱਚ \"_URGENT\" ਸੰਕੇਤ ਦਿਓ" -#, fuzzy msgid "_Flash window" -msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ(_h)" +msgstr "ਵਿੰਡੋ ਝਪਕੋ(_F)" #. Raise window method button msgid "R_aise conversation window" msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਉਭਾਰੋ(_a)" #. Present conversation method button -#, fuzzy msgid "_Present conversation window" -msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਉਭਾਰੋ(_a)" +msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਪੇਸ਼ ਕਰੋ(_P)" #. ---------- "Notification Removals" ---------- msgid "Notification Removal" @@ -13504,15 +13119,13 @@ msgstr "ਸੈਕੰਡਰੀ ਕਰਸਰ ਰੰਗ" msgid "Hyperlink Color" -msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ" - -#, fuzzy +msgstr "ਹਾਈਪਰਲਿੰਕ ਰੰਗ" + msgid "Visited Hyperlink Color" -msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ" - -#, fuzzy +msgstr "ਖੋਲ੍ਹੇ ਗਏ ਹਾਈਪਰਲਿੰਕ ਰੰਗ" + msgid "Highlighted Message Name Color" -msgstr "ਉਘਾੜੇ ਸੁਨੇਹੇ" +msgstr "ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ" msgid "GtkTreeView Horizontal Separation" msgstr "GtkTreeView ਹਰੀਜ਼ਟਲ ਵੱਖਰੇਵਾ" @@ -13529,7 +13142,6 @@ msgid "Select Color" msgstr "ਰੰਗ ਚੁਣੋ" -#, c-format msgid "Select Interface Font" msgstr "ਇੰਟਰਫੇਸ ਰੰਗ ਚੁਣੋ" @@ -13603,18 +13215,16 @@ #, c-format msgid "You can upgrade to %s %s today." -msgstr "" +msgstr "ਤੁਸੀਂ ਅੱਜ %s %s ਲਈ ਅੱਪਗਰੇਡ ਕੀਤਾ ਹੈ।" msgid "New Version Available" msgstr "ਨਵਾਂ ਵਰਜਨ ਉਪਲੱਬਧ ਹੈ" -#, fuzzy msgid "Later" -msgstr "ਮਿਤੀ" - -#, fuzzy +msgstr "ਬਾਅਦ ਵਿੱਚ" + msgid "Download Now" -msgstr "%s 'ਤੇ ਯੂਜ਼ਰ: %s" +msgstr "ਹੁਣੇ ਡਾਊਨਲੋਡ" #. *< type #. *< ui_requirement @@ -13645,21 +13255,21 @@ #. *< dependencies #. *< priority #. *< id -#, fuzzy msgid "Send Button" -msgstr "ਭੇਜੋ" +msgstr "ਭੇਜੋ ਬਟਨ" #. *< name #. *< version -#, fuzzy msgid "Conversation Window Send Button." -msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਓਹਲੇ" +msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਭੇਜੋ ਬਟਨ ਹੈ।" #. *< summary msgid "" "Adds a Send button to the entry area of the conversation window. Intended " "for when no physical keyboard is present." msgstr "" +"ਗੱਲਬਾਤ ਵਿੰਡੋ ਦੇ ਲਿਖਣ ਖੇਤਰ ਵਿੱਚ ਭੇਜੋ ਬਟਨ ਸ਼ਾਮਲ ਕਰੋ। ਇਹ ਕੋਈ ਅਸਲ ਕੀਬੋਰਡ ਨਾ ਹੋਣ ਦੀ " +"ਹਾਲਤ ਲਈ ਹੈ।" msgid "Duplicate Correction" msgstr "ਡੁਪਲੀਕੇਟ ਸੋਧ" @@ -13751,7 +13361,6 @@ msgid "Timestamp Format Options" msgstr "ਟਾਈਮ-ਸਟੈਂਪ ਫਾਰਮੈਟ ਚੋਣ" -#, c-format msgid "_Force 24-hour time format" msgstr "24-ਘੰਟੇ ਸਮਾਂ ਫਾਰਮੈਟ ਲਈ ਮਜ੍ਬੂਰ(_F)" @@ -13868,17 +13477,13 @@ msgid "Only when docked" msgstr "ਸਿਰਫ਼ ਜਦੋਂ ਡੋਕ ਹੋਵੇ" -msgid "_Flash window when chat messages are received" -msgstr "ਗੱਲਬਾਤ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਹੋਣ ਉੱਤੇ ਵਿੰਡੋ ਝਲਕਾਓ(_F)" - msgid "Windows Pidgin Options" msgstr "ਵਿੰਡੋ ਪਿਡਗਿਨ ਚੋਣਾਂ" msgid "Options specific to Pidgin for Windows." msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਖਾਸ ਚੋਣਾਂ" -msgid "" -"Provides options specific to Pidgin for Windows , such as buddy list docking." +msgid "Provides options specific to Pidgin for Windows , such as buddy list docking." msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਲਈ ਖਾਸ ਚੋਣ ਹੈ, ਜਿਵੇਂ ਕਿ ਬੱਡੀ ਲਿਸਟ ਡੌਕਿੰਗ।" msgid "Logged out." @@ -13918,439 +13523,3 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "ਇਹ ਪਲੱਗਇਨ XMPP ਸਰਵਰ ਜਾਂ ਕਲਾਇਟ ਡੀਬੱਗ ਲਈ ਫਾਇਦੇਮੰਦ ਹੈ।" -#~ msgid "A group with the name already exists." -#~ msgstr "ਇਸ ਨਾਂ ਨਾਲ ਗਰੁੱਪ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।" - -#~ msgid "Primary Information" -#~ msgstr "ਪ੍ਰਾਇਮਰੀ ਜਾਣਕਾਰੀ" - -#~ msgid "Blood Type" -#~ msgstr "ਖੂਨ ਕਿਸਮ" - -#, fuzzy -#~ msgid "Update information" -#~ msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕਰੋ" - -#, fuzzy -#~ msgid "Successed:" -#~ msgstr "ਗਤੀ:" - -#~ msgid "" -#~ "Setting custom faces is not currently supported. Please choose an image " -#~ "from %s." -#~ msgstr "ਇਸ ਸਮੇਂ ਕਸਟਮ ਫੇਸ ਸੈੱਟ ਕਰਨਾ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। %s ਤੋਂ ਚਿੱਤਰ ਚੁਣੋ ਜੀ।" - -#~ msgid "Invalid QQ Face" -#~ msgstr "ਗਲਤ QQ ਮੁੱਖ" - -#~ msgid "You rejected %d's request" -#~ msgstr "ਤੁਸੀਂ %d ਦੀ ਮੰਗ ਠੁਕਰਾਈ" - -#~ msgid "Reject request" -#~ msgstr "ਮੰਗ ਨਾ-ਮਨਜ਼ੂਰ" - -#~ msgid "Add buddy with auth request failed" -#~ msgstr "ਬੱਡੀ ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਮੰਗ ਨਾਲ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" - -#, fuzzy -#~ msgid "Add into %d's buddy list" -#~ msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" - -#, fuzzy -#~ msgid "QQ Number Error" -#~ msgstr "QQ ਨੰਬਰ" - -#~ msgid "Group Description" -#~ msgstr "ਗਰੁੱਪ ਵੇਰਵਾ" - -#~ msgid "Auth" -#~ msgstr "ਪਰਮਾ" - -#~ msgid "Approve" -#~ msgstr "ਮਨਜ਼ੂਰ" - -#, fuzzy -#~ msgid "Successed to join Qun %d, operated by admin %d" -#~ msgstr "ਤੁਹਾਡੀ %d ਗਰੁੱਪ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਐਡਮਿਨ %d ਨੇ ਰੱਦ ਕਰ ਦਿੱਤਾ ਹੈ" - -#, fuzzy -#~ msgid "[%d] removed from Qun \"%d\"" -#~ msgstr "ਤੁਸੀਂ [%d] ਗਰੁੱਪ \"%d\" ਛੱਡਿਆ" - -#, fuzzy -#~ msgid "[%d] added to Qun \"%d\"" -#~ msgstr "ਤੁਹਾਨੂੰ [%d] ਗਰੁੱਪ \"%d\" ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ" - -#~ msgid "I am a member" -#~ msgstr "ਮੈਂ ਮੈਂਬਰ ਹਾਂ" - -#, fuzzy -#~ msgid "I am requesting" -#~ msgstr "ਗਲਤ ਬੇਨਤੀ" - -#~ msgid "I am the admin" -#~ msgstr "ਮੈਂ ਐਡਮਿਨ ਹਾਂ" - -#~ msgid "Unknown status" -#~ msgstr "ਅਣਜਾਣ ਹਾਲਤ" - -#, fuzzy -#~ msgid "Remove from Qun" -#~ msgstr "ਗਰੁੱਪ ਹਟਾਓ" - -#~ msgid "You entered a group ID outside the acceptable range" -#~ msgstr "ਤੁਸੀਂ ਮਨਜ਼ੂਰ-ਸ਼ੁੱਦਾ ਰੇਜ਼ ਤੋਂ ਬਾਹਰ ਗਰੁੱਪ ID ਦਿੱਤਾ ਹੈ" - -#~ msgid "Are you sure you want to leave this Qun?" -#~ msgstr "ਕੀ ਤੁਸੀਂ ਕਿਊਨ ਨੂੰ ਛੱਡਣਾ ਚਾਹੁੰਦੇ ਹੋ?" - -#~ msgid "Do you want to approve the request?" -#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਮੰਗ ਮੰਨਣੀ ਚਾਹੁੰਦੇ ਹੋ?" - -#, fuzzy -#~ msgid "Change Qun member" -#~ msgstr "ਫੋਨ ਨੰਬਰ" - -#, fuzzy -#~ msgid "Change Qun information" -#~ msgstr "ਚੈਨਲ ਜਾਣਕਾਰੀ" - -#, fuzzy -#~ msgid "" -#~ "%s\n" -#~ "\n" -#~ "%s" -#~ msgstr "%s (%s)" - -#~ msgid "System Message" -#~ msgstr "ਸਿਸਟਮ ਸੁਨੇਹਾ" - -#~ msgid "Last Login IP: %s
\n" -#~ msgstr "ਆਖਰੀ ਲਾਗਇਨ IP: %s
\n" - -#~ msgid "Last Login Time: %s\n" -#~ msgstr "ਆਖਰੀ ਲਾਗਇਨ ਸਮਾਂ: %s\n" - -#~ msgid "Set My Information" -#~ msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੈੱਟ ਕਰੋ" - -#, fuzzy -#~ msgid "Leave the QQ Qun" -#~ msgstr "ਇਹ QQ ਕਿਊਨ ਛੱਡਣਾ ਚਾਹੁੰਦੇ ਹੋ" - -#~ msgid "Block this buddy" -#~ msgstr "ਇਹ ਬੱਡੀ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ" - -#, fuzzy -#~ msgid "Error password: %s" -#~ msgstr "ਪਾਸਵਰਡ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ" - -#, fuzzy -#~ msgid "Failed to connect all servers" -#~ msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਦੌਰਨ ਗਲਤੀ" - -#, fuzzy -#~ msgid "Connecting server %s, retries %d" -#~ msgstr "" -#~ "ਸਰਵਰ (%s) ਵਲੋਂ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ:\n" -#~ "%s" - -#, fuzzy -#~ msgid "Do you approve the requestion?" -#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਮੰਗ ਮੰਨਣੀ ਚਾਹੁੰਦੇ ਹੋ?" - -#, fuzzy -#~ msgid "Do you add the buddy?" -#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" - -#, fuzzy -#~ msgid "%s added you [%s] to buddy list" -#~ msgstr "%s ਨੇ ਤੁਹਾਨੂੰ [%s] ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚ ਜੋੜਿਆ ਹੈ।" - -#, fuzzy -#~ msgid "QQ Budy" -#~ msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ" - -#~ msgid "%s wants to add you [%s] as a friend" -#~ msgstr "%s ਤੁਹਾਨੂੰ [%s] ਨੂੰ ਦੋਸਤ ਦੇ ਤੌਰ ਉੱਤੇ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ" - -#, fuzzy -#~ msgid "%s is not in buddy list" -#~ msgstr "%s ਤੁਹਾਡੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਨਹੀਂ ਹੈ।" - -#, fuzzy -#~ msgid "Would you add?" -#~ msgstr "ਕੀ ਤੁਸੀਂ ਉਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" - -#, fuzzy -#~ msgid "QQ Server Notice" -#~ msgstr "ਸਰਵਰ ਪੋਰਟ" - -#, fuzzy -#~ msgid "Network disconnected" -#~ msgstr "ਰਿਮੋਟ ਡਿਸ-ਕੁਨੈਕਟ ਕੀਤਾ" - -#~ msgid "developer" -#~ msgstr "ਡਿਵੈਲਪਰ" - -#~ msgid "XMPP developer" -#~ msgstr "XMPP ਡੀਵੈਲਪਰ" - -#~ msgid "Artists" -#~ msgstr "ਕਲਾਕਾਰ" - -#~ msgid "" -#~ "You are using %s version %s. The current version is %s. You can get it " -#~ "from %s


" -#~ msgstr "" -#~ "ਤੁਸੀਂ ਇਸ ਸਮੇਂ %s ਵਰਜਨ %s ਵਰਤ ਰਹੇ ਹੋ। ਮੌਜੂਦਾ ਵਰਜਨ %s ਹੈ। ਤੁਸੀਂ ਇਸ ਨੂੰ %" -#~ "sਤੋਂ ਲੈ ਸਕਦੇ ਹੋ।
" - -#~ msgid "ChangeLog:
%s" -#~ msgstr "ਬਦਲਾਅ:
%s" - -#~ msgid "Screen name:" -#~ msgstr "ਸਕਰੀਨ ਨਾਂ:" - -#~ msgid "Pounce only when my status is not available" -#~ msgstr "ਪਉਨਸ ਕੇਵਲ ਉਦੋਂ ਹੀ, ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ" - -#~ msgid "Someone says your screen name in chat" -#~ msgstr "ਕਿਸੇ ਨੇ ਗੱਲਬਾਤ ਵਿੱਚ ਤੁਹਾਡਾ ਨਾਂ ਲਿਆ ਹੈ" - -#~ msgid "EOF while reading from resolver process" -#~ msgstr "ਹੱਲਕਰਤਾ ਪਰੋਸੈੱਸ ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ EOF" - -#~ msgid "There were errors unloading the plugin." -#~ msgstr "ਪਲੱਗਇਨ ਅਣ-ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀਆਂ ਹਨ।" - -#~ msgid "Error setting socket options" -#~ msgstr "ਸਾਕਟ ਚੋਣਾਂ ਦੇਣ ਦੌਰਾਨ ਗਲਤੀ" - -#~ msgid "Couldn't open file" -#~ msgstr "ਫਾਇਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ" - -#~ msgid "" -#~ "This server requires plaintext authentication over an unencrypted " -#~ "connection. Allow this and continue authentication?" -#~ msgstr "" -#~ "ਇਹ ਸਰਵਰ ਲਈ ਗ਼ੈਰ-ਇੰਕ੍ਰਿਪਟਡ ਕੁਨੈਕਸ਼ਨ ਉੱਤੇ ਪਲੇਨ-ਟੈਕਸਟ ਪਰਮਾਣਕਿਤਾ ਲੋੜੀਦੀ ਹੈ। ਕੀ ਇਹ " -#~ "ਪਰਮਾਣਿਕਤਾ ਮਨਜ਼ੂਰ ਕਰਕੇ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?" - -#~ msgid "Error initializing session" -#~ msgstr "ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਗਲਤੀ" - -#~ msgid "Invalid screen name" -#~ msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਹੈ" - -#~ msgid "Current media" -#~ msgstr "ਮੌਜੂਦਾ ਮੀਡਿਆ" - -#~ msgid "" -#~ "Windows Live ID authentication: cannot find authenticate token in server " -#~ "response" -#~ msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਸਰਵਰ ਜਵਾਬ ਵਿੱਚ ਪਰਮਾਣਕਿਤਾ ਟੋਕਨ ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਦਾ" - -#~ msgid "Windows Live ID authentication Failed" -#~ msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ ਫੇਲ੍ਹ ਹੋਈ" - -#~ msgid "" -#~ "Sorry, passwords over %d characters in length (yours is %d) are not " -#~ "supported by MySpace." -#~ msgstr "" -#~ "ਅਫਸੋਸ, MySpace ਵਲੋਂ %d ਅੱਖਰਾਂ ਤੋਂ ਵੱਧ ਲੰਬਾਈ ਦਾ ਪਾਸਵਰਡ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ (ਤੁਸੀਂ %d ਅੱਖਰ ਦਿੱਤੇ)।" - -#~ msgid "" -#~ "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile." -#~ "username and choose a username and try to login again." -#~ msgstr "" -#~ "http://editprofile.myspace.com/index.cfm?fuseaction=profile.username ਉੱਤੇ " -#~ "ਜਾਓ ਜੀ ਅਤੇ ਯੂਜ਼ਰ-ਨਾਂ ਚੁਣ ਕੇ ਫਿਰ ਲਾਗਇਨ ਕਰਨ ਦੀ ਟਰਾਈ ਕਰੋ।" - -#~ msgid "Unable to make SSL connection to server." -#~ msgstr "ਸਰਵਰ ਨਾਲ SSL ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ।" - -#~ msgid "Too evil (sender)" -#~ msgstr "ਕਈ ਬੁਰੇ (ਭੇਜਣ ਵਾਲਾ)" - -#~ msgid "Too evil (receiver)" -#~ msgstr "ਕਈ ਬੁਰੇ (ਪ੍ਰਾਪਤਕਰਤਾ)" - -#~ msgid "Screen name sent" -#~ msgstr "ਸਕਰੀਨ ਨਾਂ ਭੇਜਿਆ" - -#~ msgid "Invalid screen name." -#~ msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਹੈ।" - -#~ msgid "Available Message" -#~ msgstr "ਉਪਲੱਬਧ ਸੁਨੇਹਾ" - -#~ msgid "Screen name" -#~ msgstr "ਸਕਰੀਨ ਨਾਂ" - -#~ msgid "Invalid chat name specified." -#~ msgstr "ਗਲਤ ਗੱਲਬਾਤ ਨਾਂ ਦਿੱਤਾ ਹੈ।" - -#~ msgid "Away Message" -#~ msgstr "ਦੂਰ ਸੁਨੇਹਾ" - -#~ msgid "(retrieving)" -#~ msgstr " (ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ)" - -#~ msgid "Use recent buddies group" -#~ msgstr "ਤਾਜ਼ਾ ਬੱਡੀ ਗਰੁੱਪ ਵਰਤੋਂ" - -#~ msgid "Show how long you have been idle" -#~ msgstr "ਵੇਖੋ ਕਿ ਕਿੰਨੇ ਚਿਰ ਤੋਂ ਤੁਸੀਂ ਵੇਹਲੇ ਹੋ" - -#~ msgid "Your information has been updated" -#~ msgstr "ਤੁਹਾਡੀ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕੀਤੀ ਗਈ ਹੈ" - -#~ msgid "Input your reason:" -#~ msgstr "ਆਪਣਾ ਕਾਰਨ ਦਿਓ:" - -#~ msgid "You have successfully removed a buddy" -#~ msgstr "ਤੁਸੀਂ ਇੱਕ ਬੱਡੀ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਹੈ" - -#~ msgid "You have successfully removed yourself from your friend's buddy list" -#~ msgstr "ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਆਪਣੇ ਦੋਸਤ ਦੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਹਟਾ ਲਿਆ ਹੈ" - -#~ msgid "You have added %d to buddy list" -#~ msgstr "ਤੁਸੀਂ %d ਨੂੰ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਹੈ" - -#~ msgid "Invalid QQid" -#~ msgstr "ਗਲਤ QQid" - -#~ msgid "Please enter external group ID" -#~ msgstr "ਬਾਹਰੀ ਗਰੁੱਪ ID ਦਿਓ ਜੀ" - -#~ msgid "Your request to join group %d has been approved by admin %d" -#~ msgstr "ਤੁਹਾਡੀ %d ਗਰੁੱਪ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਐਡਮਿਨ %d ਨੇ ਮਨਜ਼ੂਰ ਕਰ ਲਿਆ ਹੈ" - -#~ msgid "This group has been added to your buddy list" -#~ msgstr "ਇਹ ਗਰੁੱਪ ਤੁਹਾਡੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ" - -#~ msgid "I am applying to join" -#~ msgstr "ਮੈਂ ਜੁਆਇੰਨ ਕਰਨ ਵਾਸਤੇ ਅਪਲਾਈ ਕੀਤਾ" - -#~ msgid "You have successfully left the group" -#~ msgstr "ਤੁਸੀਂ ਗਰੁੱਪ ਛੱਡ ਦਿੱਤਾ ਹੈ।" - -#~ msgid "QQ Group Auth" -#~ msgstr "QQ ਗਰੁੱਪ ਪਰਮਾਣ" - -#~ msgid "Your authorization request has been accepted by the QQ server" -#~ msgstr "ਤੁਹਾਡੀ ਪਰਮਾਣਿਕਤਾ ਮੰਗ ਨੂੰ QQ ਸਰਵਰ ਵਲੋਂ ਮਨਜ਼ੂਰ ਕੀਤਾ ਗਿਆ ਹੈ।" - -#~ msgid "Code [0x%02X]: %s" -#~ msgstr "ਕੋਡ [0x%02X]: %s" - -#~ msgid "Group Operation Error" -#~ msgstr "ਗਰੁੱਪ ਓਪਰੇਸ਼ਨ ਗਲਤੀ" - -#~ msgid "Enter your reason:" -#~ msgstr "ਆਪਣਾ ਕਾਰਨ ਦਿਓ:" - -#~ msgid "Error requesting login token" -#~ msgstr "ਲਾਗਇਨ ਟੋਕਨ ਮੰਗ ਗਲਤੀ" - -#~ msgid "Unable to login, check debug log" -#~ msgstr "ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ, ਡੀਬੱਗ ਲਾਗ ਵੇਖੋ" - -#~ msgid "TCP Address" -#~ msgstr "TCP ਐਡਰੈੱਸ" - -#~ msgid "UDP Address" -#~ msgstr "UDP ਐਡਰੈੱਸ" - -#~ msgid "Show Login Information" -#~ msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ ਵੇਖੋ" - -#~ msgid "Login failed, no reply" -#~ msgstr "ਲਾਗਇਨ ਫੇਲ੍ਹ, ਕੋਈ ਜਵਾਬ ਨਹੀਂ" - -#~ msgid "User %s rejected your request" -#~ msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਡੀ ਮੰਗ ਨਾ ਮਨਜ਼ੂਰ ਕੀਤੀ ਹੈ" - -#~ msgid "User %s approved your request" -#~ msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਡੀ ਮੰਗ ਮੰਨ ਲਈ ਹੈ" - -#~ msgid "Cannot find/access ~/.silc directory" -#~ msgstr "~/.silc ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਲੱਭੀ/ਵਰਤੀ ਜਾ ਸਕਦੀ" - -#~ msgid "%s changed status from %s to %s" -#~ msgstr "%s ਨੇ ਹਾਲਤ %s ਤੋਂ %s ਬਦਲਿਆ ਹੈ" - -#~ msgid "%s is now %s" -#~ msgstr "%s ਹੁਣ %s" - -#~ msgid "%s is no longer %s" -#~ msgstr "%s ਹੁਣ %s ਨਹੀਂ ਰਿਹਾ" - -#~ msgid "Screen _name:" -#~ msgstr "ਸਕਰੀਨ ਨਾਂ(_n):" - -#~ msgid "_Merge" -#~ msgstr "ਮਿਲਾਨ(_M):" - -#~ msgid "%s disconnected: %s" -#~ msgstr "%s ਅਕਾਊਂਟ ਬੰਦ ਕੀਤਾ: %s" - -#~ msgid "" -#~ "Please enter the screen name of the person you would like to add to your " -#~ "buddy list. You may optionally enter an alias, or nickname, for the " -#~ "buddy. The alias will be displayed in place of the screen name whenever " -#~ "possible.\n" -#~ msgstr "" -#~ "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਤੁਸੀਂ " -#~ "ਬੱਡੀ ਲਈ ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਏਲੀਆਸ ਜਾਂ ਛੋਟਾ ਨਾਂ ਦੇ ਸਕਦੇ ਹੋ। ਏਲੀਆਸ ਨੂੰ ਸਕਰੀਨ ਨਾਂ ਦੀ ਬਜਾਏ ਵਰਤਿਆ " -#~ "ਜਾਵੇਗਾ, ਜਦੋਂ ਵੀ ਸੰਭਵ ਹੋਵੇਗਾ।\n" - -#~ msgid "A_ccount:" -#~ msgstr "ਅਕਾਊਂਟ(_c):" - -#~ msgid "_Screen name:" -#~ msgstr "ਸਕਰੀਨ ਨਾਂ(_S):" - -#~ msgid "" -#~ "%s\n" -#~ "\n" -#~ "%s will not attempt to reconnect the account until you correct the error " -#~ "and re-enable the account." -#~ msgstr "" -#~ "%s\n" -#~ "\n" -#~ "%s ਅਕਾਊਂਟ ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਦੀ ਉਦੋਂ ਤੱਕ ਕੋਸ਼ਿਸ਼ ਨਹੀਂ ਕਰੇਗਾ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਗਲਤੀ ਠੀਕ ਨਹੀਂ ਕਰਕੇ " -#~ "ਅਕਾਊਂਟ ਮੁੜ-ਯੋਗ ਨਹੀਂ ਕਰਦੇ।" - -#~ msgid "User has typed something and stopped" -#~ msgstr "ਯੂਜ਼ਰ ਨੇ ਕੁਝ ਲਿਖਿਆ ਅਤੇ ਰੁਕ ਗਿਆ/ਗਈ" - -#~ msgid "" -#~ "You are about to remove the contact containing %s and %d other buddy from " -#~ "your buddy list. Do you want to continue?You are about to remove the " -#~ "contact containing %s and %d other buddies from your buddy list. Do you " -#~ "want to continue?" -#~ msgstr "" -#~ "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ " -#~ "ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %sਅਤੇ %d ਹੋਰ ਬੱਡੀ ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਹਟਾਉਣ ਜਾ " -#~ "ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" - -#~ msgid "" -#~ "%s%sWritten by:\t%s\n" -#~ "Website:\t\t%s\n" -#~ "Filename:\t\t%s" -#~ msgstr "" -#~ "%s%sਲਿਖੀ:\t%s\n" -#~ "ਵੈੱਬਸਾਇਟ:\t\t%s\n" -#~ "ਫਾਇਲ ਨਾਂ:\t\t%s" - -#~ msgid "Display Statistics" -#~ msgstr "ਅੰਕੜੇ ਵੇਖੋ" - -#~ msgid "" -#~ "The contact availability plugin (cap) is used to display statistical " -#~ "information about buddies in a users contact list." -#~ msgstr "" -#~ "ਸੰਪਰਕ ਉਪਲਬਧਤਾ ਅਨੁਮਾਨ (cap) ਇੱਕ ਯੂਜ਼ਰ ਸੰਪਰਕ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਬਾਰੇ ਅੰਕੜੇ ਵੇਖਾਉਣ ਲਈ ਵਰਤੀ " -#~ "ਜਾਂਦੀ ਹੈ।" diff -r a0668fbf2483 -r b98519a42e53 po/pt_BR.po --- a/po/pt_BR.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/pt_BR.po Mon Mar 02 22:07:59 2009 +0000 @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-04 09:58-0500\n" -"PO-Revision-Date: 2009-01-05 12:42-0300\n" +"POT-Creation-Date: 2009-02-27 10:14-0800\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" "MIME-Version: 1.0\n" @@ -32,7 +32,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -40,8 +40,8 @@ "%s\n" "Uso: %s [OPÇÃO]...\n" "\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" +" -c, --config=DIR utilize o DIR para os arquivos de configuração\n" +" -d, --debug imprima mensagens de depuração para a saída de erro\n" " -h, --help exiba esta ajuda e saia\n" " -n, --nologin não conecte automaticamente\n" " -v, --version exiba a versão atual e saia\n" @@ -1118,6 +1118,7 @@ msgid "%s has sent you a message. (%s)" msgstr "%s te enviou uma mensagem. (%s)" +#, c-format msgid "Unknown pounce event. Please report this!" msgstr "Evento de ação desconhecido. Por favor reporte isso!" @@ -1163,7 +1164,6 @@ msgid "Change status to" msgstr "Mudar status para" -#. Conversations msgid "Conversations" msgstr "Conversas" @@ -1829,6 +1829,7 @@ "Erro ao ler do processo de resolução:\n" "%s" +#, c-format msgid "Resolver process exited without answering our request" msgstr "Processo que resolve fechou sem responder nossa requisição" @@ -2842,7 +2843,6 @@ "Não foi possível estabelecer conexão com o servidor mDNS local. Ele está " "rodando?" -#. Creating the options for the protocol msgid "First name" msgstr "Nome" @@ -2874,6 +2874,10 @@ msgid "Purple Person" msgstr "Pessoa púrpura" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "Porta local" + msgid "Bonjour" msgstr "Bonjour" @@ -4680,9 +4684,6 @@ msgid "Select an action" msgstr "Selecione uma ação" -msgid "Unable to retrieve MSN Address Book" -msgstr "Falha ao obter catálogo de endereços do MSN" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it @@ -4716,165 +4717,218 @@ "%s está na lista local, mas não está na lista do servidor. Você deseja " "adicionar este amigo?" +#, c-format msgid "Unable to parse message" msgstr "Não foi possível processar mensagem" +#, c-format msgid "Syntax Error (probably a client bug)" msgstr "Erro de sintaxe (provavelmente um bug do cliente)" +#, c-format msgid "Invalid email address" msgstr "Endereço de email inválido" +#, c-format msgid "User does not exist" msgstr "Usuário inexistente" +#, c-format msgid "Fully qualified domain name missing" msgstr "Faltando nome de domínio totalmente qualificado" +#, c-format msgid "Already logged in" msgstr "Você já está conectado" +#, c-format msgid "Invalid username" msgstr "Nome de usuário inválido" +#, c-format msgid "Invalid friendly name" msgstr "Apelido inválido" +#, c-format msgid "List full" msgstr "Lista cheia" +#, c-format msgid "Already there" msgstr "Já está lá" +#, c-format msgid "Not on list" msgstr "Não está na lista" +#, c-format msgid "User is offline" msgstr "Usuário está desconectado" +#, c-format msgid "Already in the mode" msgstr "Você já está nesse modo" +#, c-format msgid "Already in opposite list" msgstr "Usuário já está na lista oposta" +#, c-format msgid "Too many groups" msgstr "Excesso de grupos" +#, c-format msgid "Invalid group" msgstr "Grupo inválido" +#, c-format msgid "User not in group" msgstr "O usuário não está no grupo" +#, c-format msgid "Group name too long" msgstr "Nome do grupo muito extenso." +#, c-format msgid "Cannot remove group zero" msgstr "Não foi possível remover o grupo zero" +#, c-format msgid "Tried to add a user to a group that doesn't exist" msgstr "Você tentou adicionar um usuário a um grupo que não existe" +#, c-format msgid "Switchboard failed" msgstr "O quadro de comunicações falhou" +#, c-format msgid "Notify transfer failed" msgstr "A notificação de transferência falhou" +#, c-format msgid "Required fields missing" msgstr "Campos requeridos não foram preenchidos" +#, c-format msgid "Too many hits to a FND" msgstr "Acessos demais a um FND" +#, c-format msgid "Not logged in" msgstr "Desconectado" +#, c-format msgid "Service temporarily unavailable" msgstr "Serviço temporariamente indisponível" +#, c-format msgid "Database server error" msgstr "Erro do servidor de banco de dados" +#, c-format msgid "Command disabled" msgstr "Comando desativado" +#, c-format msgid "File operation error" msgstr "Erro ao executar operação de arquivo" +#, c-format msgid "Memory allocation error" msgstr "Erro de alocação de memória" +#, c-format msgid "Wrong CHL value sent to server" msgstr "Valor CHL incorreto enviado para o servidor" +#, c-format msgid "Server busy" msgstr "Servidor ocupado" +#, c-format msgid "Server unavailable" msgstr "Servidor indisponível" +#, c-format msgid "Peer notification server down" msgstr "O servidor de notificação de pares está fora do ar" +#, c-format msgid "Database connect error" msgstr "Erro ao conectar ao banco de dados" +#, c-format msgid "Server is going down (abandon ship)" msgstr "O servidor vai sair do ar (abandonar navio)" +#, c-format msgid "Error creating connection" msgstr "Erro ao criar a conexão" +#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "Parâmetros CVR desconhecidos ou não permitidos" +#, c-format msgid "Unable to write" msgstr "Não foi possível enviar" +#, c-format msgid "Session overload" msgstr "Sessão sobrecarregada" +#, c-format msgid "User is too active" msgstr "O usuário está muito ativo" +#, c-format msgid "Too many sessions" msgstr "Excesso de sessões" +#, c-format msgid "Passport not verified" msgstr "Conta do Passport não verificada" +#, c-format msgid "Bad friend file" msgstr "Arquivo de amigos mal formado" +#, c-format msgid "Not expected" msgstr "Inesperado" +#, c-format msgid "Friendly name changes too rapidly" msgstr "O apelido foi mudado rapidamente demais" +#, c-format msgid "Server too busy" msgstr "Servidor ocupado demais" +#, c-format msgid "Authentication failed" msgstr "Autenticação mal sucedida" +#, c-format msgid "Not allowed when offline" msgstr "Não permitido enquanto desconectado" +#, c-format msgid "Not accepting new users" msgstr "Usuários novos não estão sendo aceitos" +#, c-format msgid "Kids Passport without parental consent" msgstr "Passport para crianças sem consentimento dos pais" +#, c-format msgid "Passport account not yet verified" msgstr "Conta do Passport ainda não foi verificada" msgid "Passport account suspended" msgstr "Conta do Passport suspensa" +#, c-format msgid "Bad ticket" msgstr "Bilhete inválido" @@ -6464,12 +6518,10 @@ msgstr "_OK" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Você pode ser desconectado num curto período de tempo. Você pode querer usar " -"o TOC até que isso esteja corrigido. Verifique por atualizações em %s." +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"Você pode ser desconectado em brevo. Se isso acontecer, verifique " +"atualizações em %s." msgid "Unable to get a valid AIM login hash." msgstr "Não foi possível conseguir um hash de conexão AIM válido." @@ -6937,6 +6989,7 @@ msgid "Get AIM Info" msgstr "Ver informações do AIM" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "Editar comentário do amigo" @@ -7523,6 +7576,9 @@ msgid "

Acknowledgement:
\n" msgstr "

Agradecimento:
\n" +msgid "

Scrupulous Testers:
\n" +msgstr "

Testadores Escrupulosos:
\n" + msgid "

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

E, todos os garotos nos bastidores...
\n" @@ -7548,6 +7604,9 @@ msgid "About OpenQ" msgstr "Sobre o OpenQ" +msgid "Modify Buddy Memo" +msgstr "Modificar Lembrete do Amigo" + #. *< type #. *< ui_requirement #. *< flags @@ -7585,6 +7644,9 @@ msgid "Show server news" msgstr "Mostrar novidades do servidor" +msgid "Show chat room when msg comes" +msgstr "Mostrar sala de chat quando enviarem uma mensagem" + msgid "Keep alive interval (seconds)" msgstr "Intervalo de keep-alive (segundos)" @@ -8343,6 +8405,7 @@ msgid "
Channel Topic:
%s" msgstr "
Tópico do canal:
%s" +#, c-format msgid "
Channel Modes: " msgstr "
Modos do canal: " @@ -8367,6 +8430,7 @@ msgid "Channel Public Keys List" msgstr "Lista de chaves públicas do canal" +#, c-format msgid "" "Channel authentication is used to secure the channel from unauthorized " "access. The authentication may be based on passphrase and digital " @@ -8765,6 +8829,7 @@ msgid "Your Current Mood" msgstr "Seu humor atual" +#, c-format msgid "Normal" msgstr "Normal" @@ -9148,33 +9213,43 @@ msgid "No server statistics available" msgstr "Estatísticas do servidor indisponíveis" +#, c-format msgid "Failure: Version mismatch, upgrade your client" msgstr "Falha: Versões incompatíveis, atualize seu cliente" +#, c-format msgid "Failure: Remote does not trust/support your public key" msgstr "Falha: O usuário remoto não confia/suporta sua chave pública." +#, c-format msgid "Failure: Remote does not support proposed KE group" msgstr "Falha: O usuário remoto não suporta o grupo KE proposto." +#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "Falha: O usuário remoto não suporta a cifra proposta" +#, c-format msgid "Failure: Remote does not support proposed PKCS" msgstr "Falha: O usuário remoto não suporta o PKCS proposto" +#, c-format msgid "Failure: Remote does not support proposed hash function" msgstr "Falha: O usuário remoto não suporta a função de hash proposta" +#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "Falha: O usuário remoto não suporta o HMAC proposto" +#, c-format msgid "Failure: Incorrect signature" msgstr "Falha: Assinatura incorreta" +#, c-format msgid "Failure: Invalid cookie" msgstr "Falha: Cookie inválido" +#, c-format msgid "Failure: Authentication failed" msgstr "Falha: Autenticação mal sucedida" @@ -9274,6 +9349,7 @@ msgid "Warning of %s not allowed." msgstr "Alertar %s não é permitido." +#, c-format msgid "A message has been dropped, you are exceeding the server speed limit." msgstr "" "Uma mensagem foi descartada, você está excedendo o limite de velocidade do " @@ -9298,30 +9374,39 @@ "Você perdeu uma mensagem de mensagem instantânea de %s porque ela foi " "enviada muito rapidamente." +#, c-format msgid "Failure." msgstr "Falha." +#, c-format msgid "Too many matches." msgstr "Excesso de resultados." +#, c-format msgid "Need more qualifiers." msgstr "Necessários mais qualificadores." +#, c-format msgid "Dir service temporarily unavailable." msgstr "Serviço de diretório temporariamente indisponível." +#, c-format msgid "Email lookup restricted." msgstr "Pesquisa por email restrita." +#, c-format msgid "Keyword ignored." msgstr "Palavra-chave ignorada." +#, c-format msgid "No keywords." msgstr "Nenhuma palavra-chave." +#, c-format msgid "User has no directory information." msgstr "Usuário não tem informação de diretório." +#, c-format msgid "Country not supported." msgstr "País não suportado." @@ -9329,16 +9414,20 @@ msgid "Failure unknown: %s." msgstr "Falha desconhecida: %s." +#, c-format msgid "Incorrect username or password." msgstr "Nome de usuário ou senha incorreto(a)." +#, c-format msgid "The service is temporarily unavailable." msgstr "O serviço está temporariamente indisponível." +#, c-format msgid "Your warning level is currently too high to log in." msgstr "" "Seu nível de alerta é alto demais para que você possa se conectar no momento." +#, c-format 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." @@ -10168,22 +10257,27 @@ msgstr "(%s)" #. 10053 +#, c-format msgid "Connection interrupted by other software on your computer." msgstr "Conexão interrompida por outro software no seu computador." #. 10054 +#, c-format msgid "Remote host closed connection." msgstr "O usuário remoto encerrou a conexão." #. 10060 +#, c-format msgid "Connection timed out." msgstr "Tempo limite de conexão esgotado." #. 10061 +#, c-format msgid "Connection refused." msgstr "Conexão rejeitada." #. 10048 +#, c-format msgid "Address already in use." msgstr "O endereço já está em uso" @@ -11295,6 +11389,9 @@ msgid "Macedonian" msgstr "Macedônio" +msgid "Mongolian" +msgstr "Mongol" + msgid "Bokmål Norwegian" msgstr "Dano-Norueguês" @@ -11407,8 +11504,33 @@ "contribuidoes. Veja o arquivo 'COPYRIGHT' para uma lista completa destes " "contribuidores. Não oferecemos nenhuma garantia para este programa.

" -msgid "IRC: #pidgin on irc.freenode.net

" -msgstr "IRC: #pidgin no irc.freenode.net

" +#, c-format +msgid "" +"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 "" +"Ajuda por e-mail: support@pidgin.im

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

" +msgstr "" +"Canal do IRC: #pidgin no irc.freenode.net

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

" +msgstr "" +"MUC(Multi User Chat) do XMPP: devel@conference." +"pidgin.im

" msgid "Current Developers" msgstr "Desenvolvedores atuais" @@ -11768,9 +11890,11 @@ msgid "Save Image" msgstr "Salvar imagem" +#, c-format msgid "_Save Image..." msgstr "_Salvar imagem..." +#, c-format msgid "_Add Custom Smiley..." msgstr "Exibir emoticons personalizados" @@ -12064,6 +12188,10 @@ msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "Saindo porque outro cliente libpurple já está sendo executado.\n" + msgid "Open All Messages" msgstr "Abrir todas as mensagens" @@ -12404,6 +12532,10 @@ msgid "No proxy" msgstr "Nenhum proxy" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "Usar DNS remoto com proxies SOCKS4" + msgid "_User:" msgstr "_Usuário:" @@ -12484,21 +12616,27 @@ msgid "Sound Selection" msgstr "Seleção de som" +#, c-format msgid "Quietest" msgstr "Muito silencioso" +#, c-format msgid "Quieter" msgstr "Mais silencioso" +#, c-format msgid "Quiet" msgstr "Silencioso" +#, c-format msgid "Loud" msgstr "Alto" +#, c-format msgid "Louder" msgstr "Mais alto" +#, c-format msgid "Loudest" msgstr "Muito alto" @@ -13511,6 +13649,7 @@ msgid "Select Color" msgstr "Selecionar cor" +#, c-format msgid "Select Interface Font" msgstr "Selecionar fonte da interface" @@ -13738,6 +13877,7 @@ msgid "Timestamp Format Options" msgstr "Opções de formatação da marcação de tempo" +#, c-format msgid "_Force 24-hour time format" msgstr "_Forçar formato de data 24-horas" @@ -13857,9 +13997,6 @@ msgid "Only when docked" msgstr "Apenas quando ancorado" -msgid "_Flash window when chat messages are received" -msgstr "_Piscar a janela quando mensagens de bate-papo forem recebidas" - msgid "Windows Pidgin Options" msgstr "Opções do Pidgin para Windows" @@ -13909,6 +14046,20 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Este plug-in é útil para depurar servidores ou clientes XMPP." +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "Falha ao obter catálogo de endereços do MSN" + +#~ msgid "" +#~ "You may be disconnected shortly. You may want to use TOC until this is " +#~ "fixed. Check %s for updates." +#~ msgstr "" +#~ "Você pode ser desconectado num curto período de tempo. Você pode querer " +#~ "usar o TOC até que isso esteja corrigido. Verifique por atualizações em %" +#~ "s." + +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "_Piscar a janela quando mensagens de bate-papo forem recebidas" + #~ msgid "Connection to server lost (no data received within %d second)" #~ msgid_plural "" #~ "Connection to server lost (no data received within %d seconds)" diff -r a0668fbf2483 -r b98519a42e53 po/ru.po --- a/po/ru.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/ru.po Mon Mar 02 22:07:59 2009 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: ru\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-02-22 16:18-0500\n" +"POT-Creation-Date: 2009-03-01 19:00-0500\n" "PO-Revision-Date: 2008-05-14 15:00+0400\n" "Last-Translator: Антон Самохвалов \n" "Language-Team: \n" @@ -23,7 +23,7 @@ #. Translators may want to transliterate the name. #. It is not to be translated. msgid "Finch" -msgstr "Finch" +msgstr "Зяблик" #, c-format msgid "%s. Try `%s -h' for more information.\n" @@ -740,6 +740,12 @@ "background>: black, red, green, blue, white, gray, darkgray, magenta, " "cyan, default

EXAMPLE:
msgcolor send cyan default" msgstr "" +"цвет сообщения <класс> <передний план> <фон>: Установите " +"цвет для различных классов сообщений в окне общения.
<класс>: " +"получить, отправить, подсветить, действие, фиксация времени
< " +"передний план/фон>: чёрный, красный, зелёный, синий, белый, серый, тёмно-" +"серый, пурпурный, голубой, по умолчанию

ПРИМЕР:
цвет сообщения " +"отправки по умолчанию голубой" msgid "Unable to open file." msgstr "Не удаётся открыть файл." @@ -1197,7 +1203,7 @@ msgstr "Выбрать местоположение..." msgid "Hit 'Enter' to find more rooms of this category." -msgstr "" +msgstr "Щёлкните 'Enter', чтобы найти больше комнат этой категории." msgid "Get" msgstr "Получить" @@ -1509,7 +1515,7 @@ msgstr "В сети/Не в сети" msgid "Meebo" -msgstr "" +msgstr "Мибо" msgid "No Grouping" msgstr "Нет объединения" @@ -2145,7 +2151,7 @@ #, c-format msgid "Plugin magic mismatch %d (need %d)" -msgstr "" +msgstr "Магическое несоответствие модуля %d (нужно %d)" #, c-format msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" @@ -2155,7 +2161,7 @@ msgid "" "Plugin does not implement all required functions (list_icon, login and close)" msgstr "" -"Модуль не реализует всех требуемых функций (list_icon, login and close)" +"Модуль не реализует всех требуемых функций (список _иконок, вход и закрытие)" #, c-format msgid "" @@ -2428,6 +2434,8 @@ "This plugin hides join/part messages in large rooms, except for those users " "actively taking part in a conversation." msgstr "" +"Этот модуль прячет сообщения подсоединения/обособления в больших комнатах, " +"кроме тех пользователей, которые активно принимают участие в общении." #. This is used in the place of a timezone abbreviation if the #. * offset is way off. The user should never really see it, but @@ -3406,7 +3414,7 @@ #, c-format msgid "Wallops from %s" -msgstr "" +msgstr "Грохот от %s" msgid "action <action to perform>: Perform an action." msgstr "action <действие для выполнения>: Выполнить действие." @@ -7330,6 +7338,38 @@ msgid "Could not change buddy information." msgstr "Не могу изменить информацию о собеседнике." +msgid "Mobile" +msgstr "Мобильный" + +msgid "Note" +msgstr "Заметки" + +#. callback +#, fuzzy +msgid "Buddy Memo" +msgstr "Значок собеседника" + +msgid "Change his/her memo as you like" +msgstr "" + +#, fuzzy +msgid "_Modify" +msgstr "Изменить" + +#, fuzzy +msgid "Memo Modify" +msgstr "Изменить" + +#, fuzzy +msgid "Server says:" +msgstr "Сервер занят" + +msgid "Your request was accepted." +msgstr "" + +msgid "Your request was rejected." +msgstr "" + #, fuzzy, c-format msgid "%u requires verification" msgstr "%u требует подтверждения" @@ -7671,6 +7711,10 @@ msgid "

Acknowledgement:
\n" msgstr "

Подтверждение:
\n" +#, fuzzy +msgid "

Scrupulous Testers:
\n" +msgstr "

Исходный автор:
\n" + msgid "

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

И все мальчики в задней комнате...
\n" @@ -7699,6 +7743,10 @@ msgid "About OpenQ" msgstr "Об OpenQ" +#, fuzzy +msgid "Modify Buddy Memo" +msgstr "Изменить адрес" + #. *< type #. *< ui_requirement #. *< flags @@ -8737,9 +8785,6 @@ msgid "Unit" msgstr "Отдел" -msgid "Note" -msgstr "Заметки" - msgid "Join Chat" msgstr "Присоединиться к чату" @@ -10234,9 +10279,6 @@ msgid "Extended away" msgstr "Расширенный \"Отошёл\"" -msgid "Mobile" -msgstr "Мобильный" - msgid "Listening to music" msgstr "Слушает музыку" @@ -10502,7 +10544,7 @@ msgstr "Не удаётся сохранить новую учётную запись" msgid "An account already exists with the specified criteria." -msgstr "" +msgstr "Учётная запись с указанными критериями уже существует." msgid "Add Account" msgstr "Добавить учётную запись" @@ -11082,7 +11124,7 @@ msgstr "Изменить размер" msgid "Show All" -msgstr "" +msgstr "Показать всё" #. Conversation menu msgid "/_Conversation" @@ -13889,7 +13931,7 @@ #, c-format msgid "You can upgrade to %s %s today." -msgstr "" +msgstr "You can upgrade to %s %s today." msgid "New Version Available" msgstr "Доступна новая версия" diff -r a0668fbf2483 -r b98519a42e53 po/sv.po --- a/po/sv.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/sv.po Mon Mar 02 22:07:59 2009 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-01 15:52-0800\n" -"PO-Revision-Date: 2008-12-18 20:21+0100\n" +"POT-Creation-Date: 2009-02-25 23:20+0100\n" +"PO-Revision-Date: 2009-02-25 23:14+0100\n" "Last-Translator: Peter Hjalmarsson \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -33,7 +33,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -72,9 +72,8 @@ msgid "Remember password" msgstr "Kom ihåg lösenordet" -#, fuzzy msgid "There are no protocol plugins installed." -msgstr "Det finns inga moduler för protokoll installerade." +msgstr "Det finns inga protokollmoduler installerade." msgid "(You probably forgot to 'make install'.)" msgstr "(Du glömde antagligen att köra 'make install'.)" @@ -464,7 +463,7 @@ msgstr "X.509-certifikatimportering misslyckades" msgid "Select a PEM certificate" -msgstr "Välj et PEM-certifikat" +msgstr "Välj ett PEM-certifikat" #, c-format msgid "" @@ -478,10 +477,10 @@ msgstr "Certifikatsexporteringsfel" msgid "X.509 certificate export failed" -msgstr "X.509-certifikasexportering misslyckades" +msgstr "X.509-certifikatsexportering misslyckades" msgid "PEM X.509 Certificate Export" -msgstr "PEM X.509-certifikasexportering" +msgstr "PEM X.509-certifikatsexportering" #, c-format msgid "Certificate for %s" @@ -551,13 +550,13 @@ "automatically rejoined in the chat when the account reconnects." msgstr "" "Kontot har inaktiverats och du är inte längre med i denna chatt. Du kommer " -"autimatiskt gå med i chatten när kontot återansluts." +"automatiskt gå med i chatten när kontot återansluts." msgid "No such command." msgstr "Finns inget sådant kommando." msgid "Syntax Error: You typed the wrong number of arguments to that command." -msgstr "Syntaxfel: Du skrev fel antal argument till det kommandot." +msgstr "Syntaxfel: Du skrev fel antal argument till det kommandot." msgid "Your command failed for an unknown reason." msgstr "Ditt kommando misslyckades av okänd anledning." @@ -608,7 +607,7 @@ msgstr "Skicka till" msgid "Invite message" -msgstr "Ibjudningsmeddelande" +msgstr "Inbjudningsmeddelande" msgid "Invite" msgstr "Bjud in" @@ -651,7 +650,7 @@ msgstr[1] "Lista över %d användare:\n" msgid "Supported debug options are: version" -msgstr "De felsökningsalternativ som stöds är: version" +msgstr "De felsökningsalternativ som stöds är: version" msgid "No such command (in this context)." msgstr "Det finns inget sådant kommando (i denna kontext)." @@ -700,7 +699,7 @@ msgstr "help <kommando>: Hjälp för ett specifikt kommando." msgid "users: Show the list of users in the chat." -msgstr "users: Visa listan av användare i chatten." +msgstr "users: Visa listan av användare i chatten." msgid "plugins: Show the plugins window." msgstr "plugins: Visa fönstret med insticksmoduler." @@ -878,10 +877,10 @@ msgstr "Systemlogg" msgid "Emails" -msgstr "Epost" +msgstr "Mejl" msgid "You have mail!" -msgstr "Du har ett e-post!" +msgstr "Du har fått mejl!" msgid "Sender" msgstr "Sändare" @@ -896,7 +895,7 @@ msgstr[1] "%s (%s) har %d nya meddelanden." msgid "New Mail" -msgstr "Ny epost" +msgstr "Ny mejl" #, c-format msgid "Info for %s" @@ -946,13 +945,13 @@ msgstr "Modulen behöver laddas före du kan konfigurera den." msgid "No configuration options for this plugin." -msgstr "Ingen konfiguration tillgängliga för denna modul." +msgstr "Inga konfigurationalternativ tillgängliga för denna modul." msgid "Error loading plugin" msgstr "Fel vid inläsning av insticksmodul" msgid "The selected file is not a valid plugin." -msgstr "Den valda filen är inte en giltig instickmodul." +msgstr "Den valda filen är inte en giltig insticksmodul." msgid "" "Please open the debug window and try again to see the exact error message." @@ -961,13 +960,13 @@ "felmeddelandet." msgid "Select plugin to install" -msgstr "Välj en instickmodul att installera" +msgstr "Välj en insticksmodul att installera" msgid "You can (un)load plugins from the following list." msgstr "Du kan (av)läsa moduler från följande lista." msgid "Install Plugin..." -msgstr "Installera instickmodul..." +msgstr "Installera insticksmodul..." msgid "Configure Plugin" msgstr "Konfigurera modul" @@ -1116,7 +1115,7 @@ #, c-format msgid "Unknown pounce event. Please report this!" -msgstr "Okänd atackhändelse. Var snäll och rapportera detta!" +msgstr "Okänd attackhändelse. Var snäll och rapportera detta!" msgid "Based on keyboard use" msgstr "Baserat på tangetbordsanvändning" @@ -1160,7 +1159,6 @@ msgid "Change status to" msgstr "Ändra status till" -#. Conversations msgid "Conversations" msgstr "Konversationer" @@ -1283,7 +1281,7 @@ msgstr "Endast vid tillgänglig" msgid "Only when not available" -msgstr "Edast vid Ej tillgänglig" +msgstr "Endast vid Ej tillgänglig" msgid "Volume(0-100):" msgstr "Volym(0-100):" @@ -1401,7 +1399,7 @@ "When the gnt clipboard contents change, the contents are made available to " "X, if possible." msgstr "" -"När innehållet i gnt klippboken ändras görs innehållet tillgänligt för X, " +"När innehållet i gnt klippboken ändras görs innehållet tillgängligt för X, " "när det är möjligt." #, c-format @@ -1456,7 +1454,7 @@ msgstr "Konversation med %s på %s:
" msgid "History Plugin Requires Logging" -msgstr "Historikinstiksmodulen kräver loggning" +msgstr "Historikinsticksmodulen kräver loggning" msgid "" "Logging can be enabled from Tools -> Preferences -> Logging.\n" @@ -1482,7 +1480,6 @@ "När en ny konversation öppnas kommer denna insticksmodul att lägga till den " "föregående konversationen i den nuvarande." -#, c-format msgid "Online" msgstr "Ansluten" @@ -1556,7 +1553,7 @@ msgstr "Fyll i alla fält fullständigt." msgid "Original password" -msgstr "Ursprugligt lösenord" +msgstr "Ursprungligt lösenord" msgid "New password" msgstr "Nytt lösenord" @@ -1829,7 +1826,7 @@ #, c-format msgid "Resolver process exited without answering our request" -msgstr "" +msgstr "Uppslagningsprocessen avslutades utan att besvara våran förfrågan" #, c-format msgid "Thread creation failure: %s" @@ -1859,7 +1856,7 @@ "Error accessing %s: \n" "%s.\n" msgstr "" -"Fel vid försök att nå %s: \n" +"Fel vid försök att nå %s: \n" "%s.\n" msgid "Directory is not writable." @@ -1917,7 +1914,6 @@ msgid "Transfer of file %s complete" msgstr "Överföringen av filen %s är färdig" -#, c-format msgid "File transfer complete" msgstr "Filöverföringen slutfördes" @@ -1925,7 +1921,6 @@ msgid "You canceled the transfer of %s" msgstr "Du avbröt överföringen av %s" -#, c-format msgid "File transfer cancelled" msgstr "Filöverföringen avbröts" @@ -1999,42 +1994,42 @@ msgid "" "True if the command specified in the \"command\" key should handle \"aim\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"aim\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"aim\" URLer" msgid "" "True if the command specified in the \"command\" key should handle \"gg\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"gg\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"gg\" URLer" msgid "" "True if the command specified in the \"command\" key should handle \"icq\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"icq\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"icq\" URLer" msgid "" "True if the command specified in the \"command\" key should handle \"irc\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"irc\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"irc\" URLer" msgid "" "True if the command specified in the \"command\" key should handle \"msnim\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"msnim\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"msnim\" URLer" msgid "" "True if the command specified in the \"command\" key should handle \"sip\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"sip\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"sip\" URLer" msgid "" "True if the command specified in the \"command\" key should handle \"xmpp\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"xmpp\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"xmpp\" URLer" msgid "" "True if the command specified in the \"command\" key should handle \"ymsgr\" " "URLs." -msgstr "Sant om kommandot i nykeln \"kommando\" ska hantera \"ymsgr\" URLer" +msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"ymsgr\" URLer" msgid "" "True if the command used to handle this type of URL should be run in a " @@ -2116,13 +2111,12 @@ msgid "You are using %s, but this plugin requires %s." msgstr "Du använder %s men denna modul behöver %s." -#, c-format msgid "This plugin has not defined an ID." msgstr "Insticksmodulen har inte definierat ett ID." #, c-format msgid "Plugin magic mismatch %d (need %d)" -msgstr "Modulmagi atchar inte %d (behöver %d)" +msgstr "Modulmagi matchar inte %d (behöver %d)" #, c-format msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" @@ -2521,7 +2515,7 @@ "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 " +"klienter. För närvarande inkluderar detta Adium, MSN Messenger, och " "Trillian.\n" "\n" "VARNING: Denna modul är fortfarande alpha-kod och kan krasha ofta. Använd på " @@ -2576,7 +2570,7 @@ "pounce from the `Buddy Pounce' dialog." msgstr "" "Resten av meddelanden kommer sparas som notifieringar. Du kan ändra/ta bort " -"notifieringarna från `Kompisnotifieringar'-dialogen." +"notifieringarna från `Kompisnotifieringar' dialogen." #, c-format msgid "" @@ -2587,11 +2581,11 @@ "som en notifiering och skicka dem automatiskt när \"%s\" ansluter igen?" msgid "Offline Message" -msgstr "Frånkopplade meddeladen" +msgstr "Frånkopplade meddelanden" msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog" msgstr "" -"Du kan ändra/ta bort notifieringarna från `Kompisnotifieringar'-dialogen" +"Du kan ändra/ta bort notifieringarna från `Kompisnotifieringar' dialogen" msgid "Yes" msgstr "Ja" @@ -2671,7 +2665,7 @@ #. *< priority #. *< id msgid "Simple Plugin" -msgstr "Enken insticksmodul" +msgstr "Enkel insticksmodul" # Det ska inte vara "Testar" eler "Test" här? # Jag tror Testar blir mer korrekt, ja. @@ -2796,7 +2790,7 @@ "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, " "install ActiveTCL from http://www.activestate.com\n" msgstr "" -"Kunde inte finna en installation av ActiveTCL. Om du tänker använda TCL-" +"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" msgid "" @@ -2813,7 +2807,6 @@ "Unable to establish connection with the local mDNS server. Is it running?" msgstr "Kunde inte skapa en anslutning via den lokala mDNS-servern. Körs den?" -#. Creating the options for the protocol msgid "First name" msgstr "Förnamn" @@ -2845,6 +2838,10 @@ msgid "Purple Person" msgstr "Purple person" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "Lokal port" + msgid "Bonjour" msgstr "Bonjour" @@ -3011,7 +3008,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "Frånvarande" @@ -3916,7 +3912,6 @@ msgid "Extended Away" msgstr "Utökad frånvaro" -#, c-format msgid "Do Not Disturb" msgstr "Stör inte" @@ -3935,7 +3930,7 @@ "Each field supports wild card searches (%)" msgstr "" "Hitta en kontakt genom att ange sökkriteriet i de givna fälten. Notera: Alla " -"fälten stödjer wild card sökningar (%)" +"fälten stödjer wild card-sökningar (%)" msgid "Directory Query Failed" msgstr "Katalogförfrågning misslyckades" @@ -4151,6 +4146,9 @@ msgid "Re-initializing Stream" msgstr "Återinitierar flöde" +msgid "Server doesn't support blocking" +msgstr "Servern stödjer inte blockering" + msgid "Not Authorized" msgstr "Inte auktoriserad" @@ -4227,7 +4225,7 @@ msgstr "Lösenord (igen)" msgid "Change XMPP Password" -msgstr "Byt XMPP-lösenord" +msgstr "Byt XMPP lösenord" msgid "Please enter your new password" msgstr "Ange ditt nya lösenord" @@ -4237,7 +4235,7 @@ #. if (js->protocol_options & CHANGE_PASSWORD) { msgid "Change Password..." -msgstr "Byt lösenord..." +msgstr "Byt lösenor..." #. } msgid "Search for Users..." @@ -4539,7 +4537,6 @@ #. this should probably be part of global smiley theme settings later on, #. shared with MSN -#, fuzzy msgid "Show Custom Smileys" msgstr "Visa egna smileys" @@ -4564,7 +4561,7 @@ msgstr "Leverans av meddelande till %s misslyckades: %s" msgid "XMPP Message Error" -msgstr "XMPP-meddelandefel" +msgstr "XMPP meddelandefel" #, c-format msgid "(Code %s)" @@ -4618,7 +4615,7 @@ #, c-format msgid "Unable to send file to %s, not subscribed to user presence" msgstr "" -"Kan inte skicka filen till %s, prenumrerar inte på användartillgänglighet" +"Kan inte skicka filen till %s, prenumererar inte på användartillgänglighet" #, c-format msgid "Please select the resource of %s to which you would like to send a file" @@ -4661,8 +4658,18 @@ msgid "Select an action" msgstr "Välj en handling" -msgid "Unable to retrieve MSN Address Book" -msgstr "Kunde inte hämta MSN-adressbok" +#. only notify the user about problems adding to the friends list +#. * maybe we should do something else for other lists, but it probably +#. * won't cause too many problems if we just ignore it +#, c-format +msgid "Unable to add \"%s\"." +msgstr "Kunde inte lägga till \"%s\"." + +msgid "Buddy Add error" +msgstr "" + +msgid "The username specified does not exist." +msgstr "Den angivna användarnamnet finns inte." #, c-format msgid "Buddy list synchronization issue in %s (%s)" @@ -4895,7 +4902,6 @@ msgid "Passport account not yet verified" msgstr "Passkonto ännu inte verifierat" -#, c-format msgid "Passport account suspended" msgstr "Passport-kontot är avstängt" @@ -4911,13 +4917,11 @@ msgid "MSN Error: %s\n" msgstr "MSN-fel: %s\n" -#, fuzzy msgid "Other Contacts" -msgstr "Föredragen kontakt" - -#, fuzzy +msgstr "Andra kontakter" + msgid "Non-IM Contacts" -msgstr "Ta bort kontakt" +msgstr "Icke-IM kontakter" msgid "Nudge" msgstr "Vibba" @@ -4981,7 +4985,7 @@ "MSN-servrarna blockerar för tillfället följande reguljära uttryck:
%s" msgid "This account does not have email enabled." -msgstr "Detta kontot har inte epost aktiverat." +msgstr "Detta kontot har inte mejl aktiverat." msgid "Send a mobile message." msgstr "Skicka ett mobilmeddelande." @@ -4989,6 +4993,12 @@ msgid "Page" msgstr "Sök" +msgid "Playing a game" +msgstr "Spelar ett spel" + +msgid "Working" +msgstr "Arbetar" + msgid "Has you" msgstr "Har dig" @@ -5025,6 +5035,12 @@ msgid "Album" msgstr "Album" +msgid "Game Title" +msgstr "Speltitel" + +msgid "Office Title" +msgstr "Kontorstitel" + msgid "Set Friendly Name..." msgstr "Ange smeknamn..." @@ -5063,7 +5079,7 @@ msgstr "Kunde inte ansluta till servern." msgid "Error retrieving profile" -msgstr "Fel vid hämtninga av profil" +msgstr "Fel vid hämtning av profil" msgid "General" msgstr "Allmänt" @@ -5217,8 +5233,8 @@ "Kunde inte hitta någon information i användarens profil. Användaren " "existerar troligen inte." -msgid "Profile URL" -msgstr "Profil-URL" +msgid "View web profile" +msgstr "Visa webbprofil" #. *< type #. *< ui_requirement @@ -5273,9 +5289,8 @@ msgid "Unable to add user" msgstr "Kan inte lägga till användaren" -#, fuzzy msgid "The following users are missing from your addressbook" -msgstr "Din sökning gav följande resultat" +msgstr "De följande användarna saknas i din adressbok" #, c-format msgid "Unable to add user on %s (%s)" @@ -5348,10 +5363,9 @@ msgstr "" "Meddelandet kunde inte skickas eftersom meddelandena skickades för snabbt." -#, fuzzy msgid "Message was not sent because an unknown encoding error occurred." msgstr "" -"Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod:" +"Meddelandet skickades inte på grund av att ett okänt kodningsfel uppstod." msgid "Message was not sent because an unknown error occurred." msgstr "" @@ -5384,7 +5398,7 @@ 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." +msgstr "MSN-sernvern är temporärt otillgänglig. Var god försök igen senare." msgid "The MSN servers are going down temporarily." msgstr "MSN-servern går ner temporärt." @@ -5396,7 +5410,7 @@ msgid "" "Your MSN buddy list is temporarily unavailable. Please wait and try again." msgstr "" -"Din MSN-kompislista är otillgänglig temporärt. Var god försök igen senare." +"Din MSN-kompislista är otillgänglig temporärt. Var god försök igen senare." msgid "Handshaking" msgstr "Handskakning" @@ -5464,20 +5478,11 @@ msgid "%s has removed you from his or her buddy list." msgstr "%s har tagit bort dig från sin kontaktlista." -#, fuzzy msgid "Delete Buddy from Address Book?" -msgstr "Lägg till i adressboken" - -#, fuzzy +msgstr "Ta bort kompisen från adressboken?" + msgid "Do you want to delete this buddy from your address book as well?" -msgstr "Vill du lägga till den här kompisen till din kompislista?" - -#. only notify the user about problems adding to the friends list -#. * maybe we should do something else for other lists, but it probably -#. * won't cause too many problems if we just ignore it -#, c-format -msgid "Unable to add \"%s\"." -msgstr "Kunde inte lägga till \"%s\"." +msgstr "Vill du även ta bort denna kompisen från din adressbok?" msgid "The username specified is invalid." msgstr "Den angivna användarnamnet är ogiltigt." @@ -5485,6 +5490,9 @@ msgid "This Hotmail account may not be active." msgstr "Detta Hotmail-konto är kanske inte aktivt." +msgid "Profile URL" +msgstr "Profil-URL" + #. *< type #. *< ui_requirement #. *< flags @@ -5498,18 +5506,12 @@ msgid "MSN Protocol Plugin" msgstr "Insticksmodul för MSN-protokollet" -msgid "Missing Cipher" -msgstr "Chiffer Saknas" - -msgid "The RC4 cipher could not be found" -msgstr "RC4-chiffret kan inte hittas" - -msgid "" -"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " -"not be loaded." -msgstr "" -"Uppgradera till en version av libpurble med RC4-stöd (>= 2.0.1). MySpaceIM-" -"insticksmodulen kommer inte läsas in." +#, c-format +msgid "No such user: %s" +msgstr "Ingen sådan användare: %s" + +msgid "User lookup" +msgstr "Användarsökning" msgid "Reading challenge" msgstr "Läser challenge" @@ -5520,11 +5522,17 @@ msgid "Logging in" msgstr "Loggar in" -#, c-format -msgid "Connection to server lost (no data received within %d second)" -msgid_plural "Connection to server lost (no data received within %d seconds)" -msgstr[0] "Anslutning till servern tappad (ingen data mottagen på %d sekund)" -msgstr[1] "Anslutning till servern tappad (ingen data mottagen på %d sekunder)" +msgid "MySpaceIM - No Username Set" +msgstr "MySpaceIM - Inget användarnamn angett" + +msgid "You appear to have no MySpace username." +msgstr "Du verkar inte ha något användarnamn hos MySpace." + +msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)" +msgstr "Vill du ange ett nu? (Obs: DETTA KAN INTE ÄNDRAS!)" + +msgid "Lost connection with server" +msgstr "Tappade anslutningen till servern" #. Can't write _()'d strings in array initializers. Workaround. msgid "New mail messages" @@ -5545,14 +5553,25 @@ msgid "MySpace" msgstr "MySpace" -msgid "MySpaceIM - No Username Set" -msgstr "MySpaceIM - Inget användarnamn angett" - -msgid "You appear to have no MySpace username." -msgstr "Du verkar inte ha något användarnamn hos MySpace." - -msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)" -msgstr "Vill du ange ett nu? (Obs: DETTA KAN INTE ÄNDRAS!)" +msgid "IM Friends" +msgstr "Snabbmeddelandevänner" + +#, c-format +msgid "" +"%d buddy was added or updated from the server (including buddies already on " +"the server-side list)" +msgid_plural "" +"%d buddies were added or updated from the server (including buddies already " +"on the server-side list)" +msgstr[0] "" +"%d vän lades till eller uppdaterades av servern (inklusive vänner som redan " +"fanns på serverns lista)" +msgstr[1] "" +"%d vänner lades till eller uppdaterades av servern (inklusive vänner som " +"redan fanns på serverns lista)" + +msgid "Add contacts from server" +msgstr "Lägg till kontakter från server" #. The session is now set up, ready to be connected. This emits the #. * signedOn signal, so clients can now do anything with msimprpl, and @@ -5579,33 +5598,6 @@ msgid "MySpaceIM Error" msgstr "MySpaceIM-fel" -# Vad säger att det är till just en chatt kompisen ska läggas till? -msgid "Failed to add buddy" -msgstr "Kunde inte lägga till kompis" - -msgid "'addbuddy' command failed." -msgstr "'addbuddy'-kommandot misslyckades." - -# Vet inte vad den gör, mycket öppen för förslag från någon som vet MySpaceIM. -msgid "persist command failed" -msgstr "'persist'-kommandot misslyckades" - -#, c-format -msgid "No such user: %s" -msgstr "Ingen sådan användare: %s" - -msgid "User lookup" -msgstr "Användarsökning" - -msgid "Failed to remove buddy" -msgstr "Kunde inte ta bort kompis från chatt" - -msgid "'delbuddy' command failed" -msgstr "'delbuddy'-kommadot misslyckades" - -msgid "blocklist command failed" -msgstr "'blocklist'-kommandot misslyckades" - msgid "Invalid input condition" msgstr "Ogiltigt inmatningsvillkor" @@ -5619,25 +5611,38 @@ msgid "Couldn't connect to host: %s (%d)" msgstr "Kunde inte ansluta till värd: %s (%d)" -msgid "IM Friends" -msgstr "Snabbmeddelandevänner" - -#, c-format -msgid "" -"%d buddy was added or updated from the server (including buddies already on " -"the server-side list)" -msgid_plural "" -"%d buddies were added or updated from the server (including buddies already " -"on the server-side list)" -msgstr[0] "" -"%d vän lades till eller uppdaterades av servern (inklusive vänner som redan " -"fanns på serverns lista)" -msgstr[1] "" -"%d vänner lades till eller uppdaterades av servern (inklusive vänner som " -"redan fanns på serverns lista)" - -msgid "Add contacts from server" -msgstr "Lägg till kontakter från server" +# Vad säger att det är till just en chatt kompisen ska läggas till? +msgid "Failed to add buddy" +msgstr "Kunde inte lägga till kompis" + +msgid "'addbuddy' command failed." +msgstr "'addbuddy'-kommandot misslyckades." + +# Vet inte vad den gör, mycket öppen för förslag från någon som vet MySpaceIM. +msgid "persist command failed" +msgstr "'persist'-kommandot misslyckades" + +msgid "Failed to remove buddy" +msgstr "Kunde inte ta bort kompis från chatt" + +msgid "'delbuddy' command failed" +msgstr "'delbuddy'-kommadot misslyckades" + +msgid "blocklist command failed" +msgstr "'blocklist'-kommandot misslyckades" + +msgid "Missing Cipher" +msgstr "Chiffer Saknas" + +msgid "The RC4 cipher could not be found" +msgstr "RC4-chiffret kan inte hittas" + +msgid "" +"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " +"not be loaded." +msgstr "" +"Uppgradera till en version av libpurble med RC4-stöd (>= 2.0.1). MySpaceIM-" +"insticksmodulen kommer inte läsas in." msgid "Add friends from MySpace.com" msgstr "Lägg till vänner från MySpace.com" @@ -5681,9 +5686,6 @@ msgid "User" msgstr "Användare" -msgid "Profile" -msgstr "Profil" - msgid "Headline" msgstr "Rubrik" @@ -5696,17 +5698,6 @@ msgid "Client Version" msgstr "Klientversion" -#. Protocol won't log in now without a username set.. Disconnect -msgid "No username set" -msgstr "Inget användarnamn angett" - -msgid "MySpaceIM - Please Set a Username" -msgstr "MySpaceIM - Var vänlig ange ett användarnamn" - -msgid "Please enter a username to check its availability:" -msgstr "" -"Var vänlig ange ett användarnamn för att undersöka dess tillgänglighet." - msgid "MySpaceIM - Username Available" msgstr "MySpaceIM - Användarnamnet är tillgänglig" @@ -5716,12 +5707,23 @@ msgid "ONCE SET, THIS CANNOT BE CHANGED!" msgstr "OM EN GÅNG ANGETT GÅR DET INTE ATT ÄNDRA!" +msgid "MySpaceIM - Please Set a Username" +msgstr "MySpaceIM - Var vänlig ange ett användarnamn" + msgid "This username is unavailable." msgstr "Detta användarnamn är inte tillgängligt." msgid "Please try another username:" msgstr "Var vänlig försök med ett annat användarnamn:" +#. Protocol won't log in now without a username set.. Disconnect +msgid "No username set" +msgstr "Inget användarnamn angett" + +msgid "Please enter a username to check its availability:" +msgstr "" +"Var vänlig ange ett användarnamn för att undersöka dess tillgänglighet." + #. TODO: icons for each zap #. Lots of comments for translators: #. Zap means "to strike suddenly and forcefully as if with a @@ -5860,7 +5862,7 @@ msgstr "" msgid "Required parameters not passed in" -msgstr "Nödvändiga parametrar passade inte in" +msgstr "Nödvändiga parametrar skickades inte" msgid "Unable to write to network" msgstr "Kan inte skriva till nätverk" @@ -5878,7 +5880,7 @@ msgstr "Konferensen finns inte" msgid "A folder with that name already exists" -msgstr "En katalog med det namnet finn redan" +msgstr "En katalog med det namnet finns redan" msgid "Not supported" msgstr "Ej stödd" @@ -6108,7 +6110,6 @@ msgid "Error. SSL support is not installed." msgstr "Fel. SSL-stöd är inte installerat." -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "Denna konferens har stängts. Inga fler meddelande kan bli skickade." @@ -6209,7 +6210,7 @@ "IM. Try using file transfer instead.\n" msgstr "" "%s försöker sända dig en %s-fil, men vi tillåter bara filer upp till %s över " -"Diektanslutning. Försök som filöverföring istället.\n" +"Direktanslutning. Försök som filöverföring istället.\n" #, c-format msgid "File %s is %s, which is larger than the maximum size of %s." @@ -6373,23 +6374,18 @@ msgid "Screen Sharing" msgstr "Skärmdelning" -#, c-format msgid "Free For Chat" msgstr "Tillgänglig för chatt" -#, c-format msgid "Not Available" msgstr "Ej tillgänglig" -#, c-format msgid "Occupied" msgstr "Upptagen" -#, c-format msgid "Web Aware" msgstr "Webbmedveten" -#, c-format msgid "Invisible" msgstr "Osynlig" @@ -6436,7 +6432,7 @@ "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 epostadress eller starta med " +"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." @@ -6491,12 +6487,10 @@ msgstr "_OK" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Du kanske snart blir frånkopplad, du kanske ska använda TOC tills detta är " -"fixat. Kolla på %s efter uppdateringar." +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"Du kanske snart blir frånkopplad. I så fall kan du kolla på %s efter " +"uppdateringar." msgid "Unable to get a valid AIM login hash." msgstr "Kunde inte hämta en giltig AIM-inloggnings-hash." @@ -6515,7 +6509,7 @@ msgstr "Kan inte skapa anslutning" msgid "Please authorize me so I can add you to my buddy list." -msgstr "Användaren vill lägga till dig i dennes kompislista." +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:" @@ -6586,7 +6580,7 @@ #, c-format msgid "ICQ user %u has sent you a buddy: %s (%s)" -msgstr "ICQ-användaren %u har skickat dig en kompis: %s (%s)" +msgstr "ICQ-användaren %u har skickat dig en kompis: %s (%s)" msgid "Do you want to add this buddy to your buddy list?" msgstr "Vill du lägga till den här kompisen till din kompislista?" @@ -6668,6 +6662,9 @@ msgid "Member Since" msgstr "Medlem sedan" +msgid "Profile" +msgstr "Profil" + msgid "Your AIM connection may be lost." msgstr "Din anslutning kan vara borta." @@ -6742,7 +6739,7 @@ "from the original." msgstr "" "Fel 0x%04x: Kan inte formatera användarnamnet eftersom det begärda namnet " -"skiljer sig från orginalet." +"skiljer sig från originalet." #, c-format msgid "Error 0x%04x: Unable to format username because it is invalid." @@ -6854,15 +6851,13 @@ "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 epost-adress, börja med en " +"Användarnamnet måste antingen vara en giltig mejladress, börja med en " "bokstav och endast innehålla bokstäver, siffror och mellanslag eller bara " "innehålla siffror." -#, fuzzy msgid "Unable to Add" -msgstr "Kan inte lägga till" - -#, fuzzy +msgstr "Kunde inte lägga till" + msgid "Unable to Retrieve Buddy List" msgstr "Kunde inte hämta kompislista" @@ -6962,6 +6957,7 @@ msgid "Get AIM Info" msgstr "Hämta AIM-info" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "Ändra kompiskommentar" @@ -7004,7 +7000,7 @@ "You can re-request authorization from these buddies by right-clicking on " "them and selecting \"Re-request Authorization.\"" msgstr "" -"Du kan begära auktorisering igen från dessa kompisar genom att högerkilcka " +"Du kan begära auktorisering igen från dessa kompisar genom att högerklicka " "på dem och välja \"Begär auktorisering igen.\"" msgid "Find Buddy by Email" @@ -7037,10 +7033,10 @@ msgstr "Bekräfta konto" msgid "Display Currently Registered Email Address" -msgstr "Visa för tillfället registrerad epost-adress" +msgstr "Visa för tillfället registrerad mejladress" msgid "Change Currently Registered Email Address..." -msgstr "Ändra för tillfället registrerad epost-adress..." +msgstr "Ändra för tillfället registrerad mejladress..." msgid "Show Buddies Awaiting Authorization" msgstr "Visa kompisar som väntar på auktorisering" @@ -7071,7 +7067,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "Försöker ansluta till %s: %hu." -#, c-format msgid "Attempting to connect via proxy server." msgstr "Försöker ansluta via en proxy-server." @@ -7089,7 +7084,7 @@ "betraktas som en säkerhetsrisk." msgid "Aquarius" -msgstr "Vattuman" +msgstr "Vattumanen" msgid "Pisces" msgstr "Fiskarna" @@ -7098,16 +7093,16 @@ msgstr "Stenbocken" msgid "Taurus" -msgstr "Oxen" +msgstr "Oxe" msgid "Gemini" -msgstr "Tvillingen" +msgstr "Tvillingarna" msgid "Cancer" msgstr "Kräftan" msgid "Leo" -msgstr "Lejon" +msgstr "Lejonet" msgid "Virgo" msgstr "Jungfrun" @@ -7163,16 +7158,14 @@ msgid "Other" msgstr "Annan" -#, fuzzy msgid "Visible" -msgstr "Osynlig" - -msgid "Firend Only" -msgstr "" - -#, fuzzy +msgstr "Synlig" + +msgid "Friend Only" +msgstr "Enbart vänner" + msgid "Private" -msgstr "Spärrlista" +msgstr "Privat" msgid "QQ Number" msgstr "QQ-nummer" @@ -7189,9 +7182,8 @@ msgid "Phone Number" msgstr "Telefonnummer" -#, fuzzy msgid "Authorize adding" -msgstr "Auktorisera kompis?" +msgstr "Auktorisera " msgid "Cellphone Number" msgstr "Mobilnummer" @@ -7199,132 +7191,108 @@ msgid "Personal Introduction" msgstr "Personlig introduktion" -#, fuzzy msgid "City/Area" -msgstr "Stad" - -#, fuzzy +msgstr "Stad/Område" + msgid "Publish Mobile" -msgstr "Personlig mobil" - -#, fuzzy +msgstr "Publisera mobil" + msgid "Publish Contact" -msgstr "Kontaktalias" +msgstr "Publisera kontakt" msgid "College" msgstr "Universitet" -#, fuzzy msgid "Horoscope" -msgstr "Horoskopstecken" - -#, fuzzy +msgstr "Horoskop" + msgid "Zodiac" -msgstr "Stjärntecken" - -#, fuzzy +msgstr "Zodiak" + msgid "Blood" -msgstr "Blockerad" - -#, fuzzy +msgstr "Blod" + msgid "True" -msgstr "Oxen" - -#, fuzzy +msgstr "Sann" + msgid "False" -msgstr "Misslyckades" - -#, fuzzy +msgstr "Falsk" + msgid "Modify Contact" -msgstr "Ändra konto" - -#, fuzzy +msgstr "Ändra kontakt" + msgid "Modify Address" -msgstr "Hemadress" - -#, fuzzy +msgstr "Ändra adress" + msgid "Modify Extended Information" -msgstr "Ändra min information" - -#, fuzzy +msgstr "Ändra utökad information" + msgid "Modify Information" -msgstr "Ändra min information" - -#, fuzzy +msgstr "Ändra information" + msgid "Update" -msgstr "Senast uppdaterad" - -#, fuzzy +msgstr "Uppdatera" + msgid "Could not change buddy information." -msgstr "Fel då kompisen skulle läggas till" - -#, c-format -msgid "%d needs Q&A" -msgstr "" - -#, fuzzy -msgid "Add buddy Q&A" -msgstr "Lägg till kompis" - -#, fuzzy -msgid "Input answer here" -msgstr "Inmatningsförfrågan här" +msgstr "Kunde inte ändra kompisinformationen." + +#, c-format +msgid "%u requires verification" +msgstr "%u kräver verifikation" + +msgid "Add buddy question" +msgstr "Lägg till kompisfråga" + +msgid "Enter answer here" +msgstr "Ange ett svar här" msgid "Send" msgstr "Skicka" -#, fuzzy msgid "Invalid answer." -msgstr "Ogiltigt användarnamn" +msgstr "Ogiltigt svar." msgid "Authorization denied message:" msgstr "Auktoriserings nekelsemeddelande:" -#, fuzzy -msgid "Sorry, You are not my style." +msgid "Sorry, you're not my style." msgstr "Tyvärr, du är inte min typ..." -#, fuzzy, c-format -msgid "%d needs authentication" -msgstr "Användaren %d behöver autentisering" - -#, fuzzy +#, c-format +msgid "%u needs authorization" +msgstr "%u behöver autentisering" + msgid "Add buddy authorize" -msgstr "Lägg till kompisen i din lista?" - -msgid "Input request here" -msgstr "Inmatningsförfrågan här" +msgstr "Lägg till kompisgodkänning" + +msgid "Enter request here" +msgstr "Ange förfrågan här" msgid "Would you be my friend?" msgstr "Vill du bli min vän?" -#, fuzzy msgid "QQ Buddy" -msgstr "Kompis" - -#, fuzzy +msgstr "QQ Kompis" + msgid "Add buddy" msgstr "Lägg till kompis" -#, fuzzy msgid "Invalid QQ Number" -msgstr "Ogiltigt QQ-ansikte" - -#, fuzzy +msgstr "Ogiltigt QQ-nummer" + msgid "Failed sending authorize" -msgstr "Snälla auktorisera mig!" - -#, fuzzy, c-format -msgid "Failed removing buddy %d" -msgstr "Kunde inte ta bort kompis från chatt" - -#, fuzzy, c-format +msgstr "Misslyckades med att skicka auktorisering" + +#, c-format +msgid "Failed removing buddy %u" +msgstr "Misslyckades med att ta bort kompisen %u" + +#, c-format msgid "Failed removing me from %d's buddy list" -msgstr "%s har tagit bort dig från sin kontaktlista." - -#, fuzzy +msgstr "Misslyckades med att ta bort mig från %d's kompislista" + msgid "No reason given" -msgstr "Ingen motivering angiven." +msgstr "Ingen motivering angavs." #. only need to get value #, c-format @@ -7334,9 +7302,9 @@ msgid "Would you like to add him?" msgstr "Vill du lägga till honom?" -#, fuzzy, c-format +#, c-format msgid "Rejected by %s" -msgstr "Avslå" +msgstr "Avslagen av %s" #, c-format msgid "Message: %s" @@ -7351,135 +7319,123 @@ msgid "QQ Qun" msgstr "QQ Qun" -#, fuzzy msgid "Please enter Qun number" -msgstr "Ange det nya namnet för %s" - -#, fuzzy +msgstr "Ange Qun-numret" + msgid "You can only search for permanent Qun\n" -msgstr "Du kan enbart söka efter permanenta QQ-grupper\n" - -#, fuzzy +msgstr "Du kan enbart söka efter permanenta Qun\n" + +msgid "(Invalid UTF-8 string)" +msgstr "(Felaktig UTF-8-sträng)" + msgid "Not member" -msgstr "Jag är inte en medlem" +msgstr "Inte medlem" msgid "Member" msgstr "Medlem" -#, fuzzy msgid "Requesting" -msgstr "Förfrågningsdialog" - -#, fuzzy +msgstr "Efterfrågar" + msgid "Admin" -msgstr "Adium" - -#, fuzzy +msgstr "Admin" + msgid "Notice" msgstr "Notering" -#, fuzzy msgid "Detail" -msgstr "Förval" +msgstr "Detaljer" msgid "Creator" msgstr "Skapare" -#, fuzzy msgid "About me" -msgstr "Om %s" - -#, fuzzy +msgstr "Om mig" + msgid "Category" -msgstr "Chattfel" - -#, fuzzy +msgstr "Kategori" + msgid "The Qun does not allow others to join" -msgstr "Denna gruppen tillåter inte andra att gå med" - -#, fuzzy +msgstr "Detta Qun tillåter inte andra att gå med" + msgid "Join QQ Qun" -msgstr "Anslut till chatt" - -#, c-format -msgid "Successfully joined Qun %s (%d)" -msgstr "" - -#, fuzzy +msgstr "Gå med QQ Qun" + +msgid "Input request here" +msgstr "Inmatningsförfrågan här" + +#, c-format +msgid "Successfully joined Qun %s (%u)" +msgstr "Lyckades med att gå med i Qun %s (%u)" + msgid "Successfully joined Qun" -msgstr "Du har problemfritt ändrat Qun-medlemmen" - -#, c-format -msgid "Qun %d denied to join" -msgstr "" +msgstr "Lyckades ned att gå med i Qun" + +#, c-format +msgid "Qun %u denied from joining" +msgstr "Qun %u nekades att gå med" msgid "QQ Qun Operation" msgstr "QQ Qun-operation" -#, fuzzy msgid "Failed:" -msgstr "Misslyckades" - -msgid "Join Qun, Unknow Reply" -msgstr "" - -#, fuzzy +msgstr "Misslyckades:" + +msgid "Join Qun, Unknown Reply" +msgstr "Gick med i Qun, Okänt svar" + msgid "Quit Qun" -msgstr "QQ Qun" +msgstr "Avsluta Qun" msgid "" "Note, if you are the creator, \n" "this operation will eventually remove this Qun." msgstr "" "Notera att om du är skaparen, \n" -"denna operation kommer till slut ta bort detta Qun." - -#, fuzzy -msgid "Sorry, you are not our style ..." -msgstr "Tyvärr, du är inte min typ..." - -#, fuzzy -msgid "Successfully changed Qun member" -msgstr "Du har problemfritt ändrat Qun-medlemmen" - -#, fuzzy +"kommer denna operation till slut ta bort detta Qun." + +msgid "Sorry, you are not our style" +msgstr "Tyvärr, du är inte vår typ" + +msgid "Successfully changed Qun members" +msgstr "Lyckades med att ändra Qun-medlemmar" + msgid "Successfully changed Qun information" -msgstr "Du har problemfritt ändrat Qun-informationen" +msgstr "Lyckades ändra Qun-informationen" msgid "You have successfully created a Qun" msgstr "Du har problemfritt skapat ett Qun" -#, fuzzy -msgid "Would you like to set detailed information now?" -msgstr "Vill du ange Qun-detaljerna nu?" +msgid "Would you like to set up detailed information now?" +msgstr "Vill du ange detaljerad information nu?" # Osäker msgid "Setup" msgstr "Ange" -#, fuzzy, c-format -msgid "%d requested to join Qun %d for %s" -msgstr "Användaren %d har ansökt om att få gå med i grupp %d" - -#, fuzzy, c-format -msgid "%d request to join Qun %d" -msgstr "Användaren %d har ansökt om att få gå med i grupp %d" - -#, fuzzy, c-format -msgid "Failed to join Qun %d, operated by admin %d" -msgstr "Kunde inte ansluta kompis till chatt" - -#, c-format -msgid "Joining Qun %d is approved by admin %d for %s" -msgstr "" - -#, fuzzy, c-format -msgid "Removed buddy %d." -msgstr "Ta bort kompis" - -#, c-format -msgid "New buddy %d joined." -msgstr "" +#, c-format +msgid "%u requested to join Qun %u for %s" +msgstr "%u efterfrågade att få gå med i QUN %u för %s" + +#, c-format +msgid "%u request to join Qun %u" +msgstr "%u efterfrågade att få gå med i Qun %u" + +#, c-format +msgid "Failed to join Qun %u, operated by admin %u" +msgstr "Misslyckades med att gå med i QUN %u, administrerad av %u" + +#, c-format +msgid "Joining Qun %u is approved by admin %u for %s" +msgstr "Gå med i Qun %u tilläts av admin %u för %s" + +#, c-format +msgid "Removed buddy %u." +msgstr "Tog bort kompisen %u." + +#, c-format +msgid "New buddy %u joined." +msgstr "Nya kompisen %u gick med." #, c-format msgid "Unknown-%d" @@ -7494,20 +7450,17 @@ msgid " TCP" msgstr "TCP" -#, fuzzy msgid " FromMobile" -msgstr "Mobil" - -#, fuzzy +msgstr "FrånMobil" + msgid " BindMobile" -msgstr "Mobil" +msgstr "BindMobil" msgid " Video" msgstr " Video" -#, fuzzy msgid " Zone" -msgstr "Ingen" +msgstr "Zon" msgid "Flag" msgstr "Flagga" @@ -7518,110 +7471,110 @@ msgid "Invalid name" msgstr "Ogiltigt namn" -#, fuzzy msgid "Select icon..." -msgstr "Välj katalog..." - -#, fuzzy, c-format +msgstr "Välj ikon..." + +#, c-format msgid "Login time: %d-%d-%d, %d:%d:%d
\n" -msgstr "Anslutningsnamn: %s
\n" - -#, fuzzy, c-format +msgstr "Inloggningstid: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "Total Online Buddies: %d
\n" -msgstr "Online just nu: %d
\n" - -#, fuzzy, c-format +msgstr "Kompisar anslutna totalt: %d
\n" + +#, c-format msgid "Last Refresh: %d-%d-%d, %d:%d:%d
\n" -msgstr "Senast uppdatering: %s
\n" - -#, fuzzy, c-format +msgstr "Senast uppdaterad: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "Server: %s
\n" -msgstr "Server: %s: %d
\n" - -#, fuzzy, c-format +msgstr "Server: %s
\n" + +#, c-format msgid "Client Tag: %s
\n" -msgstr "Anslutningsnamn: %s
\n" +msgstr "Klienttagg: %s
\n" #, c-format msgid "Connection Mode: %s
\n" msgstr "Anslutningsläge: %s
\n" -#, fuzzy, c-format +#, c-format msgid "My Internet IP: %s:%d
\n" -msgstr "Anslutningsläge: %s
\n" - -#, fuzzy, c-format +msgstr "Mitt Internet-IP: %s:%d
\n" + +#, c-format msgid "Sent: %lu
\n" -msgstr "Server: %s: %d
\n" - -#, fuzzy, c-format +msgstr "Skickat: %lu
\n" + +#, c-format msgid "Resend: %lu
\n" -msgstr "Senast uppdatering: %s
\n" - -#, fuzzy, c-format +msgstr "Återsänd: %lu
\n" + +#, c-format msgid "Lost: %lu
\n" -msgstr "Senast uppdatering: %s
\n" - -#, fuzzy, c-format +msgstr "Förlorat: %lu
\n" + +#, c-format msgid "Received: %lu
\n" -msgstr "Server: %s: %d
\n" - -#, fuzzy, c-format +msgstr "Mottaget: %lu
\n" + +#, c-format msgid "Received Duplicate: %lu
\n" -msgstr "Mit publika IP: %s
\n" - -#, fuzzy, c-format +msgstr "Mottagna dubletter: %lu
\n" + +#, c-format msgid "Time: %d-%d-%d, %d:%d:%d
\n" -msgstr "Anslutningsnamn: %s
\n" - -#, fuzzy, c-format +msgstr "Tid: %d-%d-%d, %d:%d:%d
\n" + +#, c-format msgid "IP: %s
\n" -msgstr "Server: %s: %d
\n" +msgstr "IP: %s
\n" msgid "Login Information" msgstr "Inloggningsinformation" msgid "

Original Author:
\n" -msgstr "" +msgstr "

Originalförfattare:
\n" msgid "

Code Contributors:
\n" -msgstr "" - -#, fuzzy +msgstr "

Kodbidragsgivare:
\n" + msgid "

Lovely Patch Writers:
\n" -msgstr "Senast uppdatering: %s
\n" - -#, fuzzy +msgstr "

Kärleksfulla patchskrivare:
\n" + msgid "

Acknowledgement:
\n" -msgstr "Server: %s: %d
\n" +msgstr "

Bekräftningar:
\n" + +msgid "

Scrupulous Testers:
\n" +msgstr "

Nogräknade testare:
\n" msgid "

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

Och alla pojkarna i bakrummet...
\n" msgid "Feel free to join us! :)" -msgstr "" - -#, fuzzy, c-format -msgid "About OpenQ r%s" -msgstr "Om %s" - -#, fuzzy +msgstr "Känn dig fri att gå med oss! :)" + +#, c-format +msgid "About OpenQ %s" +msgstr "Om OpenQ %s" + msgid "Change Icon" -msgstr "Spara ikon" +msgstr "Ändra ikon" msgid "Change Password" msgstr "Byt lösenord" -#, fuzzy msgid "Account Information" -msgstr "Inloggningsinformation" +msgstr "Kontoinformation" msgid "Update all QQ Quns" -msgstr "" - -#, fuzzy +msgstr "Updatera alla QQ Quns" + msgid "About OpenQ" -msgstr "Om %s" +msgstr "Om OpenQ" + +msgid "Modify Buddy Memo" +msgstr "Ändra Kompismemo" #. *< type #. *< ui_requirement @@ -7633,59 +7586,48 @@ #. *< version #. * summary #. * description -#, fuzzy msgid "QQ Protocol Plugin" -msgstr "QQ protokoll\tmodul" - -#, fuzzy +msgstr "QQ Protokollplugin" + msgid "Auto" -msgstr "Författare" - -#, fuzzy +msgstr "Auto" + msgid "Select Server" -msgstr "Välj användare" +msgstr "Välj server" msgid "QQ2005" -msgstr "" +msgstr "QQ2005" msgid "QQ2007" -msgstr "" +msgstr "qq2007" msgid "QQ2008" -msgstr "" - -#. #endif -#, fuzzy +msgstr "QQ2008" + msgid "Connect by TCP" msgstr "Ansluter med TCP" -#, fuzzy msgid "Show server notice" -msgstr "Serverport" - -#, fuzzy +msgstr "Visa servernotis" + msgid "Show server news" -msgstr "Serveradress" - -#, fuzzy +msgstr "Visa servernyheter" + +msgid "Show chat room when msg comes" +msgstr "Visa chattrum när meddelanden kommer" + msgid "Keep alive interval (seconds)" -msgstr "Håll vid liv intrevall(er)" - -#, fuzzy +msgstr "Livhållningsintervall (seconds)" + msgid "Update interval (seconds)" -msgstr "Uppdateringsintervall(er)" - -#, fuzzy -msgid "Can not decrypt server reply" -msgstr "Kan inte dekryptera inloggningssvaret" - -#, fuzzy -msgid "Can not decrypt get server reply" -msgstr "Kan inte dekryptera inloggningssvaret" +msgstr "Uppdateringsintervall (seconds)" + +msgid "Cannot decrypt server reply" +msgstr "Kan inte dekryptera serversvaret" #, c-format msgid "Failed requesting token, 0x%02X" -msgstr "" +msgstr "Misslyckades med att efterfråga polett, 0x%02X" #, c-format msgid "Invalid token len, %d" @@ -7693,56 +7635,53 @@ #. extend redirect used in QQ2006 msgid "Redirect_EX is not currently supported" -msgstr "" +msgstr "Redirect_EX stöds inte för tillfället" #. need activation #. need activation #. need activation -#, fuzzy msgid "Activation required" msgstr "Registrering krävs" -#, fuzzy, c-format -msgid "Unknow reply code when login (0x%02X)" -msgstr "Ogiltig polettsvarskod, 0x%02X" - -msgid "Keep alive error" -msgstr "Problem att hålla vid liv" - -#, fuzzy -msgid "Requesting captcha ..." -msgstr "Efterfrågar %s's uppmärksamhet..." - -msgid "Checking code of captcha ..." -msgstr "" - -msgid "Failed captcha verify" -msgstr "" - -#, fuzzy +#, c-format +msgid "Unknown reply code when logging in (0x%02X)" +msgstr "Okänd svarskod vid inloggning (0x%02X)" + +msgid "Could not decrypt server reply" +msgstr "Kan inte avkryptera inloggningssvaret" + +msgid "Requesting captcha" +msgstr "Efterfrågar captcha" + +msgid "Checking captcha" +msgstr "Testar captcha" + +msgid "Failed captcha verification" +msgstr "Misslyckades med captcha-verifikationen" + msgid "Captcha Image" -msgstr "Spara bild" - -#, fuzzy +msgstr "Captcha-bild" + msgid "Enter code" -msgstr "Ange lösenordet" - -msgid "QQ Captcha Verifing" -msgstr "" - -#, fuzzy +msgstr "Ange kod" + +msgid "QQ Captcha Verification" +msgstr "QQ Captcha-verifikation" + msgid "Enter the text from the image" -msgstr "Ange namnet på gruppen" - -#, c-format -msgid "Unknow reply code when checking password (0x%02X)" -msgstr "" - -#, c-format -msgid "" -"Unknow reply code when login (0x%02X):\n" +msgstr "Ange testen från bilden" + +#, c-format +msgid "Unknown reply when checking password (0x%02X)" +msgstr "Okänt svar då lösenordet testades (0x%02X)" + +#, c-format +msgid "" +"Unknown reply code when logging in (0x%02X):\n" "%s" msgstr "" +"Okänd svarskod vid inloggning (0x%02X):\n" +"%s" #. we didn't successfully connect. tdt->toc_fd is valid here msgid "Unable to connect." @@ -7751,14 +7690,6 @@ msgid "Socket error" msgstr "Uttag-fel" -#, c-format -msgid "" -"Lost connection with server:\n" -"%d, %s" -msgstr "" -"Tappade anslutningen med servern:\n" -"%d, %s" - msgid "Unable to read from socket" msgstr "Kan inte läsa från uttag" @@ -7768,81 +7699,74 @@ msgid "Connection lost" msgstr "Anslutningen tappades" -#, fuzzy -msgid "Get server ..." -msgstr "Ändra användarinfo..." - -#, fuzzy -msgid "Request token" -msgstr "Begäran nekad" +msgid "Getting server" +msgstr "Hämtar server" + +msgid "Requesting token" +msgstr "Efterfrågar polett" msgid "Couldn't resolve host" msgstr "Kunde ej slå upp värden" -#, fuzzy msgid "Invalid server or port" -msgstr "Ogiltigt fel" - -#, fuzzy -msgid "Connecting server ..." -msgstr "Anslutningsserver" - -#, fuzzy +msgstr "Ogiltig server eller port" + +msgid "Connecting to server" +msgstr "Ansluter till server" + msgid "QQ Error" -msgstr "QQid-fel" - -msgid "Failed to send IM." -msgstr "Kunde inte skicka snabbmeddelande" - -#, fuzzy, c-format +msgstr "QQ-fel" + +#, c-format msgid "" "Server News:\n" "%s\n" "%s\n" "%s" -msgstr "ICQ-serverrelay" - -#, fuzzy, c-format +msgstr "" +"Servernyheter:\n" +"%s\n" +"%s\n" +"%s" + +#, c-format +msgid "%s:%s" +msgstr "%s:%s" + +#, c-format msgid "From %s:" -msgstr "Från" - -#, fuzzy, c-format +msgstr "Från %s:" + +#, c-format msgid "" "Server notice From %s: \n" "%s" -msgstr "Serverinstruktioner: %s" - -msgid "Unknow SERVER CMD" -msgstr "" - -#, fuzzy, c-format +msgstr "" +"Servernotis från %s:\n" +"%s" + +msgid "Unknown SERVER CMD" +msgstr "Okänd SERVER CMD" + +#, c-format msgid "" "Error reply of %s(0x%02X)\n" -"Room %d, reply 0x%02X" -msgstr "" -"Svarade %s(0x%02X )\n" -"Skickade %s(0x%02X )\n" -"Rum id %d, svarade [0x%02X]: \n" -"%s" - -#, fuzzy +"Room %u, reply 0x%02X" +msgstr "" +"Felaktigt svar av %s(0x%02X)\n" +"Rum %u, svar 0x%02X" + msgid "QQ Qun Command" -msgstr "Kommando" - -#, fuzzy, c-format -msgid "Not a member of room \"%s\"\n" -msgstr "Du är inte medlemm i gruppen \"%s\"\n" - -msgid "Can not decrypt login reply" -msgstr "Kan inte dekryptera inloggningssvaret" - -#, fuzzy -msgid "Unknow LOGIN CMD" -msgstr "Okänd anledning" - -#, fuzzy -msgid "Unknow CLIENT CMD" -msgstr "Okänd anledning" +msgstr "QQ Qun Kommand" + +msgid "Could not decrypt login reply" +msgstr "Kan inte avkryptera inloggningssvaret" + +msgid "Unknown LOGIN CMD" +msgstr "Okänd LOGIN CMD" + +msgid "Unknown CLIENT CMD" +msgstr "Okänd CLIENT CMD" #, c-format msgid "%d has declined the file %s" @@ -8033,7 +7957,7 @@ msgstr "Sametime ID" msgid "An ambiguous user ID was entered" -msgstr "Ett svårförståligt användarid angavs" +msgstr "Ett svårförståeligt användarid angavs" #, c-format msgid "" @@ -8054,8 +7978,8 @@ "The identifier '%s' did not match any users in your Sametime community. This " "entry has been removed from your buddy list." msgstr "" -"Identifieraren '%s' matchar inte någon i din Sametime community. DDDDenna " -"post har blivit borttagen från din kompislista." +"Identifieraren '%s' matchar inte någon i din Sametime community. Denna post " +"har blivit borttagen från din kompislista." #, c-format msgid "" @@ -8114,7 +8038,7 @@ "to your buddy list." msgstr "" "Identifieraren '%s' kan möjligen referera till någon av följande Notes " -"adressböcksgrupper. Var god välj den korrekta gruppen från listan här nedan " +"adressboksgrupper. Var god välj den korrekta gruppen från listan här nedan " "för att lägga till den till din kompislista." msgid "Select Notes Address Book" @@ -8128,7 +8052,7 @@ "The identifier '%s' did not match any Notes Address Book groups in your " "Sametime community." msgstr "" -"Identidieraren '%s' matchade inte någon Notes adressböcksgrupper i din " +"Identidieraren '%s' matchade inte någon Notes adressboksgrupper i din " "Sametime-community." msgid "Notes Address Book Group" @@ -8297,7 +8221,7 @@ #, c-format msgid "The %s buddy is not present in the network" -msgstr "%s kompisenär inte tillgänglig på nätverket" +msgstr "%s kompisen är inte tillgänglig på nätverket" msgid "" "To add the buddy you must import his/her public key. Press Import to import " @@ -8481,7 +8405,7 @@ "channel public keys are set then only users whose public keys are listed are " "able to join." msgstr "" -"Kanal autentisering används för att säkra kanalen från obehörigt tillträde. " +"Kanal-autentisering används för att säkra kanalen från obehörigt tillträde. " "Autentiseringen kan vara baserad på ett lösenord eller en digital signatur. " "Om ett lösenord är valt, då är det nödvändigt för att kunna ansluta. Om " "kanalpublika nycklar är valt kan enbart användare vars publika nycklar är " @@ -8723,10 +8647,10 @@ msgstr "Kan inte hämta serverinformation" msgid "Server Statistics" -msgstr "Serverstatestik" +msgstr "Serverstatistik" msgid "Cannot get server statistics" -msgstr "Kan inte hämta serverstatestik" +msgstr "Kan inte hämta serverstatistik" #, c-format msgid "" @@ -8746,8 +8670,8 @@ "Total server operators: %d\n" "Total router operators: %d\n" msgstr "" -"Lokala serverstarttid: %s\n" -"Lokala serverupptid: %s\n" +"Lokal serverstarttid: %s\n" +"Lokal serverupptid: %s\n" "Lokala serverklienter: %d\n" "Lokala serverkanaler: %d\n" "Lokala serveroperatörer: %d\n" @@ -8763,7 +8687,7 @@ "Totala routeroperatörer: %d\n" msgid "Network Statistics" -msgstr "Nätverksstatestik" +msgstr "Nätverksstatistik" msgid "Ping failed" msgstr "Ping misslyckades" @@ -8823,7 +8747,7 @@ msgstr "_Visa..." msgid "Unsupported public key type" -msgstr "Ej stödd publik nyckeltyp" +msgstr "Ej stödd publik nyckeltyp" msgid "Disconnected by server" msgstr "Frånkopplad av server" @@ -8838,7 +8762,7 @@ "Resuming detached session failed. Press Reconnect to create new connection." msgstr "" "Misslyckades med att återuppta frånskild session. Tryck \"Återanslut\" för " -"at skapa en ny uppkoppling." +"att skapa en ny uppkoppling." msgid "Connection failed" msgstr "Anslutning misslyckad" @@ -8884,7 +8808,7 @@ "Your Preferred Contact Methods" msgstr "" "\n" -"Dina föredragna kontakmetoder" +"Dina föredragna kontaktmetoder" msgid "SMS" msgstr "SMS" @@ -8929,7 +8853,7 @@ msgstr "Meddelande för dagen" msgid "No Message of the Day available" -msgstr "Inget dagligt meddelande tillgänglig" +msgstr "Inget dagligt meddelande tillgängligt" msgid "There is no Message of the Day associated with this connection" msgstr "Det finns inget dagligt meddelande associerat med denna anslutning" @@ -8941,7 +8865,7 @@ msgstr "Lösenorden stämmer inte överens" msgid "Key Pair Generation failed" -msgstr "Genrerering av nyckelpar misslyckades" +msgstr "Generering av nyckelpar misslyckades" msgid "Key length" msgstr "Nyckellängd" @@ -9012,7 +8936,7 @@ "nätverk" msgid "list: List channels on this network" -msgstr "list: Listar kanalerna på detta nätverk" +msgstr "list: Listar kanalerna på detta nätverk" msgid "whois <nick>: View nick's information" msgstr "whois <nick>: Visar information för nick" @@ -9089,7 +9013,7 @@ "getkey <nick|server>: Hämta serverns eller klientens publika nyckel" msgid "stats: View server and network statistics" -msgstr "stats: Visa server och nätverksstatestik" +msgstr "stats: Visa server och nätverksstatistik" msgid "ping: Send PING to the connected server" msgstr "ping: skicka PING till den anslutna servern" @@ -9204,7 +9128,7 @@ "%s\n" "\n" msgstr "" -"Publik nyckelfingeravtryck:\n" +"Publikt nyckelfingeravtryck:\n" "%s\n" "\n" @@ -9213,7 +9137,7 @@ "Public Key Babbleprint:\n" "%s" msgstr "" -"Publik nyckelpladderavtryck:\n" +"Publikt nyckelpladderavtryck:\n" "%s" msgid "Public Key Information" @@ -9243,14 +9167,14 @@ "%s sent message to whiteboard on %s channel. Would you like to open the " "whiteboard?" msgstr "" -"%s sände ett meddelande till vita tavlan i kanal %s. Will du öppna den vita " +"%s sände ett meddelande till vita tavlan i kanal %s. Vill du öppna den vita " "tavlan?" msgid "Whiteboard" msgstr "Whiteboard" msgid "No server statistics available" -msgstr "Ingen serverstatestik tillgänglig" +msgstr "Ingen serverstatistik tillgänglig" #, c-format msgid "Failure: Version mismatch, upgrade your client" @@ -9321,6 +9245,9 @@ msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP-användarnamnet får inte innehålla mellanslag eller symbolen @" +msgid "SIP connect server not specified" +msgstr "SIP anslutningsserver inte specificerad" + #. *< type #. *< ui_requirement #. *< flags @@ -9723,10 +9650,10 @@ msgstr "Sökarserver" msgid "Japan Pager server" -msgstr "Japan Sökarsörver" +msgstr "Japan Sökarserver" msgid "Pager port" -msgstr "Sökareport" +msgstr "Sökarport" msgid "File transfer server" msgstr "Filöverföringsserver" @@ -9805,14 +9732,9 @@ msgid "Last Update" msgstr "Senast uppdaterad" -#, c-format -msgid "User information for %s unavailable" -msgstr "Användarinformation om %s är inte tillgänglig" - -msgid "" -"Sorry, this profile seems to be in a language or format that is not " -"supported at this time." -msgstr "Denna profil verkar vara i ett språk eller format som ännu inte stöds." +msgid "" +"This profile is in a language or format that is not supported at this time." +msgstr "Denna profil är i ett språk eller format som ännu inte stöds." msgid "" "Could not retrieve the user's profile. This most likely is a temporary " @@ -9930,7 +9852,7 @@ #, c-format msgid "Attempt to subscribe to %s,%s,%s failed" -msgstr "Försök att prenumrera på %s,%s,%s misslyckades" +msgstr "Försök att prenumerera på %s,%s,%s misslyckades" msgid "zlocate <nick>: Locate user" msgstr "zlocate <nick>: Lokalisera användare" @@ -9987,7 +9909,7 @@ msgstr "Återprenumerera" msgid "Retrieve subscriptions from server" -msgstr "Hämta prenumrationer från server" +msgstr "Hämta prenumerationer från server" #. *< type #. *< ui_requirement @@ -10245,9 +10167,9 @@ msgid "Unable to connect to %s" msgstr "Kan inte ansluta till %s" -#, fuzzy, c-format +#, c-format msgid "Error reading from %s: response too long (%d bytes limit)" -msgstr "Fel vid läsning av från %s: %s" +msgstr "Felaktig inläsning från %s: svaret blev för långt (gräns på %d bytes)" #, c-format msgid "" @@ -10422,7 +10344,7 @@ msgid "Protocol" msgstr "Protokoll" -#, fuzzy, c-format +#, c-format msgid "" "Welcome to %s!\n" "\n" @@ -10667,11 +10589,13 @@ msgid "Account: %s" msgstr "Konto: %s" -#, fuzzy, c-format +#, c-format msgid "" "\n" "Occupants: %d" -msgstr "Konto: %s" +msgstr "" +"\n" +"Innehavare: %d" #, c-format msgid "" @@ -10862,9 +10786,8 @@ msgid "Auto_join when account becomes online." msgstr "_Gå med automatiskt då kontot är anslutet." -#, fuzzy msgid "_Remain in chat after window is closed." -msgstr "Göm c_hatt när fönstret är stängt." +msgstr "Va_r kvar i chattfönster efter att det stängts." msgid "Please enter the name of the group to be added." msgstr "Ange namnet på den grupp som du vill lägga till." @@ -10986,7 +10909,7 @@ msgstr "/Konversation/_Sök..." msgid "/Conversation/View _Log" -msgstr "/Konversation/Visa _logg" +msgstr "/Konversation/Visa _Logg" msgid "/Conversation/_Save As..." msgstr "/Konversation/_Spara som..." @@ -10998,7 +10921,7 @@ msgstr "/Konversation/S_kicka fil..." msgid "/Conversation/Add Buddy _Pounce..." -msgstr "/Konversation/Lägg till kom_pisnotifiering..." +msgstr "/Konversation/Lägg till Kom_pisnotifiering..." msgid "/Conversation/_Get Info" msgstr "/Konversation/_Hämta information" @@ -11151,7 +11074,7 @@ msgstr "Smeknamn nämnt" msgid "Unread Messages" -msgstr "Olästa meddeladen" +msgstr "Olästa meddelanden" msgid "New Event" msgstr "Ny händelse" @@ -11241,11 +11164,10 @@ msgstr "Allvarligt fel" msgid "bug master" -msgstr "" - -#, fuzzy +msgstr "bugmästare" + msgid "artist" -msgstr "Artist" +msgstr "artist" #. feel free to not translate this msgid "Ka-Hing Cheung" @@ -11254,9 +11176,8 @@ msgid "support" msgstr "support" -#, fuzzy msgid "webmaster" -msgstr "utvecklare & webbansvarig" +msgstr "webbansvarig" msgid "Senior Contributor/QA" msgstr "Senior Contributor/Kvalitetsgranskning" @@ -11284,7 +11205,7 @@ msgstr "support/QA" msgid "XMPP" -msgstr "" +msgstr "XMPP" msgid "original author" msgstr "ursprunglig upphovsman" @@ -11335,7 +11256,7 @@ msgstr "Australiensisk engelska" msgid "Canadian English" -msgstr "Kanadensiskt engelska" +msgstr "Kanadensisk engelska" msgid "British English" msgstr "Brittisk engelska" @@ -11418,11 +11339,14 @@ msgid "Macedonian" msgstr "Makedonska" +msgid "Mongolian" +msgstr "Mongoliska" + msgid "Bokmål Norwegian" msgstr "Bokmål Norska" msgid "Nepali" -msgstr "Nepalska" +msgstr "Nepali" msgid "Dutch, Flemish" msgstr "Holländska, Flamländska" @@ -11431,7 +11355,7 @@ msgstr "Norska Nynorsk" msgid "Occitan" -msgstr "" +msgstr "Occitan" msgid "Punjabi" msgstr "Punjabi" @@ -11531,8 +11455,29 @@ "bidragsgivare. Vi ger inga garantier för detta program.

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

" -msgstr "IRC: #pidgin på irc.freenode.net

" +msgid "" +"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 "" +"Hjälp via mejl: support@pidgin.im

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

" +msgstr "IRC-kanal: #pidgin på irc.freenode.net

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

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

" msgid "Current Developers" msgstr "Nuvarande utvecklare" @@ -11674,7 +11619,7 @@ msgstr "Visa kompis_listan" msgid "_Unread Messages" -msgstr "_Olästa meddeladen" +msgstr "_Olästa meddelanden" msgid "New _Message..." msgstr "Nytt _meddelande..." @@ -11714,7 +11659,7 @@ msgid "There is no application configured to open this type of file." msgstr "" -"Det finns ingen applikation konfigurarad att öppna den här typen av fil." +"Det finns ingen applikation konfigurerad att öppna den här typen av fil." msgid "An error occurred while opening the file." msgstr "Ett fel uppstod när filen öppnades." @@ -11779,13 +11724,11 @@ msgid "Color to draw hyperlinks." msgstr "Färg som länkar ska ha." -#, fuzzy msgid "Hyperlink visited color" -msgstr "Färg på länkar" - -#, fuzzy +msgstr "Färg på besökta hyperlänkar" + msgid "Color to draw hyperlinks after it has been visited (or activated)." -msgstr "Färg som länkar ska ha när musmarkören är ovanför dem." +msgstr "Färgen länkar ska skrivas i när de har besökts (eller aktiverats)." # "utpekade" var det bästa ord jag kunde komma på. msgid "Hyperlink prelight color" @@ -11942,8 +11885,8 @@ "This smiley is disabled because a custom smiley exists for this shortcut:\n" " %s" msgstr "" -"Denna mileyn är avaktiverad eftersom en egendefinierad smiley redan " -"existerar för denna genvägen:\n" +"Denna smileyn är avaktiverad eftersom en egendefinierad smiley redan " +"existerar för denna genväg:\n" " %s" msgid "Smile!" @@ -12156,7 +12099,7 @@ " med kommatecken)\n" " -v, --version visa den nuvarande versionen och avsluta\n" -#, fuzzy, c-format +#, c-format msgid "" "%s %s has segfaulted and attempted to dump a core file.\n" "This is a bug in the software and has happened through\n" @@ -12171,31 +12114,28 @@ "how to get the backtrace, please read the instructions at\n" "%swiki/GetABacktrace\n" msgstr "" -"%s %s har råkat ut för ett segmenteringsfel och försökte att dumpa kärnan " -"till fil.\n" +"%s %s har råkat ut för ett segmenteringsfel och försökte\n" +"dumpa kärnan till fil.\n" "Detta är ett fel i mjukvaran och beror inte på något fel du gjort.\n" "\n" "Om du kan återskapa krashen, var vänlig att meddela utvecklarna\n" "genom att rapportera felet vid\n" "%ssimpleticket\n" "\n" -"Var god och meddela vad du gjorde vid tillfället\n" -"och posta en backtrace från kärn-filen. Om du inte vet hur du skapar en " -"backtrace,\n" +"Var god och meddela vad du gjorde vid tillfället och posta en backtrace\n" +"från kärn-filen. Om du inte vet hur du skapar en backtrace,\n" "var god läs instruktionerna på\n" "%swiki/GetABacktrace\n" -"\n" -"Om du behöver ytterligare hjälp så kan du skicka ett meddelande till " -"antingen\n" -"SeanEgn eller LSchiere (via AIM). Hur du får tag på Sean och Luke finner du " -"på\n" -"%swiki/DeveloperPages\n" #. Translators may want to transliterate the name. #. It is not to be translated. msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "Avslutar på grund av att en annan libpurple-klient redan körs.\n" + msgid "Open All Messages" msgstr "Öppna alla meddelanden" @@ -12211,8 +12151,8 @@ #, c-format msgid "%d new email." msgid_plural "%d new emails." -msgstr[0] "Du har %d nytt epost." -msgstr[1] "Du har %d nya epost." +msgstr[0] "Du har %d nytt mejl." +msgstr[1] "Du har %d nya mejl." #, c-format msgid "The browser command \"%s\" is invalid." @@ -12233,7 +12173,7 @@ msgstr "De följande modulerna kommer avladdas." msgid "Multiple plugins will be unloaded." -msgstr "Multibla moduler kommer bli avladdade." +msgstr "Multipla moduler kommer bli avladdade." msgid "Unload Plugins" msgstr "Avladda insticksmoduler" @@ -12245,7 +12185,7 @@ "The plugin could not be unloaded now, but will be disabled at the next " "startup." msgstr "" -"Instickmodulen kunde inte stoppas, men den kommer att vara inaktiverad " +"Insticksmodulen kunde inte stoppas, men den kommer att vara inaktiverad " "nästan uppstart." #, c-format @@ -12376,7 +12316,7 @@ msgstr "Vi_sa systempanelsikon:" msgid "On unread messages" -msgstr "Vid olästa meddeladen" +msgstr "Vid olästa meddelanden" msgid "Conversation Window Hiding" msgstr "Dölj konversationsfönster" @@ -12534,6 +12474,10 @@ msgid "No proxy" msgstr "Ingen proxy" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "Använd fjärr-DNS med SOCKS4-proxier" + msgid "_User:" msgstr "_Användare:" @@ -12600,7 +12544,7 @@ "(%s för URL)" msgid "Log _format:" -msgstr "Logg_format:" +msgstr "Logg _format:" msgid "Log all _instant messages" msgstr "_Logga alla snabbmeddelanden" @@ -12655,20 +12599,17 @@ "Ljud_kommando:\n" "(%s för filnamn)" -#, fuzzy msgid "M_ute sounds" -msgstr "_Stäng av ljud" +msgstr "_Tysta ljud" msgid "Sounds when conversation has _focus" msgstr "Ljud när konversationsfönstret har _fokus" -#, fuzzy msgid "_Enable sounds:" -msgstr "Aktivera ljud:" - -#, fuzzy +msgstr "_Aktivera ljud:" + msgid "V_olume:" -msgstr "Volum:" +msgstr "V_olum:" msgid "Play" msgstr "Spela upp" @@ -12890,13 +12831,11 @@ msgid "Custom Smiley Manager" msgstr "Hanterare för egna Smileys" -#, fuzzy msgid "Click to change your buddyicon for this account." -msgstr "Använd denna kompis_ikon för detta konto:" - -#, fuzzy +msgstr "Klicka här för att ändra kompisikon för detta konto." + msgid "Click to change your buddyicon for all accounts." -msgstr "Använd denna kompis_ikon för detta konto:" +msgstr "Klicka här för att ändra din kompisikon för alla konton." msgid "Waiting for network connection" msgstr "Väntar på nätverksanslutning." @@ -13030,13 +12969,11 @@ msgid "_Invite" msgstr "Bjud _in" -#, fuzzy msgid "_Modify..." -msgstr "_Ändra" - -#, fuzzy +msgstr "_Ändra..." + msgid "_Add..." -msgstr "_Lägg till" +msgstr "_Lägg till..." msgid "_Open Mail" msgstr "_Öppna brev" @@ -13059,18 +12996,17 @@ msgid "none" msgstr "ingen" -#, fuzzy msgid "Small" -msgstr "E-post" +msgstr "Liten" msgid "Smaller versions of the default smilies" -msgstr "" +msgstr "Mindre versioner av de förvadla smiliesarna." msgid "Response Probability:" msgstr "Trolighet för svar:" msgid "Statistics Configuration" -msgstr "Statestikkonfigurering" +msgstr "Statistikkonfigurering" #. msg_difference spinner msgid "Maximum response timeout:" @@ -13169,7 +13105,7 @@ msgstr "Ändra färgerna konversationsfönstret" msgid "Error Messages" -msgstr "Felmeddeladen" +msgstr "Felmeddelanden" msgid "Highlighted Messages" msgstr "Markerade träffar" @@ -13324,7 +13260,7 @@ msgstr "Evolutions körfil hittades inte i sökvägarna." msgid "An email address was not found for this buddy." -msgstr "Ingen epostadress hittades för denna kompisen." +msgstr "Ingen mejladress hittades för denna kompisen." msgid "Add to Address Book" msgstr "Lägg till i adressboken" @@ -13532,9 +13468,8 @@ msgid "Set window manager \"_URGENT\" hint" msgstr "Sätt fönsterhanterarens \"_URGENT\"-ledtråd" -#, fuzzy msgid "_Flash window" -msgstr "_Chattfönster" +msgstr "_Flash-fönster" #. Raise window method button msgid "R_aise conversation window" @@ -13621,9 +13556,8 @@ msgid "Hyperlink Color" msgstr "Färg på länkar" -#, fuzzy msgid "Visited Hyperlink Color" -msgstr "Färg på länkar" +msgstr "Färg för besökta hyperlänkar" msgid "Highlighted Message Name Color" msgstr "Färg på namn i markerade färger" @@ -13719,18 +13653,16 @@ #, c-format msgid "You can upgrade to %s %s today." -msgstr "" +msgstr "Du kan upgradera till %s %s idag." msgid "New Version Available" msgstr "Ny version tillgänglig" -#, fuzzy msgid "Later" -msgstr "Datum" - -#, fuzzy +msgstr "Senare" + msgid "Download Now" -msgstr "Laddar ned %s: %s" +msgstr "Laddar ned nu" #. *< type #. *< ui_requirement @@ -13811,7 +13743,7 @@ #. Created here so it can be passed to whole_words_button_toggled. msgid "_Exact case match (uncheck for automatic case handling)" msgstr "" -"_Exakt skriftlägeskäbslighet (avmarkera för automatisk skriftlägesavkänning)" +"_Exakt skriftlägeskänslighet (avmarkera för automatisk skriftlägesavkänning)" msgid "Only replace _whole words" msgstr "Ersätt endast _hela ord" @@ -13880,7 +13812,7 @@ msgstr "Ko_nversationer:" msgid "For delayed messages" -msgstr "För fördröjd meddeladen" +msgstr "För fördröjda meddelanden" msgid "For delayed messages and in chats" msgstr "För fördröjda meddelanden och i chattar" @@ -13989,9 +13921,6 @@ msgid "Only when docked" msgstr "Endast om dockad" -msgid "_Flash window when chat messages are received" -msgstr "Blinka med _fönstret när chattmeddelanden tas emot" - msgid "Windows Pidgin Options" msgstr "Inställningar för Pidgin i Windows" @@ -14041,9 +13970,30 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter." +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "Kunde inte hämta MSN-adressbok" + +#~ msgid "" +#~ "You may be disconnected shortly. You may want to use TOC until this is " +#~ "fixed. Check %s for updates." +#~ msgstr "" +#~ "Du kanske snart blir frånkopplad, du kanske ska använda TOC tills detta " +#~ "är fixat. Kolla på %s efter uppdateringar." + +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "Blinka med _fönstret när chattmeddelanden tas emot" + #~ msgid "A group with the name already exists." #~ msgstr "En grupp med det namnet finns redan." +#~ msgid "Connection to server lost (no data received within %d second)" +#~ msgid_plural "" +#~ "Connection to server lost (no data received within %d seconds)" +#~ msgstr[0] "" +#~ "Anslutning till servern tappad (ingen data mottagen på %d sekund)" +#~ msgstr[1] "" +#~ "Anslutning till servern tappad (ingen data mottagen på %d sekunder)" + #~ msgid "Primary Information" #~ msgstr "Primär information" @@ -14142,16 +14092,12 @@ #~ msgid "Change Qun information" #~ msgstr "Kanalinformation" -#, fuzzy -#~ msgid "" -#~ "%s\n" -#~ "\n" -#~ "%s" -#~ msgstr "%s (%s)" - #~ msgid "System Message" #~ msgstr "Systemmeddelande" +#~ msgid "Failed to send IM." +#~ msgstr "Kunde inte skicka snabbmeddelande" + #~ msgid "Last Login IP: %s
\n" #~ msgstr "Senaste login IP: %s
\n" @@ -14176,13 +14122,31 @@ #~ msgstr "Fel vid byte av lösenord" #, fuzzy +#~ msgid "Unable login for unknow reply code 0x%02X" +#~ msgstr "Ogiltig polettsvarskod, 0x%02X" + +#~ msgid "Keep alive error" +#~ msgstr "Problem att hålla vid liv" + +#, fuzzy #~ msgid "Failed to connect all servers" #~ msgstr "Kunde inte ansluta till servern" +#~ msgid "" +#~ "Lost connection with server:\n" +#~ "%d, %s" +#~ msgstr "" +#~ "Tappade anslutningen med servern:\n" +#~ "%d, %s" + #~ msgid "Connecting server %s, retries %d" #~ msgstr "Ansluter till server %s, försök %d" #, fuzzy +#~ msgid "You are not a member of QQ Qun \"%s\"\n" +#~ msgstr "Du är inte medlemm i gruppen \"%s\"\n" + +#, fuzzy #~ msgid "Do you approve the requestion?" #~ msgstr "Vill du godkänna förfrågan?" @@ -14216,6 +14180,9 @@ #~ msgid "QQ Server Notice" #~ msgstr "Serverport" +#~ msgid "User information for %s unavailable" +#~ msgstr "Användarinformation om %s är inte tillgänglig" + #, fuzzy #~ msgid "Network disconnected" #~ msgstr "Fjärrdatorn kopplade ifrån" diff -r a0668fbf2483 -r b98519a42e53 po/zh_HK.po --- a/po/zh_HK.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/zh_HK.po Mon Mar 02 22:07:59 2009 +0000 @@ -5,7 +5,7 @@ # Copyright (C) 2003-2008, Ambrose C. Li # # This file is distributed under the same license as the "Pidgin" package. -# $InternalId: zh_TW.po,v 1.553 2008/09/30 05:14:21 acli Exp $ +# $InternalId: zh_TW.po,v 1.562 2009/02/27 04:50:13 acli Exp $ # # ---------------------------------------------------------- # For internal use only: @@ -43,18 +43,17 @@ # NOTE 以前分「Deny」(拒絕) 和「Block」(封鎖),現在不分了 # NOTE 拒絕可以說等同於封鎖和某一個使用者的聯繫,有時用封鎖比較好。 # NOTE MSN6.0中文版對「Block」一詞的譯文為「封鎖」 -# XXX Stream 暫譯「串流」,應該不是「通道」 # NOTE nplurals 重設為 2,因為部分原文要分辨例如「它」及「它們」一類的字眼 # NOTE 所有語文名稱(除「世界語」外)一概譯成「XX文」,不譯「XX語」,因為寫下的是文,不是語 # ---------------------------------------------------------- # msgid "" msgstr "" -"Project-Id-Version: Pidgin 2.5.2\n" +"Project-Id-Version: Pidgin 2.5.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-18 01:17-0800\n" -"PO-Revision-Date: 2008-12-17 12:15+0800\n" -"Last-Translator: Paladin R. Liu \n" +"POT-Creation-Date: 2009-02-27 10:14-0800\n" +"PO-Revision-Date: 2009-02-25 09:57-0500\n" +"Last-Translator: Ambrose Li \n" "Language-Team: Chinese (Hong Kong) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -77,7 +76,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -86,7 +85,7 @@ "使用方法: %s [選項]...\n" "\n" " -c, --config=DIR 設定檔所在目錄\n" -" -d, --debug 在標準輸出中顯示除錯訊息\n" +" -d, --debug 在標準錯誤輸出中顯示除錯訊息\n" " -h, --help 顯示輔助訊息並離開\n" " -n, --nologin 不自動登入\n" " -v, --version 顯示版本訊息並離開\n" @@ -238,14 +237,16 @@ msgid "The selected account is not online." msgstr "所指定的帳號目前沒有連線。" +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Error adding buddy" msgstr "新增好友途中發生了錯誤" msgid "Username" msgstr "使用者" +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Alias (optional)" -msgstr "別名(可以不填)" +msgstr "別名(選用)" # XXX 譯文可能不太通順 - acli 20080229 msgid "Add in group" @@ -285,7 +286,7 @@ msgstr "如果要繼續修改其他細節,請用快顯選單。" msgid "Error adding group" -msgstr "新增羣組途中發生了錯誤" +msgstr "新增羣組發生了錯誤" msgid "You must give a name for the group to add." msgstr "請給你新增的羣組輸入名稱。" @@ -871,9 +872,9 @@ msgid "The file was saved as %s." msgstr "成功存檔至 %s。" -# XXX 20080508 acli +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Sending" -msgstr "送出中" +msgstr "傳送中" # XXX 20080508 acli msgid "Receiving" @@ -1216,7 +1217,6 @@ msgid "Change status to" msgstr "更改狀態為" -#. Conversations msgid "Conversations" msgstr "交談" @@ -1333,14 +1333,18 @@ msgid "Sounds when conversation has focus" msgstr "當交談取得輸入焦點發出音效" +# XXX: 務必 聽起來不太恰當。這裡是指 Enable Sound 的選項 - c9s, 08 Dec 27 12/27/2008 +# XXX 「務必」不只指 Enable Sound,也在其他地方用到,改譯「完全啟用」不行 - 20090226 acli msgid "Always" msgstr "務必" +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Only when available" -msgstr "上線而非離開期間" - +msgstr "狀態為上線時" + +# XXX: 離開區間? - c9s, 08 Dec 27 12/27/2008 msgid "Only when not available" -msgstr "離開期間" +msgstr "狀態為非上線時" msgid "Volume(0-100):" msgstr "音量(0-100):" @@ -1539,7 +1543,6 @@ "conversation into the current conversation." msgstr "當新的交談開啟時,這個模組將會把上次的交談內容也顯示出來。" -#, c-format msgid "Online" msgstr "上線" @@ -1986,7 +1989,6 @@ msgid "Transfer of file %s complete" msgstr "檔案 %s 傳送完畢" -#, c-format msgid "File transfer complete" msgstr "檔案傳輸完畢" @@ -1994,7 +1996,6 @@ msgid "You canceled the transfer of %s" msgstr "你取消了 %s 的傳送" -#, c-format msgid "File transfer cancelled" msgstr "檔案傳輸已取消" @@ -2185,7 +2186,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "你目前使用的是 %s,但這模組需要 %s。" -#, c-format msgid "This plugin has not defined an ID." msgstr "這個模組未有定義它的 ID。" @@ -2897,7 +2897,6 @@ "Unable to establish connection with the local mDNS server. Is it running?" msgstr "無法與近端的 mDNS 伺服器建立連線。它在執行中嗎?" -#. Creating the options for the protocol msgid "First name" msgstr "名" @@ -2931,6 +2930,10 @@ msgid "Purple Person" msgstr "聯絡人" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "本地端通訊埠" + # NOTE 這是通訊協定名稱,不是問候語 msgid "Bonjour" msgstr "Bonjour" @@ -3094,7 +3097,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "離開" @@ -3912,6 +3914,7 @@ msgid "User Chatting" msgstr "" +# NOTE Jabber 新功能規格 msgid "User Browsing" msgstr "使用者瀏覽" @@ -4019,7 +4022,6 @@ msgid "Extended Away" msgstr "長時間離開" -#, c-format msgid "Do Not Disturb" msgstr "請勿打擾" @@ -4262,6 +4264,9 @@ msgid "Re-initializing Stream" msgstr "串流重新初始中" +msgid "Server doesn't support blocking" +msgstr "" + msgid "Not Authorized" msgstr "未認證" @@ -4852,9 +4857,6 @@ msgid "Select an action" msgstr "選擇一個動作" -msgid "Unable to retrieve MSN Address Book" -msgstr "無法讀取 MSN 通訊錄" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it @@ -5103,7 +5105,6 @@ msgid "Passport account not yet verified" msgstr "護照帳號尚未經過驗證" -#, c-format msgid "Passport account suspended" msgstr "護照帳號被暫時吊銷" @@ -5122,14 +5123,19 @@ msgid "MSN Error: %s\n" msgstr "MSN 錯誤:%s\n" -#, fuzzy +# XXX 暫譯,有待改進 - 20090226 acli +# NOTE: (09時14分13秒 EST) wing: what does "Other Contacts" (msn/group.h:36) actually mean? .. +# NOTE: (09時24分18秒 EST) khc: I'd probably just translate to 其他人, hehe +# NOTE: (09時24分44秒 EST) QuLogic: Other Contacts is non-grouped +# NOTE: (09時25分02秒 EST) QuLogic: which is a group because libpurple doesn't understand non-grouped msgid "Other Contacts" -msgstr "聯絡方法" - -# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間 -#, fuzzy +msgstr "沒有羣組的好友" + +# XXX 暫譯,有待改進 - 20090226 acli +# XXX 這可能是MSN的「基本資料連絡人」? +# XXX「Buddy」和「Contact」在中文版Pidgin無法析別;可能有改進的空間 msgid "Non-IM Contacts" -msgstr "移除這組好友" +msgstr "非即時訊息的好友" msgid "Nudge" msgstr "呼叫" @@ -5206,9 +5212,8 @@ msgid "Playing a game" msgstr "正在玩遊戲" -#, fuzzy msgid "Working" -msgstr "工作資料" +msgstr "正在工作" msgid "Has you" msgstr "你在他(她)的好友清單裏" @@ -5246,13 +5251,12 @@ msgid "Album" msgstr "專輯名稱" -#, fuzzy msgid "Game Title" -msgstr "樂曲名稱" - -#, fuzzy +msgstr "遊戲名稱" + +# XXX 這是盲猜,但MSN「工作資訊」分頁內比較可能對應「Office Title」的應該是這個 - 20090226 msgid "Office Title" -msgstr "樂曲名稱" +msgstr "職位" msgid "Set Friendly Name..." msgstr "設定網名..." @@ -5445,9 +5449,8 @@ msgstr "" "在這個使用者的個人資料網頁找不到任何可用的資料。這個使用者極有可能並不存在。" -#, fuzzy msgid "View web profile" -msgstr "離線時隱藏" +msgstr "檢視個人資料網頁" #. *< type #. *< ui_requirement @@ -5505,9 +5508,9 @@ msgid "Unable to add user" msgstr "無法新增使用者" -#, fuzzy +# XXX 暫譯 - 20090226 msgid "The following users are missing from your addressbook" -msgstr "以下為搜尋結果" +msgstr "以下使用者不在通訊錄內" # TODO 請覆查,譯文有待改進 #, c-format @@ -6336,7 +6339,6 @@ msgid "Error. SSL support is not installed." msgstr "錯誤:沒有安裝 SSL 支援。" -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "這個會議已經關閉。無法繼續送出任何訊息。" @@ -6596,6 +6598,7 @@ msgid "Hiptop" msgstr "Hiptop" +# FIXME flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli msgid "Security Enabled" msgstr "有保安功能" @@ -6618,24 +6621,19 @@ msgid "Screen Sharing" msgstr "螢幕共享" -#, c-format msgid "Free For Chat" msgstr "我有空聊天" -#, c-format msgid "Not Available" msgstr "長時間離開" -#, c-format msgid "Occupied" msgstr "忙碌" # NOTE 參閱 http://www.geocities.com/Athens/Delphi/6470/icq99.html -#, c-format msgid "Web Aware" msgstr "允許其他使用者在網絡上查看你目前的狀態" -#, c-format msgid "Invisible" msgstr "隱身" @@ -6737,19 +6735,15 @@ msgstr "確定(_O)" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"你可能會短時間中斷連線。你可能會想在這個問題被修正後使用 TOC。請到 %s 看看有" -"沒有更新。" +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "你可能會在短時間內中斷連線。如果屬實,請到 %s 看看有沒有更新。" msgid "Unable to get a valid AIM login hash." msgstr "無法取得有效的 AIM 登入碼。" #, c-format msgid "You may be disconnected shortly. Check %s for updates." -msgstr "你可能會短時間中斷連線。請到 %s 看看有沒有更新。" +msgstr "你可能會在短時間內中斷連線。請到 %s 看看有沒有更新。" msgid "Unable to get a valid login hash." msgstr "無法取得有效的登入雜湊。" @@ -7180,6 +7174,7 @@ msgid "Get AIM Info" msgstr "取得 AIM 資訊" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "編輯好友說明" @@ -7290,7 +7285,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "正在嘗試連線至 %s:%hu。" -#, c-format msgid "Attempting to connect via proxy server." msgstr "正在嘗試透過代理伺服器連線。" @@ -7381,16 +7375,15 @@ msgid "Other" msgstr "其他" -#, fuzzy msgid "Visible" -msgstr "隱身" - +msgstr "公開" + +# XXX 暫譯 - 20090226 msgid "Friend Only" -msgstr "" - -#, fuzzy +msgstr "只允許好友" + msgid "Private" -msgstr "私隱設定" +msgstr "非公開" msgid "QQ Number" msgstr "QQ 號碼" @@ -7417,18 +7410,14 @@ msgid "Personal Introduction" msgstr "個人簡介" -#, fuzzy msgid "City/Area" -msgstr "城市" - -#, fuzzy +msgstr "城市/地區" + msgid "Publish Mobile" -msgstr "個人流動電話" - -# XXX 中文譯文無法分別出「Alias Buddy」和「Alias Contact」 -#, fuzzy +msgstr "刊登流動電話號碼" + msgid "Publish Contact" -msgstr "為這組好友加上別名" +msgstr "刊登個人資料" msgid "College" msgstr "大學/大專" @@ -7445,21 +7434,21 @@ msgstr "血型" msgid "True" -msgstr "" +msgstr "是" msgid "False" -msgstr "" - -#, fuzzy +msgstr "不是" + +# FIXME - qq.c is buggy - it uses "Contact" here to mean "personal contact info" - filed ticket #8523 +# FIXME - 原文一詞多義,無法翻譯 - 20090226 msgid "Modify Contact" msgstr "修改帳號" msgid "Modify Address" msgstr "修改地址" -#, fuzzy msgid "Modify Extended Information" -msgstr "修改資訊" +msgstr "修改詳細資訊" msgid "Modify Information" msgstr "修改資訊" @@ -7578,12 +7567,9 @@ msgid "Member" msgstr "用戶" -# XXX 這譯文絶對有問題,但想不到怎樣譯較好 - ambrose 20070415 -#, fuzzy msgid "Requesting" -msgstr "對話視窗 (Request Dialog)" - -# #NOTE 根據「plugins/log_reader.c#1971」的訊息來判斷,應該是指一種新式的通訊協定。 +msgstr "" + msgid "Admin" msgstr "" @@ -7599,14 +7585,12 @@ msgid "About me" msgstr "關於我" -#, fuzzy msgid "Category" -msgstr "聊天錯誤" +msgstr "類別" msgid "The Qun does not allow others to join" msgstr "這羣組不容許外人加入" -#, fuzzy msgid "Join QQ Qun" msgstr "加入羣組" @@ -7671,9 +7655,9 @@ msgid "%u requested to join Qun %u for %s" msgstr "使用者 %d 要求加入羣組 %d" -#, fuzzy, c-format +#, c-format msgid "%u request to join Qun %u" -msgstr "使用者 %d 要求加入羣組 %d" +msgstr "使用者 %u 要求加入羣組 %u" #, c-format msgid "Failed to join Qun %u, operated by admin %u" @@ -7684,9 +7668,9 @@ msgstr "" # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間 -#, fuzzy, c-format +#, c-format msgid "Removed buddy %u." -msgstr "移除好友" +msgstr "成功移除好友 %u。" # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間 #, c-format @@ -7720,14 +7704,12 @@ msgid " FromMobile" msgstr " 使用流動通訊器材" -#, fuzzy msgid " BindMobile" msgstr " 綁定流動通訊器材" msgid " Video" msgstr " 視像" -#, fuzzy msgid " Zone" msgstr " 區" @@ -7807,21 +7789,20 @@ msgid "Login Information" msgstr "登入資訊" -#, fuzzy msgid "

Original Author:
\n" -msgstr "外部使用者
" +msgstr "

原作者
\n" msgid "

Code Contributors:
\n" msgstr "

程式碼貢獻者
\n" -#, fuzzy msgid "

Lovely Patch Writers:
\n" -msgstr "最近更新時間:%s
\n" - -# NOTE qq_data->net_stat.sent,送出的數據封包數量(並非位元組數量)的總計 -#, fuzzy +msgstr "

可愛的模組作者
\n" + msgid "

Acknowledgement:
\n" -msgstr "送出封包:%lu 個
\n" +msgstr "

鳴謝
\n" + +msgid "

Scrupulous Testers:
\n" +msgstr "

仔細的品管人員:
\n" msgid "

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

還有所有幕後默默貢獻的無名英雄們…
\n" @@ -7848,6 +7829,10 @@ msgid "About OpenQ" msgstr "關於 OpenQ" +#, fuzzy +msgid "Modify Buddy Memo" +msgstr "修改地址" + #. *< type #. *< ui_requirement #. *< flags @@ -7868,13 +7853,13 @@ msgstr "選擇伺服器" msgid "QQ2005" -msgstr "" +msgstr "QQ2005" msgid "QQ2007" -msgstr "" +msgstr "QQ2007" msgid "QQ2008" -msgstr "" +msgstr "QQ2008" msgid "Connect by TCP" msgstr "使用 TCP 連線" @@ -7887,6 +7872,9 @@ msgid "Show server news" msgstr "顯示伺服器是日訊息" +msgid "Show chat room when msg comes" +msgstr "" + # XXX 20080810 acli - 譯文有待改進,原文也是 msgid "Keep alive interval (seconds)" msgstr "每隔多少秒送出 Keep Alive" @@ -7900,7 +7888,7 @@ #, c-format msgid "Failed requesting token, 0x%02X" -msgstr "" +msgstr "請求符記失敗,回應碼「0x%02X」" #, c-format msgid "Invalid token len, %d" @@ -7908,7 +7896,7 @@ #. extend redirect used in QQ2006 msgid "Redirect_EX is not currently supported" -msgstr "" +msgstr "暫時不支援 Redirect_EX" #. need activation #. need activation @@ -7978,9 +7966,8 @@ msgstr "設定使用者資訊..." # XXX 這是看了原始碼後的結論(但可能會錯)- acli 20080930 -#, fuzzy msgid "Requesting token" -msgstr "送出請求符記中" +msgstr "請求符記中" msgid "Couldn't resolve host" msgstr "無法解析主機" @@ -9535,6 +9522,9 @@ msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP 的帳號不可含有空白字符或「@」符號" +msgid "SIP connect server not specified" +msgstr "未有指定 SIP 伺服器" + #. *< type #. *< ui_requirement #. *< flags @@ -11467,8 +11457,10 @@ msgstr "反向" # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029 +# XXX flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli +# NOTE 譯文改動 by c9s msgid "Highlight matches" -msgstr "標示匹配字串" +msgstr "標示比對字串" # NOTE 除錯視窗的工具列的快取選單的指令,指「工具列的按紐以圖示標示」,下二同 msgid "_Icon Only" @@ -11513,11 +11505,13 @@ msgid "Fatal Error" msgstr "嚴重錯誤訊息" +# XXX 暫譯 - 20090226 acli msgid "bug master" -msgstr "" - +msgstr "除錯主管" + +# NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」 msgid "artist" -msgstr "藝人" +msgstr "平面設計" #. feel free to not translate this msgid "Ka-Hing Cheung" @@ -11549,7 +11543,7 @@ msgstr "支援兼品管" msgid "XMPP" -msgstr "" +msgstr "XMPP" msgid "original author" msgstr "原作者" @@ -11706,6 +11700,9 @@ msgid "Macedonian" msgstr "馬其頓文" +msgid "Mongolian" +msgstr "蒙古文" + # NOTE 譯文不統一,一般似乎偏向音譯,但譯音也不統一 # NOTE 音譯包括:博克馬爾、波克默爾、布克莫爾、巴克摩 # NOTE 其他譯法包括:丹麥-挪威文(大英百科)、丹麥式挪威文(維基百科)、東挪威文、標準挪威文(國內不是標準,國外是 :P) @@ -11837,9 +11834,31 @@ "

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

" -msgstr "" -"IRC: irc.freenode.net 上的 #pidgin 頻道

" +msgid "" +"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 "" +"電郵支援: support@pidgin.im

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

" +msgstr "" +"IRC 頻道 irc.freenode.net 上的 #pidgin 頻道

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

" +msgstr "" +"XMPP 聊天室:devel@conference.pidgin.im

" msgid "Current Developers" msgstr "現任開發者" @@ -12503,6 +12522,10 @@ msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "" + msgid "Open All Messages" msgstr "開啟所有訊息" @@ -12843,6 +12866,10 @@ msgid "No proxy" msgstr "不使用代理伺服器" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "使用 SOCKS4 代理伺服器時使用遠端 DNS" + msgid "_User:" msgstr "使用者(_U):" @@ -13345,9 +13372,9 @@ msgid "_Edit" msgstr "修改(_E)" -# FIXME Tooltip中文怎寫? +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Pidgin Tooltip" -msgstr "Pidgin Tooltip" +msgstr "Pidgin 工具提示" # NOTE 這是「Default」表情主題的說明 msgid "Pidgin smileys" @@ -13481,9 +13508,9 @@ msgid "Error Messages" msgstr "錯誤訊息" -# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029 +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 12/27/2008 - 20090226 acli msgid "Highlighted Messages" -msgstr "反白訊息" +msgstr "已標示訊息" msgid "System Messages" msgstr "系統訊息" @@ -13951,9 +13978,9 @@ msgstr "瀏覽過的超連結顏色" # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029 -# FIXME 什麼是「反白訊息名稱」? - acli 20080511 +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 20081227 - 20090226 acli msgid "Highlighted Message Name Color" -msgstr "反白訊息名稱顏色" +msgstr "已標示訊息名稱顏" msgid "GtkTreeView Horizontal Separation" msgstr "GtkTreeView 水平間隔距離" @@ -14048,7 +14075,7 @@ #, c-format msgid "You can upgrade to %s %s today." -msgstr "" +msgstr "%s 現已可升級至 %s 版。" msgid "New Version Available" msgstr "有新版本" @@ -14318,9 +14345,6 @@ msgid "Only when docked" msgstr "只在停駐時生效" -msgid "_Flash window when chat messages are received" -msgstr "收到聊天訊息後閃動視窗(_F)" - msgid "Windows Pidgin Options" msgstr "Windows 版 Pidgin 選項" @@ -14370,6 +14394,19 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。" +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "無法讀取 MSN 通訊錄" + +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "收到聊天訊息後閃動視窗(_F)" + +#~ msgid "" +#~ "You may be disconnected shortly. You may want to use TOC until this is " +#~ "fixed. Check %s for updates." +#~ msgstr "" +#~ "您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看" +#~ "有沒有更新。" + #~ msgid "Connection to server lost (no data received within %d second)" #~ msgid_plural "" #~ "Connection to server lost (no data received within %d seconds)" diff -r a0668fbf2483 -r b98519a42e53 po/zh_TW.po --- a/po/zh_TW.po Mon Mar 02 21:53:53 2009 +0000 +++ b/po/zh_TW.po Mon Mar 02 22:07:59 2009 +0000 @@ -3,7 +3,7 @@ # Copyright (C) 2003-2008, Ambrose C. Li # # This file is distributed under the same license as the "Pidgin" package. -# $InternalId: zh_TW.po,v 1.553 2008/09/30 05:14:21 acli Exp $ +# $InternalId: zh_TW.po,v 1.562 2009/02/27 04:50:13 acli Exp $ # # ---------------------------------------------------------- # For internal use only: @@ -41,18 +41,17 @@ # NOTE 以前分「Deny」(拒絕) 和「Block」(封鎖),現在不分了 # NOTE 拒絕可以說等同於封鎖和某一個使用者的聯繫,有時用封鎖比較好。 # NOTE MSN6.0中文版對「Block」一詞的譯文為「封鎖」 -# XXX Stream 暫譯「串流」,應該不是「通道」 # NOTE nplurals 重設為 2,因為部分原文要分辨例如「它」及「它們」一類的字眼 # NOTE 所有語文名稱(除「世界語」外)一概譯成「XX文」,不譯「XX語」,因為寫下的是文,不是語 # ---------------------------------------------------------- # msgid "" msgstr "" -"Project-Id-Version: Pidgin 2.5.2\n" +"Project-Id-Version: Pidgin 2.5.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-18 01:17-0800\n" -"PO-Revision-Date: 2008-12-17 12:15+0800\n" -"Last-Translator: Paladin R. Liu \n" +"POT-Creation-Date: 2009-02-27 10:14-0800\n" +"PO-Revision-Date: 2009-02-25 09:57-0500\n" +"Last-Translator: Ambrose Li \n" "Language-Team: Chinese (Traditional) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -75,7 +74,7 @@ "Usage: %s [OPTION]...\n" "\n" " -c, --config=DIR use DIR for config files\n" -" -d, --debug print debugging messages to stdout\n" +" -d, --debug print debugging messages to stderr\n" " -h, --help display this help and exit\n" " -n, --nologin don't automatically login\n" " -v, --version display the current version and exit\n" @@ -84,7 +83,7 @@ "使用方法: %s [選項]...\n" "\n" " -c, --config=DIR 設定檔所在目錄\n" -" -d, --debug 在標準輸出中顯示除錯訊息\n" +" -d, --debug 在標準錯誤輸出中顯示除錯訊息\n" " -h, --help 顯示輔助訊息並離開\n" " -n, --nologin 不自動登入\n" " -v, --version 顯示版本訊息並離開\n" @@ -236,14 +235,16 @@ msgid "The selected account is not online." msgstr "所指定的帳號目前沒有連線。" +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Error adding buddy" msgstr "新增好友途中發生了錯誤" msgid "Username" msgstr "使用者" +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Alias (optional)" -msgstr "別名(可以不填)" +msgstr "別名(選用)" # XXX 譯文可能不太通順 - acli 20080229 msgid "Add in group" @@ -283,7 +284,7 @@ msgstr "如果要繼續修改其他細節,請用快顯選單。" msgid "Error adding group" -msgstr "新增群組途中發生了錯誤" +msgstr "新增群組發生了錯誤" msgid "You must give a name for the group to add." msgstr "請給您新增的群組輸入名稱。" @@ -869,9 +870,9 @@ msgid "The file was saved as %s." msgstr "成功存檔至 %s。" -# XXX 20080508 acli +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Sending" -msgstr "送出中" +msgstr "傳送中" # XXX 20080508 acli msgid "Receiving" @@ -1214,7 +1215,6 @@ msgid "Change status to" msgstr "更改狀態為" -#. Conversations msgid "Conversations" msgstr "交談" @@ -1331,14 +1331,18 @@ msgid "Sounds when conversation has focus" msgstr "當交談取得輸入焦點發出音效" +# XXX: 務必 聽起來不太恰當。這裡是指 Enable Sound 的選項 - c9s, 08 Dec 27 12/27/2008 +# XXX 「務必」不只指 Enable Sound,也在其他地方用到,改譯「完全啟用」不行 - 20090226 acli msgid "Always" msgstr "務必" +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Only when available" -msgstr "上線而非離開期間" - +msgstr "狀態為上線時" + +# XXX: 離開區間? - c9s, 08 Dec 27 12/27/2008 msgid "Only when not available" -msgstr "離開期間" +msgstr "狀態為非上線時" msgid "Volume(0-100):" msgstr "音量(0-100):" @@ -1537,7 +1541,6 @@ "conversation into the current conversation." msgstr "當新的交談開啟時,這個模組將會把上次的交談內容也顯示出來。" -#, c-format msgid "Online" msgstr "上線" @@ -1984,7 +1987,6 @@ msgid "Transfer of file %s complete" msgstr "檔案 %s 傳送完畢" -#, c-format msgid "File transfer complete" msgstr "檔案傳輸完畢" @@ -1992,7 +1994,6 @@ msgid "You canceled the transfer of %s" msgstr "你取消了 %s 的傳送" -#, c-format msgid "File transfer cancelled" msgstr "檔案傳輸已取消" @@ -2183,7 +2184,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "您目前使用的是 %s,但這模組需要 %s。" -#, c-format msgid "This plugin has not defined an ID." msgstr "這個模組未有定義它的 ID。" @@ -2895,7 +2895,6 @@ "Unable to establish connection with the local mDNS server. Is it running?" msgstr "無法與近端的 mDNS 伺服器建立連線。它在執行中嗎?" -#. Creating the options for the protocol msgid "First name" msgstr "名" @@ -2929,6 +2928,10 @@ msgid "Purple Person" msgstr "連絡人" +#. Creating the options for the protocol +msgid "Local Port" +msgstr "本地端通訊埠" + # NOTE 這是通訊協定名稱,不是問候語 msgid "Bonjour" msgstr "Bonjour" @@ -3092,7 +3095,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "離開" @@ -3910,6 +3912,7 @@ msgid "User Chatting" msgstr "" +# NOTE Jabber 新功能規格 msgid "User Browsing" msgstr "使用者瀏覽" @@ -4017,7 +4020,6 @@ msgid "Extended Away" msgstr "長時間離開" -#, c-format msgid "Do Not Disturb" msgstr "請勿打擾" @@ -4260,6 +4262,9 @@ msgid "Re-initializing Stream" msgstr "串流重新初始中" +msgid "Server doesn't support blocking" +msgstr "" + msgid "Not Authorized" msgstr "未認證" @@ -4850,9 +4855,6 @@ msgid "Select an action" msgstr "選擇一個動作" -msgid "Unable to retrieve MSN Address Book" -msgstr "無法讀取 MSN 通訊錄" - #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably #. * won't cause too many problems if we just ignore it @@ -5101,7 +5103,6 @@ msgid "Passport account not yet verified" msgstr "護照帳號尚未經過驗證" -#, c-format msgid "Passport account suspended" msgstr "護照帳號被暫時吊銷" @@ -5120,14 +5121,19 @@ msgid "MSN Error: %s\n" msgstr "MSN 錯誤:%s\n" -#, fuzzy +# XXX 暫譯,有待改進 - 20090226 acli +# NOTE: (09時14分13秒 EST) wing: what does "Other Contacts" (msn/group.h:36) actually mean? .. +# NOTE: (09時24分18秒 EST) khc: I'd probably just translate to 其他人, hehe +# NOTE: (09時24分44秒 EST) QuLogic: Other Contacts is non-grouped +# NOTE: (09時25分02秒 EST) QuLogic: which is a group because libpurple doesn't understand non-grouped msgid "Other Contacts" -msgstr "聯絡方法" - -# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間 -#, fuzzy +msgstr "沒有群組的好友" + +# XXX 暫譯,有待改進 - 20090226 acli +# XXX 這可能是MSN的「基本資料連絡人」? +# XXX「Buddy」和「Contact」在中文版Pidgin無法析別;可能有改進的空間 msgid "Non-IM Contacts" -msgstr "移除這組好友" +msgstr "非即時訊息的好友" msgid "Nudge" msgstr "呼叫" @@ -5204,9 +5210,8 @@ msgid "Playing a game" msgstr "正在玩遊戲" -#, fuzzy msgid "Working" -msgstr "工作資料" +msgstr "正在工作" msgid "Has you" msgstr "你在他(她)的好友清單裏" @@ -5244,13 +5249,12 @@ msgid "Album" msgstr "專輯名稱" -#, fuzzy msgid "Game Title" -msgstr "樂曲名稱" - -#, fuzzy +msgstr "遊戲名稱" + +# XXX 這是盲猜,但MSN「工作資訊」分頁內比較可能對應「Office Title」的應該是這個 - 20090226 msgid "Office Title" -msgstr "樂曲名稱" +msgstr "職位" msgid "Set Friendly Name..." msgstr "設定暱稱..." @@ -5443,9 +5447,8 @@ msgstr "" "在這個使用者的個人資料網頁找不到任何可用的資料。這個使用者極有可能並不存在。" -#, fuzzy msgid "View web profile" -msgstr "離線時隱藏" +msgstr "檢視個人資料網頁" #. *< type #. *< ui_requirement @@ -5503,9 +5506,9 @@ msgid "Unable to add user" msgstr "無法新增使用者" -#, fuzzy +# XXX 暫譯 - 20090226 msgid "The following users are missing from your addressbook" -msgstr "以下為搜尋結果" +msgstr "以下使用者不在通訊錄內" # TODO 請覆查,譯文有待改進 #, c-format @@ -6334,7 +6337,6 @@ msgid "Error. SSL support is not installed." msgstr "錯誤:沒有安裝 SSL 支援。" -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "這個會議已經關閉。無法繼續送出任何訊息。" @@ -6594,6 +6596,7 @@ msgid "Hiptop" msgstr "Hiptop" +# FIXME flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli msgid "Security Enabled" msgstr "有保安功能" @@ -6616,24 +6619,19 @@ msgid "Screen Sharing" msgstr "螢幕共享" -#, c-format msgid "Free For Chat" msgstr "我有空聊天" -#, c-format msgid "Not Available" msgstr "長時間離開" -#, c-format msgid "Occupied" msgstr "忙碌" # NOTE 參閱 http://www.geocities.com/Athens/Delphi/6470/icq99.html -#, c-format msgid "Web Aware" msgstr "允許其他使用者在網路上查看您目前的狀態" -#, c-format msgid "Invisible" msgstr "隱身" @@ -6735,19 +6733,15 @@ msgstr "確定(_O)" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看有" -"沒有更新。" +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "您可能會在短時間內中斷連線。如果屬實,請到 %s 看看有沒有更新。" msgid "Unable to get a valid AIM login hash." msgstr "無法取得有效的 AIM 登入碼。" #, c-format msgid "You may be disconnected shortly. Check %s for updates." -msgstr "您可能會短時間中斷連線。請到 %s 看看有沒有更新。" +msgstr "您可能會在短時間內中斷連線。請到 %s 看看有沒有更新。" msgid "Unable to get a valid login hash." msgstr "無法取得有效的登入雜湊。" @@ -7178,6 +7172,7 @@ msgid "Get AIM Info" msgstr "取得 AIM 資訊" +#. We only do this if the user is in our buddy list msgid "Edit Buddy Comment" msgstr "編輯好友說明" @@ -7288,7 +7283,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "正在嘗試連線至 %s:%hu。" -#, c-format msgid "Attempting to connect via proxy server." msgstr "正在嘗試透過代理伺服器連線。" @@ -7379,16 +7373,15 @@ msgid "Other" msgstr "其他" -#, fuzzy msgid "Visible" -msgstr "隱身" - +msgstr "公開" + +# XXX 暫譯 - 20090226 msgid "Friend Only" -msgstr "" - -#, fuzzy +msgstr "只允許好友" + msgid "Private" -msgstr "隱私設定" +msgstr "非公開" msgid "QQ Number" msgstr "QQ 號碼" @@ -7415,18 +7408,14 @@ msgid "Personal Introduction" msgstr "個人簡介" -#, fuzzy msgid "City/Area" -msgstr "城市" - -#, fuzzy +msgstr "城市/地區" + msgid "Publish Mobile" -msgstr "個人行動電話" - -# XXX 中文譯文無法分別出「Alias Buddy」和「Alias Contact」 -#, fuzzy +msgstr "刊登行動電話號碼" + msgid "Publish Contact" -msgstr "為這組好友加上別名" +msgstr "刊登個人資訊" msgid "College" msgstr "大學/大專" @@ -7443,21 +7432,21 @@ msgstr "血型" msgid "True" -msgstr "" +msgstr "是" msgid "False" -msgstr "" - -#, fuzzy +msgstr "不是" + +# FIXME - qq.c is buggy - it uses "Contact" here to mean "personal contact info" - filed ticket #8523 +# FIXME - 原文一詞多義,無法翻譯 - 20090226 msgid "Modify Contact" msgstr "修改帳號" msgid "Modify Address" msgstr "修改地址" -#, fuzzy msgid "Modify Extended Information" -msgstr "修改資訊" +msgstr "修改詳細資訊" msgid "Modify Information" msgstr "修改資訊" @@ -7576,12 +7565,9 @@ msgid "Member" msgstr "用戶" -# XXX 這譯文絶對有問題,但想不到怎樣譯較好 - ambrose 20070415 -#, fuzzy msgid "Requesting" -msgstr "對話視窗 (Request Dialog)" - -# #NOTE 根據「plugins/log_reader.c#1971」的訊息來判斷,應該是指一種新式的通訊協定。 +msgstr "" + msgid "Admin" msgstr "" @@ -7597,14 +7583,12 @@ msgid "About me" msgstr "關於我" -#, fuzzy msgid "Category" -msgstr "聊天錯誤" +msgstr "類別" msgid "The Qun does not allow others to join" msgstr "這群組不容許外人加入" -#, fuzzy msgid "Join QQ Qun" msgstr "加入群組" @@ -7669,9 +7653,9 @@ msgid "%u requested to join Qun %u for %s" msgstr "使用者 %d 要求加入群組 %d" -#, fuzzy, c-format +#, c-format msgid "%u request to join Qun %u" -msgstr "使用者 %d 要求加入群組 %d" +msgstr "使用者 %u 要求加入群組 %u" #, c-format msgid "Failed to join Qun %u, operated by admin %u" @@ -7682,9 +7666,9 @@ msgstr "" # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間 -#, fuzzy, c-format +#, c-format msgid "Removed buddy %u." -msgstr "移除好友" +msgstr "成功移除好友 %u。" # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間 #, c-format @@ -7718,14 +7702,12 @@ msgid " FromMobile" msgstr " 使用行動裝置" -#, fuzzy msgid " BindMobile" msgstr " 綁定行動裝置" msgid " Video" msgstr " 視訊" -#, fuzzy msgid " Zone" msgstr " 區" @@ -7805,21 +7787,20 @@ msgid "Login Information" msgstr "登入資訊" -#, fuzzy msgid "

Original Author:
\n" -msgstr "外部使用者
" +msgstr "

原作者
\n" msgid "

Code Contributors:
\n" msgstr "

程式碼貢獻者
\n" -#, fuzzy msgid "

Lovely Patch Writers:
\n" -msgstr "最近更新時間:%s
\n" - -# NOTE qq_data->net_stat.sent,送出的數據封包數量(並非位元組數量)的總計 -#, fuzzy +msgstr "

可愛的模組作者
\n" + msgid "

Acknowledgement:
\n" -msgstr "送出封包:%lu 個
\n" +msgstr "

鳴謝
\n" + +msgid "

Scrupulous Testers:
\n" +msgstr "

仔細的品管人員:
\n" msgid "

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

還有所有幕後默默貢獻的無名英雄們…
\n" @@ -7846,6 +7827,10 @@ msgid "About OpenQ" msgstr "關於 OpenQ" +#, fuzzy +msgid "Modify Buddy Memo" +msgstr "修改地址" + #. *< type #. *< ui_requirement #. *< flags @@ -7866,13 +7851,13 @@ msgstr "選擇伺服器" msgid "QQ2005" -msgstr "" +msgstr "QQ2005" msgid "QQ2007" -msgstr "" +msgstr "QQ2007" msgid "QQ2008" -msgstr "" +msgstr "QQ2008" msgid "Connect by TCP" msgstr "使用 TCP 連線" @@ -7885,6 +7870,9 @@ msgid "Show server news" msgstr "顯示伺服器是日訊息" +msgid "Show chat room when msg comes" +msgstr "" + # XXX 20080810 acli - 譯文有待改進,原文也是 msgid "Keep alive interval (seconds)" msgstr "每隔多少秒送出 Keep Alive" @@ -7898,7 +7886,7 @@ #, c-format msgid "Failed requesting token, 0x%02X" -msgstr "" +msgstr "請求符記失敗,回應碼「0x%02X」" #, c-format msgid "Invalid token len, %d" @@ -7906,7 +7894,7 @@ #. extend redirect used in QQ2006 msgid "Redirect_EX is not currently supported" -msgstr "" +msgstr "暫時不支援 Redirect_EX" #. need activation #. need activation @@ -7976,9 +7964,8 @@ msgstr "設定使用者資訊..." # XXX 這是看了原始碼後的結論(但可能會錯)- acli 20080930 -#, fuzzy msgid "Requesting token" -msgstr "送出請求符記中" +msgstr "請求符記中" msgid "Couldn't resolve host" msgstr "無法解析主機" @@ -9529,6 +9516,9 @@ msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP 的帳號不可含有空白字元或「@」符號" +msgid "SIP connect server not specified" +msgstr "未有指定 SIP 伺服器" + #. *< type #. *< ui_requirement #. *< flags @@ -11461,8 +11451,10 @@ msgstr "反向" # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029 +# XXX flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli +# NOTE 譯文改動 by c9s msgid "Highlight matches" -msgstr "標示匹配字串" +msgstr "標示比對字串" # NOTE 除錯視窗的工具列的快取選單的指令,指「工具列的按紐以圖示標示」,下二同 msgid "_Icon Only" @@ -11507,11 +11499,13 @@ msgid "Fatal Error" msgstr "嚴重錯誤訊息" +# XXX 暫譯 - 20090226 acli msgid "bug master" -msgstr "" - +msgstr "除錯主管" + +# NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」 msgid "artist" -msgstr "藝人" +msgstr "平面設計" #. feel free to not translate this msgid "Ka-Hing Cheung" @@ -11543,7 +11537,7 @@ msgstr "支援兼品管" msgid "XMPP" -msgstr "" +msgstr "XMPP" msgid "original author" msgstr "原作者" @@ -11700,6 +11694,9 @@ msgid "Macedonian" msgstr "馬其頓文" +msgid "Mongolian" +msgstr "蒙古文" + # NOTE 譯文不統一,一般似乎偏向音譯,但譯音也不統一 # NOTE 音譯包括:博克馬爾、波克默爾、布克莫爾、巴克摩 # NOTE 其他譯法包括:丹麥-挪威文(大英百科)、丹麥式挪威文(維基百科)、東挪威文、標準挪威文(國內不是標準,國外是 :P) @@ -11831,9 +11828,31 @@ "

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

" -msgstr "" -"IRC: irc.freenode.net 上的 #pidgin 頻道

" +msgid "" +"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 "" +"電郵支援: support@pidgin.im

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

" +msgstr "" +"IRC 頻道 irc.freenode.net 上的 #pidgin 頻道

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

" +msgstr "" +"XMPP 聊天室:devel@conference.pidgin.im

" msgid "Current Developers" msgstr "現任開發者" @@ -12497,6 +12516,10 @@ msgid "Pidgin" msgstr "Pidgin" +#, c-format +msgid "Exiting because another libpurple client is already running.\n" +msgstr "" + msgid "Open All Messages" msgstr "開啟所有訊息" @@ -12837,6 +12860,10 @@ msgid "No proxy" msgstr "不使用代理伺服器" +#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings +msgid "Use remote DNS with SOCKS4 proxies" +msgstr "使用 SOCKS4 代理伺服器時使用遠端 DNS" + msgid "_User:" msgstr "使用者(_U):" @@ -13339,9 +13366,9 @@ msgid "_Edit" msgstr "修改(_E)" -# FIXME Tooltip中文怎寫? +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli msgid "Pidgin Tooltip" -msgstr "Pidgin Tooltip" +msgstr "Pidgin 工具提示" # NOTE 這是「Default」表情主題的說明 msgid "Pidgin smileys" @@ -13475,9 +13502,9 @@ msgid "Error Messages" msgstr "錯誤訊息" -# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029 +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 12/27/2008 - 20090226 acli msgid "Highlighted Messages" -msgstr "反白訊息" +msgstr "已標示訊息" msgid "System Messages" msgstr "系統訊息" @@ -13945,9 +13972,9 @@ msgstr "瀏覽過的超連結顏色" # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029 -# FIXME 什麼是「反白訊息名稱」? - acli 20080511 +# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 20081227 - 20090226 acli msgid "Highlighted Message Name Color" -msgstr "反白訊息名稱顏色" +msgstr "已標示訊息名稱顏" msgid "GtkTreeView Horizontal Separation" msgstr "GtkTreeView 水平間隔距離" @@ -14042,7 +14069,7 @@ #, c-format msgid "You can upgrade to %s %s today." -msgstr "" +msgstr "%s 現已可升級至 %s 版。" msgid "New Version Available" msgstr "有新版本" @@ -14312,9 +14339,6 @@ msgid "Only when docked" msgstr "只在停駐時生效" -msgid "_Flash window when chat messages are received" -msgstr "收到聊天訊息後閃動視窗(_F)" - msgid "Windows Pidgin Options" msgstr "Windows 版 Pidgin 選項" @@ -14364,6 +14388,19 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。" +#~ msgid "Unable to retrieve MSN Address Book" +#~ msgstr "無法讀取 MSN 通訊錄" + +#~ msgid "_Flash window when chat messages are received" +#~ msgstr "收到聊天訊息後閃動視窗(_F)" + +#~ msgid "" +#~ "You may be disconnected shortly. You may want to use TOC until this is " +#~ "fixed. Check %s for updates." +#~ msgstr "" +#~ "您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看" +#~ "有沒有更新。" + #~ msgid "Connection to server lost (no data received within %d second)" #~ msgid_plural "" #~ "Connection to server lost (no data received within %d seconds)" diff -r a0668fbf2483 -r b98519a42e53 share/ca-certs/AOL_Member_CA.pem --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/AOL_Member_CA.pem Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIBBzANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTA0MDYwNDE3 +MjYzOVoXDTI5MDYwNDE3MjYzOVowZzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZp +cmdpbmlhMQ8wDQYDVQQHEwZEdWxsZXMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5l +IEluYy4xFjAUBgNVBAMTDUFPTCBNZW1iZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQD4Y9jxzNYRbwXh1p9DJycl+q9nh3Ss3Nb8wpq9M3JOZbBa +zev4qWlIOW5oLnEWbp5ZfMJ8ze1uQ9gJQk4Nmn3utVojgdKkW6lRVBzf9oTfGcM+ +lC2NuhD46EMIDzI1bDUx+NbT/Akx1qmheiAGWQzgK42EwzegCB7xNXMQ3U/9DHKT +Jm6vxRw548rzlW8wwoU9TYQgyD490EDW/gZKGHMLbldn24PBE2aX071ZvH76LzZF +FM28v6tod79I6xGJTmqE810c5WtqAOZrjUikCbkh3C1mKfRWnvAFaP/MwcmIvNIs +C68ddBqGaKRtFHTsJID4lbnzLjw9IG8JAjjqOjgFAgMBAAGjgeUwgeIwDgYDVR0P +AQH/BAQDAgGGMB0GA1UdDgQWBBRhppltJJ8OEYjmOeD+dNEFaVKpQzAfBgNVHSME +GDAWgBQArdmj9nn2bnSpfzM9gRfXTM8z3jAPBgNVHRMBAf8EBTADAQH/MEgGA1Ud +IARBMD8wPQYEVR0gADA1MDMGCCsGAQUFBwIBFidodHRwczovL3BraS1pbmZvLmFv +bC5jb20vQU9ML2luZGV4Lmh0bWwwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2Ny +bC5hb2wuY29tL0FPTC9NYXN0ZXJDUkwuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQAM +nbzMHdQukRuvoDrrzV78JSopjrMg4Bc3+vy7xbUUuxxmDm9YX8Zx0BOJx60jC+1M +uFjB48KkJExldg2zhmRPKLrPlvhlmg6CJvWChU41ILNFzGDuD04glDorL8sjEJtG +G37DVnVJJKS4TZ8caNTm8i+vju0rt+WWaxw9jb8g028tVC+ceTX92gbeaCAgS69d +q15mwxRke/cC5ieWrRgeq/OCYPxMX7YKUnuenDsuzjxCXzZta/6hdooiIf1b6L1/ +n85RdEhsrLXRomr6B0Te0NupjRgf8bnF6Crruj07GIzADDCzySEcM0w6SVPUqLq6 +OCM9OmWCXnlxFfglK30Z +-----END CERTIFICATE----- diff -r a0668fbf2483 -r b98519a42e53 share/ca-certs/America_Online_Root_Certification_Authority_1.pem --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/America_Online_Root_Certification_Authority_1.pem Mon Mar 02 22:07:59 2009 +0000 @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJV +UzEcMBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1l +cmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4X +DTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJp +Y2EgT25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCa +xlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CGv2BlnEtUiMJIxUo5vxTjWVXl +GbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44zDyL9Hy7n +BzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145Lcx +VR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiE +mf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCu +JKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Zo/Z5 +9m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA +A4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF +Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOM +IOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTI +dGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j +8uB9Gr784N/Xx6dssPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- diff -r a0668fbf2483 -r b98519a42e53 share/ca-certs/Makefile.am --- a/share/ca-certs/Makefile.am Mon Mar 02 21:53:53 2009 +0000 +++ b/share/ca-certs/Makefile.am Mon Mar 02 22:07:59 2009 +0000 @@ -1,4 +1,5 @@ CERTIFICATES = \ + America_Online_Root_Certification_Authority_1.pem \ CAcert_Root.pem \ CAcert_Class3.pem \ Equifax_Secure_CA.pem \ @@ -9,6 +10,7 @@ VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem EXTRA_CERTS = \ + AOL_Member_CA.pem \ Microsoft_Internet_Authority.pem \ Microsoft_Secure_Server_Authority.pem \ VeriSign_International_Server_Class_3_CA.pem