# HG changeset patch # User Richard Laager # Date 1193161266 0 # Node ID f7e4a558a439933ff445c6f2f44b3539b6ec5026 # Parent 99dd2f0940ae9d9453dba560f4a15cde63383ce7# Parent 7697f68723806b5029f7fbd92acc861f5ac7127c propagate from branch 'im.pidgin.pidgin.2.2.2' (head 5b8360c29b011dc10812b101bc5fa0f63b598d0b) to branch 'im.pidgin.pidgin' (head 38fc34684838f1e3890d0d04585797dcc423b838) diff -r 7697f6872380 -r f7e4a558a439 COPYRIGHT --- a/COPYRIGHT Tue Oct 23 17:40:56 2007 +0000 +++ b/COPYRIGHT Tue Oct 23 17:41:06 2007 +0000 @@ -247,6 +247,7 @@ Kevin Miller Paul Miller Arkadiusz Miskiewicz +David Mohr Andrew Molloy Michael Monreal Benjamin Moody @@ -279,6 +280,7 @@ Eduardo Pérez Matt Perry Nathan Peterson +Sebastián E. Peyrott Celso Pinto Joao Luís Marques Pinto Aleksander Piotrowski diff -r 7697f6872380 -r f7e4a558a439 ChangeLog --- a/ChangeLog Tue Oct 23 17:40:56 2007 +0000 +++ b/ChangeLog Tue Oct 23 17:41:06 2007 +0000 @@ -1,5 +1,38 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +version 2.2.3: + http://developer.pidgin.im/query?status=closed&milestone=2.2.3 + NOTE: Some bugs marked fixed in 2.2.1 may not have been fixed + until this release (2.2.3). + + libpurple: + * Real usernames are now shown in the system log. + + Pidgin: + * If you alias a buddy to an alias that is already present within + a particular group, we now offer to merge the buddies into the + same contact. + * A music emblem is now displayed in the buddy list for a buddy if we + know she is listening to some soothing music. + * Added a 'Move to' menu in buddy list context menu for moving buddies + to other groups as an alternative to dragging. + * Group headings are now marked via an underline instead of a + different color background. + * It is now possible to mark a chat on your buddy list as "Persistent" + so you do not leave the chat when the window or tab is closed. + * The auto-join option for chats is now listed in the "Add Chat" + dialog along with the new persistence option. + * Closing an IM no longer immediately closes your conversation. It + will now remain active for a short time so that if the conversation + resumes, the history will be retained. A preference has been added + to toggle this behavior. + * The "Smiley" menu has been moved to the top-level of the toolbar. + * Pidgin's display is now saved with the command line for session + restoration. (David Mohr) + * ICQ Birthday notifications are shown as buddy list emblems. + * Plugin actions are now available from the docklet context menu + in addition to the Tool menu of the buddy list. + version 2.2.2 (10/23/2007): http://developer.pidgin.im/query?status=closed&milestone=2.2.2 NOTE: Due to the way this release was made, it is possible that diff -r 7697f6872380 -r f7e4a558a439 ChangeLog.API --- a/ChangeLog.API Tue Oct 23 17:40:56 2007 +0000 +++ b/ChangeLog.API Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,17 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -Version 2.2.0 (09/13/2007): +version 2.2.2 (??/??/????): + libpurple: + Changed: + * The size parameter of purple_util_write_data_to_file_absolute + has been changed to gssize instead of a size_t to correctly + indicate that -1 can be used for a nul-delimited string. + * The documentation for purple_savedstatuses_get_popular used to + incorrectly claim that the active status is excluded from the + returned list. The documentation has been corrected. Also, the + function now returns a correct list when called with a value of 0. + +version 2.2.0 (09/13/2007): libpurple: Added: * PURPLE_MESSAGE_INVISIBLE flag, which can be used by @@ -57,7 +68,7 @@ * gnt_util_parse_xhtml_to_textview to parse XHTML strings in a GntTextView (this works only if libxml2 is available) -Version 2.1.1 (08/20/2007): +version 2.1.1 (08/20/2007): libpurple: Changed: * PurpleAccountUiOps.request_authorize's authorize_cb and @@ -89,9 +100,6 @@ * purple_timeout_add_seconds Callers should prefer this to purple_timeout_add for timers longer than 1 second away. Be aware of the rounding, though. - * purple_timeout_add_seconds - Callers should prefer this to purple_timeout_add for timers - longer than 1 second away. Be aware of the rounding, though. * purple_xfer_get_remote_user * purple_pounces_get_all_for_ui * purple_prefs_get_children_names diff -r 7697f6872380 -r f7e4a558a439 ChangeLog.win32 --- a/ChangeLog.win32 Tue Oct 23 17:40:56 2007 +0000 +++ b/ChangeLog.win32 Tue Oct 23 17:41:06 2007 +0000 @@ -126,7 +126,7 @@ version 0.82 (08/26/2004): * Selecting away messages using the system tray icon works - (Thanks Fran?ois Gagn?) + (Thanks Franois Gagn) * Transparency plugin will save your settings again (Kevin Stange) * Updated gtk-wimp to 0.6.2 * Updated libpng to 1.2.6 (major security update) diff -r 7697f6872380 -r f7e4a558a439 Doxyfile.in --- a/Doxyfile.in Tue Oct 23 17:40:56 2007 +0000 +++ b/Doxyfile.in Tue Oct 23 17:41:06 2007 +0000 @@ -169,7 +169,8 @@ "endsignalproto=@endcode" \ "signaldesc=@par Description:" \ "signals=@b Signals:" \ - "endsignals=" + "endsignals=" \ + "constreturn=@note The return value of this function must not be modified or freed. @return" # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. @@ -457,7 +458,8 @@ # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. -EXCLUDE = +EXCLUDE = libpurple/purple-client.h \ + libpurple/purple-client-bindings.h # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. @@ -857,7 +859,7 @@ # feature is still experimental and incomplete at the # moment. -GENERATE_XML = NO +GENERATE_XML = YES # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be @@ -1160,7 +1162,7 @@ # not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). # If 0 is used for the depth value (the default), the graph is not depth-constrained. -MAX_DOT_GRAPH_DEPTH = 0 +MAX_DOT_GRAPH_DEPTH = 2 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. diff -r 7697f6872380 -r f7e4a558a439 INSTALL --- a/INSTALL Tue Oct 23 17:40:56 2007 +0000 +++ b/INSTALL Tue Oct 23 17:41:06 2007 +0000 @@ -32,15 +32,19 @@ `configure' itself. Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. + messages telling which features it is checking for. If it finishes + successfully, it will print out of a summary of the build options. + This summary will also appear in the help->about dialog. - 2. Type `make' to compile the package. + 2. Type `make' to compile the package. On some systems, you may need + to use `gmake' instead. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and - documentation. + documentation. You must have write access to the prefix you are + installing to. See below for more details on the prefix. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the @@ -50,6 +54,9 @@ for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. + + 6. If you have *not* run make distclean, you can use the target + `make uninstall` to remove the files installed by `make install`. Compilers and Options ===================== @@ -119,6 +126,40 @@ you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. + By default both the GTK+ UI (Pidgin) and the ncurses UI (Finch) will be +built, assuming that configure finds the necessary libraries and headers for +each. You can disable the GTK+ UI with `--disable-gtkui' and the ncurses UI +with `--disable-consoleui'. + + `--disable-screensaver' will build libpurple without support for detecting +when it should mark accounts idle based on mouse or keyboard usage. + + `--disable-sm' will build without support for the X session management. +Doing so will remove the ability to have pidgin start up with your window +manager. + + `--disable-gtkspell' will remove the ability to highlight misspelled words. + + `--disable-gevolution' will cause the evolution integration plugin not to +compile. + + `--disable-gstreamer' will build without sound support. This applies to +*both* Pidgin and Finch. + + `--enable-gnutls=yes,no' will enable or disable the use of gnutls for ssl support. Disabling both gnutls and nss will mean you cannot use either MSN or Google Talk. There is no static option for gnutls at this time. + + `--enable-nss=yes,no,static' will enable or disable the use of nss for ssl support. This is the only option for ssl support if you are attempting to compile a static version of Pidgin or Finch. + +Optional Packages: + + `--with-silc-includes=DIR' and `--with-silc-libs=DIR' can be used if your silc libraries are installed to a location not in your path. + + `--with-static-prpls' takes a list of comma separated protocols to build in statically (rather than as plugins). Use this with care. + + `--with-dynamic-prpls' takes a list of comma separated protocols also. If used only those listed will be built. If no protocols are listed with either `--with-static-prpls' or with `--with-dynamic-prpls' then Pidgin and Finch will be effectively useless. + + If configure does not find python, it will build without DBUS support. Thiswill disable scripts such as purple-remote and purple-uri-handler, effectively disabling integration with the browser. You can tell configure where your python binary is located with `--with-python=PATH' + Specifying the System Type ========================== @@ -179,4 +220,4 @@ Print the version of Autoconf used to generate the `configure' script, and exit. -`configure' also accepts some other, not widely useful, options. +`configure' also accepts some other, not widely useful, options. Many of these are related to having various optional libaries installed to locations outside of your path. diff -r 7697f6872380 -r f7e4a558a439 Makefile.am --- a/Makefile.am Tue Oct 23 17:40:56 2007 +0000 +++ b/Makefile.am Tue Oct 23 17:41:06 2007 +0000 @@ -48,6 +48,13 @@ if HAVE_DOXYGEN @echo "Running doxygen..." @doxygen +if HAVE_XSLTPROC + @echo "Generating devhelp index..." + @xsltproc doxy2devhelp.xsl doc/xml/index.xml > doc/html/pidgin.devhelp + @echo "(Symlink doc/html to ~/.local/share/gtk-doc/html/pidgin to make devhelp see the documentation)" +else + @echo "Not generating devhelp index: xsltproc was not found by configure" +endif else @echo "doxygen was not found during configure. Aborting." @echo; diff -r 7697f6872380 -r f7e4a558a439 Makefile.mingw --- a/Makefile.mingw Tue Oct 23 17:40:56 2007 +0000 +++ b/Makefile.mingw Tue Oct 23 17:41:06 2007 +0000 @@ -65,12 +65,16 @@ all: $(PIDGIN_CONFIG_H) $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) +ifndef DISABLE_NLS $(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) +endif install: all $(PIDGIN_INSTALL_DIR) $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) install $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) install +ifndef DISABLE_NLS $(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) install +endif $(MAKE) -C share -f $(MINGW_MAKEFILE) install create_release_install_dir: install diff -r 7697f6872380 -r f7e4a558a439 configure.ac --- a/configure.ac Tue Oct 23 17:40:56 2007 +0000 +++ b/configure.ac Tue Oct 23 17:41:06 2007 +0000 @@ -46,7 +46,7 @@ m4_define([purple_lt_current], [2]) m4_define([purple_major_version], [2]) m4_define([purple_minor_version], [2]) -m4_define([purple_micro_version], [1]) +m4_define([purple_micro_version], [3]) m4_define([purple_version_suffix], []) m4_define([purple_version], [purple_major_version.purple_minor_version.purple_micro_version]) @@ -55,7 +55,7 @@ m4_define([gnt_lt_current], [2]) m4_define([gnt_major_version], [2]) m4_define([gnt_minor_version], [2]) -m4_define([gnt_micro_version], [1]) +m4_define([gnt_micro_version], [3]) m4_define([gnt_version_suffix], []) m4_define([gnt_version], [gnt_major_version.gnt_minor_version.gnt_micro_version]) @@ -2101,6 +2101,10 @@ [AC_HELP_STRING([--enable-dot], [enable graphs in doxygen via 'dot'])], enable_dot="$enableval", enable_dot="yes") +AC_ARG_ENABLE(devhelp, + [AC_HELP_STRING([--enable-devhelp], + [enable building index for devhelp documentation browser])], + enable_devhelp="$enableval", enable_devhelp="yes") if test "x$enable_doxygen" = xyes; then AC_CHECK_PROG(DOXYGEN, doxygen, true, false) @@ -2120,14 +2124,28 @@ AC_DEFINE_UNQUOTED(HAVE_DOT, 1, [whether or not we have dot]) fi fi + + if test "x$enable_devhelp" = "xyes"; then + AC_CHECK_PROG(XSLTPROC, xsltproc, true, false) + + if test $XSLTPROC = false; then + enable_devhelp="no"; + AC_MSG_WARN([*** xsltproc not found; devhelp index will not be created]) + else + AC_DEFINE_UNQUOTED(HAVE_XSLTPROC, 1, [whether or not we have xsltproc for devhelp index]) + fi + fi fi else enable_dot="no" + enable_devhelp="no" fi AC_SUBST(enable_doxygen) AC_SUBST(enable_dot) +AC_SUBST(enable_devhelp) AM_CONDITIONAL(HAVE_DOXYGEN, test "x$enable_doxygen" = "xyes") +AM_CONDITIONAL(HAVE_XSLTPROC, test "x$enable_devhelp" = "xyes") AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug], [compile with debugging support])], , enable_debug=no) diff -r 7697f6872380 -r f7e4a558a439 doc/C-HOWTO.dox --- a/doc/C-HOWTO.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/C-HOWTO.dox Tue Oct 23 17:41:06 2007 +0000 @@ -269,3 +269,4 @@ you may have guessed, this also gets read when libpurple is probing your plugin. If this is missing, the plugin will not load. */ +// vim: syntax=c.doxygen diff -r 7697f6872380 -r f7e4a558a439 doc/account-signals.dox --- a/doc/account-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/account-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -11,6 +11,8 @@ @signal account-status-changed @endsignals + @see account.h +
@signaldef account-added @@ -101,4 +103,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/blist-signals.dox --- a/doc/blist-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/blist-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -13,6 +13,8 @@ @signal blist-node-aliased @endsignals + @see blist.h +
@signaldef buddy-status-changed @@ -105,4 +107,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/certificate-signals.dox --- a/doc/certificate-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/certificate-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -5,6 +5,8 @@ @signal certificate-deleted @endsignals + @see certificate.h +
@signaldef certificate-stored @@ -28,4 +30,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/cipher-signals.dox --- a/doc/cipher-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/cipher-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -5,6 +5,8 @@ @signal cipher-removed @endsignals + @see cipher.h +
@signaldef cipher-added @@ -26,4 +28,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/connection-signals.dox --- a/doc/connection-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/connection-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -7,6 +7,8 @@ @signal signed-off @endsignals + @see connection.h +
@signaldef signing-on @@ -46,4 +48,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/conversation-signals.dox --- a/doc/conversation-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/conversation-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -32,6 +32,8 @@ @signal conversation-extended-menu @endsignals + @see conversation.h + @signaldef writing-im-msg @signalproto gboolean (*writing_im_msg)(PurpleAccount *account, const char *who, @@ -427,6 +429,7 @@ conversation. @param conv The conversation. @param list A pointer to the list of actions. + @since 2.1.0 @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/core-signals.dox --- a/doc/core-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/core-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -4,6 +4,8 @@ @signal quitting @endsignals + @see core.h +
@signaldef quitting @@ -15,4 +17,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/dbus-server-signals.dox --- a/doc/dbus-server-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/dbus-server-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -5,6 +5,8 @@ @signal dbus-introspect @endsignals + @see dbus-server.h +
@signaldef dbus-method-called @@ -29,4 +31,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/funniest_home_convos.txt --- a/doc/funniest_home_convos.txt Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/funniest_home_convos.txt Tue Oct 23 17:41:06 2007 +0000 @@ -487,3 +487,21 @@ established that 19:03 its functioning just fine +-- + +17:12 I think I foundage a bug +17:13 I don't think blocking works correctly for the AIM protocol +17:13 because a girl attempted to block me in pidgin and I can still + talk to her +17:14 [screen name expunged]: I already told you yesterday. You don't + need me to ease your mind, you want me to change MY mind. Well, + you're out of luck. I don't know how you're still messaging me, + because I already blocked you, but I demand you stop immediately. + For now on, I will save every message that you send me as + evidence for the next time I decide to call the police. I did + call them yesterday, but I didn't have evidence. The more you + message me now, the more you're digging you're own grave, so I + advice you to stop. +17:14 see? +17:16 I think blocking in pidgin not working is not your biggest + problem here. diff -r 7697f6872380 -r f7e4a558a439 doc/gtkaccount-signals.dox --- a/doc/gtkaccount-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/gtkaccount-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -4,6 +4,8 @@ @signal account-modified @endsignals + @see gtkaccount.h +
@signaldef account-modified @@ -15,4 +17,4 @@ @param account The account that has been modified. @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/gtkblist-signals.dox --- a/doc/gtkblist-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/gtkblist-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -7,6 +7,8 @@ @signal drawing-tooltip @endsignals + @see gtkblist.h +
@signaldef gtkblist-hiding @@ -52,4 +54,4 @@ a compact tooltip for a non-priority buddy. @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/gtkconv-signals.dox --- a/doc/gtkconv-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/gtkconv-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -12,6 +12,8 @@ @signal conversation-displayed @endsignals + @see gtkconv.h +
@signaldef conversation-dragging @@ -125,6 +127,7 @@ @signaldesc Emitted immediately before an existing conversation is hidden. @param gtkconv The PidginConversation + @since 2.2.0 @endsignaldef @signaldef conversation-displayed @@ -132,9 +135,10 @@ void (*conversation_displayed)(PidginConversation *gtkconv); @endsignalproto @signaldesc - Emitted right after the Pidgin UI is reattached to a conversation. + Emitted right after the Pidgin UI is attached to a new or a hidden conversation. @param gtkconv The PidginConversation + @since 2.2.0 @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/gtkimhtml-signals.dox --- a/doc/gtkimhtml-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/gtkimhtml-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -8,6 +8,8 @@ @signal format_function_update @endsignals + @see gtkimhtml.h +
@signaldef url_clicked @@ -57,4 +59,4 @@ @param data User defined data. @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/gtklog-signals.dox --- a/doc/gtklog-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/gtklog-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -4,6 +4,8 @@ @signal log-displaying @endsignals + @see gtklog.h +
@signaldef log-displaying @@ -17,4 +19,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/imgstore-signals.dox --- a/doc/imgstore-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/imgstore-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -4,6 +4,8 @@ @signal image-deleting @endsignals + @see imgstore.h +
@signaldef image-deleting @@ -11,7 +13,7 @@ char *(*image_deleting)(const PurpleStoredImage *img); @endsignalproto @signaldesc - Emitted when a PurpleStoredImage is about to be destroyed. This allows + Emitted when a #PurpleStoredImage is about to be destroyed. This allows for what amounts to weak references. Code can hold onto a pointer to the PurpleStoredImage without actually "holding" a reference. They can then use a signal handler to let them know when their img is about to @@ -21,4 +23,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/log-signals.dox --- a/doc/log-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/log-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -4,6 +4,8 @@ @signal log-timestamp @endsignals + @see log.h +
@signaldef log-timestamp @@ -21,4 +23,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/notify-signals.dox --- a/doc/notify-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/notify-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -6,6 +6,8 @@ @signal displaying-emails-notification @endsignals + @see notify.h + @signaldef displaying-userinfo @signalproto void (*displaying_userinfo)(PurpleAccount *account, const char *who, PurpleNotifyUserInfo *user_info); @@ -33,6 +35,7 @@ @param from Who the email is from. @param to Who the email is to. @param url A url to view the email. + @since 2.1.0 @endsignaldef @signaldef displaying-emails-notification @@ -50,7 +53,8 @@ @param tos Who the emails are to. @param urls The urls to view the emails. @param count Number of emails being notified of. + @since 2.1.0 @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/plugin-ids.dox --- a/doc/plugin-ids.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/plugin-ids.dox Tue Oct 23 17:41:06 2007 +0000 @@ -2,10 +2,10 @@ @section Introduction Every plugin contains a unique identifier to prevent duplicate plugin - loading and conflicts. This, which will be called a plugin ID from here - on, must follow a specific format. This format categorizes a plugin and - makes duplicate IDs unlikely. - + loading and conflicts. Third-party plugins (that is, plugins written by + anyone who is not a libpurple, Pidgin, or Finch developer) are expected + to use a plugin ID that follows a specific format. This format + categorizes plugins and makes duplicate IDs highly unlikely. @section Format The basic format of a plugin ID is as follows: @@ -15,27 +15,79 @@ The @em type indicator specifies the type of plugin. This must be one of the following: - - core - Core plugin, capable of being loaded in any program using - libpurple. It must not use any UI-specific code. - - prpl - Protocol plugin, providing additional protocols to - connect to. - - lopl - Loader plugin, which loads scripts as plugins (like Perl - or TCL). - - gtk - GTK+ 2.x plugin. It may use GTK+ code, but cannot use any - window toolkit code (such as X11 or Win32). - - gtk-x11 - GTK+ 2.x plugin using X11 code. - - gtk-win32 - GTK+ 2.x plugin using Win32 code. - - qpe - Gaim for Qtopia plugin. + - core - A core libpurple plugin, capable of being loaded in any + program using libpurple. Core plugins may not contain any + UI-specific code. + - prpl - A protocol plugin. This is a special type of core plugin, + which provides libpurple the ability to connect to + another IM or chat network. + - lopl - A loader plugin, which loads scripts as plugins. Perl and + Tcl plugins are made possible by loader plugins. + - gtk - A GTK+ 2.x (a.k.a. Pidgin) plugin. These plugins may use + GTK+ code, but may not use window toolkit code, such as + X11, Win32, Cocoa, or Carbon. + - gtk-x11 - A GTK+ 2.x plugin that uses X11 code. These plugins may + use both GTK+ code and X11 code, allowing to hook into + features specific to X11. + - gtk-win32 - A GTK+ plugin that uses Win32 code. These plugins may use + both GTK+ code and Win32 code, allowing to hook into + features available on Windows. + - gnt - A GNT (a.k.a. Finch) plugin. These plugins may use GNT code. + - qpe - A plugin for the (now-abandoned) Qutopia user interface. + + The @em username must be a unique identifier for you. It + @em should be your http://developer.pidgin.im Trac user ID. Failing that, you + could use your SourceForge user ID or your Freenode IRC nickname, if you + have either. The http://developer.pidgin.im Trac user ID is preferred. + Do @em not leave this field blank! + + The @em pluginname is the name of your plugin. It is usually all + lowercase letters and matches the static plugin ID (the first argument to + the PURPLE_INIT_PLUGIN() macro call), although it can be anything you + like. Do @em not include version information in the plugin ID--the + #PurplePluginInfo structure already has a field for this. + + @section nospaces One Last Rule for Plugin IDs + + The last rule of plugin IDs is the most important of all. Plugin IDs may + @em NOT contain spaces. If you need a space, use another hyphen (-). - The @em username must be a unique identifier for that person. It - @em should be your SourceForge ID. Do @em not leave this field - blank. + @section exceptions Exceptions to the Rule + + As with any rule there are exceptions. If you browse through the source + tree you will see that the plugins we distribute with the Pidgin source + do not contain a username field. This is because while one developer may + have written each specific plugin, the plugins are maintained + collectively by the entire development team. This lack of a username + field is also an indicator that the plugin is one of our plugins and not + a third-party plugin. + + Another exception to the rule is the Purple Plugin + Pack. All plugins whose lives started in the Purple Plugin Pack use + "plugin_pack" for the username field to indicate origination in + the Purple Plugin Pack. - The @em pluginname is the name of your plugin. It can be whatever you like, - though it's common to keep it all lowercase. Do not use spaces! If you - want a space, use a '-'. Please do not put a version indicator in the ID. - The PurplePlugin structure already has a field for this. + These two exceptions are mentioned here for completeness. We don't + encourage breaking the conventions set forth by the rules outlined above. + + @section examples Examples of Well-Chosen Plugin IDs + + The following is a list of well-chosen Plugin IDs listing a few good examples. + - "gtk-amc_grim-guifications" - This is the plugin ID for the + Guifications 2.x plugin. + - "gtk-rlaager-album" - This is the plugin ID for the Album + plugin, which is now part of the + Purple Plugin Pack. Its ID follows the + rules because its life started prior + to its inclusion in the Plugin Pack. + - "core-rlaager-irchelper" - This is the plugin ID for the IRC + Helper plugin, which is now part + of the Purple Plugin Pack. Its ID + follows the rules because its + life started prior to its + inclusion in the Plugin Pack. @section plugin-db Plugin Database Although it doesn't exist yet, in time there will be a plugin database @@ -45,4 +97,4 @@ */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/plugin-signals.dox --- a/doc/plugin-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/plugin-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -5,6 +5,8 @@ @signal plugin-unload @endsignals + @see plugin.h +
@signaldef plugin-load @@ -26,4 +28,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/savedstatus-signals.dox --- a/doc/savedstatus-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/savedstatus-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -4,6 +4,8 @@ @signal savedstatus-changed @endsignals + @see savedstatus.h +
@signaldef savedstatus-changed @@ -15,4 +17,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/sound-signals.dox --- a/doc/sound-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/sound-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -4,6 +4,8 @@ @signal playing-sound-event @endsignals + @see sound.h +
@signaldef playing-sound-event @@ -18,4 +20,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doc/xfer-signals.dox --- a/doc/xfer-signals.dox Tue Oct 23 17:40:56 2007 +0000 +++ b/doc/xfer-signals.dox Tue Oct 23 17:41:06 2007 +0000 @@ -12,6 +12,8 @@ @signal file-send-complete @endsignals + @see ft.h +
@signaldef file-recv-accept @@ -109,4 +111,4 @@ @endsignaldef */ -// vim: syntax=c tw=75 et +// vim: syntax=c.doxygen tw=75 et diff -r 7697f6872380 -r f7e4a558a439 doxy2devhelp.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doxy2devhelp.xsl Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .html + + + + + + + + + + + + + + + + .html# + + + + + + + + + + + .html# + + + + diff -r 7697f6872380 -r f7e4a558a439 finch/gntaccount.h --- a/finch/gntaccount.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntaccount.h Tue Oct 23 17:41:06 2007 +0000 @@ -59,6 +59,8 @@ * Show the edit dialog for an account. * * @param account The account to edit, or @c NULL to create a new account. + * + * @since 2.2.0 */ void finch_account_dialog_show(PurpleAccount *account); diff -r 7697f6872380 -r f7e4a558a439 finch/gntblist.c --- a/finch/gntblist.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntblist.c Tue Oct 23 17:41:06 2007 +0000 @@ -1510,6 +1510,8 @@ } else if (strcmp(text, GNT_KEY_CTRL_O) == 0) { purple_prefs_set_bool(PREF_ROOT "/showoffline", !purple_prefs_get_bool(PREF_ROOT "/showoffline")); + } else if (strcmp(text, GNT_KEY_INS) == 0) { + purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); } else if (!gnt_tree_is_searching(GNT_TREE(ggblist->tree))) { if (strcmp(text, "t") == 0) { finch_blist_toggle_tag_buddy(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree))); @@ -2200,12 +2202,12 @@ group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); - field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE); + field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE); purple_request_field_set_type_hint(field, "screenname"); purple_request_field_set_required(field, TRUE); purple_request_field_group_add_field(group, field); - field = purple_request_field_account_new("account", _("_Account"), NULL); + field = purple_request_field_account_new("account", _("Account"), NULL); purple_request_field_set_type_hint(field, "account"); purple_request_field_set_visible(field, (purple_connections_get_all() != NULL && @@ -2225,9 +2227,90 @@ } static void +join_chat_select_cb(gpointer data, PurpleRequestFields *fields) +{ + PurpleAccount *account; + const char *name; + PurpleConnection *gc; + PurpleChat *chat; + GHashTable *hash = NULL; + + account = purple_request_fields_get_account(fields, "account"); + name = purple_request_fields_get_string(fields, "chat"); + + if (!purple_account_is_connected(account)) + return; + + gc = purple_account_get_connection(account); + purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name); + chat = purple_blist_find_chat(account, name); + if (chat == NULL) { + if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) + hash = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, name); + } else { + hash = chat->components; + } + serv_join_chat(gc, hash); + if (chat == NULL && hash != NULL) + g_hash_table_destroy(hash); +} + +static void +join_chat_select(GntMenuItem *item, gpointer n) +{ + PurpleRequestFields *fields; + PurpleRequestFieldGroup *group; + PurpleRequestField *field; + + fields = purple_request_fields_new(); + + group = purple_request_field_group_new(NULL); + purple_request_fields_add_group(fields, group); + + field = purple_request_field_string_new("chat", _("Channel"), NULL, FALSE); + purple_request_field_set_required(field, TRUE); + purple_request_field_group_add_field(group, field); + + field = purple_request_field_account_new("account", _("Account"), NULL); + purple_request_field_set_type_hint(field, "account"); + purple_request_field_set_visible(field, + (purple_connections_get_all() != NULL && + purple_connections_get_all()->next != NULL)); + purple_request_field_set_required(field, TRUE); + purple_request_field_group_add_field(group, field); + + purple_request_fields(purple_get_blist(), _("Join a Chat"), + NULL, + _("Please enter the name of the chat you want to join."), + fields, + _("Join"), G_CALLBACK(join_chat_select_cb), + _("Cancel"), NULL, + NULL, NULL, NULL, + NULL); +} + +static void +menu_add_buddy_cb(GntMenuItem *item, gpointer null) +{ + purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); +} + +static void +menu_add_chat_cb(GntMenuItem *item, gpointer null) +{ + purple_blist_request_add_chat(NULL, NULL, NULL, NULL); +} + +static void +menu_add_group_cb(GntMenuItem *item, gpointer null) +{ + purple_blist_request_add_group(); +} + +static void create_menu() { - GntWidget *menu, *sub; + GntWidget *menu, *sub, *subsub; GntMenuItem *item; GntWindow *window; @@ -2248,29 +2331,61 @@ gnt_menu_add_item(GNT_MENU(sub), item); gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL); - item = gnt_menuitem_check_new(_("Show empty groups")); + item = gnt_menuitem_new(_("Join Chat...")); + gnt_menu_add_item(GNT_MENU(sub), item); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), join_chat_select, NULL); + + item = gnt_menuitem_new(_("Show")); + gnt_menu_add_item(GNT_MENU(sub), item); + subsub = gnt_menu_new(GNT_MENU_POPUP); + gnt_menuitem_set_submenu(item, GNT_MENU(subsub)); + + item = gnt_menuitem_check_new(_("Empty groups")); gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), purple_prefs_get_bool(PREF_ROOT "/emptygroups")); - gnt_menu_add_item(GNT_MENU(sub), item); + gnt_menu_add_item(GNT_MENU(subsub), item); gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/emptygroups"); - item = gnt_menuitem_check_new(_("Show offline buddies")); + item = gnt_menuitem_check_new(_("Offline buddies")); gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), purple_prefs_get_bool(PREF_ROOT "/showoffline")); - gnt_menu_add_item(GNT_MENU(sub), item); + gnt_menu_add_item(GNT_MENU(subsub), item); gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/showoffline"); - item = gnt_menuitem_new(_("Sort by status")); + item = gnt_menuitem_new(_("Sort")); gnt_menu_add_item(GNT_MENU(sub), item); + subsub = gnt_menu_new(GNT_MENU_POPUP); + gnt_menuitem_set_submenu(item, GNT_MENU(subsub)); + + item = gnt_menuitem_new(_("By Status")); + gnt_menu_add_item(GNT_MENU(subsub), item); gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "status"); - item = gnt_menuitem_new(_("Sort alphabetically")); - gnt_menu_add_item(GNT_MENU(sub), item); + item = gnt_menuitem_new(_("Alphabetically")); + gnt_menu_add_item(GNT_MENU(subsub), item); gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "text"); - item = gnt_menuitem_new(_("Sort by log size")); + item = gnt_menuitem_new(_("By Log Size")); + gnt_menu_add_item(GNT_MENU(subsub), item); + gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "log"); + + item = gnt_menuitem_new(_("Add")); gnt_menu_add_item(GNT_MENU(sub), item); - gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "log"); + + subsub = gnt_menu_new(GNT_MENU_POPUP); + gnt_menuitem_set_submenu(item, GNT_MENU(subsub)); + + item = gnt_menuitem_new("Buddy"); + gnt_menu_add_item(GNT_MENU(subsub), item); + gnt_menuitem_set_callback(item, menu_add_buddy_cb, NULL); + + item = gnt_menuitem_new("Chat"); + gnt_menu_add_item(GNT_MENU(subsub), item); + gnt_menuitem_set_callback(item, menu_add_chat_cb, NULL); + + item = gnt_menuitem_new("Group"); + gnt_menu_add_item(GNT_MENU(subsub), item); + gnt_menuitem_set_callback(item, menu_add_group_cb, NULL); reconstruct_accounts_menu(); gnt_menu_add_item(GNT_MENU(menu), ggblist->accounts); diff -r 7697f6872380 -r f7e4a558a439 finch/gntblist.h --- a/finch/gntblist.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntblist.h Tue Oct 23 17:41:06 2007 +0000 @@ -98,6 +98,8 @@ * @param name The user to get information about. * * @return Returns the ui-handle for the userinfo notification. + * + * @since 2.1.0 */ gpointer finch_retrieve_user_info(PurpleConnection *conn, const char *name); diff -r 7697f6872380 -r f7e4a558a439 finch/gntconn.c --- a/finch/gntconn.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntconn.c Tue Oct 23 17:41:06 2007 +0000 @@ -105,10 +105,11 @@ { FinchAutoRecon *info; PurpleAccount *account = purple_connection_get_account(gc); - - info = g_hash_table_lookup(hash, account); + GList *list; if (!gc->wants_to_die) { + info = g_hash_table_lookup(hash, account); + if (info == NULL) { info = g_new0(FinchAutoRecon, 1); g_hash_table_insert(hash, account, info); @@ -141,6 +142,17 @@ g_free(secondary); purple_account_set_enabled(account, FINCH_UI, FALSE); } + + /* If we have any open chats, we probably want to rejoin when we get back online. */ + list = purple_get_chats(); + while (list) { + PurpleConversation *conv = list->data; + list = list->next; + if (conv->account != account || + purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv))) + continue; + purple_conversation_set_data(conv, "want-to-rejoin", GINT_TO_POINTER(TRUE)); + } } static void diff -r 7697f6872380 -r f7e4a558a439 finch/gntconv.c --- a/finch/gntconv.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntconv.c Tue Oct 23 17:41:06 2007 +0000 @@ -311,13 +311,40 @@ static void account_signed_on_off(PurpleConnection *gc, gpointer null) { - GList *ims = purple_get_ims(); - while (ims) { - PurpleConversation *conv = ims->data; + GList *list = purple_get_ims(); + while (list) { + PurpleConversation *conv = list->data; PurpleConversation *cc = find_conv_with_contact(conv->account, conv->name); if (cc) generate_send_to_menu(cc->ui_data); - ims = ims->next; + list = list->next; + } + + if (PURPLE_CONNECTION_IS_CONNECTED(gc)) { + /* We just signed on. Let's see if there's any chat that we have open, + * and hadn't left before the disconnect. */ + list = purple_get_chats(); + while (list) { + PurpleConversation *conv = list->data; + PurpleChat *chat; + GHashTable *comps = NULL; + + list = list->next; + if (conv->account != gc->account || + !purple_conversation_get_data(conv, "want-to-rejoin")) + continue; + + chat = purple_blist_find_chat(conv->account, conv->name); + if (chat == NULL) { + if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) + comps = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, conv->name); + } else { + comps = chat->components; + } + serv_join_chat(gc, comps); + if (chat == NULL && comps != NULL) + g_hash_table_destroy(comps); + } } } @@ -738,7 +765,8 @@ gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), _(" "), GNT_TEXT_FLAG_BOLD); - if (who && *who && (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV))) + if (who && *who && (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) && + !(flags & PURPLE_MESSAGE_NOTIFY)) { char * name = NULL; diff -r 7697f6872380 -r f7e4a558a439 finch/gntdebug.c --- a/finch/gntdebug.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntdebug.c Tue Oct 23 17:41:06 2007 +0000 @@ -28,12 +28,14 @@ #include #include #include +#include #include #include #include #include "gntdebug.h" #include "finch.h" +#include "notify.h" #include "util.h" #include @@ -220,9 +222,43 @@ (GDestroyNotify)g_source_remove); } +static void +file_save(GntFileSel *fs, const char *path, const char *file, GntTextView *tv) +{ + FILE *fp; + + if ((fp = g_fopen(path, "w+")) == NULL) { + purple_notify_error(NULL, NULL, _("Unable to open file."), NULL); + return; + } + + fprintf(fp, "Finch Debug Log : %s\n", purple_date_format_full(NULL)); + fprintf(fp, tv->string->str); + fclose(fp); + gnt_widget_destroy(GNT_WIDGET(fs)); +} + +static void +file_cancel(GntWidget *w, GntFileSel *fs) +{ + gnt_widget_destroy(GNT_WIDGET(fs)); +} + +static void +save_debug_win(GntWidget *w, GntTextView *tv) +{ + GntWidget *window = gnt_file_sel_new(); + GntFileSel *sel = GNT_FILE_SEL(window); + gnt_file_sel_set_current_location(sel, purple_home_dir()); + gnt_file_sel_set_suggested_filename(sel, "debug.txt"); + g_signal_connect(G_OBJECT(sel), "file_selected", G_CALLBACK(file_save), tv); + g_signal_connect(G_OBJECT(sel->cancel), "activate", G_CALLBACK(file_cancel), sel); + gnt_widget_show(window); +} + void finch_debug_window_show() { - GntWidget *wid, *box; + GntWidget *wid, *box, *label; debug.paused = FALSE; if (debug.window) { @@ -258,8 +294,15 @@ GNT_WIDGET_SET_FLAGS(wid, GNT_WIDGET_GROW_Y); gnt_box_add_widget(GNT_BOX(box), wid); + wid = gnt_button_new(_("Save")); + g_signal_connect(G_OBJECT(wid), "activate", G_CALLBACK(save_debug_win), debug.tview); + GNT_WIDGET_SET_FLAGS(wid, GNT_WIDGET_GROW_Y); + gnt_box_add_widget(GNT_BOX(box), wid); + debug.search = gnt_entry_new(purple_prefs_get_string(PREF_ROOT "/filter")); - gnt_box_add_widget(GNT_BOX(box), gnt_label_new(_("Filter: "))); + label = gnt_label_new(_("Filter:")); + GNT_WIDGET_UNSET_FLAGS(label, GNT_WIDGET_GROW_X); + gnt_box_add_widget(GNT_BOX(box), label); gnt_box_add_widget(GNT_BOX(box), debug.search); g_signal_connect(G_OBJECT(debug.search), "text_changed", G_CALLBACK(update_filter_string), NULL); diff -r 7697f6872380 -r f7e4a558a439 finch/gntnotify.c --- a/finch/gntnotify.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntnotify.c Tue Oct 23 17:41:06 2007 +0000 @@ -84,8 +84,8 @@ if (type == PURPLE_NOTIFY_FORMATTED) { int width = -1, height = -1; msg = gnt_text_view_new(); + gnt_text_view_set_flag(GNT_TEXT_VIEW(msg), GNT_TEXT_VIEW_TOP_ALIGN); gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(msg), secondary, sf); - gnt_text_view_scroll(GNT_TEXT_VIEW(msg), 0); gnt_text_view_attach_scroll_widget(GNT_TEXT_VIEW(msg), button); gnt_util_get_text_bound(secondary, &width, &height); gnt_widget_set_size(msg, width + 3, height + 1); @@ -194,6 +194,7 @@ PurpleAccount *account = purple_connection_get_account(gc); GString *message = g_string_new(NULL); void *ret; + static int key = 0; if (!detailed) { @@ -212,7 +213,7 @@ to = g_strdup_printf("%s (%s)", tos ? *tos : purple_account_get_username(account), purple_account_get_protocol_name(account)); - gnt_tree_add_row_after(GNT_TREE(emaildialog.tree), GINT_TO_POINTER(time(NULL)), + gnt_tree_add_row_after(GNT_TREE(emaildialog.tree), GINT_TO_POINTER(++key), gnt_tree_create_row(GNT_TREE(emaildialog.tree), to, froms ? *froms : "[Unknown sender]", *subjects), @@ -352,14 +353,18 @@ gnt_box_add_widget(GNT_BOX(window), gnt_label_new_with_format(secondary, GNT_TEXT_FLAG_NORMAL)); - columns = purple_notify_searchresults_get_columns_count(results); + columns = g_list_length(results->columns); tree = gnt_tree_new_with_columns(columns); gnt_tree_set_show_title(GNT_TREE(tree), TRUE); gnt_box_add_widget(GNT_BOX(window), tree); - for (i = 0; i < columns; i++) - gnt_tree_set_column_title(GNT_TREE(tree), i, - purple_notify_searchresults_column_get_title(results, i)); + i = 0; + for (iter = results->columns; iter; iter = iter->next) + { + PurpleNotifySearchColumn *column = iter->data; + gnt_tree_set_column_title(GNT_TREE(tree), i, column->title); + i++; + } box = gnt_hbox_new(TRUE); diff -r 7697f6872380 -r f7e4a558a439 finch/gntplugin.c --- a/finch/gntplugin.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntplugin.c Tue Oct 23 17:41:06 2007 +0000 @@ -32,6 +32,7 @@ #include "finch.h" +#include "debug.h" #include "notify.h" #include "request.h" @@ -127,8 +128,8 @@ /* XXX: Use formatting and stuff */ gnt_text_view_clear(GNT_TEXT_VIEW(plugins.aboot)); text = g_strdup_printf(_("Name: %s\nVersion: %s\nDescription: %s\nAuthor: %s\nWebsite: %s\nFilename: %s\n"), - SAFE(plugin->info->name), SAFE(plugin->info->version), SAFE(plugin->info->description), - SAFE(plugin->info->author), SAFE(plugin->info->homepage), SAFE(plugin->path)); + SAFE(_(plugin->info->name)), SAFE(_(plugin->info->version)), SAFE(_(plugin->info->description)), + SAFE(_(plugin->info->author)), SAFE(_(plugin->info->homepage)), SAFE(plugin->path)); gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(plugins.aboot), text, GNT_TEXT_FLAG_NORMAL); gnt_text_view_scroll(GNT_TEXT_VIEW(plugins.aboot), 0); @@ -237,6 +238,93 @@ } } +static void +install_selected_file_cb(gpointer handle, const char *filename) +{ + /* Try to init the selected file. + * If it succeeds, try to make a copy of the file in $USERDIR/plugins/. + * If the copy succeeds, unload and destroy the plugin in the original + * location and init+load the new one. + * Select the plugin in the plugin list. + */ + char *path; + PurplePlugin *plugin; + + g_return_if_fail(plugins.window); + + plugin = purple_plugin_probe(filename); + if (!plugin) { + purple_notify_error(handle, _("Error loading plugin"), + _("The selected file is not a valid plugin."), + _("Please open the debug window and try again to see the exact error message.")); + return; + } + if (g_list_find(gnt_tree_get_rows(GNT_TREE(plugins.tree)), plugin)) { + purple_plugin_load(plugin); + gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin)); + gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin); + return; + } + + path = g_build_filename(purple_user_dir(), "plugins", NULL); + if (purple_build_dir(path, S_IRUSR | S_IWUSR | S_IXUSR) == 0) { + char *content = NULL; + gsize length = 0; + + if (g_file_get_contents(filename, &content, &length, NULL)) { + char *file = g_path_get_basename(filename); + g_free(path); + path = g_build_filename(purple_user_dir(), "plugins", file, NULL); + if (purple_util_write_data_to_file_absolute(path, content, length)) { + purple_plugin_destroy(plugin); + plugin = purple_plugin_probe(path); + if (!plugin) { + purple_debug_warning("gntplugin", "This is really strange. %s can be loaded, but %s can't!\n", + filename, path); + g_unlink(path); + plugin = purple_plugin_probe(filename); + } + } else { + } + } + g_free(content); + } + g_free(path); + + purple_plugin_load(plugin); + + if (plugin->info->type == PURPLE_PLUGIN_LOADER) { + GList *cur; + for (cur = PURPLE_PLUGIN_LOADER_INFO(plugin)->exts; cur != NULL; + cur = cur->next) + purple_plugins_probe(cur->data); + return; + } + + if (plugin->info->type != PURPLE_PLUGIN_STANDARD || + (plugin->info->flags & PURPLE_PLUGIN_FLAG_INVISIBLE) || + plugin->error) + return; + + gnt_tree_add_choice(GNT_TREE(plugins.tree), plugin, + gnt_tree_create_row(GNT_TREE(plugins.tree), plugin->info->name), NULL, NULL); + gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin)); + gnt_tree_set_row_flags(GNT_TREE(plugins.tree), plugin, GNT_TEXT_FLAG_BOLD); + gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin); +} + +static void +install_plugin_cb(GntWidget *w, gpointer null) +{ + static int handle; + + purple_request_close_with_handle(&handle); + purple_request_file(&handle, _("Select plugin to install"), NULL, + FALSE, G_CALLBACK(install_selected_file_cb), NULL, + NULL, NULL, NULL, &handle); + g_signal_connect_swapped(G_OBJECT(w), "destroy", G_CALLBACK(purple_request_close_with_handle), &handle); +} + void finch_plugins_show_all() { GntWidget *window, *tree, *box, *aboot, *button; @@ -272,6 +360,7 @@ gnt_box_add_widget(GNT_BOX(box), gnt_vline_new()); plugins.aboot = aboot = gnt_text_view_new(); + gnt_text_view_set_flag(GNT_TEXT_VIEW(aboot), GNT_TEXT_VIEW_TOP_ALIGN); gnt_widget_set_size(aboot, 40, 20); gnt_box_add_widget(GNT_BOX(box), aboot); @@ -307,6 +396,10 @@ box = gnt_hbox_new(FALSE); gnt_box_add_widget(GNT_BOX(window), box); + button = gnt_button_new(_("Install Plugin...")); + gnt_box_add_widget(GNT_BOX(box), button); + g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(install_plugin_cb), NULL); + button = gnt_button_new(_("Close")); gnt_box_add_widget(GNT_BOX(box), button); g_signal_connect_swapped(G_OBJECT(button), "activate", diff -r 7697f6872380 -r f7e4a558a439 finch/gntrequest.c --- a/finch/gntrequest.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntrequest.c Tue Oct 23 17:41:06 2007 +0000 @@ -76,6 +76,8 @@ static void setup_default_callback(GntWidget *window, gpointer default_cb, gpointer data) { + if (default_cb == NULL) + return; g_object_set_data(G_OBJECT(window), "default-callback", default_cb); g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(default_cb), data); } diff -r 7697f6872380 -r f7e4a558a439 finch/gntsound.h --- a/finch/gntsound.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/gntsound.h Tue Oct 23 17:41:06 2007 +0000 @@ -37,6 +37,8 @@ * Get the name of the active sound profile. * * @return The name of the profile + * + * @since 2.1.0 */ const char *finch_sound_get_active_profile(void); @@ -44,6 +46,8 @@ * Set the active profile. If the profile doesn't exist, nothing is changed. * * @param name The name of the profile + * + * @since 2.1.0 */ void finch_sound_set_active_profile(const char *name); @@ -52,6 +56,8 @@ * * @return A list of strings denoting sound profile names. * Caller must free the list (but not the data). + * + * @since 2.1.0 */ GList *finch_sound_get_profiles(void); @@ -60,6 +66,8 @@ * * @return Returns FALSE if preference is set to 'No sound', or if volume is * set to zero. + * + * @since 2.2.0 */ gboolean finch_sound_is_enabled(void); @@ -67,11 +75,15 @@ * Gets GNT sound UI ops. * * @return The UI operations structure. + * + * @since 2.1.0 */ PurpleSoundUiOps *finch_sound_get_ui_ops(void); /** * Show the sound settings dialog. + * + * @since 2.1.0 */ void finch_sounds_show_all(void); diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gnt.h --- a/finch/libgnt/gnt.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gnt.h Tue Oct 23 17:41:06 2007 +0000 @@ -62,6 +62,14 @@ */ gboolean gnt_ascii_only(void); +/** + * Present a window. If the event was triggered because of user interaction, + * the window is moved to the foreground. Otherwise, the Urgent hint is set. + * + * @param window The window the present. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_window_present(GntWidget *window); /** * diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gntentry.c --- a/finch/libgnt/gntentry.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gntentry.c Tue Oct 23 17:41:06 2007 +0000 @@ -100,6 +100,15 @@ return changed; } +static int +max_common_prefix(const char *s, const char *t) +{ + const char *f = s; + while (*f && *t && *f == *t++) + f++; + return f - s; +} + static gboolean show_suggest_dropdown(GntEntry *entry) { @@ -110,6 +119,7 @@ GList *iter; const char *text = NULL; const char *sgst = NULL; + int max = -1; if (entry->word) { @@ -121,14 +131,13 @@ else suggest = g_strdup(entry->start); len = strlen(suggest); /* Don't need to use the utf8-function here */ - + if (entry->ddown == NULL) { GntWidget *box = gnt_vbox_new(FALSE); entry->ddown = gnt_tree_new(); gnt_tree_set_compare_func(GNT_TREE(entry->ddown), (GCompareFunc)g_utf8_collate); gnt_box_add_widget(GNT_BOX(box), entry->ddown); - /* XXX: Connect to the "activate" signal for the dropdown tree */ GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT); @@ -151,6 +160,10 @@ gnt_tree_create_row(GNT_TREE(entry->ddown), text), NULL, NULL); count++; + if (max == -1) + max = strlen(text) - len; + else if (max) + max = MIN(max, max_common_prefix(sgst + len, text + len)); sgst = text; } } @@ -163,6 +176,17 @@ destroy_suggest(entry); return complete_suggest(entry, sgst); } else { + if (max > 0) { + GntWidget *ddown = entry->ddown; + char *match = g_strndup(sgst + len, max); + entry->ddown = NULL; + gnt_entry_key_pressed(GNT_WIDGET(entry), match); + g_free(match); + if (entry->ddown) + gnt_widget_destroy(ddown); + else + entry->ddown = ddown; + } gnt_widget_draw(entry->ddown->parent); } diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gntslider.h --- a/finch/libgnt/gntslider.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gntslider.h Tue Oct 23 17:41:06 2007 +0000 @@ -75,6 +75,8 @@ /** * @return The GType for GntSlider + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ GType gnt_slider_get_gtype(void); @@ -89,6 +91,8 @@ * @param min The minimum value for the slider * * @return The newly created slider + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ GntWidget * gnt_slider_new(gboolean orient, int max, int min); @@ -98,6 +102,8 @@ * @param slider The slider * @param max The maximum value * @param min The minimum value + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_slider_set_range(GntSlider *slider, int max, int min); @@ -106,6 +112,8 @@ * * @param slider The slider * @param step The amount for each step + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_slider_set_step(GntSlider *slider, int step); @@ -114,6 +122,8 @@ * * @param slider The slider * @param step The amount for a small step (for the slider) + * + * @since 2.2.0 */ void gnt_slider_set_small_step(GntSlider *slider, int step); @@ -122,6 +132,8 @@ * * @param slider The slider * @param step The amount for a large step (for the slider) + * + * @since 2.2.0 */ void gnt_slider_set_large_step(GntSlider *slider, int step); @@ -133,6 +145,8 @@ * forward, negative to change backward * * @return The value of the slider after the change + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ int gnt_slider_advance_step(GntSlider *slider, int steps); @@ -141,6 +155,8 @@ * * @param slider The slider * @param value The current value + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_slider_set_value(GntSlider *slider, int value); @@ -149,6 +165,8 @@ * * @param slider The slider * + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ int gnt_slider_get_value(GntSlider *slider); @@ -157,6 +175,8 @@ * * @param slider The slider * @param label The label to update + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_slider_reflect_label(GntSlider *slider, GntLabel *label); diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gntstyle.h --- a/finch/libgnt/gntstyle.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gntstyle.h Tue Oct 23 17:41:06 2007 +0000 @@ -53,6 +53,8 @@ * @param key The key * * @return The value of the setting as a string, or @c NULL + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ char *gnt_style_get_from_name(const char *group, const char *key); @@ -62,6 +64,8 @@ * * @param value The value of the boolean setting as a string * @return The boolean value + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ gboolean gnt_style_parse_bool(const char *value); diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gnttextview.h --- a/finch/libgnt/gnttextview.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gnttextview.h Tue Oct 23 17:41:06 2007 +0000 @@ -204,6 +204,8 @@ * * @param view The textview widget * @param flag The flag to set + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_text_view_set_flag(GntTextView *view, GntTextViewFlag flag); diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gnttree.h --- a/finch/libgnt/gnttree.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gnttree.h Tue Oct 23 17:41:06 2007 +0000 @@ -383,6 +383,8 @@ * * @see gnt_tree_set_column_titles * @see gnt_tree_set_show_title + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_tree_set_column_title(GntTree *tree, int index, const char *title); @@ -486,6 +488,8 @@ * * @see gnt_tree_set_col_width * @see gnt_tree_set_column_width_ratio + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_tree_set_column_resizable(GntTree *tree, int col, gboolean res); @@ -505,6 +509,8 @@ * @param tree The tree * @param col The index of the column * @param right @c TRUE if the text in the column should be right aligned + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_tree_set_column_is_right_aligned(GntTree *tree, int col, gboolean right); @@ -519,6 +525,8 @@ * * @see gnt_tree_set_col_width * @see gnt_tree_set_column_resizable + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_tree_set_column_width_ratio(GntTree *tree, int cols[]); @@ -527,6 +535,8 @@ * * @param tree The tree * @param col The index of the column + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_tree_set_search_column(GntTree *tree, int col); @@ -535,6 +545,8 @@ * * @param tree The tree * @return @c TRUE if the user is searching, @c FALSE otherwise. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ gboolean gnt_tree_is_searching(GntTree *tree); @@ -547,6 +559,8 @@ * string and the content of row in the search column. * If the function returns @c TRUE, the row is dislayed, * otherwise it's not. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_tree_set_search_function(GntTree *tree, gboolean (*func)(GntTree *tree, gpointer key, const char *search, const char *current)); diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gntutils.h --- a/finch/libgnt/gntutils.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gntutils.h Tue Oct 23 17:41:06 2007 +0000 @@ -139,6 +139,8 @@ * @param string The XHTML string * @param tv The GntTextView * @return @c TRUE if the string was added to the textview properly, @c FALSE otherwise. + * + * @since 2.2.0 */ gboolean gnt_util_parse_xhtml_to_textview(const char *string, GntTextView *tv); @@ -148,6 +150,8 @@ * @param widget The widget * @param key The key to trigger the button * @param button The button to trigger + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) */ void gnt_util_set_trigger_widget(GntWidget *wid, const char *text, GntWidget *button); diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/gntws.h --- a/finch/libgnt/gntws.h Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/gntws.h Tue Oct 23 17:41:06 2007 +0000 @@ -69,18 +69,112 @@ G_BEGIN_DECLS +/** + * @return The GType for GntWS. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ GType gnt_ws_get_gtype(void); +/** + * Create a new workspace with the specified name. + * + * @param name The desired name of the workspace, or @c NULL. + * + * @return The newly created workspace. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ GntWS *gnt_ws_new(const char *name); + +/** + * Set the name of a workspace. + * + * @param ws The workspace to rename. + * @param name The new name of the workspace. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_set_name(GntWS *ws, const gchar *name); + +/** + * Add a widget to a workspace. + * + * @param ws The workspace. + * @param widget The widget to add. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_add_widget(GntWS *ws, GntWidget *widget); + +/** + * Remove a widget from a workspace. + * + * @param ws The workspace + * @param widget The widget to remove from the workspace. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_remove_widget(GntWS *ws, GntWidget *widget); + +/** + * Hide a widget in a workspace. + * + * @param widget The widget to hide. + * @param nodes A hashtable containing information about the widgets. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_widget_hide(GntWidget *widget, GHashTable *nodes); + +/** + * Show a widget in a workspace. + * + * @param widget The widget to show. + * @param nodes A hashtable containing information about the widgets. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_widget_show(GntWidget *widget, GHashTable *nodes); + +/** + * Draw the taskbar in a workspace. + * + * @param ws The workspace. + * @param reposition Whether the workspace should reposition the taskbar. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_draw_taskbar(GntWS *ws, gboolean reposition); + +/** + * Hide a workspace. + * + * @param ws The workspace to hide. + * @param table A hashtable containing information about the widgets. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_hide(GntWS *ws, GHashTable *table); + +/** + * Show a workspace. + * + * @param ws The workspace to hide. + * @param table A hashtable containing information about the widgets. + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ void gnt_ws_show(GntWS *ws, GHashTable *table); +/** + * Get the name of a workspace. + * + * @param ws The workspace. + * @return The name of the workspace (can be @c NULL). + * + * @since 2.0.0 (gnt), 2.1.0 (pidgin) + */ const char * gnt_ws_get_name(GntWS *ws); #endif diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/pygnt/gntmodule.c --- a/finch/libgnt/pygnt/gntmodule.c Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/pygnt/gntmodule.c Tue Oct 23 17:41:06 2007 +0000 @@ -1,7 +1,74 @@ #include +#include "gnt.h" void gnt_register_classes (PyObject *d); extern PyMethodDef gnt_functions[]; + +static void +gnt_add_string_constants(PyObject *module) +{ +#define define_key(x) if (GNT_KEY_##x && *(GNT_KEY_##x)) PyModule_AddStringConstant(module, "KEY_" #x, GNT_KEY_##x) + + define_key(POPUP); + + define_key(LEFT); + define_key(RIGHT); + define_key(UP); + define_key(DOWN); + + define_key(CTRL_UP); + define_key(CTRL_DOWN); + define_key(CTRL_RIGHT); + define_key(CTRL_LEFT); + + define_key(PGUP); + define_key(PGDOWN); + define_key(HOME); + define_key(END); + + define_key(ENTER); + + define_key(BACKSPACE); + define_key(DEL); + define_key(INS); + define_key(BACK_TAB); + + define_key(CTRL_A); + define_key(CTRL_B); + define_key(CTRL_D); + define_key(CTRL_E); + define_key(CTRL_F); + define_key(CTRL_G); + define_key(CTRL_H); + define_key(CTRL_I); + define_key(CTRL_J); + define_key(CTRL_K); + define_key(CTRL_L); + define_key(CTRL_M); + define_key(CTRL_N); + define_key(CTRL_O); + define_key(CTRL_P); + define_key(CTRL_R); + define_key(CTRL_T); + define_key(CTRL_U); + define_key(CTRL_V); + define_key(CTRL_W); + define_key(CTRL_X); + define_key(CTRL_Y); + + define_key(F1); + define_key(F2); + define_key(F3); + define_key(F4); + define_key(F5); + define_key(F6); + define_key(F7); + define_key(F8); + define_key(F9); + define_key(F10); + define_key(F11); + define_key(F12); +} DL_EXPORT(void) initgnt(void) @@ -19,5 +86,8 @@ if (PyErr_Occurred ()) { Py_FatalError ("can't initialise module sad"); } + + gnt_init(); + gnt_add_string_constants(m); } diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/pygnt/gnttree.override --- a/finch/libgnt/pygnt/gnttree.override Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/pygnt/gnttree.override Tue Oct 23 17:41:06 2007 +0000 @@ -62,13 +62,14 @@ { static char *kwlist[] = {"key", "row", "parent", "bigbro", NULL}; PyObject *py_list; - gpointer key, parent, bigbro; + gpointer key, parent, bigbro = NULL; int len, i; GList *list = NULL; GntTreeRow *row; + gboolean insert_last = FALSE; if (!PyArg_ParseTuple(args, - "OOOO:GntTree.add_row_after", + "OOO|O:GntTree.add_row_after", &key, &py_list, &parent, @@ -92,13 +93,20 @@ parent = NULL; if (bigbro == Py_None) bigbro = NULL; + else if (bigbro == NULL) + insert_last = TRUE; + + Py_INCREF((PyObject*)key); list = g_list_reverse(list); row = gnt_tree_create_row_from_list(GNT_TREE(self->obj), list); - gnt_tree_add_row_after(GNT_TREE(self->obj), - key, - row, - parent, bigbro); + if (insert_last) + gnt_tree_add_row_last(GNT_TREE(self->obj), + key, row, parent); + else + gnt_tree_add_row_after(GNT_TREE(self->obj), + key, row, + parent, bigbro); g_list_free(list); Py_INCREF(Py_None); @@ -179,4 +187,27 @@ Py_INCREF(Py_None); return Py_None; } +%% +override gnt_tree_set_compare_func +static PyObject * +_wrap_gnt_tree_set_compare_func(PyGObject *self, PyObject *args) +{ + static char *kwlist[] = {"compare_func", NULL}; + PyGObject *compare; + if (!PyArg_ParseTuple(args, "O:GntTree.set_compare_func", &compare)) { + return NULL; + } + + if (!PyCallable_Check(compare)) { + PyErr_SetString(PyExc_TypeError, "the callback must be callable ... doh!"); + return NULL; + } + + Py_INCREF(compare); + gnt_tree_set_compare_func(GNT_TREE(self->obj), (GCompareFunc)compare->obj); + + Py_INCREF(Py_None); + return Py_None; +} + diff -r 7697f6872380 -r f7e4a558a439 finch/libgnt/test/Makefile --- a/finch/libgnt/test/Makefile Tue Oct 23 17:40:56 2007 +0000 +++ b/finch/libgnt/test/Makefile Tue Oct 23 17:41:06 2007 +0000 @@ -1,5 +1,5 @@ CC=gcc -CFLAGS=`pkg-config --cflags gobject-2.0 gmodule-2.0` -g -I../ -DSTANDALONE +CFLAGS=`pkg-config --cflags gobject-2.0 gmodule-2.0` -g -I../ -DSTANDALONE -I/usr/inclue/ncursesw/ LDFLAGS=`pkg-config --libs gobject-2.0 gmodule-2.0 gnt` -pg EXAMPLES=combo focus tv multiwin keys menu parse diff -r 7697f6872380 -r f7e4a558a439 libpurple/account.h --- a/libpurple/account.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/account.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file account.h Account API * @ingroup core + * @see @ref account-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref account-signals */ #ifndef _PURPLE_ACCOUNT_H_ #define _PURPLE_ACCOUNT_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/blist.c --- a/libpurple/blist.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/blist.c Tue Oct 23 17:41:06 2007 +0000 @@ -632,12 +632,13 @@ continue; buddy = (PurpleBuddy*)bnode; - - if (!purple_account_is_connected(buddy->account)) + if (new_priority == NULL) + { + new_priority = buddy; continue; - if (new_priority == NULL) - new_priority = buddy; - else + } + + if (purple_account_is_connected(buddy->account)) { int cmp; @@ -1442,29 +1443,7 @@ void purple_contact_set_alias(PurpleContact *contact, const char *alias) { - PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); - char *old_alias; - - g_return_if_fail(contact != NULL); - - if (!purple_strings_are_different(contact->alias, alias)) - return; - - old_alias = contact->alias; - - if ((alias != NULL) && (*alias != '\0')) - contact->alias = g_strdup(alias); - else - contact->alias = NULL; - - purple_blist_schedule_save(); - - if (ops && ops->update) - ops->update(purplebuddylist, (PurpleBlistNode*)contact); - - purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased", - contact, old_alias); - g_free(old_alias); + purple_blist_alias_contact(contact,alias); } const char *purple_contact_get_alias(PurpleContact* contact) diff -r 7697f6872380 -r f7e4a558a439 libpurple/blist.h --- a/libpurple/blist.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/blist.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file blist.h Buddy List API * @ingroup core + * @see @ref blist-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref blist-signals */ #ifndef _PURPLE_BLIST_H_ #define _PURPLE_BLIST_H_ @@ -65,11 +64,11 @@ typedef enum { - PURPLE_BLIST_NODE_FLAG_NO_SAVE = 1 /**< node should not be saved with the buddy list */ + PURPLE_BLIST_NODE_FLAG_NO_SAVE = 1 << 0, /**< node should not be saved with the buddy list */ } PurpleBlistNodeFlags; -#define PURPLE_BLIST_NODE_HAS_FLAG(b, f) ((b)->flags & (f)) +#define PURPLE_BLIST_NODE_HAS_FLAG(b, f) (((PurpleBlistNode*)(b))->flags & (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) ((n)->type == PURPLE_BLIST_CHAT_NODE ? purple_chat_get_name((PurpleChat*)n) : \ @@ -488,6 +487,8 @@ * * @param contact The contact * @param alias The alias to set, or NULL to unset + * + * @deprecated Use purple_blist_alias_contact() instead. */ void purple_contact_set_alias(PurpleContact *contact, const char *alias); diff -r 7697f6872380 -r f7e4a558a439 libpurple/certificate.c --- a/libpurple/certificate.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/certificate.c Tue Oct 23 17:41:06 2007 +0000 @@ -88,6 +88,19 @@ g_return_if_fail(vrq); + if (st == PURPLE_CERTIFICATE_VALID) { + purple_debug_info("certificate", + "Successfully verified certificate for %s\n", + vrq->subject_name); + } else { + purple_debug_info("certificate", + "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); @@ -1372,7 +1385,8 @@ purple_debug_info("certificate/x509/tls_cached", "Checking for a CA with DN=%s\n", ca_id); - if ( !purple_certificate_pool_contains(ca, ca_id) ) { + ca_crt = purple_certificate_pool_retrieve(ca, ca_id); + if ( NULL == ca_crt ) { purple_debug_info("certificate/x509/tls_cached", "Certificate Authority with DN='%s' not " "found. I'll prompt the user, I guess.\n", @@ -1385,16 +1399,7 @@ return; } - ca_crt = purple_certificate_pool_retrieve(ca, ca_id); g_free(ca_id); - if (!ca_crt) { - purple_debug_error("certificate/x509/tls_cached", - "Certificate authority disappeared out " - "underneath me!\n"); - purple_certificate_verify_complete(vrq, - PURPLE_CERTIFICATE_INVALID); - return; - } /* Check the signature */ if ( !purple_certificate_signed_by(end_crt, ca_crt) ) { diff -r 7697f6872380 -r f7e4a558a439 libpurple/certificate.h --- a/libpurple/certificate.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/certificate.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,8 @@ /** * @file certificate.h Public-Key Certificate API * @ingroup core + * @see @ref certificate-signals + * @since 2.2.0 */ /* @@ -433,7 +435,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); @@ -448,7 +450,7 @@ * @param chain List of PurpleCertificate instances comprising the chain, * in the order certificate, issuer, issuer's issuer, etc. * @return TRUE if the chain is valid. See description. - * @TODO Specify which certificate in the chain caused a failure + * @todo Specify which certificate in the chain caused a failure */ gboolean purple_certificate_check_signature_chain(GList *chain); @@ -779,7 +781,7 @@ * Displays a window showing X.509 certificate information * * @param crt Certificate under an "x509" Scheme - * @TODO Will break on CA certs, as they have no Common Name + * @todo Will break on CA certs, as they have no Common Name */ void purple_certificate_display_x509(PurpleCertificate *crt); diff -r 7697f6872380 -r f7e4a558a439 libpurple/cipher.h --- a/libpurple/cipher.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/cipher.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file cipher.h Purple Cipher API * @ingroup core + * @see @ref cipher-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref cipher-signals */ #ifndef PURPLE_CIPHER_H #define PURPLE_CIPHER_H diff -r 7697f6872380 -r f7e4a558a439 libpurple/cmds.h --- a/libpurple/cmds.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/cmds.h Tue Oct 23 17:41:06 2007 +0000 @@ -67,10 +67,20 @@ PURPLE_CMD_P_VERY_HIGH = 6000, }; +/** Flags used to set various properties of commands. Every command should + * have at least one of #PURPLE_CMD_FLAG_IM and #PURPLE_CMD_FLAG_CHAT set in + * order to be even slighly useful. + * + * @see purple_cmd_register + */ enum _PurpleCmdFlag { + /** Command is usable in IMs. */ PURPLE_CMD_FLAG_IM = 0x01, + /** Command is usable in multi-user chats. */ PURPLE_CMD_FLAG_CHAT = 0x02, + /** Command is usable only for a particular prpl. */ PURPLE_CMD_FLAG_PRPL_ONLY = 0x04, + /** Incorrect arguments to this command should be accepted anyway. */ PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS = 0x08, }; @@ -92,36 +102,49 @@ * The command will only happen if commands are enabled, * which is a UI pref. UIs don't have to support commands at all. * - * @param cmd The command. This should be a UTF8 (or ASCII) string, with no spaces + * @param cmd The command. This should be a UTF-8 (or ASCII) string, with no spaces * or other white space. - * @param args This tells Purple how to parse the arguments to the command for you. - * If what the user types doesn't match, Purple will keep looking for another - * command, unless the flag @c PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed in f. - * This string contains no whitespace, and uses a single character for each argument. - * The recognized characters are: - * 'w' Matches a single word. - * 'W' Matches a single word, with formatting. - * 's' Matches the rest of the arguments after this point, as a single string. - * 'S' Same as 's' but with formatting. + * @param args A string of characters describing to libpurple how to parse this + * command's arguments. If what the user types doesn't match this + * pattern, libpurple will keep looking for another command, unless + * the flag #PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed in @a f. + * This string should contain no whitespace, and use a single + * character for each argument. The recognized characters are: + *
    + *
  • 'w': Matches a single word.
  • + *
  • 'W': Matches a single word, with formatting.
  • + *
  • 's': Matches the rest of the arguments after this + * point, as a single string.
  • + *
  • 'S': Same as 's' but with formatting.
  • + *
* If args is the empty string, then the command accepts no arguments. - * The args passed to callback func will be a @c NULL terminated array of null - * terminated strings, and will always match the number of arguments asked for, - * unless PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed. - * @param p This is the priority. Higher priority commands will be run first, and usually the - * first command will stop any others from being called. - * @param f These are the flags. You need to at least pass one of PURPLE_CMD_FLAG_IM or - * PURPLE_CMD_FLAG_CHAT (can may pass both) in order for the command to ever actually - * be called. - * @param prpl_id This is the prpl's id string. This is only meaningful if the proper flag is set. + * The args passed to the callback @a func will be a @c NULL + * terminated array of @c NULL terminated strings, and will always + * match the number of arguments asked for, unless + * #PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed. + * @param p This is the priority. Higher priority commands will be run first, + * and usually the first command will stop any others from being + * called. + * @param f Flags specifying various options about this command, combined with + * | (bitwise OR). You need to at least pass one of + * #PURPLE_CMD_FLAG_IM or #PURPLE_CMD_FLAG_CHAT (you may pass both) in + * order for the command to ever actually be called. + * @param prpl_id If the #PURPLE_CMD_FLAG_PRPL_ONLY flag is set, this is the id + * of the prpl to which the command applies (such as + * "prpl-msn"). If the flag is not set, this parameter + * is ignored; pass @c NULL (or a humourous string of your + * choice!). * @param func This is the function to call when someone enters this command. - * @param helpstr This is a whitespace sensitive, UTF-8, HTML string describing how to use the command. - * The preferred format of this string shall be the commands name, followed by a space - * and any arguments it accepts (if it takes any arguments, otherwise no space), followed - * by a colon, two spaces, and a description of the command in sentence form. No slash - * before the command name. - * @param data User defined data to pass to the PurpleCmdFunc - * @return A PurpleCmdId. This is only used for calling purple_cmd_unregister. - * Returns 0 on failure. + * @param helpstr a whitespace sensitive, UTF-8, HTML string describing how to + * use the command. The preferred format of this string is the + * command's name, followed by a space and any arguments it + * accepts (if it takes any arguments, otherwise no space), + * followed by a colon, two spaces, and a description of the + * command in sentence form. Do not include a slash before the + * command name. + * @param data User defined data to pass to the #PurpleCmdFunc @a f. + * @return A #PurpleCmdId, which is only used for calling + * #purple_cmd_unregister, or @a 0 on failure. */ PurpleCmdId purple_cmd_register(const gchar *cmd, const gchar *args, PurpleCmdPriority p, PurpleCmdFlag f, const gchar *prpl_id, PurpleCmdFunc func, const gchar *helpstr, void *data); @@ -133,7 +156,7 @@ * or something else that might go away. Normally this is called when the plugin * unloads itself. * - * @param id The PurpleCmdId to unregister. + * @param id The #PurpleCmdId to unregister, as returned by #purple_cmd_register. */ void purple_cmd_unregister(PurpleCmdId id); @@ -153,7 +176,7 @@ * include both the default formatting and any extra manual formatting. * @param errormsg If the command failed errormsg is filled in with the appropriate error * message. It must be freed by the caller with g_free(). - * @return A PurpleCmdStatus indicated if the command succeeded or failed. + * @return A #PurpleCmdStatus indicated if the command succeeded or failed. */ PurpleCmdStatus purple_cmd_do_command(PurpleConversation *conv, const gchar *cmdline, const gchar *markup, gchar **errormsg); @@ -161,13 +184,15 @@ /** * List registered commands. * - * Returns a GList (which must be freed by the caller) of all commands - * that are valid in the context of conv, or all commands, if conv is - * @c NULL. Don't keep this list around past the main loop, or anything else - * that might unregister a command, as the char*'s used get freed then. + * Returns a GList (which must be freed by the caller) of all commands + * that are valid in the context of @a conv, or all commands, if @a conv is @c + * NULL. Don't keep this list around past the main loop, or anything else that + * might unregister a command, as the const char *'s used get freed + * then. * * @param conv The conversation, or @c NULL. - * @return A GList of const char*, which must be freed with g_list_free(). + * @return A @c GList of const char *, which must be freed with + * g_list_free(). */ GList *purple_cmd_list(PurpleConversation *conv); @@ -180,7 +205,7 @@ * @param conv The conversation, or @c NULL for no context. * @param cmd The command. No wildcards accepted, but returns help for all * commands if @c NULL. - * @return A GList of const char*s, which is the help string + * @return A GList of const char *s, which is the help string * for that command. */ GList *purple_cmd_help(PurpleConversation *conv, const gchar *cmd); diff -r 7697f6872380 -r f7e4a558a439 libpurple/connection.h --- a/libpurple/connection.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/connection.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file connection.h Connection API * @ingroup core + * @see @ref connection-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref connection-signals */ #ifndef _PURPLE_CONNECTION_H_ #define _PURPLE_CONNECTION_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/conversation.c --- a/libpurple/conversation.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/conversation.c Tue Oct 23 17:41:06 2007 +0000 @@ -2348,7 +2348,7 @@ purple_signal_register(handle, "chat-invited", purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER, - NULL, 5, + purple_value_new(PURPLE_TYPE_INT), 5, purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT), purple_value_new(PURPLE_TYPE_STRING), diff -r 7697f6872380 -r f7e4a558a439 libpurple/conversation.h --- a/libpurple/conversation.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/conversation.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file conversation.h Conversation API * @ingroup core + * @see @ref conversation-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref conversation-signals */ #ifndef _PURPLE_CONVERSATION_H_ #define _PURPLE_CONVERSATION_H_ @@ -286,6 +285,8 @@ /** * Description of a conversation message + * + * @since 2.2.0 */ struct _PurpleConvMessage { @@ -671,6 +672,8 @@ * @return A GList of PurpleConvMessage's. The must not modify the list or the data within. * The list contains the newest message at the beginning, and the oldest message at * the end. + * + * @since 2.2.0 */ GList *purple_conversation_get_message_history(PurpleConversation *conv); @@ -678,6 +681,8 @@ * Clear the message history of a conversation. * * @param conv The conversation + * + * @since 2.2.0 */ void purple_conversation_clear_message_history(PurpleConversation *conv); @@ -687,6 +692,8 @@ * @param msg A PurpleConvMessage * * @return The name of the sender of the message + * + * @since 2.2.0 */ const char *purple_conversation_message_get_sender(PurpleConvMessage *msg); @@ -696,6 +703,8 @@ * @param msg A PurpleConvMessage * * @return The name of the sender of the message + * + * @since 2.2.0 */ const char *purple_conversation_message_get_message(PurpleConvMessage *msg); @@ -705,6 +714,8 @@ * @param msg A PurpleConvMessage * * @return The name of the sender of the message + * + * @since 2.2.0 */ PurpleMessageFlags purple_conversation_message_get_flags(PurpleConvMessage *msg); @@ -714,6 +725,8 @@ * @param msg A PurpleConvMessage * * @return The name of the sender of the message + * + * @since 2.2.0 */ time_t purple_conversation_message_get_timestamp(PurpleConvMessage *msg); @@ -1029,7 +1042,7 @@ * * @param chat The chat. * - * @return The list of ignored users. + * @constreturn The list of ignored users. */ GList *purple_conv_chat_get_ignored(const PurpleConvChat *chat); @@ -1319,6 +1332,8 @@ * @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. + * + * @since 2.1.0 */ GList * purple_conversation_get_extended_menu(PurpleConversation *conv); @@ -1332,6 +1347,8 @@ * message, if not @c NULL. It must be freed by the caller with g_free(). * * @return @c TRUE if the command was executed successfully, @c FALSE otherwise. + * + * @since 2.1.0 */ gboolean purple_conversation_do_command(PurpleConversation *conv, const gchar *cmdline, const gchar *markup, gchar **error); diff -r 7697f6872380 -r f7e4a558a439 libpurple/core.h --- a/libpurple/core.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/core.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,5 +1,6 @@ /** * @defgroup core libpurple + * @see @ref core-signals */ /* purple @@ -21,8 +22,6 @@ * 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 - * - * @see @ref core-signals */ #ifndef _PURPLE_CORE_H_ #define _PURPLE_CORE_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/dbus-server.h --- a/libpurple/dbus-server.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/dbus-server.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file dbus-server.h Purple DBUS Server * @ingroup core + * @see @ref dbus-server-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref dbus-server-signals */ #ifndef _PURPLE_DBUS_SERVER_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/dnsquery.h --- a/libpurple/dnsquery.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/dnsquery.h Tue Oct 23 17:41:06 2007 +0000 @@ -59,7 +59,7 @@ PurpleDnsQueryFailedCallback failed_cb); /** Called just before @a query_data is freed; this should cancel any - * further use of @q query_data the UI would make. Unneeded if + * further use of @a query_data the UI would make. Unneeded if * #resolve_host is not implemented. */ void (*destroy)(PurpleDnsQueryData *query_data); diff -r 7697f6872380 -r f7e4a558a439 libpurple/eventloop.h --- a/libpurple/eventloop.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/eventloop.h Tue Oct 23 17:41:06 2007 +0000 @@ -138,6 +138,8 @@ * @param data data to pass to @a function. * @return A handle to the timer which can be passed to * purple_timeout_remove to remove the timer. + * + * @since 2.1.0 */ guint purple_timeout_add_seconds(guint interval, GSourceFunc function, gpointer data); diff -r 7697f6872380 -r f7e4a558a439 libpurple/ft.h --- a/libpurple/ft.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/ft.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file ft.h File Transfer API * @ingroup core + * @see @ref xfer-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref xfer-signals */ #ifndef _PURPLE_FT_H_ #define _PURPLE_FT_H_ @@ -243,6 +242,8 @@ * @param xfer The file transfer. * * @return The name of the remote user. + * + * @since 2.1.0 */ const char *purple_xfer_get_remote_user(const PurpleXfer *xfer); diff -r 7697f6872380 -r f7e4a558a439 libpurple/gaim-compat.h --- a/libpurple/gaim-compat.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/gaim-compat.h Tue Oct 23 17:41:06 2007 +0000 @@ -22,8 +22,6 @@ * 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 - * - * @see @ref account-signals */ #ifndef _GAIM_COMPAT_H_ #define _GAIM_COMPAT_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/imgstore.h --- a/libpurple/imgstore.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/imgstore.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file imgstore.h IM Image Store API * @ingroup core + * @see @ref imgstore-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref imgstore-signals */ #ifndef _PURPLE_IMGSTORE_H_ #define _PURPLE_IMGSTORE_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/internal.h --- a/libpurple/internal.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/internal.h Tue Oct 23 17:41:06 2007 +0000 @@ -80,6 +80,7 @@ #ifndef _WIN32 #include #include +#include #endif #include #include diff -r 7697f6872380 -r f7e4a558a439 libpurple/log.h --- a/libpurple/log.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/log.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file log.h Logging API * @ingroup core + * @see @ref log-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref log-signals */ #ifndef _PURPLE_LOG_H_ #define _PURPLE_LOG_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/notify.c --- a/libpurple/notify.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/notify.c Tue Oct 23 17:41:06 2007 +0000 @@ -688,8 +688,11 @@ void purple_notify_user_info_remove_last_item(PurpleNotifyUserInfo *user_info) { - user_info->user_info_entries = g_list_remove(user_info->user_info_entries, - g_list_last(user_info->user_info_entries)->data); + GList *last = g_list_last(user_info->user_info_entries); + if (last) { + purple_notify_user_info_entry_destroy(last->data); + user_info->user_info_entries = g_list_delete_link(user_info->user_info_entries, last); + } } void * diff -r 7697f6872380 -r f7e4a558a439 libpurple/notify.h --- a/libpurple/notify.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/notify.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file notify.h Notification API * @ingroup core + * @see @ref notify-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref notify-signals */ #ifndef _PURPLE_NOTIFY_H_ #define _PURPLE_NOTIFY_H_ @@ -293,7 +292,17 @@ /** * Returns a number of the rows in the search results object. - * + * + * @deprecated This function will be removed in Pidgin 3.0.0 unless + * there is sufficient demand to keep it. Using this + * function encourages looping through the results + * inefficiently. Instead of using this function you + * should iterate through the results using a loop + * similar to this: + * for (l = results->rows; l != NULL; l = l->next) + * If you really need to get the number of rows you + * can use g_list_length(results->rows). + * * @param results The search results object. * * @return Number of the result rows. @@ -303,6 +312,16 @@ /** * Returns a number of the columns in the search results object. * + * @deprecated This function will be removed in Pidgin 3.0.0 unless + * there is sufficient demand to keep it. Using this + * function encourages looping through the columns + * inefficiently. Instead of using this function you + * should iterate through the columns using a loop + * similar to this: + * for (l = results->columns; l != NULL; l = l->next) + * If you really need to get the number of columns you + * can use g_list_length(results->columns). + * * @param results The search results object. * * @return Number of the columns. @@ -312,6 +331,16 @@ /** * Returns a row of the results from the search results object. * + * @deprecated This function will be removed in Pidgin 3.0.0 unless + * there is sufficient demand to keep it. Using this + * function encourages looping through the results + * inefficiently. Instead of using this function you + * should iterate through the results using a loop + * similar to this: + * for (l = results->rows; l != NULL; l = l->next) + * If you really need to get the data for a particular + * row you can use g_list_nth_data(results->rows, row_id). + * * @param results The search results object. * @param row_id Index of the row to be returned. * @@ -322,7 +351,15 @@ /** * Returns a title of the search results object's column. - * + * + * @deprecated This function will be removed in Pidgin 3.0.0 unless + * there is sufficient demand to keep it. Using this + * function encourages looping through the columns + * inefficiently. Instead of using this function you + * should iterate through the name of a particular + * column you can use + * g_list_nth_data(results->columns, row_id). + * * @param results The search results object. * @param column_id Index of the column. * @@ -502,7 +539,7 @@ void purple_notify_user_info_prepend_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value); /** - * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object + * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object without freeing the entry. * * @param user_info The PurpleNotifyUserInfo * @param user_info_entry The PurpleNotifyUserInfoEntry diff -r 7697f6872380 -r f7e4a558a439 libpurple/plugin.h --- a/libpurple/plugin.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/plugin.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,9 @@ /** * @file plugin.h Plugin API * @ingroup core + * @see @ref plugin-signals + * @see @ref plugin-ids + * @see @ref plugin-i18n */ /* purple @@ -22,10 +25,6 @@ * 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 - * - * @see @ref plugin-signals - * @see @ref plugin-ids - * @see @ref plugin-i18n */ #ifndef _PURPLE_PLUGIN_H_ #define _PURPLE_PLUGIN_H_ @@ -613,7 +612,7 @@ /** * Returns a list of all loaded plugins. * - * @return A list of all loaded plugins. + * @constreturn A list of all loaded plugins. */ GList *purple_plugins_get_loaded(void); @@ -623,14 +622,14 @@ * to the PURPLE_INIT_PLUGIN() macro, or if it was compiled * against an incompatable API version. * - * @return A list of all protocol plugins. + * @constreturn A list of all protocol plugins. */ GList *purple_plugins_get_protocols(void); /** * Returns a list of all plugins, whether loaded or not. * - * @return A list of all plugins. + * @constreturn A list of all plugins. */ GList *purple_plugins_get_all(void); diff -r 7697f6872380 -r f7e4a558a439 libpurple/pluginpref.h --- a/libpurple/pluginpref.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/pluginpref.h Tue Oct 23 17:41:06 2007 +0000 @@ -35,16 +35,16 @@ */ typedef enum { - PURPLE_STRING_FORMAT_TYPE_NONE = 0, - PURPLE_STRING_FORMAT_TYPE_MULTILINE = 1 << 0, - PURPLE_STRING_FORMAT_TYPE_HTML = 1 << 1 + PURPLE_STRING_FORMAT_TYPE_NONE = 0, /**< The string is plain text. */ + PURPLE_STRING_FORMAT_TYPE_MULTILINE = 1 << 0, /**< The string can have newlines. */ + PURPLE_STRING_FORMAT_TYPE_HTML = 1 << 1 /**< The string can be in HTML. */ } PurpleStringFormatType; typedef enum { PURPLE_PLUGIN_PREF_NONE, PURPLE_PLUGIN_PREF_CHOICE, - PURPLE_PLUGIN_PREF_INFO, /**< no-value label */ - PURPLE_PLUGIN_PREF_STRING_FORMAT + PURPLE_PLUGIN_PREF_INFO, /**< no-value label */ + PURPLE_PLUGIN_PREF_STRING_FORMAT /**< The preference has a string value. */ } PurplePluginPrefType; #include @@ -85,7 +85,7 @@ * Get the plugin preferences from a plugin preference frame * * @param frame The plugin frame to get the plugin preferences from - * @return a GList of plugin preferences + * @constreturn a GList of plugin preferences */ GList *purple_plugin_pref_frame_get_prefs(PurplePluginPrefFrame *frame); @@ -207,7 +207,7 @@ * Get the choices for a choices plugin pref * * @param pref The plugin pref - * @return GList of the choices + * @constreturn GList of the choices */ GList *purple_plugin_pref_get_choices(PurplePluginPref *pref); diff -r 7697f6872380 -r f7e4a558a439 libpurple/plugins/log_reader.c --- a/libpurple/plugins/log_reader.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/plugins/log_reader.c Tue Oct 23 17:41:06 2007 +0000 @@ -28,6 +28,19 @@ NAME_GUESS_THEM }; +/* Some common functions. */ +static int get_month(const char *month) +{ + int iter; + const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL}; + for (iter = 0; months[iter]; iter++) { + if (strcmp(month, months[iter]) == 0) + break; + } + return iter; +} + /***************************************************************************** * Adium Logger * @@ -1348,36 +1361,7 @@ * daylight savings time. */ tm.tm_isdst = -1; - - /* Ugly hack, in case current locale - * is not English. This code is taken - * from log.c. - */ - if (strcmp(month, "Jan") == 0) { - tm.tm_mon= 0; - } else if (strcmp(month, "Feb") == 0) { - tm.tm_mon = 1; - } else if (strcmp(month, "Mar") == 0) { - tm.tm_mon = 2; - } else if (strcmp(month, "Apr") == 0) { - tm.tm_mon = 3; - } else if (strcmp(month, "May") == 0) { - tm.tm_mon = 4; - } else if (strcmp(month, "Jun") == 0) { - tm.tm_mon = 5; - } else if (strcmp(month, "Jul") == 0) { - tm.tm_mon = 6; - } else if (strcmp(month, "Aug") == 0) { - tm.tm_mon = 7; - } else if (strcmp(month, "Sep") == 0) { - tm.tm_mon = 8; - } else if (strcmp(month, "Oct") == 0) { - tm.tm_mon = 9; - } else if (strcmp(month, "Nov") == 0) { - tm.tm_mon = 10; - } else if (strcmp(month, "Dec") == 0) { - tm.tm_mon = 11; - } + tm.tm_mon = get_month(month); data = g_new0( struct trillian_logger_data, 1); @@ -2111,168 +2095,54 @@ #define AMSN_LOG_CONV_END "|\"LRED[You have closed the window on " #define AMSN_LOG_CONV_EXTRA "01 Aug 2001 00:00:00]" -/* `log_dir`/username@hotmail.com/logs/buddyname@hotmail.com.log */ -/* `log_dir`/username@hotmail.com/logs/Month Year/buddyname@hotmail.com.log */ -static GList *amsn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) +static GList *amsn_logger_parse_file(char *filename, const char *sn, PurpleAccount *account) { GList *list = NULL; - struct amsn_logger_data *data; - const char *logdir; - char *username; - char *log_path; - char *buddy_log; - char *filename; - GDir *dir; - const char *name; GError *error; char *contents; + struct amsn_logger_data *data; PurpleLog *log; - GList *files = NULL; - GList *f; - - logdir = purple_prefs_get_string("/plugins/core/log_reader/amsn/log_directory"); - - /* By clearing the log directory path, this logger can be (effectively) disabled. */ - if (!logdir || !*logdir) - return NULL; - - /* aMSN only works with MSN/WLM */ - if (strcmp(account->protocol_id, "prpl-msn")) - return NULL; - - username = g_strdup(purple_normalize(account, account->username)); - buddy_log = g_strdup_printf("%s.log", purple_normalize(account, sn)); - log_path = g_build_filename(logdir, username, "logs", NULL); - - /* First check in the top-level */ - filename = g_build_filename(log_path, buddy_log, NULL); - if (g_file_test(filename, G_FILE_TEST_EXISTS)) - files = g_list_prepend(files, filename); - else - g_free(filename); - - /* Check in previous months */ - dir = g_dir_open(log_path, 0, NULL); - if (dir) { - while ((name = g_dir_read_name(dir)) != NULL) { - filename = g_build_filename(log_path, name, buddy_log, NULL); - if (g_file_test(filename, G_FILE_TEST_EXISTS)) - files = g_list_prepend(files, filename); - else - g_free(filename); - } - g_dir_close(dir); - } - - g_free(log_path); - - /* New versions use 'friendlier' directory names */ - purple_util_chrreplace(username, '@', '_'); - purple_util_chrreplace(username, '.', '_'); - - log_path = g_build_filename(logdir, username, "logs", NULL); - - /* First check in the top-level */ - filename = g_build_filename(log_path, buddy_log, NULL); - if (g_file_test(filename, G_FILE_TEST_EXISTS)) - files = g_list_prepend(files, filename); - else - g_free(filename); - - /* Check in previous months */ - dir = g_dir_open(log_path, 0, NULL); - if (dir) { - while ((name = g_dir_read_name(dir)) != NULL) { - filename = g_build_filename(log_path, name, buddy_log, NULL); - if (g_file_test(filename, G_FILE_TEST_EXISTS)) - files = g_list_prepend(files, filename); - else - g_free(filename); - } - g_dir_close(dir); - } - - g_free(log_path); - g_free(username); - g_free(buddy_log); - - /* Loop through files looking for logs */ - for(f = g_list_first(files); f; f = g_list_next(f)) { - filename = f->data; - purple_debug_info("aMSN logger", "Reading %s\n", filename); - error = NULL; - if (!g_file_get_contents(filename, &contents, NULL, &error)) { - purple_debug_error("aMSN logger", - "Couldn't read file %s: %s \n", filename, - (error && error->message) ? - error->message : "Unknown error"); - if (error) - g_error_free(error); - } else { - char *c = contents; - gboolean found_start = FALSE; - char *start_log = c; - int offset = 0; - struct tm tm; - while (c && *c) { - if (purple_str_has_prefix(c, AMSN_LOG_CONV_START)) { - char month[4]; - if (sscanf(c + strlen(AMSN_LOG_CONV_START), - "%u %3s %u %u:%u:%u", - &tm.tm_mday, (char*)&month, &tm.tm_year, - &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) { - found_start = FALSE; - purple_debug_error("aMSN logger", - "Error parsing start date for %s\n", - filename); - } else { - const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL}; - tm.tm_year -= 1900; - - /* Let the C library deal with - * daylight savings time. - */ - tm.tm_isdst = -1; - - /* Ugly hack, in case current locale - * is not English. This code is taken - * from log.c. - */ - for (tm.tm_mon = 0; months[tm.tm_mon]; tm.tm_mon++) { - if (strcmp(month, months[tm.tm_mon]) == 0) - break; - } - found_start = TRUE; - offset = c - contents; - start_log = c; - } - } else if (purple_str_has_prefix(c, AMSN_LOG_CONV_END) && found_start) { - data = g_new0(struct amsn_logger_data, 1); - data->path = g_strdup(filename); - data->offset = offset; - data->length = c - start_log - + strlen(AMSN_LOG_CONV_END) - + strlen(AMSN_LOG_CONV_EXTRA); - log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL); - log->logger = amsn_logger; - log->logger_data = data; - list = g_list_prepend(list, log); + + purple_debug_info("aMSN logger", "Reading %s\n", filename); + error = NULL; + if (!g_file_get_contents(filename, &contents, NULL, &error)) { + purple_debug_error("aMSN logger", + "Couldn't read file %s: %s \n", filename, + (error && error->message) ? + error->message : "Unknown error"); + if (error) + g_error_free(error); + } else { + char *c = contents; + gboolean found_start = FALSE; + char *start_log = c; + int offset = 0; + struct tm tm; + while (c && *c) { + if (purple_str_has_prefix(c, AMSN_LOG_CONV_START)) { + char month[4]; + if (sscanf(c + strlen(AMSN_LOG_CONV_START), + "%u %3s %u %u:%u:%u", + &tm.tm_mday, (char*)&month, &tm.tm_year, + &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) { found_start = FALSE; - - purple_debug_info("aMSN logger", - "Found log for %s:" - " path = (%s)," - " offset = (%d)," - " length = (%d)\n", - sn, data->path, data->offset, data->length); + purple_debug_error("aMSN logger", + "Error parsing start date for %s\n", + filename); + } else { + tm.tm_year -= 1900; + + /* Let the C library deal with + * daylight savings time. + */ + tm.tm_isdst = -1; + tm.tm_mon = get_month(month); + + found_start = TRUE; + offset = c - contents; + start_log = c; } - c = strstr(c, "\n"); - c++; - } - - /* I've seen the file end without the AMSN_LOG_CONV_END bit */ - if (found_start) { + } else if (purple_str_has_prefix(c, AMSN_LOG_CONV_END) && found_start) { data = g_new0(struct amsn_logger_data, 1); data->path = g_strdup(filename); data->offset = offset; @@ -2292,12 +2162,112 @@ " length = (%d)\n", sn, data->path, data->offset, data->length); } - g_free(contents); + c = strstr(c, "\n"); + c++; + } + + /* I've seen the file end without the AMSN_LOG_CONV_END bit */ + if (found_start) { + data = g_new0(struct amsn_logger_data, 1); + data->path = g_strdup(filename); + data->offset = offset; + data->length = c - start_log + + strlen(AMSN_LOG_CONV_END) + + strlen(AMSN_LOG_CONV_EXTRA); + log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL); + log->logger = amsn_logger; + log->logger_data = data; + list = g_list_prepend(list, log); + found_start = FALSE; + + purple_debug_info("aMSN logger", + "Found log for %s:" + " path = (%s)," + " offset = (%d)," + " length = (%d)\n", + sn, data->path, data->offset, data->length); } + g_free(contents); + } + + return list; +} + +/* `log_dir`/username@hotmail.com/logs/buddyname@hotmail.com.log */ +/* `log_dir`/username@hotmail.com/logs/Month Year/buddyname@hotmail.com.log */ +static GList *amsn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account) +{ + GList *list = NULL; + const char *logdir; + char *username; + char *log_path; + char *buddy_log; + char *filename; + GDir *dir; + const char *name; + + logdir = purple_prefs_get_string("/plugins/core/log_reader/amsn/log_directory"); + + /* By clearing the log directory path, this logger can be (effectively) disabled. */ + if (!logdir || !*logdir) + return NULL; + + /* aMSN only works with MSN/WLM */ + if (strcmp(account->protocol_id, "prpl-msn")) + return NULL; + + username = g_strdup(purple_normalize(account, account->username)); + buddy_log = g_strdup_printf("%s.log", purple_normalize(account, sn)); + log_path = g_build_filename(logdir, username, "logs", NULL); + + /* First check in the top-level */ + filename = g_build_filename(log_path, buddy_log, NULL); + if (g_file_test(filename, G_FILE_TEST_EXISTS)) + list = amsn_logger_parse_file(filename, sn, account); + else g_free(filename); + + /* Check in previous months */ + dir = g_dir_open(log_path, 0, NULL); + if (dir) { + while ((name = g_dir_read_name(dir)) != NULL) { + filename = g_build_filename(log_path, name, buddy_log, NULL); + if (g_file_test(filename, G_FILE_TEST_EXISTS)) + list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account)); + g_free(filename); + } + g_dir_close(dir); } - g_list_free(files); + g_free(log_path); + + /* New versions use 'friendlier' directory names */ + purple_util_chrreplace(username, '@', '_'); + purple_util_chrreplace(username, '.', '_'); + + log_path = g_build_filename(logdir, username, "logs", NULL); + + /* First check in the top-level */ + filename = g_build_filename(log_path, buddy_log, NULL); + if (g_file_test(filename, G_FILE_TEST_EXISTS)) + list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account)); + g_free(filename); + + /* Check in previous months */ + dir = g_dir_open(log_path, 0, NULL); + if (dir) { + while ((name = g_dir_read_name(dir)) != NULL) { + filename = g_build_filename(log_path, name, buddy_log, NULL); + if (g_file_test(filename, G_FILE_TEST_EXISTS)) + list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account)); + g_free(filename); + } + g_dir_close(dir); + } + + g_free(log_path); + g_free(username); + g_free(buddy_log); return list; } diff -r 7697f6872380 -r f7e4a558a439 libpurple/plugins/tcl/tcl.c --- a/libpurple/plugins/tcl/tcl.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/plugins/tcl/tcl.c Tue Oct 23 17:41:06 2007 +0000 @@ -60,6 +60,7 @@ PurpleStringref *PurpleTclRefStatusAttr; PurpleStringref *PurpleTclRefStatusType; PurpleStringref *PurpleTclRefXfer; +PurpleStringref *PurpleTclRefHandle; static GHashTable *tcl_plugins = NULL; @@ -363,6 +364,7 @@ PurpleTclRefStatusAttr = purple_stringref_new("StatusAttr"); PurpleTclRefStatusType = purple_stringref_new("StatusType"); PurpleTclRefXfer = purple_stringref_new("Xfer"); + PurpleTclRefHandle = purple_stringref_new("Handle"); tcl_plugins = g_hash_table_new(g_direct_hash, g_direct_equal); diff -r 7697f6872380 -r f7e4a558a439 libpurple/plugins/tcl/tcl_cmds.c --- a/libpurple/plugins/tcl/tcl_cmds.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/plugins/tcl/tcl_cmds.c Tue Oct 23 17:41:06 2007 +0000 @@ -55,7 +55,7 @@ return account; } if (interp != NULL) - Tcl_SetStringObj(Tcl_GetObjResult(interp), "invalid account", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid account", -1)); return NULL; } @@ -74,7 +74,7 @@ return convo; } if (interp != NULL) - Tcl_SetStringObj(Tcl_GetObjResult(interp), "invalid conversation", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid conversation", -1)); return NULL; } @@ -97,7 +97,7 @@ int tcl_cmd_account(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem; + Tcl_Obj *result, *list, *elem; const char *cmds[] = { "alias", "connect", "connection", "disconnect", "enabled", "find", "handle", "isconnected", "list", "presence", "protocol", "status", @@ -139,7 +139,7 @@ if ((account = tcl_validate_account(objv[2], interp)) == NULL) return TCL_ERROR; alias = purple_account_get_alias(account); - Tcl_SetStringObj(result, alias ? (char *)alias : "", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj(alias ? (char *)alias : "", -1)); break; case CMD_ACCOUNT_CONNECT: if (objc != 3) { @@ -164,7 +164,7 @@ return TCL_ERROR; Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefConnection, - purple_account_get_connection(account))); + purple_account_get_connection(account))); break; case CMD_ACCOUNT_DISCONNECT: if (objc != 3) { @@ -183,9 +183,10 @@ if ((account = tcl_validate_account(objv[2], interp)) == NULL) return TCL_ERROR; if (objc == 3) { - Tcl_SetBooleanObj(result, - purple_account_get_enabled(account, - purple_core_get_ui())); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_account_get_enabled(account, + purple_core_get_ui()))); } else { if ((error = Tcl_GetBooleanFromObj(interp, objv[3], &b)) != TCL_OK) return TCL_ERROR; @@ -207,7 +208,9 @@ Tcl_WrongNumArgs(interp, 2, objv, ""); return TCL_ERROR; } - Tcl_SetIntObj(result, (int)purple_accounts_get_handle()); + Tcl_SetObjResult(interp, + purple_tcl_ref_new(PurpleTclRefHandle, + purple_accounts_get_handle())); break; case CMD_ACCOUNT_ISCONNECTED: if (objc != 3) { @@ -216,7 +219,9 @@ } if ((account = tcl_validate_account(objv[2], interp)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_account_is_connected(account)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_account_is_connected(account))); break; case CMD_ACCOUNT_LIST: listopt = CMD_ACCOUNTLIST_ALL; @@ -255,7 +260,7 @@ } if ((account = tcl_validate_account(objv[2], interp)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, (char *)purple_account_get_protocol_id(account), -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj((char *)purple_account_get_protocol_id(account), -1)); break; case CMD_ACCOUNT_STATUS: if (objc < 3) { @@ -271,19 +276,19 @@ } else { GList *l = NULL; if (objc % 2) { - Tcl_SetStringObj(result, "name without value setting status", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("name without value setting status", -1)); return TCL_ERROR; } status = purple_account_get_status(account, Tcl_GetString(objv[3])); if (status == NULL) { - Tcl_SetStringObj(result, "invalid status for account", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid status for account", -1)); return TCL_ERROR; } for (i = 4; i < objc; i += 2) { attr_id = Tcl_GetString(objv[i]); value = purple_status_get_attr_value(status, attr_id); if (value == NULL) { - Tcl_SetStringObj(result, "invalid attribute for account", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid attribute for account", -1)); return TCL_ERROR; } switch (purple_value_get_type(value)) { @@ -306,7 +311,7 @@ l = g_list_append(l, Tcl_GetString(objv[i + 1])); break; default: - Tcl_SetStringObj(result, "unknown PurpleValue type", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown PurpleValue type", -1)); return TCL_ERROR; } } @@ -327,10 +332,10 @@ } else { PurpleStatusPrimitive primitive; if (strcmp(Tcl_GetString(objv[3]), "-primitive")) { - Tcl_SetStringObj(result, "bad option \"", -1); + result = Tcl_NewStringObj("bad option \"", -1); Tcl_AppendObjToObj(result, objv[3]); - Tcl_AppendToObj(result, - "\": should be -primitive", -1); + Tcl_AppendToObj(result, "\": should be -primitive", -1); + Tcl_SetObjResult(interp,result); return TCL_ERROR; } primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4])); @@ -338,7 +343,7 @@ primitive); } if (status_type == NULL) { - Tcl_SetStringObj(result, "status type not found", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("status type not found", -1)); return TCL_ERROR; } Tcl_SetObjResult(interp, @@ -368,7 +373,8 @@ } if ((account = tcl_validate_account(objv[2], interp)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, (char *)purple_account_get_username(account), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj((char *)purple_account_get_username(account), -1)); break; } @@ -383,7 +389,8 @@ char *type; if (count < 3) { - Tcl_SetStringObj(Tcl_GetObjResult(interp), "list too short", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("list too short", -1)); return NULL; } @@ -420,8 +427,6 @@ if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK) return error; - result = Tcl_GetObjResult(interp); - switch (cmd) { case CMD_BUDDY_ALIAS: if (objc != 3) { @@ -433,9 +438,11 @@ if ((node = tcl_list_to_buddy(interp, count, elems)) == NULL) return TCL_ERROR; if (node->type == PURPLE_BLIST_CHAT_NODE) - Tcl_SetStringObj(result, ((PurpleChat *)node)->alias, -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(((PurpleChat *)node)->alias, -1)); else if (node->type == PURPLE_BLIST_BUDDY_NODE) - Tcl_SetStringObj(result, (char *)purple_buddy_get_alias((PurpleBuddy *)node), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj((char *)purple_buddy_get_alias((PurpleBuddy *)node), -1)); return TCL_OK; break; case CMD_BUDDY_HANDLE: @@ -443,7 +450,9 @@ Tcl_WrongNumArgs(interp, 2, objv, ""); return TCL_ERROR; } - Tcl_SetIntObj(result, (int)purple_blist_get_handle()); + Tcl_SetObjResult(interp, + purple_tcl_ref_new(PurpleTclRefHandle, + purple_blist_get_handle())); break; case CMD_BUDDY_INFO: if (objc != 3 && objc != 4) { @@ -454,11 +463,13 @@ if ((error = Tcl_ListObjGetElements(interp, objv[2], &count, &elems)) != TCL_OK) return error; if (count < 3) { - Tcl_SetStringObj(result, "buddy too short", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("buddy too short", -1)); return TCL_ERROR; } if (strcmp("buddy", Tcl_GetString(elems[0]))) { - Tcl_SetStringObj(result, "invalid buddy", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("invalid buddy", -1)); return TCL_ERROR; } if ((account = tcl_validate_account(elems[2], interp)) == NULL) @@ -475,8 +486,9 @@ if (!strcmp("-all", Tcl_GetString(objv[2]))) { all = 1; } else { - Tcl_SetStringObj(result, "", -1); + result = Tcl_NewStringObj("",-1); Tcl_AppendStringsToObj(result, "unknown option: ", Tcl_GetString(objv[2]), NULL); + Tcl_SetObjResult(interp,result); return TCL_ERROR; } } @@ -547,7 +559,7 @@ const char *cmds[] = { "do", "help", "list", "register", "unregister", NULL }; enum { CMD_CMD_DO, CMD_CMD_HELP, CMD_CMD_LIST, CMD_CMD_REGISTER, CMD_CMD_UNREGISTER } cmd; struct tcl_cmd_handler *handler; - Tcl_Obj *list, *elem, *result = Tcl_GetObjResult(interp); + Tcl_Obj *list, *elem; PurpleConversation *convo; PurpleCmdId id; PurpleCmdStatus status; @@ -575,7 +587,8 @@ status = purple_cmd_do_command(convo, Tcl_GetString(objv[3]), escaped, &errstr); g_free(escaped); - Tcl_SetStringObj(result, errstr ? (char *)errstr : "", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(errstr ? (char *)errstr : "", -1)); g_free(errstr); if (status != PURPLE_CMD_STATUS_OK) { return TCL_ERROR; @@ -640,10 +653,10 @@ handler->interp = interp; if ((id = tcl_cmd_register(handler)) == 0) { tcl_cmd_handler_free(handler); - Tcl_SetIntObj(result, 0); + Tcl_SetObjResult(interp, Tcl_NewIntObj(0)); } else { handler->id = id; - Tcl_SetIntObj(result, id); + Tcl_SetObjResult(interp, Tcl_NewIntObj(id)); } break; case CMD_CMD_UNREGISTER: @@ -663,7 +676,7 @@ int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem; + Tcl_Obj *list, *elem; const char *cmds[] = { "account", "displayname", "handle", "list", NULL }; enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE, CMD_CONN_LIST } cmd; int error; @@ -697,14 +710,16 @@ } if ((gc = tcl_validate_gc(objv[2], interp)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, (char *)purple_connection_get_display_name(gc), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_connection_get_display_name(gc), -1)); break; case CMD_CONN_HANDLE: if (objc != 2) { Tcl_WrongNumArgs(interp, 2, objv, ""); return TCL_ERROR; } - Tcl_SetIntObj(result, (int)purple_connections_get_handle()); + Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefHandle, + purple_connections_get_handle())); break; case CMD_CONN_LIST: if (objc != 2) { @@ -725,7 +740,7 @@ int tcl_cmd_conversation(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *list, *elem, *result = Tcl_GetObjResult(interp); + Tcl_Obj *list, *elem; const char *cmds[] = { "find", "handle", "list", "new", "write", "name", "title", "send", NULL }; enum { CMD_CONV_FIND, CMD_CONV_HANDLE, CMD_CONV_LIST, CMD_CONV_NEW, CMD_CONV_WRITE , CMD_CONV_NAME, CMD_CONV_TITLE, CMD_CONV_SEND } cmd; const char *styles[] = { "send", "recv", "system", NULL }; @@ -766,7 +781,9 @@ Tcl_WrongNumArgs(interp, 2, objv, ""); return TCL_ERROR; } - Tcl_SetIntObj(result, (int)purple_conversations_get_handle()); + Tcl_SetObjResult(interp, + purple_tcl_ref_new(PurpleTclRefHandle, + purple_conversations_get_handle())); break; case CMD_CONV_LIST: list = Tcl_NewListObj(0, NULL); @@ -847,7 +864,8 @@ if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, (char *)purple_conversation_get_name(convo), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj((char *)purple_conversation_get_name(convo), -1)); break; case CMD_CONV_TITLE: if (objc != 3) { @@ -857,7 +875,8 @@ if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, (char *)purple_conversation_get_title(convo), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj((char *)purple_conversation_get_title(convo), -1)); break; case CMD_CONV_SEND: if (objc != 4) { @@ -879,7 +898,6 @@ int tcl_cmd_core(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *result = Tcl_GetObjResult(interp); const char *cmds[] = { "handle", "quit", NULL }; enum { CMD_CORE_HANDLE, CMD_CORE_QUIT } cmd; int error; @@ -898,7 +916,9 @@ Tcl_WrongNumArgs(interp, 2, objv, ""); return TCL_ERROR; } - Tcl_SetIntObj(result, (int)purple_get_core()); + Tcl_SetObjResult(interp, + purple_tcl_ref_new(PurpleTclRefHandle, + purple_get_core())); break; case CMD_CORE_QUIT: if (objc != 2) { @@ -970,7 +990,6 @@ int tcl_cmd_plugins(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *result = Tcl_GetObjResult(interp); const char *cmds[] = { "handle", NULL }; enum { CMD_PLUGINS_HANDLE } cmd; int error; @@ -989,7 +1008,9 @@ Tcl_WrongNumArgs(interp, 2, objv, ""); return TCL_ERROR; } - Tcl_SetIntObj(result, (int)purple_plugins_get_handle()); + Tcl_SetObjResult(interp, + purple_tcl_ref_new(PurpleTclRefHandle, + purple_plugins_get_handle())); break; } @@ -998,7 +1019,7 @@ int tcl_cmd_prefs(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *result, *list, *elem, **elems; + Tcl_Obj *list, *elem, **elems; const char *cmds[] = { "get", "set", "type", NULL }; enum { CMD_PREFS_GET, CMD_PREFS_SET, CMD_PREFS_TYPE } cmd; /* char *types[] = { "none", "boolean", "int", "string", "stringlist", NULL }; */ @@ -1015,7 +1036,6 @@ if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK) return error; - result = Tcl_GetObjResult(interp); switch (cmd) { case CMD_PREFS_GET: if (objc != 3) { @@ -1025,17 +1045,21 @@ preftype = purple_prefs_get_type(Tcl_GetString(objv[2])); switch (preftype) { case PURPLE_PREF_NONE: - Tcl_SetStringObj(result, "pref type none", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("pref type none", -1)); return TCL_ERROR; break; case PURPLE_PREF_BOOLEAN: - Tcl_SetBooleanObj(result, purple_prefs_get_bool(Tcl_GetString(objv[2]))); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_prefs_get_bool(Tcl_GetString(objv[2])))); break; case PURPLE_PREF_INT: - Tcl_SetIntObj(result, purple_prefs_get_int(Tcl_GetString(objv[2]))); + Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_prefs_get_int(Tcl_GetString(objv[2])))); break; case PURPLE_PREF_STRING: - Tcl_SetStringObj(result, (char *)purple_prefs_get_string(Tcl_GetString(objv[2])), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj((char *)purple_prefs_get_string(Tcl_GetString(objv[2])), -1)); break; case PURPLE_PREF_STRING_LIST: cur = purple_prefs_get_string_list(Tcl_GetString(objv[2])); @@ -1049,7 +1073,8 @@ break; default: purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype); - Tcl_SetStringObj(result, "unknown pref type", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("unknown pref type", -1)); return TCL_ERROR; } break; @@ -1061,7 +1086,8 @@ preftype = purple_prefs_get_type(Tcl_GetString(objv[2])); switch (preftype) { case PURPLE_PREF_NONE: - Tcl_SetStringObj(result, "bad path or pref type none", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("bad path or pref type none", -1)); return TCL_ERROR; break; case PURPLE_PREF_BOOLEAN: @@ -1100,23 +1126,23 @@ preftype = purple_prefs_get_type(Tcl_GetString(objv[2])); switch (preftype) { case PURPLE_PREF_NONE: - Tcl_SetStringObj(result, "none", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("none", -1)); break; case PURPLE_PREF_BOOLEAN: - Tcl_SetStringObj(result, "boolean", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("boolean", -1)); break; case PURPLE_PREF_INT: - Tcl_SetStringObj(result, "int", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("int", -1)); break; case PURPLE_PREF_STRING: - Tcl_SetStringObj(result, "string", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("string", -1)); break; case PURPLE_PREF_STRING_LIST: - Tcl_SetStringObj(result, "stringlist", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("stringlist", -1)); break; default: purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype); - Tcl_SetStringObj(result, "unknown", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown", -1)); } break; } @@ -1134,7 +1160,7 @@ CMD_PRESENCE_CONTEXT, CMD_PRESENCE_CONVERSATION, CMD_PRESENCE_IDLE, CMD_PRESENCE_LOGIN, CMD_PRESENCE_ONLINE, CMD_PRESENCE_STATUS, CMD_PRESENCE_STATUSES } cmd; - Tcl_Obj *result = Tcl_GetObjResult(interp); + Tcl_Obj *result; Tcl_Obj *list, *elem; PurplePresence *presence; GList *cur; @@ -1171,25 +1197,30 @@ purple_tcl_ref_new(PurpleTclRefStatus, purple_presence_get_active_status(presence))); } else if (objc == 4) { - Tcl_SetBooleanObj(result, - purple_presence_is_status_active(presence, - Tcl_GetString(objv[3]))); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_presence_is_status_active(presence, + Tcl_GetString(objv[3])))); } else { PurpleStatusPrimitive primitive; if (strcmp(Tcl_GetString(objv[3]), "-primitive")) { - Tcl_SetStringObj(result, "bad option \"", -1); + result = Tcl_NewStringObj("bad option \"", -1); Tcl_AppendObjToObj(result, objv[3]); Tcl_AppendToObj(result, "\": should be -primitive", -1); + Tcl_SetObjResult(interp,result); return TCL_ERROR; } primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4])); if (primitive == PURPLE_STATUS_UNSET) { - Tcl_SetStringObj(result, "invalid primitive ", -1); + result = Tcl_NewStringObj("invalid primitive ", -1); Tcl_AppendObjToObj(result, objv[4]); + Tcl_SetObjResult(interp,result); return TCL_ERROR; } - Tcl_SetBooleanObj(result, purple_presence_is_status_primitive_active(presence, primitive)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_presence_is_status_primitive_active(presence, primitive))); break; } break; @@ -1200,7 +1231,8 @@ } if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_presence_is_available(presence)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj(purple_presence_is_available(presence))); break; case CMD_PRESENCE_CHAT_USER: if (objc != 3) { @@ -1209,7 +1241,8 @@ } if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, purple_presence_get_chat_user(presence), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_presence_get_chat_user(presence), -1)); break; case CMD_PRESENCE_CONTEXT: if (objc != 3) { @@ -1220,16 +1253,16 @@ return TCL_ERROR; switch (purple_presence_get_context(presence)) { case PURPLE_PRESENCE_CONTEXT_UNSET: - Tcl_SetStringObj(result, "unset", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("unset", -1)); break; case PURPLE_PRESENCE_CONTEXT_ACCOUNT: - Tcl_SetStringObj(result, "account", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("account", -1)); break; case PURPLE_PRESENCE_CONTEXT_CONV: - Tcl_SetStringObj(result, "conversation", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("conversation", -1)); break; case PURPLE_PRESENCE_CONTEXT_BUDDY: - Tcl_SetStringObj(result, "buddy", -1); + Tcl_SetObjResult(interp, Tcl_NewStringObj("buddy", -1)); break; } break; @@ -1253,7 +1286,7 @@ if (objc == 3) { if (purple_presence_is_idle(presence)) { idle_time = purple_presence_get_idle_time (presence); - Tcl_SetIntObj(result, idle_time); + Tcl_SetObjResult(interp, Tcl_NewIntObj(idle_time)); } else { result = Tcl_NewListObj(0, NULL); Tcl_SetObjResult(interp, result); @@ -1280,7 +1313,7 @@ if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL) return TCL_ERROR; if (objc == 3) { - Tcl_SetIntObj(result, purple_presence_get_login_time(presence)); + Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_presence_get_login_time(presence))); } else { if ((error == Tcl_GetIntFromObj(interp, objv[3], @@ -1296,7 +1329,9 @@ } if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_presence_is_online(presence)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_presence_is_online(presence))); break; case CMD_PRESENCE_STATUS: if (objc != 4) { @@ -1332,7 +1367,7 @@ int tcl_cmd_savedstatus(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj *result = Tcl_GetObjResult(interp); + Tcl_Obj *result; const char *cmds[] = { "current", "handle", NULL }; enum { CMD_SAVEDSTATUS_CURRENT, CMD_SAVEDSTATUS_HANDLE } cmd; int error; @@ -1354,16 +1389,20 @@ } if ((saved_status = purple_savedstatus_get_current()) == NULL) return TCL_ERROR; + result = Tcl_NewListObj(0, NULL); Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_title(saved_status), -1)); Tcl_ListObjAppendElement(interp, result, Tcl_NewIntObj(purple_savedstatus_get_type(saved_status))); Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_message(saved_status), -1)); + Tcl_SetObjResult(interp,result); break; case CMD_SAVEDSTATUS_HANDLE: if (objc != 2) { Tcl_WrongNumArgs(interp, 2, objv, ""); return TCL_ERROR; } - Tcl_SetIntObj(result, (int)purple_savedstatuses_get_handle()); + Tcl_SetObjResult(interp, + purple_tcl_ref_new(PurpleTclRefHandle, + purple_savedstatuses_get_handle())); break; } @@ -1396,7 +1435,6 @@ const char *cmds[] = { "connect", "disconnect", NULL }; enum { CMD_SIGNAL_CONNECT, CMD_SIGNAL_DISCONNECT } cmd; struct tcl_signal_handler *handler; - Tcl_Obj *result = Tcl_GetObjResult(interp); void *instance; int error; @@ -1415,7 +1453,7 @@ return TCL_ERROR; } handler = g_new0(struct tcl_signal_handler, 1); - if ((error = Tcl_GetIntFromObj(interp, objv[2], (int *)&handler->instance)) != TCL_OK) { + if ((handler->instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL) { g_free(handler); return error; } @@ -1426,9 +1464,9 @@ handler->interp = interp; if (!tcl_signal_connect(handler)) { tcl_signal_handler_free(handler); - Tcl_SetIntObj(result, 1); + Tcl_SetObjResult(interp, Tcl_NewIntObj(1)); } else { - Tcl_SetIntObj(result, 0); + Tcl_SetObjResult(interp, Tcl_NewIntObj(0)); } break; case CMD_SIGNAL_DISCONNECT: @@ -1436,7 +1474,7 @@ Tcl_WrongNumArgs(interp, 2, objv, "instance signal"); return TCL_ERROR; } - if ((error = Tcl_GetIntFromObj(interp, objv[2], (int *)&instance)) != TCL_OK) + if ((instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL) return error; tcl_signal_disconnect(instance, Tcl_GetString(objv[3]), interp); break; @@ -1449,7 +1487,6 @@ { const char *cmds[] = { "attr", "type", NULL }; enum { CMD_STATUS_ATTR, CMD_STATUS_TYPE } cmd; - Tcl_Obj *result = Tcl_GetObjResult(interp); PurpleStatus *status; PurpleStatusType *status_type; PurpleValue *value; @@ -1475,13 +1512,15 @@ attr = Tcl_GetString(objv[3]); value = purple_status_get_attr_value(status, attr); if (value == NULL) { - Tcl_SetStringObj(result, "no such attribute", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("no such attribute", -1)); return TCL_ERROR; } switch (purple_value_get_type(value)) { case PURPLE_TYPE_BOOLEAN: if (objc == 4) { - Tcl_SetBooleanObj(result, purple_value_get_boolean(value)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj(purple_value_get_boolean(value))); } else { if ((error = Tcl_GetBooleanFromObj(interp, objv[4], &v)) != TCL_OK) return error; @@ -1490,7 +1529,7 @@ break; case PURPLE_TYPE_INT: if (objc == 4) { - Tcl_SetIntObj(result, purple_value_get_int(value)); + Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_value_get_int(value))); } else { if ((error = Tcl_GetIntFromObj(interp, objv[4], &v)) != TCL_OK) return error; @@ -1499,12 +1538,14 @@ break; case PURPLE_TYPE_STRING: if (objc == 4) - Tcl_SetStringObj(result, purple_value_get_string(value), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_value_get_string(value), -1)); else purple_status_set_attr_string(status, attr, Tcl_GetString(objv[4])); break; default: - Tcl_SetStringObj(result, "attribute has unknown type", -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj("attribute has unknown type", -1)); return TCL_ERROR; } break; @@ -1528,7 +1569,6 @@ { const char *cmds[] = { "id", "name", NULL }; enum { CMD_STATUS_ATTR_ID, CMD_STATUS_ATTR_NAME } cmd; - Tcl_Obj *result = Tcl_GetObjResult(interp); PurpleStatusAttr *attr; int error; @@ -1548,7 +1588,8 @@ } if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, purple_status_attr_get_id(attr), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_status_attr_get_id(attr), -1)); break; case CMD_STATUS_ATTR_NAME: if (objc != 3) { @@ -1557,7 +1598,8 @@ } if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, purple_status_attr_get_name(attr), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_status_attr_get_name(attr), -1)); break; } @@ -1576,7 +1618,6 @@ CMD_STATUS_TYPE_NAME, CMD_STATUS_TYPE_PRIMARY_ATTR, CMD_STATUS_TYPE_PRIMITIVE, CMD_STATUS_TYPE_SAVEABLE, CMD_STATUS_TYPE_USER_SETTABLE } cmd; - Tcl_Obj *result = Tcl_GetObjResult(interp); PurpleStatusType *status_type; Tcl_Obj *list, *elem; GList *cur; @@ -1598,7 +1639,8 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_status_type_is_available(status_type)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj(purple_status_type_is_available(status_type))); break; case CMD_STATUS_TYPE_ATTR: if (objc != 4) { @@ -1634,7 +1676,8 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_status_type_is_exclusive(status_type)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj(purple_status_type_is_exclusive(status_type))); break; case CMD_STATUS_TYPE_ID: if (objc != 3) { @@ -1643,7 +1686,8 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, purple_status_type_get_id(status_type), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_status_type_get_id(status_type), -1)); break; case CMD_STATUS_TYPE_INDEPENDENT: if (objc != 3) { @@ -1652,7 +1696,8 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_status_type_is_independent(status_type)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj(purple_status_type_is_independent(status_type))); break; case CMD_STATUS_TYPE_NAME: if (objc != 3) { @@ -1661,7 +1706,8 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, purple_status_type_get_name(status_type), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_status_type_get_name(status_type), -1)); break; case CMD_STATUS_TYPE_PRIMITIVE: if (objc != 3) { @@ -1670,7 +1716,9 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, purple_primitive_get_id_from_type(purple_status_type_get_primitive(status_type)), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_primitive_get_id_from_type + (purple_status_type_get_primitive(status_type)), -1)); break; case CMD_STATUS_TYPE_PRIMARY_ATTR: if (objc != 3) { @@ -1679,7 +1727,8 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetStringObj(result, purple_status_type_get_primary_attr(status_type), -1); + Tcl_SetObjResult(interp, + Tcl_NewStringObj(purple_status_type_get_primary_attr(status_type), -1)); break; case CMD_STATUS_TYPE_SAVEABLE: if (objc != 3) { @@ -1688,7 +1737,9 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_status_type_is_saveable(status_type)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_status_type_is_saveable(status_type))); break; case CMD_STATUS_TYPE_USER_SETTABLE: if (objc != 3) { @@ -1697,7 +1748,9 @@ } if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL) return TCL_ERROR; - Tcl_SetBooleanObj(result, purple_status_type_is_user_settable(status_type)); + Tcl_SetObjResult(interp, + Tcl_NewBooleanObj( + purple_status_type_is_user_settable(status_type))); break; } diff -r 7697f6872380 -r f7e4a558a439 libpurple/plugins/tcl/tcl_purple.h --- a/libpurple/plugins/tcl/tcl_purple.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/plugins/tcl/tcl_purple.h Tue Oct 23 17:41:06 2007 +0000 @@ -76,6 +76,7 @@ extern PurpleStringref *PurpleTclRefStatusAttr; extern PurpleStringref *PurpleTclRefStatusType; extern PurpleStringref *PurpleTclRefXfer; +extern PurpleStringref *PurpleTclRefHandle; PurplePlugin *tcl_interp_get_plugin(Tcl_Interp *interp); diff -r 7697f6872380 -r f7e4a558a439 libpurple/pounce.h --- a/libpurple/pounce.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/pounce.h Tue Oct 23 17:41:06 2007 +0000 @@ -339,7 +339,7 @@ /** * Returns a list of all registered buddy pounces. * - * @return The list of buddy pounces. + * @constreturn The list of buddy pounces. */ GList *purple_pounces_get_all(void); diff -r 7697f6872380 -r f7e4a558a439 libpurple/prefs.h --- a/libpurple/prefs.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/prefs.h Tue Oct 23 17:41:06 2007 +0000 @@ -115,6 +115,9 @@ * * @param name The name of the pref * @param value The initial value to set + * @note This function takes a copy of the strings in the value list. The list + * itself and original copies of the strings are up to the caller to + * free. */ void purple_prefs_add_string_list(const char *name, GList *value); @@ -131,6 +134,9 @@ * * @param name The name of the pref * @param value The initial value to set + * @note This function takes a copy of the strings in the value list. The list + * itself and original copies of the strings are up to the caller to + * free. */ void purple_prefs_add_path_list(const char *name, GList *value); @@ -291,6 +297,8 @@ * @return A list of newly allocated strings denoting the names of the children. * Returns @c NULL if there are no children or if pref doesn't exist. * The caller must free all the strings and the list. + * + * @since 2.1.0 */ GList *purple_prefs_get_children_names(const char *name); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/bonjour/dns_sd_proxy.c --- a/libpurple/protocols/bonjour/dns_sd_proxy.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/bonjour/dns_sd_proxy.c Tue Oct 23 17:41:06 2007 +0000 @@ -1,4 +1,4 @@ -/** +/* * * 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 diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/bonjour/dns_sd_proxy.h --- a/libpurple/protocols/bonjour/dns_sd_proxy.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/bonjour/dns_sd_proxy.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,3 +1,23 @@ +/* + * + * 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 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 02111-1301, USA. + */ #ifndef _DNS_SD_PROXY #define _DNS_SD_PROXY diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/bonjour/mdns_win32.c --- a/libpurple/protocols/bonjour/mdns_win32.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/bonjour/mdns_win32.c Tue Oct 23 17:41:06 2007 +0000 @@ -1,4 +1,4 @@ -/** +/* * * 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 diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/jabber/jabber.c --- a/libpurple/protocols/jabber/jabber.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/jabber/jabber.c Tue Oct 23 17:41:06 2007 +0000 @@ -2189,57 +2189,100 @@ return PURPLE_CMD_RET_OK; } +static gboolean _jabber_send_buzz(JabberStream *js, const char *username, char **error) { + + JabberBuddy *jb; + JabberBuddyResource *jbr; + GList *iter; + + if(!username) + return FALSE; + + jb = jabber_buddy_find(js, username, FALSE); + if(!jb) { + *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username); + return FALSE; + } + + jbr = jabber_buddy_find_resource(jb, NULL); + if(!jbr) { + *error = g_strdup_printf(_("Unable to buzz, because user %s might be offline."), username); + return FALSE; + } + + if(!jbr->caps) { + *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username); + return FALSE; + } + + for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { + if(!strcmp(iter->data, "http://www.xmpp.org/extensions/xep-0224.html#ns")) { + xmlnode *buzz, *msg = xmlnode_new("message"); + gchar *to; + + to = g_strdup_printf("%s/%s", username, jbr->name); + xmlnode_set_attrib(msg, "to", to); + g_free(to); + + /* avoid offline storage */ + xmlnode_set_attrib(msg, "type", "headline"); + + buzz = xmlnode_new_child(msg, "attention"); + xmlnode_set_namespace(buzz, "http://www.xmpp.org/extensions/xep-0224.html#ns"); + + jabber_send(js, msg); + xmlnode_free(msg); + + return TRUE; + } + } + + *error = g_strdup_printf(_("Unable to buzz, because the user %s does not support it."), username); + return FALSE; +} + static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data) { JabberStream *js = conv->account->gc->proto_data; - xmlnode *msg, *buzz; - JabberBuddy *jb; - JabberBuddyResource *jbr; - char *to; - GList *iter; if(!args || !args[0]) return PURPLE_CMD_RET_FAILED; - - jb = jabber_buddy_find(js, args[0], FALSE); - if(!jb) { - *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), args[0]); - return PURPLE_CMD_RET_FAILED; - } - - jbr = jabber_buddy_find_resource(jb, NULL); - if(!jbr) { - *error = g_strdup_printf(_("Unable to buzz, because user %s might be offline."), args[0]); - return PURPLE_CMD_RET_FAILED; - } - if(!jbr->caps) { - *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), args[0]); - return PURPLE_CMD_RET_FAILED; + + return _jabber_send_buzz(js, args[0], error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED; +} + +GList *jabber_attention_types(PurpleAccount *account) +{ + static GList *types = NULL; + PurpleAttentionType *attn; + + if (!types) { + attn = g_new0(PurpleAttentionType, 1); + attn->name = _("Buzz"); + attn->incoming_description = _("%s has buzzed you!"); + attn->outgoing_description = _("Buzzing %s..."); + types = g_list_append(types, attn); } - for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) { - if(!strcmp(iter->data, "http://www.xmpp.org/extensions/xep-0224.html#ns")) { - msg = xmlnode_new("message"); - to = g_strdup_printf("%s/%s", args[0], jbr->name); - xmlnode_set_attrib(msg,"to",to); - g_free(to); - - /* avoid offline storage */ - xmlnode_set_attrib(msg,"type","headline"); - - buzz = xmlnode_new_child(msg,"attention"); - xmlnode_set_namespace(buzz,"http://www.xmpp.org/extensions/xep-0224.html#ns"); - - jabber_send(js,msg); - xmlnode_free(msg); - - return PURPLE_CMD_RET_OK; - } + + return types; +} + +gboolean jabber_send_attention(PurpleConnection *gc, const char *username, guint code) +{ + JabberStream *js = gc->proto_data; + gchar *error = NULL; + + if (!_jabber_send_buzz(js, username, &error)) { + purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)"); + g_free(error); + return FALSE; } - *error = g_strdup_printf(_("Unable to buzz, because the user %s does not support it."), args[0]); - return PURPLE_CMD_RET_FAILED; + + return TRUE; } + gboolean jabber_offline_message(const PurpleBuddy *buddy) { return TRUE; diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/jabber/jabber.h --- a/libpurple/protocols/jabber/jabber.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/jabber/jabber.h Tue Oct 23 17:41:06 2007 +0000 @@ -66,6 +66,9 @@ #define CAPS0115_NODE "http://pidgin.im/caps" +/* Index into attention_types list */ +#define JABBER_BUZZ 0 + typedef enum { JABBER_STREAM_OFFLINE, JABBER_STREAM_CONNECTING, @@ -231,6 +234,8 @@ void jabber_register_gateway(JabberStream *js, const char *gateway); void jabber_register_account(PurpleAccount *account); void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data); +gboolean jabber_send_attention(PurpleConnection *gc, const char *username, guint code); +GList *jabber_attention_types(PurpleAccount *account); void jabber_convo_closed(PurpleConnection *gc, const char *who); PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name); gboolean jabber_offline_message(const PurpleBuddy *buddy); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/jabber/libxmpp.c --- a/libpurple/protocols/jabber/libxmpp.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/jabber/libxmpp.c Tue Oct 23 17:41:06 2007 +0000 @@ -113,10 +113,10 @@ jabber_prpl_send_raw, /* send_raw */ jabber_roomlist_room_serialize, /* roomlist_room_serialize */ jabber_unregister_account, /* unregister_user */ + jabber_send_attention, /* send_attention */ + jabber_attention_types, /* attention_types */ /* padding */ - NULL, - NULL, NULL }; diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/Makefile.am --- a/libpurple/protocols/msn/Makefile.am Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/Makefile.am Tue Oct 23 17:41:06 2007 +0000 @@ -1,4 +1,6 @@ EXTRA_DIST = \ + directconn.c \ + directconn.h \ Makefile.mingw pkgdir = $(libdir)/purple-$(PURPLE_MAJOR_VERSION) @@ -8,10 +10,10 @@ cmdproc.h \ command.c \ command.h \ + contact.c\ + contact.h\ dialog.c \ dialog.h \ - directconn.c \ - directconn.h \ error.c \ error.h \ group.c \ @@ -30,6 +32,8 @@ notification.h \ object.c \ object.h \ + oim.c\ + oim.h\ page.c \ page.h \ servconn.c \ @@ -46,6 +50,8 @@ slpmsg.h \ slpsession.c \ slpsession.h \ + soap.c\ + soap.h\ state.c \ state.h \ switchboard.c \ @@ -60,8 +66,8 @@ user.h \ userlist.c \ userlist.h \ - msn-utils.c \ - msn-utils.h + msnutils.c \ + msnutils.h AM_CFLAGS = $(st) diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/Makefile.mingw --- a/libpurple/protocols/msn/Makefile.mingw Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/Makefile.mingw Tue Oct 23 17:41:06 2007 +0000 @@ -39,6 +39,7 @@ ## C_SRC = cmdproc.c \ command.c \ + contact.c\ dialog.c \ directconn.c \ error.c \ @@ -50,6 +51,7 @@ nexus.c \ notification.c \ object.c \ + oim.c\ page.c \ servconn.c \ session.c \ @@ -58,6 +60,7 @@ slplink.c \ slpmsg.c \ slpsession.c \ + soap.c\ state.c \ switchboard.c \ sync.c \ @@ -65,7 +68,7 @@ transaction.c \ user.c \ userlist.c \ - msn-utils.c + msnutils.c OBJECTS = $(C_SRC:%.c=%.o) diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/README Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,55 @@ +MSNP14 Implementation +by Ma Yuan + +1. Introduction +------------- + +MSNP14 Protocol, proposed by Windows Live Messenger, is new, and there is no available implementation except the official one on Windows Platform. + +It has introduced many new features attractable to many users, such as: +* Offline Instant Message + You can send the offline Message to the offline User, + The message will be posted to that user the next time when he is online. + +* Communicate with Yahoo User + U can chat with the Yahoo User in MSN, That's Fantastic! Till now , + you can send text/Nudge to Yahoo User. + +* Windows Live ID authentition + WLM use the Window Live ID Authentication process,Known as Passport 3.0, + The procedure is totally different to the previous Passport 2.0 + +* Video/Audio Conversation + U can communicate with other's via Video/Audio. +(Though very interesting, not implemented in this version) + +2.New Features Added +----------------- + +Till now, This project has implemented the following Feature: +* Windows Live ID authentication. + +* Offline Instant Message +Now can send and receive the Offline Instant Message to MSN user and Yahoo User. + +*contact management +Can add/delete Contact +Can add/delete Group + +* Communicate with Yahoo User +Can send/receive Message/Nudge to Yahoo User. + +*. Changes to made to fit MSNP14 Protocol + +3. Reference +------------- + +The very useful sites of MSN Protocol: +MSNpiki site: +reverse engineer of MSN Protocol.up to dated. +http://msnpiki.msnfanatic.com/index.php/MSN_Protocol_Version_13 + +hypothetic site: +old MSN Protocol Introduction,but very useful for basic idea of MSN protocol +http://www.hypothetic.org/docs/msn/index.php + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/cmdproc.c --- a/libpurple/protocols/msn/cmdproc.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/cmdproc.c Tue Oct 23 17:41:06 2007 +0000 @@ -258,8 +258,10 @@ trans = msn_history_find(cmdproc->history, cmd->trId); if (trans != NULL) - if (trans->timer) + if (trans->timer) { purple_timeout_remove(trans->timer); + trans->timer = 0; + } if (g_ascii_isdigit(cmd->command[0])) { diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/command.c --- a/libpurple/protocols/msn/command.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/command.c Tue Oct 23 17:41:06 2007 +0000 @@ -25,9 +25,9 @@ #include "command.h" static gboolean -is_num(char *str) +is_num(const char *str) { - char *c; + const char *c; for (c = str; *c; c++) { if (!(g_ascii_isdigit(*c))) return FALSE; @@ -36,20 +36,63 @@ return TRUE; } +/* + * check the command is the command with payload content + * if it is return TRUE + * else return FALSE + */ +static gboolean +msn_check_payload_cmd(const char *str) +{ + g_return_val_if_fail(str != NULL, FALSE); + + if((!strcmp(str,"ADL")) || + (!strcmp(str,"GCF")) || + (!strcmp(str,"SG")) || + (!strcmp(str,"MSG")) || + (!strcmp(str,"RML")) || + (!strcmp(str,"UBX")) || + (!strcmp(str,"UBN")) || + (!strcmp(str,"UUM")) || + (!strcmp(str,"UBM")) || + (!strcmp(str,"FQY")) || + (!strcmp(str,"UUN")) || + (!strcmp(str,"UUX")) || + (is_num(str))){ + return TRUE; + } + + return FALSE; +} + +/* + * set command Payload length + */ +static void +msn_set_payload_len(MsnCommand *cmd) +{ + char *param; + int len = 0; + + if (msn_check_payload_cmd(cmd->command) && (cmd->param_count > 0)){ + param = cmd->params[cmd->param_count - 1]; + len = is_num(param) ? atoi(param) : 0; + } + + cmd->payload_len = len; +} + MsnCommand * msn_command_from_string(const char *string) { MsnCommand *cmd; - char *tmp; char *param_start; g_return_val_if_fail(string != NULL, NULL); - tmp = g_strdup(string); - param_start = strchr(tmp, ' '); - cmd = g_new0(MsnCommand, 1); - cmd->command = tmp; + cmd->command = g_strdup(string); + param_start = strchr(cmd->command, ' '); if (param_start) { @@ -70,7 +113,13 @@ cmd->trId = is_num(param) ? atoi(param) : 0; } else + { cmd->trId = 0; + } + + /*add payload Length checking*/ + msn_set_payload_len(cmd); + purple_debug_info("MSNP14","get payload len:%d\n",cmd->payload_len); msn_command_ref(cmd); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/contact.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/contact.c Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,1875 @@ +/** + * @file contact.c + * get MSN contacts via SOAP request + * created by MaYuan + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "msn.h" +#include "contact.h" +#include "xmlnode.h" +#include "group.h" + +const char *MsnSoapPartnerScenarioText[] = +{ + "Initial", + "ContactSave", + "MessengerPendingList", + "ContactMsgrAPI", + "BlockUnblock" +}; + +const char *MsnMemberRole[] = +{ + "Forward", + "Allow", + "Block", + "Reverse", + "Pending" +}; + +/* new a contact */ +MsnContact * +msn_contact_new(MsnSession *session) +{ + MsnContact *contact; + + contact = g_new0(MsnContact, 1); + contact->session = session; + contact->soapconn = msn_soap_new(session,contact,1); + + return contact; +} + +/* destroy the contact */ +void +msn_contact_destroy(MsnContact *contact) +{ + msn_soap_destroy(contact->soapconn); + g_free(contact); +} + +MsnCallbackState * +msn_callback_state_new(void) +{ + return g_new0(MsnCallbackState, 1); +} + +void +msn_callback_state_free(MsnCallbackState *state) +{ + if (state == NULL) + return; + + g_free(state->who); + g_free(state->uid); + g_free(state->old_group_name); + g_free(state->new_group_name); + g_free(state->guid); + + g_free(state); +} + +void +msn_callback_state_set_who(MsnCallbackState *state, const gchar *who) +{ + g_return_if_fail(state != NULL); + + g_free(state->who); + state->who = g_strdup(who); +} + +void +msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid) +{ + g_return_if_fail(state != NULL); + + g_free(state->uid); + state->uid = g_strdup(uid); +} + +void +msn_callback_state_set_old_group_name(MsnCallbackState *state, const gchar *old_group_name) +{ + g_return_if_fail(state != NULL); + + g_free(state->old_group_name); + state->old_group_name = g_strdup(old_group_name); +} + +void +msn_callback_state_set_new_group_name(MsnCallbackState *state, const gchar *new_group_name) +{ + g_return_if_fail(state != NULL); + + g_free(state->new_group_name); + state->new_group_name = g_strdup(new_group_name); +} + +void +msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid) +{ + g_return_if_fail(state != NULL); + + g_free(state->guid); + state->guid = g_strdup(guid); +} + + +void +msn_callback_state_set_list_id(MsnCallbackState *state, MsnListId list_id) +{ + g_return_if_fail(state != NULL); + + state->list_id = list_id; +} + +void +msn_callback_state_set_action(MsnCallbackState *state, MsnCallbackAction action) +{ + g_return_if_fail(state != NULL); + + state->action |= action; +} + +/*contact SOAP server login error*/ +static void +msn_contact_login_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error) +{ + MsnSession *session; + + session = soapconn->session; + g_return_if_fail(session != NULL); + + msn_session_set_error(session, MSN_ERROR_SERV_DOWN, _("Unable to connect to contact server")); +} + +/*msn contact SOAP server connect process*/ +static gboolean +msn_contact_login_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc) +{ + MsnSession * session; + MsnContact *contact; + + contact = soapconn->parent; + g_return_val_if_fail(contact != NULL, TRUE); + + session = contact->session; + g_return_val_if_fail(session != NULL, FALSE); + + /*login ok!We can retrieve the contact list*/ +// msn_get_contact_list(contact, MSN_PS_INITIAL, NULL); + return TRUE; +} + +/*get MSN member role utility*/ +static MsnListId +msn_get_memberrole(const char *role) +{ + g_return_val_if_fail(role != NULL, 0); + + if (!strcmp(role,"Allow")) { + return MSN_LIST_AL; + } else if (!strcmp(role,"Block")) { + return MSN_LIST_BL; + } else if (!strcmp(role,"Reverse")) { + return MSN_LIST_RL; + } else if (!strcmp(role,"Pending")) { + return MSN_LIST_PL; + } + return 0; +} + +/*get User Type*/ +static int +msn_get_user_type(char *type) +{ + g_return_val_if_fail(type != NULL, 0); + + if (!strcmp(type,"Regular")) { + return MSN_USER_TYPE_PASSPORT; + } + if (!strcmp(type,"Live")) { + return MSN_USER_TYPE_PASSPORT; + } + if (!strcmp(type,"LivePending")) { + return MSN_USER_TYPE_PASSPORT; + } + + return MSN_USER_TYPE_UNKNOWN; +} + +/* Create the AddressBook in the server, if we don't have one */ +static gboolean +msn_create_address_cb(MsnSoapConn *soapconn) +{ + MsnContact *contact; + + if (soapconn->body == NULL) + return TRUE; + + contact = soapconn->parent; + g_return_val_if_fail(contact != NULL, TRUE); + + purple_debug_info("MSN AddressBook", "Address Book successfully created!\n"); + msn_get_address_book(contact, MSN_PS_INITIAL, NULL, NULL); + +// msn_soap_free_read_buf(soapconn); + return TRUE; +} + +static void +msn_create_address_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSN AddressBook","AddressBookAdd written\n"); + soapconn->read_cb = msn_create_address_cb; + + return; +} + +static void +msn_create_address_book(MsnContact * contact) +{ + MsnSoapReq *soap_request; + gchar *body; + + g_return_if_fail(contact != NULL); + g_return_if_fail(contact->session != NULL); + g_return_if_fail(contact->session->user != NULL); + g_return_if_fail(contact->session->user->passport != NULL); + + purple_debug_info("MSN AddressBook","Creating an Address Book.\n"); + + body = g_strdup_printf(MSN_ADD_ADDRESSBOOK_TEMPLATE, contact->session->user->passport); + + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL,MSN_ADD_ADDRESSBOOK_SOAP_ACTION, + body, + NULL, + msn_create_address_cb, + msn_create_address_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn, soap_request); + + g_free(body); + + return; +} + +/*parse contact list*/ +static void +msn_parse_contact_list(MsnContact * contact) +{ + MsnSession * session; + MsnListOp list_op = 0; + MsnListId list; + char * passport, *typedata; + xmlnode *fault, *faultstringnode, *faultdetail, *errorcode; + xmlnode *node, *body, *response, *result, *services; + xmlnode *service, *memberships, *info, *handle, *handletype; + xmlnode *membershipnode, *members, *member, *passportNode; + + session = contact->session; + node = xmlnode_from_str(contact->soapconn->body, contact->soapconn->body_len); + + if (node == NULL) { + purple_debug_error("MSNCL","Unable to parse SOAP data!\n"); + return; + } + + purple_debug_misc("MSNCL","Parsing contact list with size %d\n", contact->soapconn->body_len); + + purple_debug_misc("MSNCL","Root node @ %p: Name: '%s', child: '%s', lastchild: '%s'\n", node, + node->name ? node->name : "(null)", + (node->child && node->child->name) ? node->child->name : "(null)", + (node->lastchild && node->lastchild->name) ? node->lastchild->name : "(null)"); + + body = xmlnode_get_child(node, "Body"); + + if (body == NULL) { + purple_debug_warning("MSNCL", "Failed to parse contact list Body node\n"); + xmlnode_free(node); + return; + } + purple_debug_info("MSNCL","Body @ %p: Name: '%s'\n",body,body->name); + + /* Did we receive a ? */ + if ( (fault = xmlnode_get_child(body, "Fault")) != NULL) { + purple_debug_info("MSNCL","Fault received from SOAP server!\n"); + + if ( (faultstringnode = xmlnode_get_child(fault, "faultstring")) != NULL ) { + gchar * faultstring = xmlnode_get_data(faultstringnode); + purple_debug_info("MSNCL", "Faultstring: %s\n", faultstring ? faultstring : "(null)"); + g_free(faultstring); + } + if ( (faultdetail = xmlnode_get_child(fault, "detail")) != NULL ) { + purple_debug_info("MSNCL","detail @ %p, name: %s\n",faultdetail, faultdetail->name); + + if ( (errorcode = xmlnode_get_child(faultdetail, "errorcode")) != NULL ) { + purple_debug_info("MSNCL","errorcode @ %p, name: %s\n", errorcode, errorcode->name); + + if (errorcode->child != NULL) { + gchar *errorcodestring = xmlnode_get_data(errorcode); + purple_debug_info("MSNCL", "Error Code: %s\n", errorcodestring ? errorcodestring : "(null)"); + + if (errorcodestring && !strncmp(errorcodestring, "ABDoesNotExist", 14) ) { + xmlnode_free(node); + g_free(errorcodestring); + msn_create_address_book(contact); + return; + } + g_free(errorcodestring); + } + } + } + xmlnode_free(node); + msn_get_contact_list(contact, MSN_PS_INITIAL, NULL); + return; + } + + response = xmlnode_get_child(body,"FindMembershipResponse"); + + if (response == NULL) { + /* we may get a response if our cache data is too old: + * + * Need to do full sync. Can't sync deltas Client + * has too old a copy for us to do a delta sync + */ + xmlnode_free(node); + msn_get_contact_list(contact, MSN_PS_INITIAL, NULL); + return; + } + purple_debug_info("MSNCL","FindMembershipResponse @ %p: Name: '%s'\n",response,response->name); + + result = xmlnode_get_child(response,"FindMembershipResult"); + if (result == NULL) { + purple_debug_warning("MSNCL","Received No Update!\n"); + xmlnode_free(node); + return; + } + purple_debug_info("MSNCL","Result @ %p: Name: '%s'\n", result, result->name); + + if ( (services = xmlnode_get_child(result,"Services")) == NULL) { + purple_debug_misc("MSNCL","No received.\n"); + xmlnode_free(node); + return; + } + + purple_debug_info("MSNCL","Services @ %p\n",services); + + for (service = xmlnode_get_child(services, "Service"); service; + service = xmlnode_get_next_twin(service)) { + purple_debug_info("MSNCL","Service @ %p\n",service); + + if ( (info = xmlnode_get_child(service,"Info")) == NULL ) { + purple_debug_error("MSNCL","Error getting 'Info' child node\n"); + continue; + } + if ( (handle = xmlnode_get_child(info,"Handle")) == NULL ) { + purple_debug_error("MSNCL","Error getting 'Handle' child node\n"); + continue; + } + if ( (handletype = xmlnode_get_child(handle,"Type")) == NULL ) { + purple_debug_error("MSNCL","Error getting 'Type' child node\n"); + continue; + } + + if ( (typedata = xmlnode_get_data(handletype)) == NULL) { + purple_debug_error("MSNCL","Error retrieving data from 'Type' child node\n"); + continue; + } + + purple_debug_info("MSNCL","processing '%s' Service\n", typedata); + + if ( !g_strcasecmp(typedata, "Profile") ) { + /* Process Windows Live 'Messenger Roaming Identity' */ + g_free(typedata); + continue; + } + + if ( !g_strcasecmp(typedata, "Messenger") ) { + char *LastChangeStr = NULL; + xmlnode *LastChangeNode; + + /*Last Change Node*/ + if ((LastChangeNode = xmlnode_get_child(service, "LastChange"))) + LastChangeStr = xmlnode_get_data(LastChangeNode); + purple_debug_info("MSNCL","LastChangeNode: '%s'\n",LastChangeStr ? LastChangeStr : "(null)"); + purple_account_set_string(session->account, "CLLastChange", LastChangeStr); + g_free(LastChangeStr); + + memberships = xmlnode_get_child(service,"Memberships"); + if (memberships == NULL) { + purple_debug_warning("MSNCL","Memberships = NULL, cleaning up and returning.\n"); + g_free(typedata); + xmlnode_free(node); + return; + } + purple_debug_info("MSNCL","Memberships @ %p: Name: '%s'\n",memberships,memberships->name); + for (membershipnode = xmlnode_get_child(memberships, "Membership"); membershipnode; + membershipnode = xmlnode_get_next_twin(membershipnode)){ + xmlnode *roleNode; + char *role = NULL; + list = 0; + + if ((roleNode = xmlnode_get_child(membershipnode,"MemberRole"))) { + role = xmlnode_get_data(roleNode); + list = msn_get_memberrole(role); + } + list_op = 1 << list; + + purple_debug_info("MSNCL","MemberRole role: %s, list_op: %d\n", role ? role : "(null)", list_op); + + g_free(role); + + members = xmlnode_get_child(membershipnode, "Members"); + for (member = xmlnode_get_child(members, "Member"); member; + member = xmlnode_get_next_twin(member)){ + MsnUser *user = NULL; + xmlnode *typeNode, *membershipIdNode = NULL; + gchar *type, *membershipId = NULL; + const char *member_type = xmlnode_get_attrib(member, "type"); + + if (!member_type) { + purple_debug_error("msn", "No Member Type specified for Member.\n"); + continue; + } + + if(!g_strcasecmp(member_type, "PassportMember") ) { + passport = type = NULL; + if ((passportNode = xmlnode_get_child(member, "PassportName"))) + passport = xmlnode_get_data(passportNode); + if ((typeNode = xmlnode_get_child(member, "Type"))) + type = xmlnode_get_data(typeNode); + purple_debug_info("MSNCL","Passport name: '%s', Type: %s\n", passport ? passport : "(null)", type ? type : "(null)"); + /* Why do we even bother parsing it just to free it??? */ + g_free(type); + + user = msn_userlist_find_add_user(session->userlist,passport,NULL); + g_free(passport); + + membershipIdNode = xmlnode_get_child(member,"MembershipId"); + if (membershipIdNode != NULL) { + membershipId = xmlnode_get_data(membershipIdNode); + if (membershipId != NULL) { + user->membership_id[list] = atoi(membershipId); + g_free(membershipId); + } + } + + msn_got_lst_user(session, user, list_op, NULL); + } + else if (!g_strcasecmp(member_type, "PhoneMember")) { + purple_debug_info("msn", "Recieved Phone Member; ignoring.\n"); + } + else if (!g_strcasecmp(member_type, "EmailMember")) { + xmlnode *emailNode; + passport = NULL; + + if ((emailNode = xmlnode_get_child(member, "Email"))) + passport = xmlnode_get_data(emailNode); + purple_debug_info("MSNCL","Email Member: Name: '%s', list_op: %d\n", passport ? passport : "(null)", list_op); + + user = msn_userlist_find_add_user(session->userlist, passport, NULL); + g_free(passport); + + membershipIdNode = xmlnode_get_child(member,"MembershipId"); + if (membershipIdNode != NULL) { + membershipId = xmlnode_get_data(membershipIdNode); + if (membershipId != NULL) { + user->membership_id[list] = atoi(membershipId); + g_free(membershipId); + } + } + + msn_got_lst_user(session, user, list_op, NULL); + } else { + purple_debug_info("msn", "Unknown Member type: %s\n", member_type); + } + } + } + } + g_free(typedata); + } + + xmlnode_free(node); /* Free the whole XML tree */ +} + +static gboolean +msn_get_contact_list_cb(MsnSoapConn *soapconn) +{ + MsnContact *contact; + MsnSession *session; + const char *abLastChange; + const char *dynamicItemLastChange; + gchar *partner_scenario; + + if (soapconn->body == NULL) + return TRUE; + + purple_debug_misc("MSNCL","Got the contact list!\n"); + + contact = soapconn->parent; + g_return_val_if_fail(contact != NULL, TRUE); + session = soapconn->session; + g_return_val_if_fail(session != NULL, FALSE); + g_return_val_if_fail(soapconn->data_cb != NULL, TRUE); + + partner_scenario = soapconn->data_cb; + + msn_parse_contact_list(contact); + /*free the read buffer*/ + msn_soap_free_read_buf(soapconn); + + abLastChange = purple_account_get_string(session->account, "ablastChange", NULL); + dynamicItemLastChange = purple_account_get_string(session->account, "dynamicItemLastChange", NULL); + + if (!strcmp(partner_scenario, MsnSoapPartnerScenarioText[MSN_PS_INITIAL])) { + +#ifdef MSN_PARTIAL_LISTS + /* XXX: this should be enabled when we can correctly do partial + syncs with the server. Currently we need to retrieve the whole + list to detect sync issues */ + msn_get_address_book(contact, MSN_PS_INITIAL, abLastChange, dynamicItemLastChange); +#else + msn_get_address_book(contact, MSN_PS_INITIAL, NULL, NULL); +#endif + } else { + msn_soap_free_read_buf(soapconn); + } + + return TRUE; +} + +static void +msn_get_contact_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_misc("MSNCL","Sent SOAP request for the contact list.\n"); + soapconn->read_cb = msn_get_contact_list_cb; +} + +/* SOAP get contact list*/ +void +msn_get_contact_list(MsnContact * contact, const MsnSoapPartnerScenario partner_scenario, const char *update_time) +{ + MsnSoapReq *soap_request; + gchar *body; + gchar *update_str = NULL; + const gchar *partner_scenario_str = MsnSoapPartnerScenarioText[partner_scenario]; + + purple_debug_misc("MSNCL","Getting Contact List.\n"); + + if ( update_time != NULL ) { + purple_debug_info("MSNCL","Last update time: %s\n",update_time); + update_str = g_strdup_printf(MSN_GET_CONTACT_UPDATE_XML,update_time); + } + + body = g_strdup_printf(MSN_GET_CONTACT_TEMPLATE, partner_scenario_str, update_str ? update_str : ""); + g_free(update_str); + + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_GET_CONTACT_POST_URL, + MSN_GET_CONTACT_SOAP_ACTION, + body, + (gpointer) partner_scenario_str, + msn_get_contact_list_cb, + msn_get_contact_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn,soap_request); + g_free(body); +} + +static void +msn_parse_addressbook_groups(MsnContact *contact, xmlnode *node) +{ + MsnSession *session = contact->session; + xmlnode *group; + + purple_debug_info("MsnAb","msn_parse_addressbook_groups()\n"); + + for(group = xmlnode_get_child(node, "Group"); group; + group = xmlnode_get_next_twin(group)){ + xmlnode *groupId, *groupInfo, *groupname; + char *group_id = NULL, *group_name = NULL; + + if ((groupId = xmlnode_get_child(group, "groupId"))) + group_id = xmlnode_get_data(groupId); + if ((groupInfo = xmlnode_get_child(group, "groupInfo")) && (groupname = xmlnode_get_child(groupInfo, "name"))) + group_name = xmlnode_get_data(groupname); + + msn_group_new(session->userlist, group_id, group_name); + + if (group_id == NULL){ + /* Group of ungroupped buddies */ + g_free(group_name); + continue; + } + + purple_debug_info("MsnAB","group_id: %s, name: %s\n", group_id, group_name ? group_name : "(null)"); + if ((purple_find_group(group_name)) == NULL){ + PurpleGroup *g = purple_group_new(group_name); + purple_blist_add_group(g, NULL); + } + g_free(group_id); + g_free(group_name); + } +} + +static void +msn_parse_addressbook_contacts(MsnContact *contact, xmlnode *node) +{ + MsnSession *session = contact->session; + xmlnode *contactNode; + char *passport = NULL, *Name = NULL, *uid = NULL, *type = NULL; + + for(contactNode = xmlnode_get_child(node, "Contact"); contactNode; + contactNode = xmlnode_get_next_twin(contactNode)) { + xmlnode *contactId, *contactInfo, *contactType, *passportName, *displayName, *guid, *groupIds; + MsnUser *user; + MsnUserType usertype; + + if (!(contactId = xmlnode_get_child(contactNode,"contactId")) + || !(contactInfo = xmlnode_get_child(contactNode, "contactInfo")) + || !(contactType = xmlnode_get_child(contactInfo, "contactType"))) + continue; + + g_free(passport); + g_free(Name); + g_free(uid); + g_free(type); + passport = Name = uid = type = NULL; + + uid = xmlnode_get_data(contactId); + type = xmlnode_get_data(contactType); + + /*setup the Display Name*/ + if (type && !strcmp(type, "Me")){ + char *friendly = NULL; + if ((displayName = xmlnode_get_child(contactInfo, "displayName"))) + friendly = xmlnode_get_data(displayName); + purple_connection_set_display_name(session->account->gc, friendly ? purple_url_decode(friendly) : NULL); + g_free(friendly); + continue; /* Not adding own account as buddy to buddylist */ + } + + usertype = msn_get_user_type(type); + passportName = xmlnode_get_child(contactInfo, "passportName"); + if (passportName == NULL) { + xmlnode *emailsNode, *contactEmailNode, *emailNode; + xmlnode *messengerEnabledNode; + char *msnEnabled; + + /*TODO: add it to the none-instant Messenger group and recognize as email Membership*/ + /*Yahoo User?*/ + emailsNode = xmlnode_get_child(contactInfo, "emails"); + if (emailsNode == NULL) { + /*TODO: need to support the Mobile type*/ + continue; + } + for(contactEmailNode = xmlnode_get_child(emailsNode, "ContactEmail"); contactEmailNode; + contactEmailNode = xmlnode_get_next_twin(contactEmailNode) ){ + if (!(messengerEnabledNode = xmlnode_get_child(contactEmailNode, "isMessengerEnabled"))) { + /* XXX: Should this be a continue instead of a break? It seems like it'd cause unpredictable results otherwise. */ + break; + } + + msnEnabled = xmlnode_get_data(messengerEnabledNode); + + if ((emailNode = xmlnode_get_child(contactEmailNode, "email"))) { + g_free(passport); + passport = xmlnode_get_data(emailNode); + } + + if(msnEnabled && !strcmp(msnEnabled, "true")) { + /*Messenger enabled, Get the Passport*/ + purple_debug_info("MsnAB", "Yahoo User %s\n", passport ? passport : "(null)"); + usertype = MSN_USER_TYPE_YAHOO; + g_free(msnEnabled); + break; + } else { + /*TODO maybe we can just ignore it in Purple?*/ + purple_debug_info("MSNAB", "Other type user\n"); + } + + g_free(msnEnabled); + } + } else { + passport = xmlnode_get_data(passportName); + } + + if (passport == NULL) + continue; + + if ((displayName = xmlnode_get_child(contactInfo, "displayName"))) + Name = xmlnode_get_data(displayName); + else + Name = g_strdup(passport); + + purple_debug_misc("MsnAB","passport:{%s} uid:{%s} display:{%s}\n", + passport, uid ? uid : "(null)", Name ? Name : "(null)"); + + user = msn_userlist_find_add_user(session->userlist, passport, Name); + msn_user_set_uid(user, uid); + msn_user_set_type(user, usertype); + + groupIds = xmlnode_get_child(contactInfo, "groupIds"); + if (groupIds) { + for (guid = xmlnode_get_child(groupIds, "guid"); guid; + guid = xmlnode_get_next_twin(guid)){ + char *group_id = xmlnode_get_data(guid); + msn_user_add_group_id(user, group_id); + purple_debug_misc("MsnAB", "guid:%s\n", group_id ? group_id : "(null)"); + g_free(group_id); + } + } else { + purple_debug_info("msn", "User not in any groups, adding to default group.\n"); + /*not in any group,Then set default group*/ + msn_user_add_group_id(user, MSN_INDIVIDUALS_GROUP_ID); + } + + msn_got_lst_user(session, user, MSN_LIST_FL_OP, NULL); + } + + g_free(passport); + g_free(Name); + g_free(uid); + g_free(type); +} + +static gboolean +msn_parse_addressbook(MsnContact * contact) +{ + MsnSession *session; + xmlnode * node,*body,*response,*result; + xmlnode *groups; + xmlnode *contacts; + xmlnode *abNode; + xmlnode *fault, *faultstringnode, *faultdetail, *errorcode; + + session = contact->session; + + node = xmlnode_from_str(contact->soapconn->body, contact->soapconn->body_len); + if ( node == NULL ) { + purple_debug_error("MSN AddressBook","Error parsing Address Book with size %d\n", contact->soapconn->body_len); + return FALSE; + } + + purple_debug_misc("MSN AddressBook", "Parsing Address Book with size %d\n", contact->soapconn->body_len); + + purple_debug_misc("MSN AddressBook","node{%p},name:%s,child:%s,last:%s\n", node, + node->name ? node->name : "(null)", + (node->child && node->child->name) ? node->child->name : "(null)", + (node->lastchild && node->lastchild->name) ? node->lastchild->name : "(null)"); + + body = xmlnode_get_child(node,"Body"); + purple_debug_misc("MSN AddressBook","body{%p},name:%s\n",body,body->name); + + /* TODO: This appears to be used in a number of places and should be de-duplicated */ + if ( (fault = xmlnode_get_child(body, "Fault")) != NULL) { + purple_debug_info("MSN AddressBook","Fault received from SOAP server!\n"); + + if ( (faultstringnode = xmlnode_get_child(fault, "faultstring")) != NULL ) { + gchar *faultstring = xmlnode_get_data(faultstringnode); + purple_debug_info("MSN AddressBook","Faultstring: %s\n", faultstring ? faultstring : "(null)"); + g_free(faultstring); + } + if ( (faultdetail = xmlnode_get_child(fault, "detail")) != NULL ) { + purple_debug_info("MSN AddressBook","detail @ %p, name: %s\n",faultdetail, faultdetail->name); + + if ( (errorcode = xmlnode_get_child(faultdetail, "errorcode")) != NULL ) { + gchar *errorcodestring; + purple_debug_info("MSN AddressBook","errorcode @ %p, name: %s\n",errorcode, errorcode->name); + + errorcodestring = xmlnode_get_data(errorcode); + purple_debug_info("MSN AddressBook", "Error Code: %s\n", errorcodestring ? errorcodestring : "(null)"); + + if (errorcodestring && !strncmp(errorcodestring, "ABDoesNotExist", 14) ) { + g_free(errorcodestring); + xmlnode_free(node); + return TRUE; + } + g_free(errorcodestring); + } + } + xmlnode_free(node); + return FALSE; + } + + + response = xmlnode_get_child(body,"ABFindAllResponse"); + + if (response == NULL) { + xmlnode_free(node); + return FALSE; + } + + purple_debug_misc("MSN SOAP","response{%p},name:%s\n",response,response->name); + result = xmlnode_get_child(response,"ABFindAllResult"); + if(result == NULL){ + purple_debug_misc("MSNAB","receive no address book update\n"); + xmlnode_free(node); + return TRUE; + } + purple_debug_info("MSN SOAP","result{%p},name:%s\n",result,result->name); + + /*Process Group List*/ + groups = xmlnode_get_child(result,"groups"); + if (groups != NULL) { + msn_parse_addressbook_groups(contact, groups); + } + + /*add a default No group to set up the no group Membership*/ + msn_group_new(session->userlist, MSN_INDIVIDUALS_GROUP_ID, + MSN_INDIVIDUALS_GROUP_NAME); + purple_debug_misc("MsnAB","group_id:%s name:%s\n", + MSN_INDIVIDUALS_GROUP_ID, MSN_INDIVIDUALS_GROUP_NAME); + if ((purple_find_group(MSN_INDIVIDUALS_GROUP_NAME)) == NULL){ + PurpleGroup *g = purple_group_new(MSN_INDIVIDUALS_GROUP_NAME); + purple_blist_add_group(g, NULL); + } + + /*add a default No group to set up the no group Membership*/ + msn_group_new(session->userlist, MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME); + purple_debug_misc("MsnAB","group_id:%s name:%s\n", MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME); + if ((purple_find_group(MSN_NON_IM_GROUP_NAME)) == NULL){ + PurpleGroup *g = purple_group_new(MSN_NON_IM_GROUP_NAME); + purple_blist_add_group(g, NULL); + } + + /*Process contact List*/ + purple_debug_info("MSNAB","process contact list...\n"); + contacts =xmlnode_get_child(result,"contacts"); + if (contacts != NULL) { + msn_parse_addressbook_contacts(contact, contacts); + } + + abNode =xmlnode_get_child(result,"ab"); + if(abNode != NULL){ + xmlnode *node2; + char *tmp = NULL; + + if ((node2 = xmlnode_get_child(abNode, "lastChange"))) + tmp = xmlnode_get_data(node2); + purple_debug_info("MsnAB"," lastchanged Time:{%s}\n", tmp ? tmp : "(null)"); + purple_account_set_string(session->account, "ablastChange", tmp); + + g_free(tmp); tmp = NULL; + if ((node2 = xmlnode_get_child(abNode, "DynamicItemLastChanged"))) + tmp = xmlnode_get_data(node2); + purple_debug_info("MsnAB"," DynamicItemLastChanged :{%s}\n", tmp ? tmp : "(null)"); + purple_account_set_string(session->account, "DynamicItemLastChanged", tmp); + g_free(tmp); + } + + xmlnode_free(node); + msn_soap_free_read_buf(contact->soapconn); + return TRUE; +} + +static gboolean +msn_get_address_cb(MsnSoapConn *soapconn) +{ + MsnContact *contact; + MsnSession *session; + + if (soapconn->body == NULL) + return TRUE; + + contact = soapconn->parent; + g_return_val_if_fail(contact != NULL, TRUE); + session = soapconn->session; + g_return_val_if_fail(session != NULL, FALSE); + + purple_debug_misc("MSN AddressBook", "Got the Address Book!\n"); + + if ( msn_parse_addressbook(contact) ) { + //msn_soap_free_read_buf(soapconn); + + if (!session->logged_in) { + msn_send_privacy(session->account->gc); + msn_notification_dump_contact(session); + } + + /*free the read buffer*/ + msn_soap_free_read_buf(soapconn); + return TRUE; + } else { + /* This is making us loop infinitely when we fail to parse the address book, + disable for now (we should re-enable when we send timestamps) + */ + /* + msn_get_address_book(contact, NULL, NULL); + */ + msn_session_disconnect(session); + purple_connection_error(session->account->gc, _("Unable to retrieve MSN Address Book")); + return FALSE; + } +} + +/**/ +static void +msn_address_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_misc("MSN AddressBook","Sent SOAP request for the Address Book.\n"); + soapconn->read_cb = msn_get_address_cb; +} + +/*get the address book*/ +void +msn_get_address_book(MsnContact *contact, const MsnSoapPartnerScenario partner_scenario, const char *LastChanged, const char *dynamicItemLastChange) +{ + MsnSoapReq *soap_request; + char *body; + char *update_str = NULL; + + purple_debug_misc("MSN AddressBook","Getting Address Book\n"); + + /*build SOAP and POST it*/ + if (dynamicItemLastChange != NULL) + update_str = g_strdup_printf(MSN_GET_ADDRESS_UPDATE_XML, dynamicItemLastChange); + else if (LastChanged != NULL) + update_str = g_strdup_printf(MSN_GET_ADDRESS_UPDATE_XML, LastChanged); + + + body = g_strdup_printf(MSN_GET_ADDRESS_TEMPLATE, MsnSoapPartnerScenarioText[partner_scenario], update_str ? update_str : ""); + g_free(update_str); + + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL,MSN_GET_ADDRESS_SOAP_ACTION, + body, + NULL, + msn_get_address_cb, + msn_address_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn,soap_request); + g_free(body); +} + +static gboolean +msn_add_contact_read_cb(MsnSoapConn *soapconn) +{ + MsnCallbackState *state = NULL; + MsnUserList *userlist; + MsnUser *user; + + g_return_val_if_fail(soapconn->data_cb != NULL, TRUE); + g_return_val_if_fail(soapconn->session != NULL, FALSE); + g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE); + + state = (MsnCallbackState *) soapconn->data_cb; + + if (soapconn->body == NULL) { + msn_callback_state_free(state); + return TRUE; + } + + userlist = soapconn->session->userlist; + + purple_debug_info("MSNCL","Contact added successfully\n"); + + // the code this block is replacing didn't send ADL for yahoo contacts, + // but i haven't confirmed this is WLM's behaviour wrt yahoo contacts + + if ( !msn_user_is_yahoo(soapconn->session->account, state->who) ) { + + msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_AL); + msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_FL); + } + msn_notification_send_fqy(soapconn->session, state->who); + + user = msn_userlist_find_add_user(userlist, state->who, state->who); + msn_user_add_group_id(user, state->guid); + + msn_soap_free_read_buf(soapconn); + msn_callback_state_free(state); + + return TRUE; +} + +static void +msn_add_contact_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSNCL","Add contact request written\n"); + soapconn->read_cb = msn_add_contact_read_cb; +} + +/* add a Contact in MSN_INDIVIDUALS_GROUP */ +void +msn_add_contact(MsnContact *contact, MsnCallbackState *state, const char *passport) +{ + MsnSoapReq *soap_request; + gchar *body = NULL; + gchar *contact_xml = NULL; + + g_return_if_fail(passport != NULL); +/* gchar *escaped_displayname; + + + if (displayname != NULL) { + escaped_displayname = g_markup_decode_text(displayname, -1); + } else { + escaped_displayname = passport; + } + contact_xml = g_strdup_printf(MSN_XML_ADD_CONTACT, escaped_displayname, passport); +*/ + purple_debug_info("MSNCL","Adding contact %s to contact list\n", passport); + +// if ( !strcmp(state->guid, MSN_INDIVIDUALS_GROUP_ID) ) { + contact_xml = g_strdup_printf(MSN_CONTACT_XML, passport); +// } + body = g_strdup_printf(MSN_ADD_CONTACT_TEMPLATE, contact_xml); + + g_free(contact_xml); + + /*build SOAP and POST it*/ + + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_CONTACT_ADD_SOAP_ACTION, + body, + state, + msn_add_contact_read_cb, + msn_add_contact_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn,soap_request); + + g_free(body); +} + +static gboolean +msn_add_contact_to_group_read_cb(MsnSoapConn *soapconn) +{ + MsnCallbackState *state; + MsnUserList *userlist; + + g_return_val_if_fail(soapconn->data_cb != NULL, TRUE); + g_return_val_if_fail(soapconn->session != NULL, FALSE); + g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE); + + userlist = soapconn->session->userlist; + + state = (MsnCallbackState *) soapconn->data_cb; + + if (soapconn->body == NULL) { + msn_callback_state_free(state); + return TRUE; + } + + if (msn_userlist_add_buddy_to_group(userlist, state->who, state->new_group_name) == TRUE) { + purple_debug_info("MSNCL", "Contact %s added to group %s successfully!\n", state->who, state->new_group_name); + } else { + purple_debug_info("MSNCL","Contact %s added to group %s successfully on server, but failed in the local list\n", state->who, state->new_group_name); + } + + if (state->action & MSN_ADD_BUDDY) { + + if ( !msn_user_is_yahoo(soapconn->session->account, state->who) ) { + + msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_AL); + msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_FL); + } + msn_notification_send_fqy(soapconn->session, state->who); + } + + if (state->action & MSN_MOVE_BUDDY) { + msn_del_contact_from_group(soapconn->session->contact, state->who, state->old_group_name); + } else { + msn_callback_state_free(state); + msn_soap_free_read_buf(soapconn); + } + return TRUE; +} + +static void +msn_add_contact_to_group_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSNCL","Add contact to group request sent!\n"); + soapconn->read_cb = msn_add_contact_to_group_read_cb; +} + +void +msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, + const char *passport, const char *groupId) +{ + MsnSoapReq *soap_request; + MsnUserList *userlist; + MsnUser *user; + gchar *body = NULL, *contact_xml; + + g_return_if_fail(passport != NULL); + g_return_if_fail(groupId != NULL); + + g_return_if_fail(contact != NULL); + g_return_if_fail(contact->session != NULL); + g_return_if_fail(contact->session->userlist != NULL); + + userlist = contact->session->userlist; + + if (!strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) { + + user = msn_userlist_find_add_user(userlist, passport, passport); + + if (state->action & MSN_ADD_BUDDY) { + msn_add_contact(contact, state, passport); + return; + } + + if (state->action & MSN_MOVE_BUDDY) { + msn_user_add_group_id(user, groupId); + msn_del_contact_from_group(contact, passport, state->old_group_name); + } else { + msn_callback_state_free(state); + } + + return; + } + + + purple_debug_info("MSNCL", "Adding user %s to group %s\n", passport, + msn_userlist_find_group_name(userlist, groupId)); + + user = msn_userlist_find_user(userlist, passport); + if (user == NULL) { + purple_debug_warning("MSN CL", "Unable to retrieve user %s from the userlist!\n", passport); + } + + if (user != NULL && user->uid != NULL) { + contact_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid); + } else { + contact_xml = g_strdup_printf(MSN_CONTACT_XML, passport); + } + + body = g_strdup_printf(MSN_ADD_CONTACT_GROUP_TEMPLATE, groupId, contact_xml); + g_free(contact_xml); + + /*build SOAP and POST it*/ + + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_ADD_CONTACT_GROUP_SOAP_ACTION, + body, + state, + msn_add_contact_to_group_read_cb, + msn_add_contact_to_group_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn,soap_request); + + g_free(body); +} + + + +static gboolean +msn_delete_contact_read_cb(MsnSoapConn *soapconn) +{ + MsnUser *user; + MsnCallbackState *state = (MsnCallbackState *) soapconn->data_cb; + MsnUserList *userlist; + + g_return_val_if_fail(soapconn->session != NULL, FALSE); + g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE); + + userlist = soapconn->session->userlist; + + if (soapconn->body == NULL) { + msn_callback_state_free(state); + return TRUE; + } + + purple_debug_info("MSNCL","Delete contact successful\n"); + + user = msn_userlist_find_user_with_id(userlist, state->uid); + if (user != NULL) { + msn_userlist_remove_user(userlist, user); + } + + msn_callback_state_free(state); + msn_soap_free_read_buf(soapconn); + + return TRUE; +} + +static void +msn_delete_contact_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSNCL","Delete contact request written\n"); + soapconn->read_cb = msn_delete_contact_read_cb; +} + +/*delete a Contact*/ +void +msn_delete_contact(MsnContact *contact, const char *contactId) +{ + gchar *body = NULL; + gchar *contact_id_xml = NULL ; + MsnSoapReq *soap_request; + MsnCallbackState *state; + + g_return_if_fail(contactId != NULL); + contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, contactId); + + state = msn_callback_state_new(); + msn_callback_state_set_uid(state, contactId); + + /* build SOAP request */ + purple_debug_info("MSNCL","Deleting contact with contactId: %s\n", contactId); + body = g_strdup_printf(MSN_DEL_CONTACT_TEMPLATE, contact_id_xml); + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_CONTACT_DEL_SOAP_ACTION, + body, + state, + msn_delete_contact_read_cb, + msn_delete_contact_written_cb, + msn_contact_connect_init); + + g_free(contact_id_xml); + + /* POST the SOAP request */ + msn_soap_post(contact->soapconn, soap_request); + + g_free(body); +} + +static gboolean +msn_del_contact_from_group_read_cb(MsnSoapConn *soapconn) +{ + MsnCallbackState *state = (MsnCallbackState *) soapconn->data_cb; + + if (soapconn->body == NULL) { + msn_callback_state_free(state); + return TRUE; + } + + if (msn_userlist_rem_buddy_from_group(soapconn->session->userlist, state->who, state->old_group_name)) { + purple_debug_info("MSN CL", "Contact %s deleted successfully from group %s\n", state->who, state->old_group_name); + } else { + purple_debug_info("MSN CL", "Contact %s deleted successfully from group %s in the server, but failed in the local list\n", state->who, state->old_group_name); + } + + msn_callback_state_free(state); + msn_soap_free_read_buf(soapconn); + + return TRUE; +} + +static void +msn_del_contact_from_group_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSN CL","Del contact from group request sent!\n"); + soapconn->read_cb = msn_del_contact_from_group_read_cb; +} + +void +msn_del_contact_from_group(MsnContact *contact, const char *passport, const char *group_name) +{ + MsnSoapReq *soap_request; + MsnUserList * userlist; + MsnUser *user; + MsnCallbackState *state; + gchar *body = NULL, *contact_id_xml; + const gchar *groupId; + + g_return_if_fail(passport != NULL); + g_return_if_fail(group_name != NULL); + g_return_if_fail(contact != NULL); + g_return_if_fail(contact->session != NULL); + g_return_if_fail(contact->session->userlist != NULL); + + userlist = contact->session->userlist; + + groupId = msn_userlist_find_group_id(userlist, group_name); + if (groupId != NULL) { + purple_debug_info("MSN CL", "Deleting user %s from group %s\n", passport, group_name); + } else { + purple_debug_warning("MSN CL", "Unable to retrieve group id from group %s !\n", group_name); + return; + } + + user = msn_userlist_find_user(userlist, passport); + + if (user == NULL) { + purple_debug_warning("MSN CL", "Unable to retrieve user from passport %s!\n", passport); + return; + } + + if ( !strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) { + msn_user_remove_group_id(user, groupId); + return; + } + + state = msn_callback_state_new(); + msn_callback_state_set_who(state, passport); + msn_callback_state_set_guid(state, groupId); + msn_callback_state_set_old_group_name(state, group_name); + + contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid); + body = g_strdup_printf(MSN_CONTACT_DEL_GROUP_TEMPLATE, contact_id_xml, groupId); + g_free(contact_id_xml); + + /*build SOAP and POST it*/ + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_CONTACT_DEL_GROUP_SOAP_ACTION, + body, + state, + msn_del_contact_from_group_read_cb, + msn_del_contact_from_group_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn,soap_request); + + g_free(body); +} + + +static gboolean +msn_update_contact_read_cb(MsnSoapConn *soapconn) +{ + if (soapconn->body == NULL) + return TRUE; + + purple_debug_info("MSN CL","Contact updated successfully\n"); + + return TRUE; +} + +static void +msn_update_contact_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSN CL","Update contact information request sent\n"); + soapconn->read_cb = msn_update_contact_read_cb; +} + +/* Update a contact's nickname */ + +void +msn_update_contact(MsnContact *contact, const char* nickname) +{ + MsnSoapReq *soap_request; + gchar *body, *escaped_nickname; + + /* I'm not sure this is right, but if it isn't, the rest of this function will need to be fixed */ + g_return_if_fail(nickname != NULL); + + purple_debug_info("MSN CL","Update contact information with new friendly name: %s\n", nickname); + + escaped_nickname = g_markup_escape_text(nickname, -1); + + body = g_strdup_printf(MSN_CONTACT_UPDATE_TEMPLATE, escaped_nickname); + + g_free(escaped_nickname); + /*build SOAP and POST it*/ + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_CONTACT_UPDATE_SOAP_ACTION, + body, + NULL, + msn_update_contact_read_cb, + msn_update_contact_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn, soap_request); + + g_free(body); +} + + +static gboolean +msn_del_contact_from_list_read_cb(MsnSoapConn *soapconn) +{ + MsnCallbackState *state = NULL; + + g_return_val_if_fail(soapconn->data_cb != NULL, TRUE); + g_return_val_if_fail(soapconn->session != NULL, FALSE); + g_return_val_if_fail(soapconn->session->contact != NULL, FALSE); + g_return_val_if_fail(soapconn->session->userlist != NULL, FALSE); + + state = (MsnCallbackState *) soapconn->data_cb; + + if (soapconn->body == NULL) { + msn_callback_state_free(state); + return TRUE; + } + + purple_debug_info("MSN CL", "Contact %s deleted successfully from %s list on server!\n", state->who, MsnMemberRole[state->list_id]); + + if (state->list_id == MSN_LIST_PL) { + MsnUser *user = msn_userlist_find_user(soapconn->session->userlist, state->who); + + if (user != NULL) + msn_user_unset_op(user, MSN_LIST_PL_OP); + + msn_add_contact_to_list(soapconn->session->contact, state, state->who, MSN_LIST_RL); + return TRUE; + } + + if (state->list_id == MSN_LIST_AL) { + purple_privacy_permit_remove(soapconn->session->account, state->who, TRUE); + msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_BL); + msn_callback_state_free(state); + return TRUE; + } + + if (state->list_id == MSN_LIST_BL) { + purple_privacy_deny_remove(soapconn->session->account, state->who, TRUE); + msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_AL); + msn_callback_state_free(state); + return TRUE; + } + + msn_callback_state_free(state); + msn_soap_free_read_buf(soapconn); + + return TRUE; +} + +static void +msn_del_contact_from_list_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSN CL","Delete contact from list SOAP request sent!\n"); + soapconn->read_cb = msn_del_contact_from_list_read_cb; +} + +void +msn_del_contact_from_list(MsnContact *contact, MsnCallbackState *state, + const gchar *passport, const MsnListId list) +{ + MsnSoapReq *soap_request; + gchar *body = NULL, *member = NULL; + MsnSoapPartnerScenario partner_scenario; + MsnUser *user; + + g_return_if_fail(contact != NULL); + g_return_if_fail(passport != NULL); + g_return_if_fail(list < 5); + + purple_debug_info("MSN CL", "Deleting contact %s from %s list\n", passport, MsnMemberRole[list]); + + if (state == NULL) { + state = msn_callback_state_new(); + } + msn_callback_state_set_list_id(state, list); + msn_callback_state_set_who(state, passport); + + if (list == MSN_LIST_PL) { + g_return_if_fail(contact->session != NULL); + g_return_if_fail(contact->session->userlist != NULL); + + user = msn_userlist_find_user(contact->session->userlist, passport); + + partner_scenario = MSN_PS_CONTACT_API; + member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML, user->membership_id[MSN_LIST_PL]); + } else { + /* list == MSN_LIST_AL || list == MSN_LIST_BL */ + partner_scenario = MSN_PS_BLOCK_UNBLOCK; + + member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport); + } + + body = g_strdup_printf( MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE, + MsnSoapPartnerScenarioText[partner_scenario], + MsnMemberRole[list], + member); + g_free(member); + + soap_request = msn_soap_request_new( MSN_CONTACT_SERVER, + MSN_SHARE_POST_URL, + MSN_DELETE_MEMBER_FROM_LIST_SOAP_ACTION, + body, + state, + msn_del_contact_from_list_read_cb, + msn_del_contact_from_list_written_cb, + msn_contact_connect_init); + + msn_soap_post(contact->soapconn,soap_request); + + g_free(body); +} + +static gboolean +msn_add_contact_to_list_read_cb(MsnSoapConn *soapconn) +{ + MsnCallbackState *state = NULL; + + g_return_val_if_fail(soapconn->data_cb != NULL, TRUE); + g_return_val_if_fail(soapconn->session != NULL, FALSE); + g_return_val_if_fail(soapconn->session->userlist != NULL, FALSE); + + state = (MsnCallbackState *) soapconn->data_cb; + + if (soapconn->body == NULL) { + msn_callback_state_free(state); + return TRUE; + } + + purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]); + + if (state->list_id == MSN_LIST_RL) { + MsnUser *user = msn_userlist_find_user(soapconn->session->userlist, state->who); + + if (user != NULL) { + msn_user_set_op(user, MSN_LIST_RL_OP); + } + + if (state->action & MSN_DENIED_BUDDY) { + g_return_val_if_fail(soapconn->session->contact != NULL, FALSE); + + msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_BL); + return TRUE; + } + } + + if (state->list_id == MSN_LIST_AL) { + purple_privacy_permit_add(soapconn->session->account, state->who, TRUE); + } else if (state->list_id == MSN_LIST_BL) { + purple_privacy_deny_add(soapconn->session->account, state->who, TRUE); + } + + msn_callback_state_free(state); + msn_soap_free_read_buf(soapconn); + return TRUE; +} + + +static void +msn_add_contact_to_list_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSN CL","Add contact to list SOAP request sent!\n"); + soapconn->read_cb = msn_add_contact_to_list_read_cb; +} + +void +msn_add_contact_to_list(MsnContact *contact, MsnCallbackState *state, + const gchar *passport, const MsnListId list) +{ + MsnSoapReq *soap_request; + gchar *body = NULL, *member = NULL; + MsnSoapPartnerScenario partner_scenario; + + g_return_if_fail(contact != NULL); + g_return_if_fail(passport != NULL); + g_return_if_fail(list < 5); + + purple_debug_info("MSN CL", "Adding contact %s to %s list\n", passport, MsnMemberRole[list]); + + if (state == NULL) { + state = msn_callback_state_new(); + } + msn_callback_state_set_list_id(state, list); + msn_callback_state_set_who(state, passport); + + partner_scenario = (list == MSN_LIST_RL) ? MSN_PS_CONTACT_API : MSN_PS_BLOCK_UNBLOCK; + + member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport); + + body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, + MsnSoapPartnerScenarioText[partner_scenario], + MsnMemberRole[list], + member); + + g_free(member); + + soap_request = msn_soap_request_new( MSN_CONTACT_SERVER, + MSN_SHARE_POST_URL, + MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION, + body, + state, + msn_add_contact_to_list_read_cb, + msn_add_contact_to_list_written_cb, + msn_contact_connect_init); + + msn_soap_post(contact->soapconn, soap_request); + + g_free(body); +} + + +#if 0 +static gboolean +msn_gleams_read_cb(MsnSoapConn * soapconn) +{ + purple_debug_info("MSN CL","Gleams read done\n"); + return TRUE; +} + +static void +msn_gleams_written_cb(MsnSoapConn * soapconn) +{ + purple_debug_info("MSNP14","finish Group written\n"); + soapconn->read_cb = msn_gleams_read_cb; +// msn_soap_read_cb(data,source,cond); +} + +/*get the gleams info*/ +void +msn_get_gleams(MsnContact *contact) +{ + MsnSoapReq *soap_request; + + purple_debug_info("MSNP14","msn get gleams info...\n"); + /*build SOAP and POST it*/ + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_GET_GLEAMS_SOAP_ACTION, + MSN_GLEAMS_TEMPLATE, + NULL, + msn_gleams_read_cb, + msn_gleams_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn,soap_request); +} +#endif + + +/*************************************************************** + * Group Operations + ***************************************************************/ + +static gboolean +msn_group_read_cb(MsnSoapConn *soapconn) +{ + MsnUserList *userlist; + MsnCallbackState *state = NULL; + + purple_debug_info("MSN CL", "Group request successful.\n"); + + g_return_val_if_fail(soapconn->session != NULL, FALSE); + g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE); + g_return_val_if_fail(soapconn->session->contact != NULL, FALSE); + + state = (MsnCallbackState *) soapconn->data_cb; + + if (soapconn->body == NULL) { + msn_callback_state_free(state); + return TRUE; + } + + if (state) { + userlist = soapconn->session->userlist; + + if (state->action & MSN_RENAME_GROUP) { + msn_userlist_rename_group_id(soapconn->session->userlist, + state->guid, + state->new_group_name); + } + + if (state->action & MSN_ADD_GROUP) { + gchar *guid, *endguid; + + guid = g_strstr_len(soapconn->read_buf, soapconn->read_len, ""); + guid += 6; + endguid = g_strstr_len(soapconn->read_buf, soapconn->read_len, ""); + *endguid = '\0'; + /* create and add the new group to the userlist */ + purple_debug_info("MSN CL", "Adding group %s with guid = %s to the userlist\n", state->new_group_name, guid); + msn_group_new(soapconn->session->userlist, guid, state->new_group_name); + + if (state->action & MSN_ADD_BUDDY) { + msn_userlist_add_buddy(soapconn->session->userlist, + state->who, + state->new_group_name); + msn_callback_state_free(state); + return TRUE; + } + + if (state->action & MSN_MOVE_BUDDY) { + msn_add_contact_to_group(soapconn->session->contact, state, state->who, guid); + return TRUE; + } + } + + if (state->action & MSN_DEL_GROUP) { + GList *l; + + msn_userlist_remove_group_id(soapconn->session->userlist, state->guid); + for (l = userlist->users; l != NULL; l = l->next) { + msn_user_remove_group_id( (MsnUser *)l->data, state->guid); + } + + } + + msn_callback_state_free(state); + } + + msn_soap_free_read_buf(soapconn); + return TRUE; +} + +static void +msn_group_written_cb(MsnSoapConn *soapconn) +{ + purple_debug_info("MSN CL","Sent group request.\n"); + soapconn->read_cb = msn_group_read_cb; +} + +/* add group */ +void +msn_add_group(MsnSession *session, MsnCallbackState *state, const char* group_name) +{ + MsnSoapReq *soap_request; + MsnContact *contact; + char *body = NULL; + gchar *escaped_group_name; + + g_return_if_fail(session != NULL); + g_return_if_fail(group_name != NULL); + + contact = session->contact; + purple_debug_info("MSN CL","Adding group %s to contact list.\n", group_name); + + if (state == NULL) { + state = msn_callback_state_new(); + } + + msn_callback_state_set_action(state, MSN_ADD_GROUP); + msn_callback_state_set_new_group_name(state, group_name); + + /* escape group name's html special chars so it can safely be sent + * in a XML SOAP request + */ + escaped_group_name = g_markup_escape_text(group_name, -1); + body = g_strdup_printf(MSN_GROUP_ADD_TEMPLATE, escaped_group_name); + g_free(escaped_group_name); + + /*build SOAP and POST it*/ + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_GROUP_ADD_SOAP_ACTION, + body, + state, + msn_group_read_cb, + msn_group_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn,soap_request); + + g_free(body); +} + +/* delete group */ +void +msn_del_group(MsnSession *session, const gchar *group_name) +{ + MsnSoapReq *soap_request; + MsnContact *contact; + MsnCallbackState *state; + char *body = NULL; + const gchar *guid; + + g_return_if_fail(session != NULL); + + g_return_if_fail(group_name != NULL); + contact = session->contact; + purple_debug_info("MSN CL","Deleting group %s from contact list\n", group_name); + + guid = msn_userlist_find_group_id(session->userlist, group_name); + + /* if group uid we need to del is NULL, + * we need to delete nothing + */ + if (guid == NULL) { + purple_debug_info("MSN CL", "Group %s guid not found, returning.\n", group_name); + return; + } + + if ( !strcmp(guid, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(guid, MSN_NON_IM_GROUP_ID) ) { + // XXX add back PurpleGroup since it isn't really removed in the server? + return; + } + + state = msn_callback_state_new(); + msn_callback_state_set_action(state, MSN_DEL_GROUP); + msn_callback_state_set_guid(state, guid); + + body = g_strdup_printf(MSN_GROUP_DEL_TEMPLATE, guid); + /*build SOAP and POST it*/ + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_GROUP_DEL_SOAP_ACTION, + body, + state, + msn_group_read_cb, + msn_group_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn, soap_request); + + g_free(body); +} + +/* rename group */ +void +msn_contact_rename_group(MsnSession *session, const char *old_group_name, const char *new_group_name) +{ + MsnSoapReq *soap_request; + MsnContact *contact; + gchar * escaped_group_name, *body = NULL; + const gchar * guid; + MsnCallbackState *state = msn_callback_state_new(); + + g_return_if_fail(session != NULL); + g_return_if_fail(session->userlist != NULL); + g_return_if_fail(old_group_name != NULL); + g_return_if_fail(new_group_name != NULL); + + contact = session->contact; + purple_debug_info("MSN CL", "Renaming group %s to %s.\n", old_group_name, new_group_name); + + guid = msn_userlist_find_group_id(session->userlist, old_group_name); + if (guid == NULL) + return; + + msn_callback_state_set_guid(state, guid); + msn_callback_state_set_new_group_name(state, new_group_name); + + if ( !strcmp(guid, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(guid, MSN_NON_IM_GROUP_ID) ) { + msn_add_group(session, state, new_group_name); + // XXX move every buddy there (we probably need to fix concurrent SOAP reqs first) + } + + msn_callback_state_set_action(state, MSN_RENAME_GROUP); + + /* escape group name's html special chars so it can safely be sent + * in a XML SOAP request + */ + escaped_group_name = g_markup_escape_text(new_group_name, -1); + + body = g_strdup_printf(MSN_GROUP_RENAME_TEMPLATE, guid, escaped_group_name); + + soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, + MSN_ADDRESS_BOOK_POST_URL, + MSN_GROUP_RENAME_SOAP_ACTION, + body, + state, + msn_group_read_cb, + msn_group_written_cb, + msn_contact_connect_init); + msn_soap_post(contact->soapconn, soap_request); + + g_free(escaped_group_name); + g_free(body); +} + +void +msn_contact_connect_init(MsnSoapConn *soapconn) +{ + msn_soap_init(soapconn, MSN_CONTACT_SERVER, TRUE, + msn_contact_login_connect_cb, + msn_contact_login_error_cb); +} diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/contact.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/contact.h Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,448 @@ +/** + * @file contact.h Header file for contact.c + * Author + * MaYuan + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef _MSN_CONTACT_H_ +#define _MSN_CONTACT_H_ + +#define MSN_CONTACT_SERVER "contacts.msn.com" + +/* Get Contact List */ + +#define MSN_GET_CONTACT_POST_URL "/abservice/SharingService.asmx" +#define MSN_GET_CONTACT_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/FindMembership" +#define MSN_GET_CONTACT_UPDATE_XML "Full"\ + "true"\ + "%s" +#define MSN_GET_CONTACT_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "%s"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + ""\ + ""\ + "Messenger"\ + "Invitation"\ + "SocialNetwork"\ + "Space"\ + "Profile"\ + ""\ + ""\ + "%s"\ + ""\ + ""\ +"" + +/************************************************ + * Address Book SOAP + * *********************************************/ + +#define MSN_ADDRESS_BOOK_POST_URL "/abservice/abservice.asmx" + +/* Create AddressBook template */ +#define MSN_ADD_ADDRESSBOOK_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABAdd" + +#define MSN_ADD_ADDRESSBOOK_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "Initial"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + ""\ + ""\ + "0"\ + "%s"\ + "true"\ + ""\ + ""\ + ""\ +"" + +/* Get AddressBook */ +#define MSN_GET_ADDRESS_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABFindAll" +#define MSN_GET_ADDRESS_FULL_TIME "0001-01-01T00:00:00.0000000-08:00" +#define MSN_GET_ADDRESS_UPDATE_XML "true"\ + "%s" + +#define MSN_GET_GLEAM_UPDATE_XML \ + "%s"\ + "Gleam"\ + "%s" + +#define MSN_GET_ADDRESS_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "%s"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + "00000000-0000-0000-0000-000000000000"\ + "Full"\ + "%s"\ + ""\ + ""\ +"" + + +/*Gleams SOAP request template*/ +#define MSN_GET_GLEAMS_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABFindAll" +#define MSN_GLEAMS_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "Initial"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + "00000000-0000-0000-0000-000000000000"\ + "Full"\ + "Gleam"\ + "0001-01-01T00:00:00.0000000-08:00"\ + ""\ + ""\ +"" + + +/******************************************************* + * Contact Management SOAP actions + *******************************************************/ + +/* Add a new contact t*/ +#define MSN_CONTACT_ADD_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABContactAdd" +#define MSN_CONTACT_LIVE_PENDING_XML "LivePending%strue" + +#define MSN_CONTACT_XML ""\ + ""\ + "%s"\ + "false"\ + "true"\ + ""\ + "" + +#define MSN_CONTACT_DISPLAYNAME_XML "%s%strue" + +#define MSN_ADD_CONTACT_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseContactSavefalse00000000-0000-0000-0000-000000000000%strue" + +/* Add a contact to a group */ +#define MSN_ADD_CONTACT_GROUP_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABGroupContactAdd" +#define MSN_ADD_CONTACT_GROUP_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "ContactSave"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + "00000000-0000-0000-0000-000000000000"\ + ""\ + ""\ + "%s"\ + ""\ + ""\ + "%s"\ + ""\ + "true"\ + "true"\ + ""\ + ""\ + ""\ +"" + +/* Delete a contact from the Contact List */ +#define MSN_CONTACT_DEL_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABContactDelete" +#define MSN_CONTACT_ID_XML "%s" +#define MSN_DEL_CONTACT_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseTimerfalse00000000-0000-0000-0000-000000000000%s" + +/* Remove a contact from a group */ +#define MSN_CONTACT_DEL_GROUP_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABGroupContactDelete" +#define MSN_CONTACT_DEL_GROUP_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseTimerfalse00000000-0000-0000-0000-000000000000%s%s" + + +/* Update Contact Nickname */ +#define MSN_CONTACT_UPDATE_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABContactUpdate" +#define MSN_CONTACT_UPDATE_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "Timer"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + "00000000-0000-0000-0000-000000000000"\ + ""\ + ""\ + ""\ + "Me"\ + "%s"\ + ""\ + "DisplayName"\ + ""\ + ""\ + ""\ + ""\ +"" + + +/******************************************************* + * Add/Delete contact from lists SOAP actions + *******************************************************/ + +/* block means delete from allow list and add contact to block list */ +#define MSN_SHARE_POST_URL "/abservice/SharingService.asmx" + +#define MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/AddMember" +#define MSN_DELETE_MEMBER_FROM_LIST_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/DeleteMember" + +#define MSN_MEMBER_PASSPORT_XML ""\ + "Passport"\ + "Accepted"\ + "%s"\ + "" + +#define MSN_MEMBER_MEMBERSHIPID_XML ""\ + "Passport"\ + "%u"\ + "Accepted"\ + "" + +/* first delete contact from allow list */ + +#define MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "%s"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + ""\ + "0"\ + "Messenger"\ + ""\ + ""\ + ""\ + ""\ + "%s"\ + ""\ + "%s"\ + ""\ + ""\ + ""\ + ""\ + ""\ +"" + +#define MSN_CONTACT_ADD_TO_LIST_TEMPLATE ""\ +""\ + ""\ + ""\ + "09607671-1C32-421F-A6A6-CBFAA51AB5F4"\ + "false"\ + "%s"\ + ""\ + ""\ + "false"\ + ""\ + ""\ + ""\ + ""\ + ""\ + "0"\ + "Messenger"\ + ""\ + ""\ + ""\ + ""\ + "%s"\ + ""\ + "%s"\ + ""\ + ""\ + ""\ + ""\ + ""\ +"" + + + +/******************************************************* + * Group management SOAP actions + *******************************************************/ + +/* add a group */ +#define MSN_GROUP_ADD_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABGroupAdd" +#define MSN_GROUP_ADD_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseGroupSavefalse00000000-0000-0000-0000-000000000000false%sC8529CE2-6EAD-434d-881F-341E17DB3FF8falseMSN.IM.Display1" + +/* delete a group */ +#define MSN_GROUP_DEL_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABGroupDelete" +#define MSN_GROUP_DEL_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseTimerfalse00000000-0000-0000-0000-000000000000%s" + +/* change a group's name */ +#define MSN_GROUP_RENAME_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABGroupUpdate" +#define MSN_GROUP_RENAME_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseTimerfalse00000000-0000-0000-0000-000000000000%s%sGroupName " + +typedef enum +{ + MSN_ADD_BUDDY = 0x01, + MSN_MOVE_BUDDY = 0x02, + MSN_ACCEPTED_BUDDY = 0x04, + MSN_DENIED_BUDDY = 0x08, + MSN_ADD_GROUP = 0x10, + MSN_DEL_GROUP = 0x20, + MSN_RENAME_GROUP = 0x40, +} MsnCallbackAction; + +typedef struct _MsnContact MsnContact; + +struct _MsnContact +{ + MsnSession *session; + + MsnSoapConn *soapconn; +}; + +typedef struct _MsnCallbackState MsnCallbackState; + +struct _MsnCallbackState +{ + gchar * who; + gchar * uid; + gchar * old_group_name; + gchar * new_group_name; + gchar * guid; + MsnListId list_id; + MsnCallbackAction action; +}; + +typedef enum +{ + MSN_PS_INITIAL, + MSN_PS_SAVE_CONTACT, + MSN_PS_PENDING_LIST, + MSN_PS_CONTACT_API, + MSN_PS_BLOCK_UNBLOCK +} MsnSoapPartnerScenario; + +/************************************************ + * function prototype + ************************************************/ +MsnContact * msn_contact_new(MsnSession *session); +void msn_contact_destroy(MsnContact *contact); + +MsnCallbackState * msn_callback_state_new(void); +void msn_callback_state_free(MsnCallbackState *state); +void msn_callback_state_set_who(MsnCallbackState *state, const gchar *who); +void msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid); +void msn_callback_state_set_old_group_name(MsnCallbackState *state, + const gchar *old_group_name); +void msn_callback_state_set_new_group_name(MsnCallbackState *state, + const gchar *new_group_name); +void msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid); +void msn_callback_state_set_list_id(MsnCallbackState *state, MsnListId list_id); +void msn_callback_state_set_action(MsnCallbackState *state, + MsnCallbackAction action); + +void msn_contact_connect(MsnContact *contact); +void msn_get_contact_list(MsnContact * contact, + const MsnSoapPartnerScenario partner_scenario, + const char *update); +void msn_get_address_book(MsnContact *contact, + const MsnSoapPartnerScenario partner_scenario, + const char * update, const char * gupdate); + +/* contact SOAP operations */ +void msn_update_contact(MsnContact *contact, const char* nickname); + +void msn_add_contact(MsnContact *contact, MsnCallbackState *state, + const char *passport); +void msn_delete_contact(MsnContact *contact, const char *contactId); + +void msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, + const char *passport, const char *groupId); +void msn_del_contact_from_group(MsnContact *contact, const char *passport, + const char *group_name); +/* group operations */ +void msn_add_group(MsnSession *session, MsnCallbackState *state, + const char* group_name); +void msn_del_group(MsnSession *session, const gchar *group_name); +void msn_contact_rename_group(MsnSession *session, const char *old_group_name, + const char *new_group_name); + +/* lists operations */ +void msn_add_contact_to_list(MsnContact *contact, MsnCallbackState *state, + const gchar *passport, const MsnListId list); +void msn_del_contact_from_list(MsnContact *contact, MsnCallbackState *state, + const gchar *passport, const MsnListId list); + +void msn_contact_connect_init(MsnSoapConn *soapconn); + +#endif /* _MSN_CONTACT_H_ */ + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/dialog.c --- a/libpurple/protocols/msn/dialog.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/dialog.c Tue Oct 23 17:41:06 2007 +0000 @@ -36,6 +36,7 @@ /* Remove the buddy referenced by the MsnAddRemData before the serverside list is changed. * If the buddy will be added, he'll be added back; if he will be removed, he won't be. */ +/* Actually with our MSNP14 code that isn't true yet, he won't be added back :( */ static void msn_complete_sync_issue(MsnAddRemData *data) { @@ -44,28 +45,32 @@ if (data->group != NULL) group = purple_find_group(data->group); - + if (group != NULL) buddy = purple_find_buddy_in_group(purple_connection_get_account(data->gc), data->who, group); else buddy = purple_find_buddy(purple_connection_get_account(data->gc), data->who); - + if (buddy != NULL) purple_blist_remove_buddy(buddy); } + static void msn_add_cb(MsnAddRemData *data) { - MsnSession *session; - MsnUserList *userlist; - +#if 0 + /* this *should* be necessary !! */ msn_complete_sync_issue(data); +#endif - session = data->gc->proto_data; - userlist = session->userlist; + if (g_list_find(purple_connections_get_all(), data->gc) != NULL) + { + MsnSession *session = data->gc->proto_data; + MsnUserList *userlist = session->userlist; - msn_userlist_add_buddy(userlist, data->who, MSN_LIST_FL, data->group); + msn_userlist_add_buddy(userlist, data->who, data->group); + } g_free(data->group); g_free(data->who); @@ -75,17 +80,20 @@ static void msn_rem_cb(MsnAddRemData *data) { - MsnSession *session; - MsnUserList *userlist; - msn_complete_sync_issue(data); - session = data->gc->proto_data; - userlist = session->userlist; + if (g_list_find(purple_connections_get_all(), data->gc) != NULL) + { + MsnSession *session = data->gc->proto_data; + MsnUserList *userlist = session->userlist; - msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->group); + if (data->group == NULL) { + msn_userlist_rem_buddy_from_list(userlist, data->who, MSN_LIST_FL); + } else { + g_free(data->group); + } + } - g_free(data->group); g_free(data->who); g_free(data); } @@ -104,7 +112,7 @@ data = g_new0(MsnAddRemData, 1); data->who = g_strdup(passport); - data->group = g_strdup(group_name); + data->group = group_name != NULL ? g_strdup(group_name) : NULL; data->gc = gc; msg = g_strdup_printf(_("Buddy list synchronization issue in %s (%s)"), diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/directconn.c --- a/libpurple/protocols/msn/directconn.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/directconn.c Tue Oct 23 17:41:06 2007 +0000 @@ -76,7 +76,6 @@ * Connection Functions **************************************************************************/ -#if 0 static int create_listener(int port) { @@ -162,7 +161,6 @@ return fd; } -#endif static size_t msn_directconn_write(MsnDirectConn *directconn, @@ -290,6 +288,11 @@ /* ERROR */ purple_debug_error("msn", "error reading\n"); + if (directconn->inpa) + purple_input_remove(directconn->inpa); + + close(directconn->fd); + msn_directconn_destroy(directconn); return; @@ -304,6 +307,11 @@ /* ERROR */ purple_debug_error("msn", "error reading\n"); + if (directconn->inpa) + purple_input_remove(directconn->inpa); + + close(directconn->fd); + msn_directconn_destroy(directconn); return; @@ -350,17 +358,22 @@ /* ERROR */ purple_debug_error("msn", "error reading\n"); + if (directconn->inpa) + purple_input_remove(directconn->inpa); + + close(directconn->fd); + msn_directconn_destroy(directconn); } } static void -connect_cb(gpointer data, gint source, const gchar *error_message) +connect_cb(gpointer data, gint source, PurpleInputCondition cond) { MsnDirectConn* directconn; int fd; - purple_debug_misc("msn", "directconn: connect_cb: %d\n", source); + purple_debug_misc("msn", "directconn: connect_cb: %d, %d.\n", source, cond); directconn = data; directconn->connect_data = NULL; @@ -440,7 +453,6 @@ return (directconn->connect_data != NULL); } -#if 0 void msn_directconn_listen(MsnDirectConn *directconn) { @@ -460,7 +472,6 @@ directconn->port = port; directconn->c = 0; } -#endif MsnDirectConn* msn_directconn_new(MsnSlpLink *slplink) diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/directconn.h --- a/libpurple/protocols/msn/directconn.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/directconn.h Tue Oct 23 17:41:06 2007 +0000 @@ -52,9 +52,7 @@ MsnDirectConn *msn_directconn_new(MsnSlpLink *slplink); gboolean msn_directconn_connect(MsnDirectConn *directconn, const char *host, int port); -#if 0 void msn_directconn_listen(MsnDirectConn *directconn); -#endif void msn_directconn_send_msg(MsnDirectConn *directconn, MsnMessage *msg); void msn_directconn_parse_nonce(MsnDirectConn *directconn, const char *nonce); void msn_directconn_destroy(MsnDirectConn *directconn); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/group.c --- a/libpurple/protocols/msn/group.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/group.c Tue Oct 23 17:41:06 2007 +0000 @@ -25,18 +25,18 @@ #include "group.h" MsnGroup * -msn_group_new(MsnUserList *userlist, int id, const char *name) +msn_group_new(MsnUserList *userlist, const char *id, const char *name) { MsnGroup *group; - g_return_val_if_fail(id >= 0, NULL); + g_return_val_if_fail(id != NULL, NULL); g_return_val_if_fail(name != NULL, NULL); group = g_new0(MsnGroup, 1); msn_userlist_add_group(userlist, group); - group->id = id; + group->id = g_strdup(id); group->name = g_strdup(name); return group; @@ -47,17 +47,19 @@ { g_return_if_fail(group != NULL); + g_free(group->id); g_free(group->name); g_free(group); } void -msn_group_set_id(MsnGroup *group, int id) +msn_group_set_id(MsnGroup *group, const char *id) { g_return_if_fail(group != NULL); - g_return_if_fail(id >= 0); + g_return_if_fail(id != NULL); - group->id = id; + g_free(group->id); + group->id = g_strdup(id); } void @@ -66,16 +68,14 @@ g_return_if_fail(group != NULL); g_return_if_fail(name != NULL); - if (group->name != NULL) - g_free(group->name); - + g_free(group->name); group->name = g_strdup(name); } -int +char* msn_group_get_id(const MsnGroup *group) { - g_return_val_if_fail(group != NULL, -1); + g_return_val_if_fail(group != NULL, NULL); return group->id; } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/group.h --- a/libpurple/protocols/msn/group.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/group.h Tue Oct 23 17:41:06 2007 +0000 @@ -30,8 +30,21 @@ #include "session.h" #include "user.h" +#include "soap.h" +#include "userlist.h" -#include "userlist.h" +#define MSN_ADD_GROUPS "test111C8529CE2-6EAD-434d-881F-341E17DB3FF8falseMSN.IM.Display1" + +#define MSN_ADD_GROUP_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseGroupSavefalse00000000-0000-0000-0000-000000000000false%s" + +#define MSN_GROUP_IDS "9e57e654-59f0-44d1-aedc-0a7500b7e51f" +#define MSN_DELETE_GROUP_TEMPLATE "09607671-1C32-421F-A6A6-CBFAA51AB5F4falseTimerfalse00000000-0000-0000-0000-000000000000%s" + +#define MSN_INDIVIDUALS_GROUP_ID "1983" +#define MSN_INDIVIDUALS_GROUP_NAME "Other Contacts" + +#define MSN_NON_IM_GROUP_ID "email" +#define MSN_NON_IM_GROUP_NAME "Non-IM Contacts" /** * A group. @@ -39,8 +52,9 @@ struct _MsnGroup { MsnSession *session; /**< The MSN session. */ + MsnSoapConn *soapconn; - int id; /**< The group ID. */ + char *id; /**< The group ID. */ char *name; /**< The name of the group. */ }; @@ -58,7 +72,7 @@ * * @return A new group structure. */ -MsnGroup *msn_group_new(MsnUserList *userlist, int id, const char *name); +MsnGroup *msn_group_new(MsnUserList *userlist, const char *id, const char *name); /** * Destroys a group structure. @@ -73,7 +87,7 @@ * @param group The group. * @param id The ID. */ -void msn_group_set_id(MsnGroup *group, int id); +void msn_group_set_id(MsnGroup *group, const char *id); /** * Sets the name for a group. @@ -90,7 +104,7 @@ * * @return The ID. */ -int msn_group_get_id(const MsnGroup *group); +char* msn_group_get_id(const MsnGroup *group); /** * Returns the name for a group. diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/history.c --- a/libpurple/protocols/msn/history.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/history.c Tue Oct 23 17:41:06 2007 +0000 @@ -84,3 +84,4 @@ msn_transaction_destroy(trans); } } + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/httpconn.c --- a/libpurple/protocols/msn/httpconn.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/httpconn.c Tue Oct 23 17:41:06 2007 +0000 @@ -169,7 +169,7 @@ /* Now we should be able to process the data. */ if ((s = purple_strcasestr(header, "X-MSN-Messenger: ")) != NULL) { - char *full_session_id, *gw_ip, *session_action; + gchar *full_session_id = NULL, *gw_ip = NULL, *session_action = NULL; char *t, *session_id; char **elems, **cur, **tokens; @@ -196,13 +196,16 @@ { tokens = g_strsplit(*cur, "=", 2); - if (strcmp(tokens[0], "SessionID") == 0) + if (strcmp(tokens[0], "SessionID") == 0) { + g_free(full_session_id); full_session_id = tokens[1]; - else if (strcmp(tokens[0], "GW-IP") == 0) + } else if (strcmp(tokens[0], "GW-IP") == 0) { + g_free(gw_ip); gw_ip = tokens[1]; - else if (strcmp(tokens[0], "Session") == 0) + } else if (strcmp(tokens[0], "Session") == 0) { + g_free(session_action); session_action = tokens[1]; - else + } else g_free(tokens[1]); g_free(tokens[0]); @@ -684,6 +687,17 @@ g_free(httpconn->host); + while (httpconn->queue != NULL) { + MsnHttpQueueData *queue_data; + + queue_data = (MsnHttpQueueData *) httpconn->queue->data; + + httpconn->queue = g_list_delete_link(httpconn->queue, httpconn->queue); + + g_free(queue_data->body); + g_free(queue_data); + } + purple_circ_buffer_destroy(httpconn->tx_buf); if (httpconn->tx_handler > 0) purple_input_remove(httpconn->tx_handler); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msg.c --- a/libpurple/protocols/msn/msg.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/msg.c Tue Oct 23 17:41:06 2007 +0000 @@ -60,17 +60,10 @@ purple_debug_info("msn", "message destroy (%p)\n", msg); #endif - if (msg->remote_user != NULL) - g_free(msg->remote_user); - - if (msg->body != NULL) - g_free(msg->body); - - if (msg->content_type != NULL) - g_free(msg->content_type); - - if (msg->charset != NULL) - g_free(msg->charset); + g_free(msg->remote_user); + g_free(msg->body); + g_free(msg->content_type); + g_free(msg->charset); g_hash_table_destroy(msg->attr_table); g_list_free(msg->attr_list); @@ -126,7 +119,7 @@ msn_message_set_charset(msg, "UTF-8"); msn_message_set_flag(msg, 'A'); msn_message_set_attr(msg, "X-MMS-IM-Format", - "FN=MS%20Sans%20Serif; EF=; CO=0; PF=0"); + "FN=MS%20Sans%20Serif; EF=; CO=0; CS=86;PF=0"); message_cr = purple_str_add_cr(message); msn_message_set_bin_data(msg, message_cr, strlen(message_cr)); @@ -206,7 +199,8 @@ void msn_message_parse_payload(MsnMessage *msg, - const char *payload, size_t payload_len) + const char *payload, size_t payload_len, + const char *line_dem,const char *body_dem) { char *tmp_base, *tmp; const char *content_type; @@ -214,12 +208,11 @@ char **elems, **cur, **tokens; g_return_if_fail(payload != NULL); - tmp_base = tmp = g_malloc0(payload_len + 1); memcpy(tmp_base, payload, payload_len); /* Parse the attributes. */ - end = strstr(tmp, "\r\n\r\n"); + end = strstr(tmp, body_dem); /* TODO? some clients use \r delimiters instead of \r\n, the official client * doesn't send such messages, but does handle receiving them. We'll just * avoid crashing for now */ @@ -229,7 +222,7 @@ } *end = '\0'; - elems = g_strsplit(tmp, "\r\n", 0); + elems = g_strsplit(tmp, line_dem, 0); for (cur = elems; *cur != NULL; cur++) { @@ -240,6 +233,7 @@ key = tokens[0]; value = tokens[1]; + /*if not MIME content ,then return*/ if (!strcmp(key, "MIME-Version")) { g_strfreev(tokens); @@ -274,7 +268,7 @@ g_strfreev(elems); /* Proceed to the end of the "\r\n\r\n" */ - tmp = end + 4; + tmp = end + strlen(body_dem); /* Now we *should* be at the body. */ content_type = msn_message_get_content_type(msg); @@ -312,6 +306,7 @@ /* Import the body. */ if (body_len > 0) { msg->body_len = body_len; + g_free(msg->body); msg->body = g_malloc0(msg->body_len + 1); memcpy(msg->body, tmp, msg->body_len); tmp += body_len; @@ -328,6 +323,7 @@ { if (payload_len - (tmp - tmp_base) > 0) { msg->body_len = payload_len - (tmp - tmp_base); + g_free(msg->body); msg->body = g_malloc0(msg->body_len + 1); memcpy(msg->body, tmp, msg->body_len); } @@ -480,6 +476,7 @@ { memcpy(n, body, body_len); n += body_len; + *n = '\0'; } } @@ -552,10 +549,8 @@ { g_return_if_fail(msg != NULL); - if (msg->content_type != NULL) - g_free(msg->content_type); - - msg->content_type = (type != NULL) ? g_strdup(type) : NULL; + g_free(msg->content_type); + msg->content_type = g_strdup(type); } const char * @@ -571,10 +566,8 @@ { g_return_if_fail(msg != NULL); - if (msg->charset != NULL) - g_free(msg->charset); - - msg->charset = (charset != NULL) ? g_strdup(charset) : NULL; + g_free(msg->charset); + msg->charset = g_strdup(charset); } const char * @@ -662,10 +655,11 @@ tokens = g_strsplit(*cur, ": ", 2); - if (tokens[0] != NULL && tokens[1] != NULL) + if (tokens[0] != NULL && tokens[1] != NULL) { g_hash_table_insert(table, tokens[0], tokens[1]); - - g_free(tokens); + g_free(tokens); + } else + g_strfreev(tokens); } g_strfreev(elems); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msg.h --- a/libpurple/protocols/msn/msg.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/msg.h Tue Oct 23 17:41:06 2007 +0000 @@ -34,6 +34,12 @@ typedef void (*MsnMsgCb)(MsnMessage *, void *data); +#define MSG_BODY_DEM "\r\n\r\n" +#define MSG_LINE_DEM "\r\n" + +#define MSG_OIM_BODY_DEM "\n\n" +#define MSG_OIM_LINE_DEM "\n" + /* typedef enum { @@ -180,7 +186,8 @@ * @param payload_len The length of the payload. */ void msn_message_parse_payload(MsnMessage *msg, const char *payload, - size_t payload_len); + size_t payload_len, + const char *line_dem,const char *body_dem); /** * Destroys a message. diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msn-utils.c --- a/libpurple/protocols/msn/msn-utils.c Tue Oct 23 17:40:56 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,439 +0,0 @@ -/** - * @file msn-utils.c Utility functions - * - * 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 "msn.h" -#include "msn-utils.h" - -void -msn_parse_format(const char *mime, char **pre_ret, char **post_ret) -{ - char *cur; - GString *pre = g_string_new(NULL); - GString *post = g_string_new(NULL); - unsigned int colors[3]; - - if (pre_ret != NULL) *pre_ret = NULL; - if (post_ret != NULL) *post_ret = NULL; - - cur = strstr(mime, "FN="); - - if (cur && (*(cur = cur + 3) != ';')) - { - pre = g_string_append(pre, ""); - post = g_string_prepend(post, ""); - } - - cur = strstr(mime, "EF="); - - if (cur && (*(cur = cur + 3) != ';')) - { - while (*cur && *cur != ';') - { - pre = g_string_append_c(pre, '<'); - pre = g_string_append_c(pre, *cur); - pre = g_string_append_c(pre, '>'); - post = g_string_prepend_c(post, '>'); - post = g_string_prepend_c(post, *cur); - post = g_string_prepend_c(post, '/'); - post = g_string_prepend_c(post, '<'); - cur++; - } - } - - cur = strstr(mime, "CO="); - - if (cur && (*(cur = cur + 3) != ';')) - { - int i; - - i = sscanf(cur, "%02x%02x%02x;", &colors[0], &colors[1], &colors[2]); - - if (i > 0) - { - char tag[64]; - - if (i == 1) - { - colors[1] = 0; - colors[2] = 0; - } - else if (i == 2) - { - unsigned int temp = colors[0]; - - colors[0] = colors[1]; - colors[1] = temp; - colors[2] = 0; - } - else if (i == 3) - { - unsigned int temp = colors[2]; - - colors[2] = colors[0]; - colors[0] = temp; - } - - g_snprintf(tag, sizeof(tag), - "", - colors[0], colors[1], colors[2]); - - pre = g_string_append(pre, tag); - post = g_string_prepend(post, ""); - } - } - - cur = strstr(mime, "RL="); - - if (cur && (*(cur = cur + 3) != ';')) - { - if (*cur == '1') - { - /* RTL text was received */ - pre = g_string_append(pre, ""); - post = g_string_prepend(post, ""); - } - } - - cur = g_strdup(purple_url_decode(pre->str)); - g_string_free(pre, TRUE); - - if (pre_ret != NULL) - *pre_ret = cur; - else - g_free(cur); - - cur = g_strdup(purple_url_decode(post->str)); - g_string_free(post, TRUE); - - if (post_ret != NULL) - *post_ret = cur; - else - g_free(cur); -} - -/* - * We need this because we're only supposed to encode spaces in the font - * names. purple_url_encode() isn't acceptable. - */ -static const char * -encode_spaces(const char *str) -{ - static char buf[BUF_LEN]; - const char *c; - char *d; - - g_return_val_if_fail(str != NULL, NULL); - - for (c = str, d = buf; *c != '\0'; c++) - { - if (*c == ' ') - { - *d++ = '%'; - *d++ = '2'; - *d++ = '0'; - } - else - *d++ = *c; - } - - return buf; -} - -/* - * Taken from the zephyr plugin. - * This parses HTML formatting (put out by one of the gtkimhtml widgets - * and converts it to msn formatting. It doesn't deal with the tag closing, - * but gtkimhtml widgets give valid html. - * It currently deals properly with , , , , - * , , . - * It ignores and - */ -void -msn_import_html(const char *html, char **attributes, char **message) -{ - int len, retcount = 0; - const char *c; - char *msg; - char *fontface = NULL; - char fonteffect[4]; - char fontcolor[7]; - char direction = '0'; - - gboolean has_bold = FALSE; - gboolean has_italic = FALSE; - gboolean has_underline = FALSE; - gboolean has_strikethrough = FALSE; - - g_return_if_fail(html != NULL); - g_return_if_fail(attributes != NULL); - g_return_if_fail(message != NULL); - - len = strlen(html); - msg = g_malloc0(len + 1); - - memset(fontcolor, 0, sizeof(fontcolor)); - strcat(fontcolor, "0"); - memset(fonteffect, 0, sizeof(fonteffect)); - - for (c = html; *c != '\0';) - { - if (*c == '<') - { - if (!g_ascii_strncasecmp(c + 1, "br>", 3)) - { - msg[retcount++] = '\r'; - msg[retcount++] = '\n'; - c += 4; - } - else if (!g_ascii_strncasecmp(c + 1, "i>", 2)) - { - if (!has_italic) - { - strcat(fonteffect, "I"); - has_italic = TRUE; - } - c += 3; - } - else if (!g_ascii_strncasecmp(c + 1, "b>", 2)) - { - if (!has_bold) - { - strcat(fonteffect, "B"); - has_bold = TRUE; - } - c += 3; - } - else if (!g_ascii_strncasecmp(c + 1, "u>", 2)) - { - if (!has_underline) - { - strcat(fonteffect, "U"); - has_underline = TRUE; - } - c += 3; - } - else if (!g_ascii_strncasecmp(c + 1, "s>", 2)) - { - if (!has_strikethrough) - { - strcat(fonteffect, "S"); - has_strikethrough = TRUE; - } - c += 3; - } - else if (!g_ascii_strncasecmp(c + 1, "a href=\"", 8)) - { - c += 9; - - if (!g_ascii_strncasecmp(c, "mailto:", 7)) - c += 7; - - while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) - msg[retcount++] = *c++; - - if (*c != '\0') - c += 2; - - /* ignore descriptive string */ - while ((*c != '\0') && g_ascii_strncasecmp(c, "", 4)) - c++; - - if (*c != '\0') - c += 4; - } - else if (!g_ascii_strncasecmp(c + 1, "span", 4)) - { - /* Bi-directional text support using CSS properties in span tags */ - c += 5; - - while (*c != '\0' && *c != '>') - { - while (*c == ' ') - c++; - if (!g_ascii_strncasecmp(c, "dir=\"rtl\"", 9)) - { - c += 9; - direction = '1'; - } - else if (!g_ascii_strncasecmp(c, "style=\"", 7)) - { - /* Parse inline CSS attributes */ - char *attributes; - int attr_len = 0; - c += 7; - while (*(c + attr_len) != '\0' && *(c + attr_len) != '"') - attr_len++; - if (*(c + attr_len) == '"') - { - char *attr_dir; - attributes = g_strndup(c, attr_len); - attr_dir = purple_markup_get_css_property(attributes, "direction"); - if (attr_dir && (!g_ascii_strncasecmp(attr_dir, "RTL", 3))) - direction = '1'; - g_free(attr_dir); - g_free(attributes); - } - - } - else - { - c++; - } - } - if (*c == '>') - c++; - } - else if (!g_ascii_strncasecmp(c + 1, "font", 4)) - { - c += 5; - - while ((*c != '\0') && !g_ascii_strncasecmp(c, " ", 1)) - c++; - - if (!g_ascii_strncasecmp(c, "color=\"#", 7)) - { - c += 8; - - fontcolor[0] = *(c + 4); - fontcolor[1] = *(c + 5); - fontcolor[2] = *(c + 2); - fontcolor[3] = *(c + 3); - fontcolor[4] = *c; - fontcolor[5] = *(c + 1); - - c += 8; - } - else if (!g_ascii_strncasecmp(c, "face=\"", 6)) - { - const char *end = NULL; - const char *comma = NULL; - unsigned int namelen = 0; - - c += 6; - end = strchr(c, '\"'); - comma = strchr(c, ','); - - if (comma == NULL || comma > end) - namelen = (unsigned int)(end - c); - else - namelen = (unsigned int)(comma - c); - - fontface = g_strndup(c, namelen); - c = end + 2; - } - else - { - /* Drop all unrecognized/misparsed font tags */ - while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) - c++; - - if (*c != '\0') - c += 2; - } - } - else - { - while ((*c != '\0') && (*c != '>')) - c++; - if (*c != '\0') - c++; - } - } - else if (*c == '&') - { - if (!g_ascii_strncasecmp(c, "<", 4)) - { - msg[retcount++] = '<'; - c += 4; - } - else if (!g_ascii_strncasecmp(c, ">", 4)) - { - msg[retcount++] = '>'; - c += 4; - } - else if (!g_ascii_strncasecmp(c, " ", 6)) - { - msg[retcount++] = ' '; - c += 6; - } - else if (!g_ascii_strncasecmp(c, """, 6)) - { - msg[retcount++] = '"'; - c += 6; - } - else if (!g_ascii_strncasecmp(c, "&", 5)) - { - msg[retcount++] = '&'; - c += 5; - } - else if (!g_ascii_strncasecmp(c, "'", 6)) - { - msg[retcount++] = '\''; - c += 6; - } - else - msg[retcount++] = *c++; - } - else - msg[retcount++] = *c++; - } - - if (fontface == NULL) - fontface = g_strdup("MS Sans Serif"); - - *attributes = g_strdup_printf("FN=%s; EF=%s; CO=%s; PF=0; RL=%c", - encode_spaces(fontface), - fonteffect, fontcolor, direction); - *message = msg; - - g_free(fontface); -} - -void -msn_parse_socket(const char *str, char **ret_host, int *ret_port) -{ - char *host; - char *c; - int port; - - host = g_strdup(str); - - if ((c = strchr(host, ':')) != NULL) - { - *c = '\0'; - port = atoi(c + 1); - } - else - port = 1863; - - *ret_host = host; - *ret_port = port; -} diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msn-utils.h --- a/libpurple/protocols/msn/msn-utils.h Tue Oct 23 17:40:56 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/** - * @file msn-utils.h Utility functions - * - * 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 _MSN_UTILS_H_ -#define _MSN_UTILS_H_ - -/** - * Parses the MSN message formatting into a format compatible with Purple. - * - * @param mime The mime header with the formatting. - * @param pre_ret The returned prefix string. - * @param post_ret The returned postfix string. - * - * @return The new message. - */ -void msn_parse_format(const char *mime, char **pre_ret, char **post_ret); - -/** - * Parses the Purple message formatting (html) into the MSN format. - * - * @param html The html message to format. - * @param attributes The returned attributes string. - * @param message The returned message string. - * - * @return The new message. - */ -void msn_import_html(const char *html, char **attributes, char **message); - -void msn_parse_socket(const char *str, char **ret_host, int *ret_port); - -#endif /* _MSN_UTILS_H_ */ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/msn.c Tue Oct 23 17:41:06 2007 +0000 @@ -37,7 +37,7 @@ #include "cmds.h" #include "core.h" #include "prpl.h" -#include "msn-utils.h" +#include "msnutils.h" #include "version.h" #include "switchboard.h" @@ -151,7 +151,7 @@ return PURPLE_CMD_RET_OK; } -static void +void msn_act_id(PurpleConnection *gc, const char *entry) { MsnCmdProc *cmdproc; @@ -175,9 +175,12 @@ return; } - msn_cmdproc_send(cmdproc, "REA", "%s %s", - purple_account_get_username(account), - alias); + if (*alias == '\0') { + alias = purple_url_encode(purple_account_get_username(account)); + } + + msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias); + } static void @@ -251,6 +254,7 @@ trans = msn_transaction_new(cmdproc, "PGD", "%s 1 %d", who, payload_len); msn_transaction_set_payload(trans, payload, payload_len); + g_free(payload); msn_page_destroy(page); @@ -414,6 +418,28 @@ return user && user->mobile; } +void +msn_send_privacy(PurpleConnection *gc) +{ + PurpleAccount *account; + MsnSession *session; + MsnCmdProc *cmdproc; + + account = purple_connection_get_account(gc); + session = gc->proto_data; + cmdproc = session->notification->cmdproc; + + if (account->perm_deny == PURPLE_PRIVACY_ALLOW_ALL || + account->perm_deny == PURPLE_PRIVACY_DENY_USERS) + { + msn_cmdproc_send(cmdproc, "BLP", "%s", "AL"); + } + else + { + msn_cmdproc_send(cmdproc, "BLP", "%s", "BL"); + } +} + static void initiate_chat_cb(PurpleBlistNode *node, gpointer data) { @@ -460,6 +486,7 @@ session = gc->proto_data; xfer = purple_xfer_new(gc->account, PURPLE_XFER_SEND, who); + if (xfer) { slplink = msn_session_get_slplink(session, who); @@ -511,20 +538,27 @@ return "msn"; } +/* + * Set the User status text + * Add the PSM String Using "Name - PSM String" format + */ static char * msn_status_text(PurpleBuddy *buddy) { PurplePresence *presence; PurpleStatus *status; + const char *msg, *cmedia; presence = purple_buddy_get_presence(buddy); status = purple_presence_get_active_status(presence); - if (!purple_presence_is_available(presence) && !purple_presence_is_idle(presence)) - { - return g_strdup(purple_status_get_name(status)); - } + msg = purple_status_get_attr_string(status, "message"); + cmedia = purple_status_get_attr_string(status, PURPLE_TUNE_FULL); + if (cmedia) + return g_markup_escape_text(cmedia, -1); + else if (msg) + return g_markup_escape_text(msg, -1); return NULL; } @@ -540,14 +574,43 @@ if (purple_presence_is_online(presence)) { - purple_notify_user_info_add_pair(user_info, _("Status"), - (purple_presence_is_idle(presence) ? _("Idle") : purple_status_get_name(status))); - } + const char *psm, *currentmedia, *name; + char *tmp; + + psm = purple_status_get_attr_string(status, "message"); + currentmedia = purple_status_get_attr_string(status, PURPLE_TUNE_FULL); + + if (!purple_presence_is_available(presence)) { + name = purple_status_get_name(status); + } else { + name = NULL; + } + + if (name != NULL && *name) { + char *tmp2 = g_markup_escape_text(name, -1); - if (full && user) - { - purple_notify_user_info_add_pair(user_info, _("Has you"), - ((user->list_op & (1 << MSN_LIST_RL)) ? _("Yes") : _("No"))); + if (psm != NULL && *psm) { + tmp = g_markup_escape_text(psm, -1); + purple_notify_user_info_add_pair(user_info, tmp2, tmp); + g_free(tmp); + } else { + purple_notify_user_info_add_pair(user_info, _("Status"), tmp2); + } + + g_free(tmp2); + } else { + if (psm != NULL && *psm) { + tmp = g_markup_escape_text(psm, -1); + purple_notify_user_info_add_pair(user_info, _("Status"), tmp); + g_free(tmp); + } + } + + if (currentmedia) { + tmp = g_markup_escape_text(currentmedia, -1); + purple_notify_user_info_add_pair(user_info, _("Current media"), tmp); + g_free(tmp); + } } /* XXX: This is being shown in non-full tooltips because the @@ -567,28 +630,44 @@ PurpleStatusType *status; GList *types = NULL; - status = purple_status_type_new_full(PURPLE_STATUS_AVAILABLE, - NULL, NULL, FALSE, TRUE, FALSE); + status = purple_status_type_new_with_attrs( + PURPLE_STATUS_AVAILABLE, NULL, NULL, TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_append(types, status); - status = purple_status_type_new_full(PURPLE_STATUS_AWAY, - NULL, NULL, FALSE, TRUE, FALSE); + status = purple_status_type_new_with_attrs( + PURPLE_STATUS_AWAY, NULL, NULL, TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_append(types, status); - status = purple_status_type_new_full(PURPLE_STATUS_AWAY, - "brb", _("Be Right Back"), FALSE, TRUE, FALSE); + status = purple_status_type_new_with_attrs( + PURPLE_STATUS_AWAY, "brb", _("Be Right Back"), TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_append(types, status); - status = purple_status_type_new_full(PURPLE_STATUS_UNAVAILABLE, - "busy", _("Busy"), FALSE, TRUE, FALSE); + status = purple_status_type_new_with_attrs( + PURPLE_STATUS_UNAVAILABLE, "busy", _("Busy"), TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_append(types, status); - - status = purple_status_type_new_full(PURPLE_STATUS_UNAVAILABLE, - "phone", _("On the Phone"), FALSE, TRUE, FALSE); + status = purple_status_type_new_with_attrs( + PURPLE_STATUS_UNAVAILABLE, "phone", _("On the Phone"), TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_append(types, status); - - status = purple_status_type_new_full(PURPLE_STATUS_AWAY, - "lunch", _("Out to Lunch"), FALSE, TRUE, FALSE); + status = purple_status_type_new_with_attrs( + PURPLE_STATUS_AWAY, "lunch", _("Out to Lunch"), TRUE, TRUE, FALSE, + "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), + PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING), + NULL); types = g_list_append(types, status); status = purple_status_type_new_full(PURPLE_STATUS_INVISIBLE, @@ -788,6 +867,7 @@ char *msgformat; char *msgtext; + purple_debug_info("MSNP14","send IM {%s} to %s\n",message,who); account = purple_connection_get_account(gc); if (buddy) { @@ -801,62 +881,92 @@ } msn_import_html(message, &msgformat, &msgtext); + if(msn_user_is_online(account, who)|| + msn_user_is_yahoo(account, who)){ + /*User online,then send Online Instant Message*/ - if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564) - { + if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564) + { + g_free(msgformat); + g_free(msgtext); + + return -E2BIG; + } + + msg = msn_message_new_plain(msgtext); + msg->remote_user = g_strdup(who); + msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); + g_free(msgformat); g_free(msgtext); - return -E2BIG; - } + purple_debug_info("MSNP14","prepare to send online Message\n"); + if (g_ascii_strcasecmp(who, purple_account_get_username(account))) + { + MsnSession *session; + MsnSwitchBoard *swboard; - msg = msn_message_new_plain(msgtext); - msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); - - g_free(msgformat); - g_free(msgtext); + session = gc->proto_data; + if(msn_user_is_yahoo(account,who)){ + /*we send the online and offline Message to Yahoo User via UBM*/ + purple_debug_info("MSNP14","send to Yahoo User\n"); + uum_send_msg(session,msg); + }else{ + purple_debug_info("MSNP14","send via switchboard\n"); + swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM); + msn_switchboard_send_msg(swboard, msg, TRUE); + } + } + else + { + char *body_str, *body_enc, *pre, *post; + const char *format; + MsnIMData *imdata = g_new0(MsnIMData, 1); + /* + * In MSN, you can't send messages to yourself, so + * we'll fake like we received it ;) + */ + body_str = msn_message_to_string(msg); + body_enc = g_markup_escape_text(body_str, -1); + g_free(body_str); - if (g_ascii_strcasecmp(who, purple_account_get_username(account))) - { - MsnSession *session; - MsnSwitchBoard *swboard; + format = msn_message_get_attr(msg, "X-MMS-IM-Format"); + msn_parse_format(format, &pre, &post); + body_str = g_strdup_printf("%s%s%s", pre ? pre : "", + body_enc ? body_enc : "", post ? post : ""); + g_free(body_enc); + g_free(pre); + g_free(post); + + serv_got_typing_stopped(gc, who); + imdata->gc = gc; + imdata->who = who; + imdata->msg = body_str; + imdata->flags = flags; + imdata->when = time(NULL); + purple_timeout_add(0, msn_send_me_im, imdata); + } + msn_message_destroy(msg); + }else { + /*send Offline Instant Message,only to MSN Passport User*/ + MsnSession *session; + MsnOim *oim; + char *friendname; + + purple_debug_info("MSNP14","prepare to send offline Message\n"); session = gc->proto_data; - swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM); + /* XXX/khc: hack */ + if (!session->oim) + session->oim = msn_oim_new(session); - msn_switchboard_send_msg(swboard, msg, TRUE); + oim = session->oim; + friendname = msn_encode_mime(account->username); + msn_oim_prep_send_msg_info(oim, purple_account_get_username(account), + friendname, who, message); + g_free(friendname); + msn_oim_send_msg(oim); } - else - { - char *body_str, *body_enc, *pre, *post; - const char *format; - MsnIMData *imdata = g_new0(MsnIMData, 1); - /* - * In MSN, you can't send messages to yourself, so - * we'll fake like we received it ;) - */ - body_str = msn_message_to_string(msg); - body_enc = g_markup_escape_text(body_str, -1); - g_free(body_str); - - format = msn_message_get_attr(msg, "X-MMS-IM-Format"); - msn_parse_format(format, &pre, &post); - body_str = g_strdup_printf("%s%s%s", pre ? pre : "", - body_enc ? body_enc : "", post ? post : ""); - g_free(body_enc); - g_free(pre); - g_free(post); - - serv_got_typing_stopped(gc, who); - imdata->gc = gc; - imdata->who = who; - imdata->msg = body_str; - imdata->flags = flags; - imdata->when = time(NULL); - g_idle_add(msn_send_me_im, imdata); - } - - msn_message_destroy(msg); return 1; } @@ -995,6 +1105,7 @@ userlist = session->userlist; who = msn_normalize(gc->account, buddy->name); + purple_debug_info("MSN","Add user:%s to group:%s\n", who, (group && group->name) ? group->name : "(null)"); if (!session->logged_in) { #if 0 @@ -1028,8 +1139,7 @@ /* XXX - Would group ever be NULL here? I don't think so... * shx: Yes it should; MSN handles non-grouped buddies, and this is only * internal. */ - msn_userlist_add_buddy(userlist, who, MSN_LIST_FL, - group ? group->name : NULL); + msn_userlist_add_buddy(userlist, who, group ? group->name : NULL); } static void @@ -1045,7 +1155,7 @@ return; /* XXX - Does buddy->name need to be msn_normalize'd here? --KingAnt */ - msn_userlist_rem_buddy(userlist, buddy->name, MSN_LIST_FL, group->name); + msn_userlist_rem_buddy(userlist, buddy->name); } static void @@ -1062,10 +1172,18 @@ if (!session->logged_in) return; - if (user != NULL && user->list_op & MSN_LIST_BL_OP) - msn_userlist_rem_buddy(userlist, who, MSN_LIST_BL, NULL); + if (user != NULL && user->list_op & MSN_LIST_BL_OP) { + msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL); - msn_userlist_add_buddy(userlist, who, MSN_LIST_AL, NULL); + /* delete contact from Block list and add it to Allow in the callback */ + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL); + } else { + /* just add the contact to Allow list */ + msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_AL); + } + + + msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL); } static void @@ -1082,10 +1200,17 @@ if (!session->logged_in) return; - if (user != NULL && user->list_op & MSN_LIST_AL_OP) - msn_userlist_rem_buddy(userlist, who, MSN_LIST_AL, NULL); + if (user != NULL && user->list_op & MSN_LIST_AL_OP) { + msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL); - msn_userlist_add_buddy(userlist, who, MSN_LIST_BL, NULL); + /* delete contact from Allow list and add it to Block in the callback */ + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL); + } else { + /* just add the contact to Block list */ + msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_BL); + } + + msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL); } static void @@ -1103,10 +1228,12 @@ user = msn_userlist_find_user(userlist, who); - msn_userlist_rem_buddy(userlist, who, MSN_LIST_AL, NULL); + msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL); + + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL); if (user != NULL && user->list_op & MSN_LIST_RL_OP) - msn_userlist_add_buddy(userlist, who, MSN_LIST_BL, NULL); + msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL); } static void @@ -1124,32 +1251,18 @@ user = msn_userlist_find_user(userlist, who); - msn_userlist_rem_buddy(userlist, who, MSN_LIST_BL, NULL); + msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL); + + msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL); if (user != NULL && user->list_op & MSN_LIST_RL_OP) - msn_userlist_add_buddy(userlist, who, MSN_LIST_AL, NULL); + msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL); } static void msn_set_permit_deny(PurpleConnection *gc) { - PurpleAccount *account; - MsnSession *session; - MsnCmdProc *cmdproc; - - account = purple_connection_get_account(gc); - session = gc->proto_data; - cmdproc = session->notification->cmdproc; - - if (account->perm_deny == PURPLE_PRIVACY_ALLOW_ALL || - account->perm_deny == PURPLE_PRIVACY_DENY_USERS) - { - msn_cmdproc_send(cmdproc, "BLP", "%s", "AL"); - } - else - { - msn_cmdproc_send(cmdproc, "BLP", "%s", "BL"); - } + msn_send_privacy(gc); } static void @@ -1286,24 +1399,20 @@ PurpleGroup *group, GList *moved_buddies) { MsnSession *session; - MsnCmdProc *cmdproc; - int old_gid; - const char *enc_new_group_name; session = gc->proto_data; - cmdproc = session->notification->cmdproc; - enc_new_group_name = purple_url_encode(group->name); - - old_gid = msn_userlist_find_group_id(session->userlist, old_name); - - if (old_gid >= 0) + + g_return_if_fail(session != NULL); + g_return_if_fail(session->userlist != NULL); + + if (msn_userlist_find_group_with_name(session->userlist, old_name) != NULL) { - msn_cmdproc_send(cmdproc, "REG", "%d %s 0", old_gid, - enc_new_group_name); + msn_contact_rename_group(session, old_name, group->name); } else { - msn_cmdproc_send(cmdproc, "ADG", "%s 0", enc_new_group_name); + /* not found */ + msn_add_group(session, NULL, group->name); } } @@ -1363,15 +1472,20 @@ { MsnSession *session; MsnCmdProc *cmdproc; - int group_id; session = gc->proto_data; cmdproc = session->notification->cmdproc; - if ((group_id = msn_userlist_find_group_id(session->userlist, group->name)) >= 0) + purple_debug_info("MSN", "Remove group %s\n", group->name); + /*we can't delete the default group*/ + if(!strcmp(group->name, MSN_INDIVIDUALS_GROUP_NAME)|| + !strcmp(group->name, MSN_NON_IM_GROUP_NAME)) { - msn_cmdproc_send(cmdproc, "RMG", "%d", group_id); + purple_debug_info("MSN", "This group can't be removed, returning.\n"); + return ; } + + msn_del_group(session, group->name); } /** @@ -1421,12 +1535,11 @@ { char *p, *q; - if ((p = strstr(url_text, " contactparams:photopreauthurl=\"")) != NULL) + if ((p = strstr(url_text, PHOTO_URL)) != NULL) { - p += strlen(" contactparams:photopreauthurl=\""); + p += strlen(PHOTO_URL); } - - if (p && (strncmp(p, "http://", 8) == 0) && ((q = strchr(p, '"')) != NULL)) + if (p && (strncmp(p, "http://",strlen("http://")) == 0) && ((q = strchr(p, '"')) != NULL)) return g_strndup(p, q - p); return NULL; @@ -1464,8 +1577,7 @@ msn_info_strip_search_link(const char *field, size_t len) { const char *c; - if ((c = strstr(field, " (http://spaces.live.com/default.aspx?page=searchresults")) == NULL && - (c = strstr(field, " (http://spaces.msn.com/default.aspx?page=searchresults")) == NULL) + if ((c = strstr(field, " (http://")) == NULL) return g_strndup(field, len); return g_strndup(field, c - field); } @@ -1490,7 +1602,7 @@ MsnGetInfoStepTwoData *info2_data = NULL; #endif - purple_debug_info("msn", "In msn_got_info\n"); + purple_debug_info("msn", "In msn_got_info,url_text:{%s}\n",url_text); /* Make sure the connection is still valid */ if (g_list_find(purple_connections_get_all(), info_data->gc) == NULL) @@ -1869,9 +1981,10 @@ #if PHOTO_SUPPORT /* Find the URL to the photo; must be before the marshalling [Bug 994207] */ photo_url_text = msn_get_photo_url(url_text); + purple_debug_info("MSNP14","photo url:{%s}\n", photo_url_text ? photo_url_text : "(null)"); /* Marshall the existing state */ - info2_data = g_malloc0(sizeof(MsnGetInfoStepTwoData)); + info2_data = g_new0(MsnGetInfoStepTwoData, 1); info2_data->info_data = info_data; info2_data->stripped = stripped; info2_data->url_buffer = url_buffer; @@ -2093,7 +2206,7 @@ msn_add_deny, /* add_deny */ msn_rem_permit, /* rem_permit */ msn_rem_deny, /* rem_deny */ - msn_set_permit_deny, /* set_permit_deny */ + msn_set_permit_deny, /* set_permit_deny */ NULL, /* join_chat */ NULL, /* reject chat invite */ NULL, /* get_chat_name */ @@ -2149,10 +2262,11 @@ "MSN", /**< name */ VERSION, /**< version */ /** summary */ - N_("MSN Protocol Plugin"), + N_("Windows Live Messenger Protocol Plugin"), /** description */ - N_("MSN Protocol Plugin"), - "Christian Hammond ", /**< author */ + N_("Windows Live Messenger Protocol Plugin"), + "Christian Hammond , " + "MaYuan ", /**< author */ PURPLE_WEBSITE, /**< homepage */ msn_load, /**< load */ @@ -2177,11 +2291,11 @@ PurpleAccountOption *option; option = purple_account_option_string_new(_("Server"), "server", - MSN_SERVER); + WLM_SERVER); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); - option = purple_account_option_int_new(_("Port"), "port", 1863); + option = purple_account_option_int_new(_("Port"), "port", WLM_PORT); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msn.h --- a/libpurple/protocols/msn/msn.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/msn.h Tue Oct 23 17:41:06 2007 +0000 @@ -63,12 +63,23 @@ #define USEROPT_MSNPORT 4 #define MSN_PORT 1863 +/* Windows Live Messenger Server*/ +#define WLM_SERVER "muser.messenger.hotmail.com" +#define WLM_PORT 1863 +#define WLM_PROT_VER 13 +/*This MSNP14 Support chat with Yahoo Messenger*/ +#define WLM_YAHOO_PROT_VER 14 + +#define WLM_MAX_PROTOCOL 14 +#define WLM_MIN_PROTOCOL 13 + #define MSN_TYPING_RECV_TIMEOUT 6 #define MSN_TYPING_SEND_TIMEOUT 4 -#define HOTMAIL_URL "http://www.hotmail.com/cgi-bin/folders" +#define HOTMAIL_URL "http://www.hotmail.com/cgi-bin/folders"w3 #define PASSPORT_URL "http://lc1.law13.hotmail.passport.com/cgi-bin/dologin?login=" #define PROFILE_URL "http://spaces.live.com/profile.aspx?mem=" +#define PHOTO_URL " contactparams:photopreauthurl=\"" #define USEROPT_HOTMAIL 0 @@ -88,9 +99,11 @@ MSN_LIST_FL_OP = 0x01, MSN_LIST_AL_OP = 0x02, MSN_LIST_BL_OP = 0x04, - MSN_LIST_RL_OP = 0x08 + MSN_LIST_RL_OP = 0x08, + MSN_LIST_PL_OP = 0x10 } MsnListOp; +#define MSN_LIST_OP_MASK 0x07 typedef enum { @@ -131,4 +144,7 @@ (MSN_CLIENT_ID_RESERVED_2 << 8) | \ (MSN_CLIENT_ID_CAPABILITIES)) +void msn_act_id(PurpleConnection *gc, const char *entry); +void msn_send_privacy(PurpleConnection *gc); + #endif /* _MSN_H_ */ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msnutils.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/msnutils.c Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,595 @@ +/** + * @file msnutils.c Utility functions + * + * 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 "msn.h" +#include "msnutils.h" +#include "time.h" +//#include + +char *rand_guid(void); + +/************************************************************************** + * Util + **************************************************************************/ +char * +rand_guid() +{ + return g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X", + rand() % 0xAAFF + 0x1111, + rand() % 0xAAFF + 0x1111, + rand() % 0xAAFF + 0x1111, + rand() % 0xAAFF + 0x1111, + rand() % 0xAAFF + 0x1111, + rand() % 0xAAFF + 0x1111, + rand() % 0xAAFF + 0x1111, + rand() % 0xAAFF + 0x1111); +} + +void +msn_parse_format(const char *mime, char **pre_ret, char **post_ret) +{ + char *cur; + GString *pre = g_string_new(NULL); + GString *post = g_string_new(NULL); + unsigned int colors[3]; + + if (pre_ret != NULL) *pre_ret = NULL; + if (post_ret != NULL) *post_ret = NULL; + + cur = strstr(mime, "FN="); + + if (cur && (*(cur = cur + 3) != ';')) + { + pre = g_string_append(pre, ""); + post = g_string_prepend(post, ""); + } + + cur = strstr(mime, "EF="); + + if (cur && (*(cur = cur + 3) != ';')) + { + while (*cur && *cur != ';') + { + pre = g_string_append_c(pre, '<'); + pre = g_string_append_c(pre, *cur); + pre = g_string_append_c(pre, '>'); + post = g_string_prepend_c(post, '>'); + post = g_string_prepend_c(post, *cur); + post = g_string_prepend_c(post, '/'); + post = g_string_prepend_c(post, '<'); + cur++; + } + } + + cur = strstr(mime, "CO="); + + if (cur && (*(cur = cur + 3) != ';')) + { + int i; + + i = sscanf(cur, "%02x%02x%02x;", &colors[0], &colors[1], &colors[2]); + + if (i > 0) + { + char tag[64]; + + if (i == 1) + { + colors[1] = 0; + colors[2] = 0; + } + else if (i == 2) + { + unsigned int temp = colors[0]; + + colors[0] = colors[1]; + colors[1] = temp; + colors[2] = 0; + } + else if (i == 3) + { + unsigned int temp = colors[2]; + + colors[2] = colors[0]; + colors[0] = temp; + } + + g_snprintf(tag, sizeof(tag), + "", + colors[0], colors[1], colors[2]); + + pre = g_string_append(pre, tag); + post = g_string_prepend(post, ""); + } + } + + cur = strstr(mime, "RL="); + + if (cur && (*(cur = cur + 3) != ';')) + { + if (*cur == '1') + { + /* RTL text was received */ + pre = g_string_append(pre, ""); + post = g_string_prepend(post, ""); + } + } + + cur = g_strdup(purple_url_decode(pre->str)); + g_string_free(pre, TRUE); + + if (pre_ret != NULL) + *pre_ret = cur; + else + g_free(cur); + + cur = g_strdup(purple_url_decode(post->str)); + g_string_free(post, TRUE); + + if (post_ret != NULL) + *post_ret = cur; + else + g_free(cur); +} + +/*encode the str to RFC2047 style + * Currently only support the UTF-8 and base64 encode + */ +char * +msn_encode_mime(const char *str) +{ + gchar *base64, *retval; + + g_return_val_if_fail(str != NULL, NULL); + + base64 = purple_base64_encode((guchar *)str, strlen(str)); + retval = g_strdup_printf("=?utf-8?B?%s?=", base64); + g_free(base64); + + return retval; +} + +/* + * We need this because we're only supposed to encode spaces in the font + * names. purple_url_encode() isn't acceptable. + */ +static const char * +encode_spaces(const char *str) +{ + static char buf[BUF_LEN]; + const char *c; + char *d; + + g_return_val_if_fail(str != NULL, NULL); + + for (c = str, d = buf; *c != '\0'; c++) + { + if (*c == ' ') + { + *d++ = '%'; + *d++ = '2'; + *d++ = '0'; + } + else + *d++ = *c; + } + + return buf; +} + +/* + * Taken from the zephyr plugin. + * This parses HTML formatting (put out by one of the gtkimhtml widgets + * and converts it to msn formatting. It doesn't deal with the tag closing, + * but gtkimhtml widgets give valid html. + * It currently deals properly with , , , , + * , , . + * It ignores and + */ +void +msn_import_html(const char *html, char **attributes, char **message) +{ + int len, retcount = 0; + const char *c; + char *msg; + char *fontface = NULL; + char fonteffect[4]; + char fontcolor[7]; + char direction = '0'; + + gboolean has_bold = FALSE; + gboolean has_italic = FALSE; + gboolean has_underline = FALSE; + gboolean has_strikethrough = FALSE; + + g_return_if_fail(html != NULL); + g_return_if_fail(attributes != NULL); + g_return_if_fail(message != NULL); + + len = strlen(html); + msg = g_malloc0(len + 1); + + memset(fontcolor, 0, sizeof(fontcolor)); + strcat(fontcolor, "0"); + memset(fonteffect, 0, sizeof(fonteffect)); + + for (c = html; *c != '\0';) + { + if (*c == '<') + { + if (!g_ascii_strncasecmp(c + 1, "br>", 3)) + { + msg[retcount++] = '\r'; + msg[retcount++] = '\n'; + c += 4; + } + else if (!g_ascii_strncasecmp(c + 1, "i>", 2)) + { + if (!has_italic) + { + strcat(fonteffect, "I"); + has_italic = TRUE; + } + c += 3; + } + else if (!g_ascii_strncasecmp(c + 1, "b>", 2)) + { + if (!has_bold) + { + strcat(fonteffect, "B"); + has_bold = TRUE; + } + c += 3; + } + else if (!g_ascii_strncasecmp(c + 1, "u>", 2)) + { + if (!has_underline) + { + strcat(fonteffect, "U"); + has_underline = TRUE; + } + c += 3; + } + else if (!g_ascii_strncasecmp(c + 1, "s>", 2)) + { + if (!has_strikethrough) + { + strcat(fonteffect, "S"); + has_strikethrough = TRUE; + } + c += 3; + } + else if (!g_ascii_strncasecmp(c + 1, "a href=\"", 8)) + { + c += 9; + + if (!g_ascii_strncasecmp(c, "mailto:", 7)) + c += 7; + + while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) + msg[retcount++] = *c++; + + if (*c != '\0') + c += 2; + + /* ignore descriptive string */ + while ((*c != '\0') && g_ascii_strncasecmp(c, "", 4)) + c++; + + if (*c != '\0') + c += 4; + } + else if (!g_ascii_strncasecmp(c + 1, "span", 4)) + { + /* Bi-directional text support using CSS properties in span tags */ + c += 5; + + while (*c != '\0' && *c != '>') + { + while (*c == ' ') + c++; + if (!g_ascii_strncasecmp(c, "dir=\"rtl\"", 9)) + { + c += 9; + direction = '1'; + } + else if (!g_ascii_strncasecmp(c, "style=\"", 7)) + { + /* Parse inline CSS attributes */ + char *attributes; + int attr_len = 0; + c += 7; + while (*(c + attr_len) != '\0' && *(c + attr_len) != '"') + attr_len++; + if (*(c + attr_len) == '"') + { + char *attr_dir; + attributes = g_strndup(c, attr_len); + attr_dir = purple_markup_get_css_property(attributes, "direction"); + if (attr_dir && (!g_ascii_strncasecmp(attr_dir, "RTL", 3))) + direction = '1'; + g_free(attr_dir); + g_free(attributes); + } + + } + else + { + c++; + } + } + if (*c == '>') + c++; + } + else if (!g_ascii_strncasecmp(c + 1, "font", 4)) + { + c += 5; + + while ((*c != '\0') && !g_ascii_strncasecmp(c, " ", 1)) + c++; + + if (!g_ascii_strncasecmp(c, "color=\"#", 7)) + { + c += 8; + + fontcolor[0] = *(c + 4); + fontcolor[1] = *(c + 5); + fontcolor[2] = *(c + 2); + fontcolor[3] = *(c + 3); + fontcolor[4] = *c; + fontcolor[5] = *(c + 1); + + c += 8; + } + else if (!g_ascii_strncasecmp(c, "face=\"", 6)) + { + const char *end = NULL; + const char *comma = NULL; + unsigned int namelen = 0; + + c += 6; + end = strchr(c, '\"'); + comma = strchr(c, ','); + + if (comma == NULL || comma > end) + namelen = (unsigned int)(end - c); + else + namelen = (unsigned int)(comma - c); + + fontface = g_strndup(c, namelen); + c = end + 2; + } + else + { + /* Drop all unrecognized/misparsed font tags */ + while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2)) + c++; + + if (*c != '\0') + c += 2; + } + } + else + { + while ((*c != '\0') && (*c != '>')) + c++; + if (*c != '\0') + c++; + } + } + else if (*c == '&') + { + if (!g_ascii_strncasecmp(c, "<", 4)) + { + msg[retcount++] = '<'; + c += 4; + } + else if (!g_ascii_strncasecmp(c, ">", 4)) + { + msg[retcount++] = '>'; + c += 4; + } + else if (!g_ascii_strncasecmp(c, " ", 6)) + { + msg[retcount++] = ' '; + c += 6; + } + else if (!g_ascii_strncasecmp(c, """, 6)) + { + msg[retcount++] = '"'; + c += 6; + } + else if (!g_ascii_strncasecmp(c, "&", 5)) + { + msg[retcount++] = '&'; + c += 5; + } + else if (!g_ascii_strncasecmp(c, "'", 6)) + { + msg[retcount++] = '\''; + c += 6; + } + else + msg[retcount++] = *c++; + } + else + msg[retcount++] = *c++; + } + + if (fontface == NULL) + fontface = g_strdup("MS Sans Serif"); + + *attributes = g_strdup_printf("FN=%s; EF=%s; CO=%s; PF=0; RL=%c", + encode_spaces(fontface), + fonteffect, fontcolor, direction); + *message = msg; + + g_free(fontface); +} + +void +msn_parse_socket(const char *str, char **ret_host, int *ret_port) +{ + char *host; + char *c; + int port; + + host = g_strdup(str); + + if ((c = strchr(host, ':')) != NULL){ + *c = '\0'; + port = atoi(c + 1); + }else{ + port = 1863; + } + + *ret_host = host; + *ret_port = port; +} +/*************************************************************************** + * MSN Time Related Funciton + ***************************************************************************/ +#if 0 +int +msn_convert_iso8601(const char *timestr,struct tm tm_time) +{ + char temp[64]; + struct tm ctime; + time_t ts; + + purple_debug_info("MSNP14","convert string is{%s}\n",timestr); + tzset(); + /*copy string first*/ + memset(temp, 0, sizeof(temp)); + strncpy(temp, timestr, strlen(timestr)); + + /*convert via strptime()*/ + memset(&ctime, 0, sizeof(struct tm)); + strptime(temp, "%d %b %Y %T %Z", &ctime); + ts = mktime(&ctime) - timezone; + localtime_r(&ts, tm_time); +} +#endif + +/*************************************************************************** + * MSN Challenge Computing Function + ***************************************************************************/ + +/* + * Handle MSN Chanllege computation + *This algorithm reference with http://msnpiki.msnfanatic.com/index.php/MSNP11:Challenges + */ +#define BUFSIZE 256 +void +msn_handle_chl(char *input, char *output) +{ + PurpleCipher *cipher; + PurpleCipherContext *context; + char *productKey = MSNP13_WLM_PRODUCT_KEY, + *productID = MSNP13_WLM_PRODUCT_ID, + *hexChars = "0123456789abcdef", + buf[BUFSIZE]; + unsigned char md5Hash[16], *newHash; + unsigned int *md5Parts, *chlStringParts, newHashParts[5]; + + long long nHigh=0, nLow=0; + + int i; + + /* Create the MD5 hash by using Purple MD5 algorithm*/ + cipher = purple_ciphers_find_cipher("md5"); + context = purple_cipher_context_new(cipher, NULL); + + purple_cipher_context_append(context, (const guchar *)input, + strlen(input)); + purple_cipher_context_append(context, (const guchar *)productKey, + strlen(productKey)); + purple_cipher_context_digest(context, sizeof(md5Hash), md5Hash, NULL); + purple_cipher_context_destroy(context); + + /* Split it into four integers */ + md5Parts = (unsigned int *)md5Hash; + for(i=0; i<4; i++){ + /* adjust endianess */ + md5Parts[i] = GUINT_TO_LE(md5Parts[i]); + + /* & each integer with 0x7FFFFFFF */ + /* and save one unmodified array for later */ + newHashParts[i] = md5Parts[i]; + md5Parts[i] &= 0x7FFFFFFF; + } + + /* make a new string and pad with '0' */ + snprintf(buf, BUFSIZE-5, "%s%s", input, productID); + i = strlen(buf); + memset(&buf[i], '0', 8 - (i % 8)); + buf[i + (8 - (i % 8))]='\0'; + + /* split into integers */ + chlStringParts = (unsigned int *)buf; + + /* this is magic */ + for (i=0; i<(strlen(buf)/4)-1; i+=2){ + long long temp; + + chlStringParts[i] = GUINT_TO_LE(chlStringParts[i]); + chlStringParts[i+1] = GUINT_TO_LE(chlStringParts[i+1]); + + temp=(md5Parts[0] * (((0x0E79A9C1 * (long long)chlStringParts[i]) % 0x7FFFFFFF)+nHigh) + md5Parts[1])%0x7FFFFFFF; + nHigh=(md5Parts[2] * (((long long)chlStringParts[i+1]+temp) % 0x7FFFFFFF) + md5Parts[3]) % 0x7FFFFFFF; + nLow=nLow + nHigh + temp; + } + nHigh=(nHigh+md5Parts[1]) % 0x7FFFFFFF; + nLow=(nLow+md5Parts[3]) % 0x7FFFFFFF; + + newHashParts[0]^=nHigh; + newHashParts[1]^=nLow; + newHashParts[2]^=nHigh; + newHashParts[3]^=nLow; + + /* adjust endianness */ + for(i=0; i<4; i++) + newHashParts[i] = GUINT_TO_LE(newHashParts[i]); + + /* make a string of the parts */ + newHash = (unsigned char *)newHashParts; + + /* convert to hexadecimal */ + for (i=0; i<16; i++) + { + output[i*2]=hexChars[(newHash[i]>>4)&0xF]; + output[(i*2)+1]=hexChars[newHash[i]&0xF]; + } + + output[32]='\0'; + +// purple_debug_info("MSNP14","chl output{%s}\n",output); +} diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/msnutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/msnutils.h Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,60 @@ +/** + * @file msnutils.h Utility functions + * + * 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 _MSN_UTILS_H_ +#define _MSN_UTILS_H_ + +/*encode the str to RFC2047 style*/ +char * msn_encode_mime(const char *str); + +/** + * Generate the Random GUID + */ +char * rand_guid(void); + +/** + * Parses the MSN message formatting into a format compatible with Purple. + * + * @param mime The mime header with the formatting. + * @param pre_ret The returned prefix string. + * @param post_ret The returned postfix string. + * + * @return The new message. + */ +void msn_parse_format(const char *mime, char **pre_ret, char **post_ret); + +/** + * Parses the Purple message formatting (html) into the MSN format. + * + * @param html The html message to format. + * @param attributes The returned attributes string. + * @param message The returned message string. + * + * @return The new message. + */ +void msn_import_html(const char *html, char **attributes, char **message); + +void msn_parse_socket(const char *str, char **ret_host, int *ret_port); +void msn_handle_chl(char *input, char *output); + +#endif /* _MSN_UTILS_H_ */ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/nexus.c --- a/libpurple/protocols/msn/nexus.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/nexus.c Tue Oct 23 17:41:06 2007 +0000 @@ -22,9 +22,15 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "msn.h" +#include "soap.h" #include "nexus.h" #include "notification.h" +#undef NEXUS_LOGIN_TWN + +/*Local Function Prototype*/ +static gboolean nexus_login_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc); + /************************************************************************** * Main **************************************************************************/ @@ -36,6 +42,9 @@ nexus = g_new0(MsnNexus, 1); nexus->session = session; + /*we must use SSL connection to do Windows Live ID authentication*/ + nexus->soapconn = msn_soap_new(session,nexus,1); + nexus->challenge_data = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); @@ -45,24 +54,14 @@ void msn_nexus_destroy(MsnNexus *nexus) { - if (nexus->gsc) - purple_ssl_close(nexus->gsc); - - g_free(nexus->login_host); - - g_free(nexus->login_path); - if (nexus->challenge_data != NULL) g_hash_table_destroy(nexus->challenge_data); - if (nexus->input_handler > 0) - purple_input_remove(nexus->input_handler); - g_free(nexus->write_buf); - g_free(nexus->read_buf); - + msn_soap_destroy(nexus->soapconn); g_free(nexus); } +#if 0 /* khc */ /************************************************************************** * Util **************************************************************************/ @@ -121,285 +120,233 @@ nexus->written_cb(nexus, source, 0); } +#endif /************************************************************************** * Login **************************************************************************/ - static void -login_connect_cb(gpointer data, PurpleSslConnection *gsc, - PurpleInputCondition cond); - -static void -login_error_cb(PurpleSslConnection *gsc, PurpleSslErrorType error, void *data) +nexus_login_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error) { - MsnNexus *nexus; MsnSession *session; - nexus = data; - g_return_if_fail(nexus != NULL); - - nexus->gsc = NULL; - - session = nexus->session; + session = soapconn->session; g_return_if_fail(session != NULL); - msn_session_set_error(session, MSN_ERROR_AUTH, _("Unable to connect")); + soapconn->gsc = NULL; + + msn_session_set_error(session, MSN_ERROR_AUTH, _("Windows Live ID authentication:Unable to connect")); /* the above line will result in nexus being destroyed, so we don't want * to destroy it here, or we'd crash */ } -static void -nexus_login_written_cb(gpointer data, gint source, PurpleInputCondition cond) -{ - MsnNexus *nexus = data; - MsnSession *session; - int len; - - session = nexus->session; - g_return_if_fail(session != NULL); - - if (nexus->input_handler == 0) - /* TODO: Use purple_ssl_input_add()? */ - nexus->input_handler = purple_input_add(nexus->gsc->fd, - PURPLE_INPUT_READ, nexus_login_written_cb, nexus); - - - len = msn_ssl_read(nexus); - - if (len < 0 && errno == EAGAIN) - return; - else if (len < 0) { - purple_input_remove(nexus->input_handler); - nexus->input_handler = 0; - g_free(nexus->read_buf); - nexus->read_buf = NULL; - nexus->read_len = 0; - /* TODO: error handling */ - return; - } - - if (g_strstr_len(nexus->read_buf, nexus->read_len, - "\r\n\r\n") == NULL) - return; - - purple_input_remove(nexus->input_handler); - nexus->input_handler = 0; - - purple_ssl_close(nexus->gsc); - nexus->gsc = NULL; - - purple_debug_misc("msn", "ssl buffer: {%s}\n", nexus->read_buf); - - if (strstr(nexus->read_buf, "HTTP/1.1 302") != NULL) - { - /* Redirect. */ - char *location, *c; - - location = strstr(nexus->read_buf, "Location: "); - if (location == NULL) - { - g_free(nexus->read_buf); - nexus->read_buf = NULL; - nexus->read_len = 0; - - return; - } - location = strchr(location, ' ') + 1; - - if ((c = strchr(location, '\r')) != NULL) - *c = '\0'; - - /* Skip the http:// */ - if ((c = strchr(location, '/')) != NULL) - location = c + 2; - - if ((c = strchr(location, '/')) != NULL) - { - g_free(nexus->login_path); - nexus->login_path = g_strdup(c); - - *c = '\0'; - } - - g_free(nexus->login_host); - nexus->login_host = g_strdup(location); - - nexus->gsc = purple_ssl_connect(session->account, - nexus->login_host, PURPLE_SSL_DEFAULT_PORT, - login_connect_cb, login_error_cb, nexus); - } - else if (strstr(nexus->read_buf, "HTTP/1.1 401 Unauthorized") != NULL) - { - const char *error; - - if ((error = strstr(nexus->read_buf, "WWW-Authenticate")) != NULL) - { - if ((error = strstr(error, "cbtxt=")) != NULL) - { - const char *c; - char *temp; - - error += strlen("cbtxt="); - - if ((c = strchr(error, '\n')) == NULL) - c = error + strlen(error); - - temp = g_strndup(error, c - error); - error = purple_url_decode(temp); - g_free(temp); - if ((temp = strstr(error, " Do one of the following or try again:")) != NULL) - *temp = '\0'; - } - } - - msn_session_set_error(session, MSN_ERROR_AUTH, error); - } - else if (strstr(nexus->read_buf, "HTTP/1.1 503 Service Unavailable")) - { - msn_session_set_error(session, MSN_ERROR_SERV_UNAVAILABLE, NULL); - } - else if (strstr(nexus->read_buf, "HTTP/1.1 200 OK")) - { - char *base, *c; - char *login_params; - -#if 0 - /* All your base are belong to us. */ - base = buffer; - - /* For great cookie! */ - while ((base = strstr(base, "Set-Cookie: ")) != NULL) - { - base += strlen("Set-Cookie: "); - - c = strchr(base, ';'); - - session->login_cookies = - g_list_append(session->login_cookies, - g_strndup(base, c - base)); - } -#endif - - base = strstr(nexus->read_buf, "Authentication-Info: "); - - g_return_if_fail(base != NULL); - - base = strstr(base, "from-PP='"); - base += strlen("from-PP='"); - c = strchr(base, '\''); - - login_params = g_strndup(base, c - base); - - msn_got_login_params(session, login_params); - - g_free(login_params); - - msn_nexus_destroy(nexus); - session->nexus = NULL; - return; - } - - g_free(nexus->read_buf); - nexus->read_buf = NULL; - nexus->read_len = 0; - -} - -/* this guards against missing hash entries */ -static char * -nexus_challenge_data_lookup(GHashTable *challenge_data, const char *key) -{ - char *entry; - - return (entry = (char *)g_hash_table_lookup(challenge_data, key)) ? - entry : "(null)"; -} - -void -login_connect_cb(gpointer data, PurpleSslConnection *gsc, - PurpleInputCondition cond) +/*process the SOAP reply, get the Authentication Info*/ +static gboolean +nexus_login_read_cb(MsnSoapConn *soapconn) { MsnNexus *nexus; MsnSession *session; - char *username, *password; - char *request_str, *head, *tail; - char *buffer = NULL; - guint32 ctint; + + char *base, *c; + char *msn_twn_t,*msn_twn_p; + char *login_params; + char **elems, **cur, **tokens; + char * cert_str; + + nexus = soapconn->parent; + g_return_val_if_fail(nexus != NULL, TRUE); + session = nexus->session; + g_return_val_if_fail(session != NULL, FALSE); + + /*reply OK, we should process the SOAP body*/ + purple_debug_info("MSN Nexus","TWN Server Windows Live ID Reply OK!\n"); + + //TODO: we should parse it using XML +#ifdef NEXUS_LOGIN_TWN + base = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_START_TOKEN); + base += strlen(TWN_START_TOKEN); + c = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_END_TOKEN); +#else + base = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_START_TOKEN); + base += strlen(TWN_LIVE_START_TOKEN); + c = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_END_TOKEN); +#endif + login_params = g_strndup(base, c - base); + + // purple_debug_info("msn", "TWN Cert: {%s}\n", login_params); + + /* Parse the challenge data. */ + elems = g_strsplit(login_params, "&", 0); + + for (cur = elems; *cur != NULL; cur++){ + tokens = g_strsplit(*cur, "=", 2); + g_hash_table_insert(nexus->challenge_data, tokens[0], tokens[1]); + /* Don't free each of the tokens, only the array. */ + g_free(tokens); + } + + g_strfreev(elems); + + msn_twn_t = (char *)g_hash_table_lookup(nexus->challenge_data, "t"); + msn_twn_p = (char *)g_hash_table_lookup(nexus->challenge_data, "p"); + + /*setup the t and p parameter for session*/ + g_free(session->passport_info.t); + session->passport_info.t = g_strdup(msn_twn_t); - nexus = data; - g_return_if_fail(nexus != NULL); + g_free(session->passport_info.p); + session->passport_info.p = g_strdup(msn_twn_p); + + cert_str = g_strdup_printf("t=%s&p=%s",msn_twn_t,msn_twn_p); + msn_got_login_params(session, cert_str); + + purple_debug_info("MSN Nexus","Close nexus connection!\n"); + g_free(cert_str); + g_free(login_params); + msn_nexus_destroy(nexus); + session->nexus = NULL; + + return FALSE; +} + +static void +nexus_login_written_cb(MsnSoapConn *soapconn) +{ + soapconn->read_cb = nexus_login_read_cb; +// msn_soap_read_cb(data,source,cond); +} + - session = nexus->session; - g_return_if_fail(session != NULL); +/*when connect, do the SOAP Style windows Live ID authentication */ +gboolean +nexus_login_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc) +{ + MsnNexus * nexus; + MsnSession *session; + char *ru,*lc,*id,*tw,*ct,*kpp,*kv,*ver,*rn,*tpf; + char *fs0,*fs; + char *username, *password; + char *request_str, *tail; +#ifdef NEXUS_LOGIN_TWN + char *challenge_str; +#else + char *rst1_str,*rst2_str,*rst3_str; +#endif + + purple_debug_info("MSN Nexus","Starting Windows Live ID authentication\n"); + + g_return_val_if_fail(soapconn != NULL, FALSE); + + nexus = soapconn->parent; + g_return_val_if_fail(nexus != NULL, TRUE); + + session = soapconn->session; + g_return_val_if_fail(session != NULL, FALSE); + + msn_soap_set_process_step(soapconn, MSN_SOAP_PROCESSING); msn_session_set_login_step(session, MSN_LOGIN_STEP_GET_COOKIE); - username = - g_strdup(purple_url_encode(purple_account_get_username(session->account))); + /*prepare the Windows Live ID authentication token*/ + username = g_strdup(purple_account_get_username(session->account)); + password = g_strdup(purple_connection_get_password(session->account->gc)); - password = - g_strdup(purple_url_encode(purple_connection_get_password(session->account->gc))); + lc = (char *)g_hash_table_lookup(nexus->challenge_data, "lc"); + id = (char *)g_hash_table_lookup(nexus->challenge_data, "id"); + tw = (char *)g_hash_table_lookup(nexus->challenge_data, "tw"); + fs0= (char *)g_hash_table_lookup(nexus->challenge_data, "fs"); + ru = (char *)g_hash_table_lookup(nexus->challenge_data, "ru"); + ct = (char *)g_hash_table_lookup(nexus->challenge_data, "ct"); + kpp= (char *)g_hash_table_lookup(nexus->challenge_data, "kpp"); + kv = (char *)g_hash_table_lookup(nexus->challenge_data, "kv"); + ver= (char *)g_hash_table_lookup(nexus->challenge_data, "ver"); + rn = (char *)g_hash_table_lookup(nexus->challenge_data, "rn"); + tpf= (char *)g_hash_table_lookup(nexus->challenge_data, "tpf"); - ctint = strtoul((char *)g_hash_table_lookup(nexus->challenge_data, "ct"), NULL, 10) + 200; + /* + * add some fail-safe code to avoid windows Purple Crash bug #1540454 + * If any of these string is NULL, will return Authentication Fail! + * for when windows g_strdup_printf() implementation get NULL point,It crashed! + */ + if(!(lc && id && tw && ru && ct && kpp && kv && ver && tpf)){ + purple_debug_error("MSN Nexus","WLM Authenticate Key Error!\n"); + msn_session_set_error(session, MSN_ERROR_AUTH, _("Windows Live ID authentication Failed")); + g_free(username); + g_free(password); + purple_ssl_close(gsc); + msn_nexus_destroy(nexus); + session->nexus = NULL; + return FALSE; + } - head = g_strdup_printf( - "GET %s HTTP/1.1\r\n" - "Authorization: Passport1.4 OrgVerb=GET,OrgURL=%s,sign-in=%s", - nexus->login_path, - (char *)g_hash_table_lookup(nexus->challenge_data, "ru"), - username); + /* + * in old MSN NS server's "USR TWN S" return,didn't include fs string + * so we use a default "1" for fs. + */ + if(fs0){ + fs = g_strdup(fs0); + }else{ + fs = g_strdup("1"); + } - tail = g_strdup_printf( - "lc=%s,id=%s,tw=%s,fs=%s,ru=%s,ct=%" G_GUINT32_FORMAT ",kpp=%s,kv=%s,ver=%s,tpf=%s\r\n" - "User-Agent: MSMSGS\r\n" - "Host: %s\r\n" - "Connection: Keep-Alive\r\n" - "Cache-Control: no-cache\r\n", - nexus_challenge_data_lookup(nexus->challenge_data, "lc"), - nexus_challenge_data_lookup(nexus->challenge_data, "id"), - nexus_challenge_data_lookup(nexus->challenge_data, "tw"), - nexus_challenge_data_lookup(nexus->challenge_data, "fs"), - nexus_challenge_data_lookup(nexus->challenge_data, "ru"), - ctint, - nexus_challenge_data_lookup(nexus->challenge_data, "kpp"), - nexus_challenge_data_lookup(nexus->challenge_data, "kv"), - nexus_challenge_data_lookup(nexus->challenge_data, "ver"), - nexus_challenge_data_lookup(nexus->challenge_data, "tpf"), - nexus->login_host); +#ifdef NEXUS_LOGIN_TWN + challenge_str = g_strdup_printf( + "lc=%s&id=%s&tw=%s&fs=%s&ru=%s&ct=%s&kpp=%s&kv=%s&ver=%s&rn=%s&tpf=%s\r\n", + lc,id,tw,fs,ru,ct,kpp,kv,ver,rn,tpf + ); - buffer = g_strdup_printf("%s,pwd=XXXXXXXX,%s\r\n", head, tail); - request_str = g_strdup_printf("%s,pwd=%s,%s\r\n", head, password, tail); + /*build the SOAP windows Live ID XML body */ + tail = g_strdup_printf(TWN_ENVELOP_TEMPLATE,username,password,challenge_str ); + g_free(challenge_str); +#else + rst1_str = g_strdup_printf( + "id=%s&tw=%s&fs=%s&kpp=%s&kv=%s&ver=%s&rn=%s", + id,tw,fs,kpp,kv,ver,rn + ); + rst2_str = g_strdup_printf( + "fs=%s&id=%s&kv=%s&rn=%s&tw=%s&ver=%s", + fs,id,kv,rn,tw,ver + ); + rst3_str = g_strdup_printf("id=%s",id); + tail = g_strdup_printf(TWN_LIVE_ENVELOP_TEMPLATE,username,password,rst1_str,rst2_str,rst3_str); + g_free(rst1_str); + g_free(rst2_str); + g_free(rst3_str); +#endif + g_free(fs); - purple_debug_misc("msn", "Sending: {%s}\n", buffer); + soapconn->login_path = g_strdup(TWN_POST_URL); + request_str = g_strdup_printf( + "POST %s HTTP/1.1\r\n" + "Accept: text/*\r\n" + "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n" + "Host: %s\r\n" + "Content-Length: %" G_GSIZE_FORMAT "\r\n" + "Connection: Keep-Alive\r\n" + "Cache-Control: no-cache\r\n\r\n" + "%s", + soapconn->login_path, soapconn->login_host, strlen(tail), + tail); - g_free(buffer); - g_free(head); +#ifdef MSN_SOAP_DEBUG + purple_debug_misc("MSN Nexus", "TWN Sending:\n%s\n", request_str); +#endif g_free(tail); g_free(username); g_free(password); - nexus->write_buf = request_str; - nexus->written_len = 0; - - nexus->read_len = 0; - - nexus->written_cb = nexus_login_written_cb; + /*prepare to send the SOAP request*/ + msn_soap_write(soapconn, request_str, nexus_login_written_cb); - nexus->input_handler = purple_input_add(gsc->fd, PURPLE_INPUT_WRITE, - nexus_write_cb, nexus); - - nexus_write_cb(nexus, gsc->fd, PURPLE_INPUT_WRITE); - - return; - - + return TRUE; } +#if 0 /* khc */ static void nexus_connect_written_cb(gpointer data, gint source, PurpleInputCondition cond) { MsnNexus *nexus = data; int len; + char *da_login; char *base, *c; @@ -408,6 +355,7 @@ nexus->input_handler = purple_input_add(nexus->gsc->fd, PURPLE_INPUT_READ, nexus_connect_written_cb, nexus); + /* Get the PassportURLs line. */ len = msn_ssl_read(nexus); @@ -470,10 +418,13 @@ } +#endif + /************************************************************************** * Connect **************************************************************************/ +#if 0 /* khc */ static void nexus_connect_cb(gpointer data, PurpleSslConnection *gsc, PurpleInputCondition cond) @@ -502,10 +453,12 @@ nexus_write_cb(nexus, gsc->fd, PURPLE_INPUT_WRITE); } +#endif + void msn_nexus_connect(MsnNexus *nexus) { - nexus->gsc = purple_ssl_connect(nexus->session->account, - "nexus.passport.com", PURPLE_SSL_DEFAULT_PORT, - nexus_connect_cb, login_error_cb, nexus); + /* Authenticate via Windows Live ID. */ + msn_soap_init(nexus->soapconn, MSN_TWN_SERVER, TRUE, nexus_login_connect_cb, nexus_login_error_cb); + msn_soap_connect(nexus->soapconn); } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/nexus.h --- a/libpurple/protocols/msn/nexus.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/nexus.h Tue Oct 23 17:41:06 2007 +0000 @@ -24,25 +24,124 @@ #ifndef _MSN_NEXUS_H_ #define _MSN_NEXUS_H_ +#include "soap.h" + +/*#define MSN_TWN_SERVER "loginnet.passport.com"*/ +#define MSN_TWN_SERVER "login.live.com" + +#define TWN_START_TOKEN "" +#define TWN_END_TOKEN "" + +#define TWN_POST_URL "/RST.srf" +#define TWN_ENVELOP_TEMPLATE ""\ + ""\ + "
"\ + ""\ + "{3:B}"\ + "4"\ + "1"\ + ""\ + "AQAAAAIAAABsYwQAAAAzMDg0"\ + ""\ + ""\ + ""\ + "%s"\ + "%s"\ + ""\ + ""\ + "
"\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "http://Passport.NET/tb"\ + ""\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "messenger.msn.com"\ + ""\ + ""\ + ""\ + ""\ + ""\ + ""\ + ""\ + "
" + +#define TWN_LIVE_START_TOKEN "" +#define TWN_LIVE_END_TOKEN "" +#define TWN_LIVE_ENVELOP_TEMPLATE ""\ +""\ + "
"\ + ""\ + "{7108E71A-9926-4FCB-BCC9-9A9D3F32E423}"\ + "4"\ + "1"\ + ""\ + "AQAAAAIAAABsYwQAAAAyMDUy"\ + ""\ + ""\ + ""\ + "%s"\ + "%s"\ + ""\ + ""\ + "
"\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "http://Passport.NET/tb"\ + ""\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "messenger.msn.com"\ + ""\ + ""\ + ""\ + ""\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "contacts.msn.com"\ + ""\ + ""\ + ""\ + " "\ + ""\ + "http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue"\ + ""\ + ""\ + "voice.messenger.msn.com"\ + ""\ + " "\ + ""\ + ""\ + ""\ + ""\ +"
" + typedef struct _MsnNexus MsnNexus; struct _MsnNexus { MsnSession *session; - - char *login_host; - char *login_path; + MsnSoapConn *soapconn; + char * challenge_data_str; GHashTable *challenge_data; - PurpleSslConnection *gsc; - - guint input_handler; - - char *write_buf; - gsize written_len; - PurpleInputFunction written_cb; - - char *read_buf; - gsize read_len; }; void msn_nexus_connect(MsnNexus *nexus); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/notification.c Tue Oct 23 17:41:06 2007 +0000 @@ -25,7 +25,7 @@ #include "notification.h" #include "state.h" #include "error.h" -#include "msn-utils.h" +#include "msnutils.h" #include "page.h" #include "userlist.h" @@ -34,6 +34,15 @@ static MsnTable *cbs_table; +/**************************************************************************** + * Local Function Prototype + ****************************************************************************/ + +static void msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_len); +static void +msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport, + MsnListOp list_op, MsnUserType type); + /************************************************************************** * Main **************************************************************************/ @@ -92,7 +101,8 @@ MsnCmdProc *cmdproc; MsnSession *session; PurpleAccount *account; - char **a, **c, *vers; + GString *vers; + const char *ver_str; int i; g_return_if_fail(servconn != NULL); @@ -101,25 +111,24 @@ session = servconn->session; account = session->account; - /* Allocate an array for CVR0, NULL, and all the versions */ - a = c = g_new0(char *, session->protocol_ver - 8 + 3); + vers = g_string_new(""); - for (i = session->protocol_ver; i >= 8; i--) - *c++ = g_strdup_printf("MSNP%d", i); +/* for (i = session->protocol_ver; i >= WLM_MIN_PROTOCOL; i--) */ + for (i = WLM_MAX_PROTOCOL; i >= WLM_MIN_PROTOCOL; i--) + g_string_append_printf(vers, " MSNP%d", i); - *c++ = g_strdup("CVR0"); - - vers = g_strjoinv(" ", a); + g_string_append(vers, " CVR0"); if (session->login_step == MSN_LOGIN_STEP_START) msn_session_set_login_step(session, MSN_LOGIN_STEP_HANDSHAKE); else msn_session_set_login_step(session, MSN_LOGIN_STEP_HANDSHAKE2); - msn_cmdproc_send(cmdproc, "VER", "%s", vers); + /* Skip the initial space */ + ver_str = (vers->str + 1); + msn_cmdproc_send(cmdproc, "VER", "%s", ver_str); - g_strfreev(a); - g_free(vers); + g_string_free(vers, TRUE); } gboolean @@ -153,7 +162,7 @@ **************************************************************************/ static void -group_error_helper(MsnSession *session, const char *msg, int group_id, int error) +group_error_helper(MsnSession *session, const char *msg, const char *group_id, int error) { PurpleAccount *account; PurpleConnection *gc; @@ -172,11 +181,9 @@ else { const char *group_name; - group_name = - msn_userlist_find_group_name(session->userlist, - group_id); + group_name = msn_userlist_find_group_name(session->userlist,group_id); reason = g_strdup_printf(_("%s is not a valid group."), - group_name); + group_name ? group_name : ""); } } else @@ -214,7 +221,6 @@ PurpleAccount *account; account = cmdproc->session->account; - msn_cmdproc_send(cmdproc, "USR", "TWN I %s", purple_account_get_username(account)); } @@ -224,22 +230,23 @@ { MsnSession *session; PurpleAccount *account; - PurpleConnection *gc; session = cmdproc->session; account = session->account; - gc = purple_account_get_connection(account); if (!g_ascii_strcasecmp(cmd->params[1], "OK")) { - /* OK */ + /* authenticate OK */ + /* friendly name part no longer true in msnp11 */ +#if 0 const char *friendly = purple_url_decode(cmd->params[3]); purple_connection_set_display_name(gc, friendly); - +#endif msn_session_set_login_step(session, MSN_LOGIN_STEP_SYN); - msn_cmdproc_send(cmdproc, "SYN", "%s", "0"); +// msn_cmdproc_send(cmdproc, "SYN", "%s", "0"); + //TODO we should use SOAP contact to fetch contact list } else if (!g_ascii_strcasecmp(cmd->params[1], "TWN")) { @@ -249,15 +256,21 @@ session->nexus = msn_nexus_new(session); /* Parse the challenge data. */ - + session->nexus->challenge_data_str = g_strdup(cmd->params[3]); elems = g_strsplit(cmd->params[3], ",", 0); for (cur = elems; *cur != NULL; cur++) { - tokens = g_strsplit(*cur, "=", 2); + tokens = g_strsplit(*cur, "=", 2); + if(tokens[0] && tokens[1]) + { + purple_debug_info("MSNP14","challenge %p,key:%s,value:%s\n", + session->nexus->challenge_data,tokens[0],tokens[1]); g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); /* Don't free each of the tokens, only the array. */ g_free(tokens); + } else + g_strfreev(tokens); } g_strfreev(elems); @@ -322,8 +335,15 @@ return; } + /* + * Windows Live Messenger 8.0 + * Notice :CVR String discriminate! + * reference of http://www.microsoft.com/globaldev/reference/oslocversion.mspx + * to see the Local ID + */ msn_cmdproc_send(cmdproc, "CVR", - "0x0409 winnt 5.1 i386 MSNMSGR 6.0.0602 MSMSGS %s", +// "0x0409 winnt 5.1 i386 MSG80BETA 8.0.0689 msmsgs %s", + "0x0804 winnt 5.1 i386 MSNMSGR 8.0.0792 msmsgs %s", purple_account_get_username(account)); } @@ -366,7 +386,7 @@ msg = msn_message_new_from_cmd(cmdproc->session, cmd); - msn_message_parse_payload(msg, payload, len); + msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM); #ifdef MSN_DEBUG_NS msn_message_show_readable(msg, "Notification", TRUE); #endif @@ -379,9 +399,12 @@ static void msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { + purple_debug_info("MSNP14","Processing MSG... \n"); + if(cmd->payload_len == 0){ + return; + } /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued * command and we are processing it */ - if (cmd->payload == NULL) { cmdproc->last_cmd->payload_cb = msg_cmd_post; @@ -391,32 +414,143 @@ { g_return_if_fail(cmd->payload_cb != NULL); + purple_debug_info("MSNP14","MSG payload:{%.*s}\n",cmd->payload_len, cmd->payload); cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len); } } +/*send Message to Yahoo Messenger*/ +void +uum_send_msg(MsnSession *session,MsnMessage *msg) +{ + MsnCmdProc *cmdproc; + MsnTransaction *trans; + char *payload; + gsize payload_len; + int type; + + cmdproc = session->notification->cmdproc; + g_return_if_fail(msg != NULL); + payload = msn_message_gen_payload(msg, &payload_len); + purple_debug_info("MSNP14","send UUM,payload{%s},strlen:%d,len:%d\n", + payload,strlen(payload),payload_len); + type = msg->type; + trans = msn_transaction_new(cmdproc, "UUM","%s 32 %d %d",msg->remote_user,type,payload_len); + msn_transaction_set_payload(trans, payload, strlen(payload)); + msn_cmdproc_send_trans(cmdproc, trans); +} + +static void +ubm_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, + size_t len) +{ + MsnMessage *msg; + PurpleConnection *gc; + const char *passport; + const char *content_type; + + purple_debug_info("MSNP14","Process UBM payload:%.*s\n", len, payload); + msg = msn_message_new_from_cmd(cmdproc->session, cmd); + + msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM); +#ifdef MSN_DEBUG_NS + msn_message_show_readable(msg, "Notification", TRUE); +#endif + + gc = cmdproc->session->account->gc; + passport = msg->remote_user; + + content_type = msn_message_get_content_type(msg); + purple_debug_info("MSNP14","type:%d\n",content_type); + if(!strcmp(content_type,"text/plain")){ + const char *value; + const char *body; + char *body_enc; + char *body_final = NULL; + size_t body_len; + + body = msn_message_get_bin_data(msg, &body_len); + body_enc = g_markup_escape_text(body, body_len); + + if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL) { + char *pre, *post; + + msn_parse_format(value, &pre, &post); + body_final = g_strdup_printf("%s%s%s", pre ? pre : "", + body_enc ? body_enc : "", post ? post : ""); + g_free(pre); + g_free(post); + } + g_free(body_enc); + serv_got_im(gc, passport, body_final, 0, time(NULL)); + g_free(body_final); + } + if(!strcmp(content_type,"text/x-msmsgscontrol")){ + if(msn_message_get_attr(msg, "TypingUser") != NULL){ + serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT, + PURPLE_TYPING); + } + } + if(!strcmp(content_type,"text/x-msnmsgr-datacast")){ + char *username, *str; + PurpleAccount *account; + PurpleBuddy *buddy; + const char *user; + + account = cmdproc->session->account; + user = msg->remote_user; + + if ((buddy = purple_find_buddy(account, user)) != NULL){ + username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1); + }else{ + username = g_markup_escape_text(user, -1); + } + + str = g_strdup_printf(_("%s just sent you a Nudge!"), username); + g_free(username); + msn_session_report_user(cmdproc->session,user,str,PURPLE_MESSAGE_SYSTEM); + g_free(str); + } + msn_message_destroy(msg); +} + +/*Yahoo msg process*/ +static void +ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ + purple_debug_info("MSNP14","Processing UBM... \n"); + if(cmd->payload_len == 0){ + return; + } + /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued + * command and we are processing it */ + if (cmd->payload == NULL){ + cmdproc->last_cmd->payload_cb = ubm_cmd_post; + cmdproc->servconn->payload_len = atoi(cmd->params[2]); + }else{ + g_return_if_fail(cmd->payload_cb != NULL); + + purple_debug_info("MSNP14","UBM payload:{%.*s}\n", cmd->payload_len, cmd->payload); + ubm_cmd_post(cmdproc, cmd, cmd->payload, cmd->payload_len); + } +} + /************************************************************************** * Challenges + * we use MD5 to caculate the Challenges **************************************************************************/ - static void chl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnTransaction *trans; char buf[33]; - const char *challenge_resp; - PurpleCipher *cipher; - PurpleCipherContext *context; - guchar digest[16]; - int i; +#if 0 cipher = purple_ciphers_find_cipher("md5"); context = purple_cipher_context_new(cipher, NULL); - purple_cipher_context_append(context, (const guchar *)cmd->params[1], strlen(cmd->params[1])); - - challenge_resp = "VT6PX?UQTM4WM%YR"; + challenge_resp = MSNP13_WLM_PRODUCT_KEY; purple_cipher_context_append(context, (const guchar *)challenge_resp, strlen(challenge_resp)); @@ -424,9 +558,14 @@ purple_cipher_context_destroy(context); for (i = 0; i < 16; i++) + { g_snprintf(buf + (i*2), 3, "%02x", digest[i]); - - trans = msn_transaction_new(cmdproc, "QRY", "%s 32", "PROD0038W!61ZTF9"); + } +#else + msn_handle_chl(cmd->params[1], buf); +#endif +// purple_debug_info("MSNP14","<params[1],buf); + trans = msn_transaction_new(cmdproc, "QRY", "%s 32", MSNP13_WLM_PRODUCT_ID); msn_transaction_set_payload(trans, buf, 32); @@ -436,43 +575,303 @@ /************************************************************************** * Buddy Lists **************************************************************************/ +/* add contact to xmlnode */ +static void +msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport, MsnListOp list_op, MsnUserType type) +{ + xmlnode *d_node,*c_node; + char **tokens; + const char *email,*domain; + char fmt_str[3]; + + g_return_if_fail(passport != NULL); + + purple_debug_info("MSNP14","Passport: %s, type: %d\n", passport, type); + tokens = g_strsplit(passport, "@", 2); + email = tokens[0]; + domain = tokens[1]; + + if (email == NULL || domain == NULL) { + purple_debug_error("msn", "Invalid passport (%s) specified to add to contact xml.\n", passport); + g_strfreev(tokens); + g_return_if_reached(); + } + + /*find a domain 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)) + break; + } + + 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"); + xmlnode_set_attrib(d_node, "n", domain); + xmlnode_insert_child(mlNode, d_node); + } + + /*create contact node*/ + c_node = xmlnode_new("c"); + xmlnode_set_attrib(c_node, "n", email); + + purple_debug_info("MSNP14", "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 (type != MSN_USER_TYPE_UNKNOWN) + g_snprintf(fmt_str, sizeof(fmt_str), "%d", type); + else if (msn_user_is_yahoo(session->account, passport)) + g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_USER_TYPE_YAHOO); + else + g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_USER_TYPE_PASSPORT); + + /*mobile*/ + //type_str = g_strdup_printf("4"); + xmlnode_set_attrib(c_node, "t", fmt_str); + + xmlnode_insert_child(d_node, c_node); + + g_strfreev(tokens); +} static void -add_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_len) +{ + MsnTransaction *trans; + purple_debug_info("MSN Notification","Sending ADL with payload: %s\n", payload); + trans = msn_transaction_new(cmdproc, "ADL","%d", strlen(payload)); + msn_transaction_set_payload(trans, payload, strlen(payload)); + msn_cmdproc_send_trans(cmdproc, trans); +} + +/*dump contact info to NS*/ +void +msn_notification_dump_contact(MsnSession *session) +{ + MsnUser *user; + GList *l; + xmlnode *adl_node; + char *payload; + int payload_len; + int adl_count = 0; + const char *display_name; + + adl_node = xmlnode_new("ml"); + adl_node->child = NULL; + xmlnode_set_attrib(adl_node, "l", "1"); + + /*get the userlist*/ + for (l = session->userlist->users; l != NULL; l = l->next){ + user = l->data; + + /* skip RL & PL during initial dump */ + if (!(user->list_op & MSN_LIST_OP_MASK)) + continue; + + msn_add_contact_xml(session, adl_node, user->passport, + user->list_op & MSN_LIST_OP_MASK, user->type); + + /* 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); + + msn_notification_post_adl(session->notification->cmdproc, + payload, payload_len); + + g_free(payload); + xmlnode_free(adl_node); + + if (l->next) { + adl_node = xmlnode_new("ml"); + adl_node->child = NULL; + xmlnode_set_attrib(adl_node, "l", "1"); + } + } + } + + if (adl_count == 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); + } + + display_name = purple_connection_get_display_name(session->account->gc); + if (display_name + && strcmp(display_name, + purple_account_get_username(session->account))) { + msn_act_id(session->account->gc, display_name); + } + +} + +/*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","%d", 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) +{ +} + +static void +adl_cmd_parse(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, + size_t len) +{ + xmlnode *root, *domain_node; + + purple_debug_misc("MSN Notification", "Parsing received ADL XML data\n"); + + g_return_if_fail(payload != NULL); + + root = xmlnode_from_str(payload, (gssize) len); + + if (root == NULL) { + purple_debug_info("MSN Notification", "Invalid XML!\n"); + return; + } + for (domain_node = xmlnode_get_child(root, "d"); domain_node; domain_node = xmlnode_get_next_twin(domain_node)) { + const gchar * domain = NULL; + xmlnode *contact_node = NULL; + + domain = xmlnode_get_attrib(domain_node, "n"); + + for (contact_node = xmlnode_get_child(domain_node, "c"); contact_node; contact_node = xmlnode_get_next_twin(contact_node)) { +// gchar *name = NULL, *friendlyname = NULL, *passport= NULL; + const gchar *list; + gint list_op = 0; + +// name = xmlnode_get_attrib(contact_node, "n"); + list = xmlnode_get_attrib(contact_node, "l"); + if (list != NULL) { + list_op = atoi(list); + } +// friendlyname = xmlnode_get_attrib(contact_node, "f"); + +// passport = g_strdup_printf("%s@%s", name, domain); + +// if (friendlyname != NULL) { +// decoded_friendlyname = g_strdup(purple_url_decode(friendlyname)); +// } else { +// decoded_friendlyname = g_strdup(passport); +// } + + if (list_op & MSN_LIST_RL_OP) { + /* someone is adding us */ +// got_new_entry(cmdproc->session->account->gc, passport, decoded_friendly_name); + msn_get_contact_list(cmdproc->session->contact, MSN_PS_PENDING_LIST, NULL); + } + +// g_free(decoded_friendly_name); +// g_free(passport); + } + } + + xmlnode_free(root); +} + +static void +adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; - MsnUser *user; - const char *list; - const char *passport; - const char *friendly; - MsnListId list_id; - int group_id; - list = cmd->params[1]; - passport = cmd->params[3]; - friendly = purple_url_decode(cmd->params[4]); + g_return_if_fail(cmdproc != NULL); + g_return_if_fail(cmdproc->session != NULL); + g_return_if_fail(cmdproc->last_cmd != NULL); + g_return_if_fail(cmd != NULL); session = cmdproc->session; - user = msn_userlist_find_user(session->userlist, passport); + if ( !strcmp(cmd->params[1], "OK")) { + /* ADL ack */ + msn_session_finish_login(session); + } else { + cmdproc->last_cmd->payload_cb = adl_cmd_parse; + } + + return; +} - if (user == NULL) - { - user = msn_user_new(session->userlist, passport, friendly); - msn_userlist_add_user(session->userlist, user); - } - else - msn_user_set_friendly_name(user, friendly); +static void +adl_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) +{ + MsnSession *session; + PurpleAccount *account; + PurpleConnection *gc; + char *reason = NULL; + + session = cmdproc->session; + account = session->account; + gc = purple_account_get_connection(account); + + purple_debug_error("msn","ADL error\n"); + reason = g_strdup_printf(_("Unknown error (%d)"), error); + purple_notify_error(gc, NULL, _("Unable to add user"), reason); + g_free(reason); +} - list_id = msn_get_list_id(list); +static void +fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, + size_t len) +{ + purple_debug_info("MSN Notification","FQY payload:\n%s\n", payload); + g_return_if_fail(cmdproc->session != NULL); + g_return_if_fail(cmdproc->session->contact != NULL); +// msn_notification_post_adl(cmdproc, payload, len); +// msn_get_address_book(cmdproc->session->contact, MSN_AB_SAVE_CONTACT, NULL, NULL); +} - if (cmd->param_count >= 6) - group_id = atoi(cmd->params[5]); - else - group_id = -1; +static void +fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ + purple_debug_info("MSNP14","Process FQY\n"); + cmdproc->last_cmd->payload_cb = fqy_cmd_post; +} - msn_got_add_user(session, user, list_id, group_id); - msn_user_update(user); +static void +rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ +#if 0 + MsnTransaction *trans; + char * payload; +#endif + + purple_debug_info("MSNP14","Process RML\n"); +#if 0 + trans = msn_transaction_new(cmdproc, "RML",""); + + msn_transaction_set_payload(trans, payload, strlen(payload)); + + msn_cmdproc_send_trans(cmdproc, trans); +#endif } static void @@ -567,24 +966,22 @@ group_name = purple_url_decode(cmd->params[2]); - msn_group_new(session->userlist, group_id, group_name); + msn_group_new(session->userlist, cmd->params[3], group_name); - /* There is a user that must me moved to this group */ + /* There is a user that must be moved to this group */ if (cmd->trans->data) { /* msn_userlist_move_buddy(); */ MsnUserList *userlist = cmdproc->session->userlist; - MsnMoveBuddy *data = cmd->trans->data; + MsnCallbackState *data = cmd->trans->data; if (data->old_group_name != NULL) { - msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->old_group_name); + msn_userlist_move_buddy(userlist, data->who, data->old_group_name, group_name); g_free(data->old_group_name); + } else { + // msn_add_contact_to_group(userlist, data, data->who, group_name); } - - msn_userlist_add_buddy(userlist, data->who, MSN_LIST_FL, group_name); - g_free(data->who); - } } @@ -642,6 +1039,7 @@ PurpleConnection *gc; MsnUser *user; MsnObject *msnobj; + int wlmclient; const char *state, *passport, *friendly; session = cmdproc->session; @@ -650,7 +1048,9 @@ state = cmd->params[1]; passport = cmd->params[2]; - friendly = purple_url_decode(cmd->params[3]); + /*if a contact is actually on the WLM part or the yahoo part*/ + wlmclient = atoi(cmd->params[3]); + friendly = purple_url_decode(cmd->params[4]); user = msn_userlist_find_user(session->userlist, passport); @@ -658,9 +1058,9 @@ msn_user_set_friendly_name(user, friendly); - if (session->protocol_ver >= 9 && cmd->param_count == 6) + if (session->protocol_ver >= 9 && cmd->param_count == 8) { - msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[5])); + msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[6])); msn_user_set_object(user, msnobj); } @@ -692,6 +1092,7 @@ MsnUser *user; MsnObject *msnobj; int clientid; + int wlmclient; const char *state, *passport, *friendly, *old_friendly; session = cmdproc->session; @@ -700,7 +1101,8 @@ state = cmd->params[0]; passport = cmd->params[1]; - friendly = purple_url_decode(cmd->params[2]); + wlmclient = atoi(cmd->params[2]); + friendly = purple_url_decode(cmd->params[3]); user = msn_userlist_find_user(session->userlist, passport); @@ -713,10 +1115,9 @@ if (session->protocol_ver >= 9) { - if (cmd->param_count == 5) + if (cmd->param_count == 7) { - msnobj = - msn_object_new_from_string(purple_url_decode(cmd->params[4])); + msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[5])); msn_user_set_object(user, msnobj); } else @@ -725,7 +1126,7 @@ } } - clientid = atoi(cmd->params[3]); + clientid = atoi(cmd->params[4]); user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE); msn_user_set_state(user, state); @@ -797,7 +1198,7 @@ prp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session = cmdproc->session; - const char *type, *value; + const char *type, *value, *friendlyname; g_return_if_fail(cmd->param_count >= 3); @@ -821,6 +1222,18 @@ msn_user_set_work_phone(session->user, NULL); else if (!strcmp(type, "PHM")) msn_user_set_mobile_phone(session->user, NULL); + else { + type = cmd->params[1]; + if (!strcmp(type, "MFN")) { + friendlyname = purple_url_decode(cmd->params[2]); + + msn_update_contact(session->contact, friendlyname); + + purple_connection_set_display_name( + purple_account_get_connection(session->account), + friendlyname); + } + } } } @@ -828,11 +1241,10 @@ reg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; - int group_id; - const char *group_name; + const char *group_id, *group_name; session = cmdproc->session; - group_id = atoi(cmd->params[2]); + group_id = cmd->params[2]; group_name = purple_url_decode(cmd->params[3]); msn_userlist_rename_group_id(session->userlist, group_id, group_name); @@ -841,27 +1253,26 @@ static void reg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) { - int group_id; + const char * group_id; char **params; params = g_strsplit(trans->params, " ", 0); - group_id = atoi(params[0]); + group_id = params[0]; group_error_helper(cmdproc->session, _("Unable to rename group"), group_id, error); g_strfreev(params); } +#if 0 static void rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; MsnUser *user; - const char *list; - const char *passport; + const char *group_id, *list, *passport; MsnListId list_id; - int group_id; session = cmdproc->session; list = cmd->params[1]; @@ -873,22 +1284,23 @@ list_id = msn_get_list_id(list); if (cmd->param_count == 5) - group_id = atoi(cmd->params[4]); + group_id = cmd->params[4]; else - group_id = -1; + group_id = NULL; msn_got_rem_user(session, user, list_id, group_id); msn_user_update(user); } +#endif static void rmg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; - int group_id; + const char *group_id; session = cmdproc->session; - group_id = atoi(cmd->params[2]); + group_id = cmd->params[2]; msn_userlist_remove_group_id(session->userlist, group_id); } @@ -896,18 +1308,19 @@ static void rmg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) { - int group_id; + const char *group_id; char **params; params = g_strsplit(trans->params, " ", 0); - group_id = atoi(params[0]); + group_id = params[0]; group_error_helper(cmdproc->session, _("Unable to delete group"), group_id, error); g_strfreev(params); } +#if 0 static void syn_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { @@ -938,6 +1351,7 @@ session->sync = sync; cmdproc->cbs_table = sync->cbs_table; } +#endif /************************************************************************** * Misc commands @@ -1146,6 +1560,101 @@ g_free(host); } +static void +gcf_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, + size_t len) +{ + xmlnode * root; + gchar * buf; + + g_return_if_fail(cmd->payload != NULL); + + if ( (root = xmlnode_from_str(cmd->payload, cmd->payload_len)) == NULL) + { + purple_debug_error("MSN","Unable to parse GCF payload into a XML tree"); + return; + } + + buf = xmlnode_to_formatted_str(root, NULL); + + /* get the payload content */ + purple_debug_info("MSNP14","GCF command payload:\n%s\n",buf); + + g_free(buf); + xmlnode_free(root); +} + +static void +gcf_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ + purple_debug_info("MSNP14","Processing GCF command\n"); + cmdproc->last_cmd->payload_cb = gcf_cmd_post; + return; +} + +static void +sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ + purple_debug_info("MSNP14","Processing SBS... \n"); + if(cmd->payload_len == 0){ + return; + } + /*get the payload content*/ +} + +/* + * Get the UBX's PSM info + * Post it to the User status + * Thanks for Chris 's code + */ +static void +ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, + size_t len) +{ + MsnSession *session; + PurpleAccount *account; + MsnUser *user; + const char *passport; + char *psm_str, *currentmedia_str, *str; + + /*get the payload content*/ +// purple_debug_info("MSNP14","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload); + + session = cmdproc->session; + account = session->account; + + passport = cmd->params[0]; + user = msn_userlist_find_user(session->userlist, passport); + + psm_str = msn_get_psm(cmd->payload,len); + currentmedia_str = msn_parse_currentmedia( + str = msn_get_currentmedia(cmd->payload, len)); + g_free(str); + + msn_user_set_statusline(user, psm_str); + msn_user_set_currentmedia(user, currentmedia_str); + msn_user_update(user); + + g_free(psm_str); + g_free(currentmedia_str); +} + +static void +ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ + purple_debug_misc("MSNP14","UBX received.\n"); + if(cmd->payload_len == 0){ + return; + } + cmdproc->last_cmd->payload_cb = ubx_cmd_post; +} + +static void +uux_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ + purple_debug_misc("MSNP14","UUX received.\n"); +} + /************************************************************************** * Message Types **************************************************************************/ @@ -1155,6 +1664,7 @@ { MsnSession *session; const char *value; + const char *clLastChange; session = cmdproc->session; @@ -1187,10 +1697,27 @@ } if ((value = msn_message_get_attr(msg, "ClientPort")) != NULL) + { session->passport_info.client_port = ntohs(atoi(value)); + } if ((value = msn_message_get_attr(msg, "LoginTime")) != NULL) session->passport_info.sl = atol(value); + + /*starting retrieve the contact list*/ + clLastChange = purple_account_get_string(session->account, "CLLastChange", NULL); + session->contact = msn_contact_new(session); +#ifdef MSN_PARTIAL_LISTS + /* msn_userlist_load defeats all attempts at trying to detect blist sync issues */ + msn_userlist_load(session); + msn_get_contact_list(session->contact, MSN_PS_INITIAL, clLastChange); +#else + /* always get the full list? */ + msn_get_contact_list(session->contact, MSN_PS_INITIAL, NULL); +#endif +#if 0 + msn_contact_connect(session->contact); +#endif } static void @@ -1246,6 +1773,88 @@ g_hash_table_destroy(table); } +/*offline Message notification process*/ +static void +initial_mdata_msg(MsnCmdProc *cmdproc, MsnMessage *msg) +{ + MsnSession *session; + PurpleConnection *gc; + GHashTable *table; + const char *mdata, *unread; + + session = cmdproc->session; + gc = session->account->gc; + + if (strcmp(msg->remote_user, "Hotmail")) + /* This isn't an official message. */ + return; + + /*new a oim session*/ + /* There are several things that call this */ + if (session->oim == NULL) + session->oim = msn_oim_new(session); +// msn_oim_connect(session->oim); + + table = msn_message_get_hashtable_from_body(msg); + + mdata = g_hash_table_lookup(table, "Mail-Data"); + + if (mdata != NULL) + msn_parse_oim_msg(session->oim, mdata); + + if (g_hash_table_lookup(table, "Inbox-URL") == NULL) + { + g_hash_table_destroy(table); + return; + } + + if (session->passport_info.file == NULL) + { + MsnTransaction *trans; + trans = msn_transaction_new(cmdproc, "URL", "%s", "INBOX"); + msn_transaction_queue_cmd(trans, msg->cmd); + + msn_cmdproc_send_trans(cmdproc, trans); + + g_hash_table_destroy(table); + return; + } + + if (!purple_account_get_check_mail(session->account)) + { + g_hash_table_destroy(table); + return; + } + + unread = g_hash_table_lookup(table, "Inbox-Unread"); + + if (unread != NULL) + { + int count = atoi(unread); + + if (count > 0) + { + const char *passport; + const char *url; + + passport = msn_user_get_passport(session->user); + url = session->passport_info.file; + + purple_notify_emails(gc, atoi(unread), FALSE, NULL, NULL, + &passport, &url, NULL, NULL); + } + } + + g_hash_table_destroy(table); +} + +/*offline Message Notification*/ +static void +delete_oim_msg(MsnCmdProc *cmdproc, MsnMessage *msg) +{ + purple_debug_misc("MSN Notification","Delete OIM message.\n"); +} + static void email_msg(MsnCmdProc *cmdproc, MsnMessage *msg) { @@ -1347,48 +1956,62 @@ } void -msn_notification_add_buddy(MsnNotification *notification, const char *list, - const char *who, const char *store_name, - int group_id) +msn_notification_add_buddy_to_list(MsnNotification *notification, MsnListId list_id, + const char *who) { MsnCmdProc *cmdproc; + MsnListOp list_op = 1 << list_id; + xmlnode *adl_node; + char *payload; + int payload_len; + cmdproc = notification->servconn->cmdproc; - if (group_id < 0 && !strcmp(list, "FL")) - group_id = 0; + adl_node = xmlnode_new("ml"); + adl_node->child = NULL; + + msn_add_contact_xml(notification->session, adl_node, who, list_op, + MSN_USER_TYPE_PASSPORT); - if (group_id >= 0) - { - msn_cmdproc_send(cmdproc, "ADD", "%s %s %s %d", - list, who, store_name, group_id); - } - else - { - msn_cmdproc_send(cmdproc, "ADD", "%s %s %s", list, who, store_name); - } + payload = xmlnode_to_str(adl_node,&payload_len); + xmlnode_free(adl_node); + + msn_notification_post_adl(notification->servconn->cmdproc, + payload,payload_len); + g_free(payload); } void -msn_notification_rem_buddy(MsnNotification *notification, const char *list, - const char *who, int group_id) +msn_notification_rem_buddy_from_list(MsnNotification *notification, MsnListId list_id, + const char *who) { MsnCmdProc *cmdproc; + MsnTransaction *trans; + MsnListOp list_op = 1 << list_id; + xmlnode *rml_node; + char *payload; + int payload_len; + cmdproc = notification->servconn->cmdproc; - if (group_id >= 0) - { - msn_cmdproc_send(cmdproc, "REM", "%s %s %d", list, who, group_id); - } - else - { - msn_cmdproc_send(cmdproc, "REM", "%s %s", list, who); - } + rml_node = xmlnode_new("ml"); + rml_node->child = NULL; + + msn_add_contact_xml(notification->session, rml_node, who, list_op, MSN_USER_TYPE_PASSPORT); + + payload = xmlnode_to_str(rml_node, &payload_len); + xmlnode_free(rml_node); + + purple_debug_info("MSN Notification","Send RML with payload:\n%s\n", payload); + trans = msn_transaction_new(cmdproc, "RML","%d", strlen(payload)); + msn_transaction_set_payload(trans, payload, strlen(payload)); + msn_cmdproc_send_trans(cmdproc, trans); + g_free(payload); } /************************************************************************** * Init **************************************************************************/ - void msn_notification_init(void) { @@ -1399,18 +2022,18 @@ /* Synchronous */ msn_table_add_cmd(cbs_table, "CHG", "CHG", NULL); msn_table_add_cmd(cbs_table, "CHG", "ILN", iln_cmd); - msn_table_add_cmd(cbs_table, "ADD", "ADD", add_cmd); - msn_table_add_cmd(cbs_table, "ADD", "ILN", iln_cmd); - msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd); + msn_table_add_cmd(cbs_table, "ADL", "ILN", iln_cmd); +// msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd); /* Removed as of MSNP13 */ msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd); msn_table_add_cmd(cbs_table, "USR", "XFR", xfr_cmd); - msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd); + msn_table_add_cmd(cbs_table, "USR", "GCF", gcf_cmd); +// msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd); /* Removed as of MSNP13 */ msn_table_add_cmd(cbs_table, "CVR", "CVR", cvr_cmd); msn_table_add_cmd(cbs_table, "VER", "VER", ver_cmd); msn_table_add_cmd(cbs_table, "REA", "REA", rea_cmd); msn_table_add_cmd(cbs_table, "PRP", "PRP", prp_cmd); - /* msn_table_add_cmd(cbs_table, "BLP", "BLP", blp_cmd); */ - msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL); + msn_table_add_cmd(cbs_table, "BLP", "BLP", blp_cmd); +// msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL); msn_table_add_cmd(cbs_table, "REG", "REG", reg_cmd); msn_table_add_cmd(cbs_table, "ADG", "ADG", adg_cmd); msn_table_add_cmd(cbs_table, "RMG", "RMG", rmg_cmd); @@ -1419,11 +2042,15 @@ /* Asynchronous */ msn_table_add_cmd(cbs_table, NULL, "IPG", ipg_cmd); msn_table_add_cmd(cbs_table, NULL, "MSG", msg_cmd); + msn_table_add_cmd(cbs_table, NULL, "UBM", ubm_cmd); + msn_table_add_cmd(cbs_table, NULL, "GCF", gcf_cmd); + msn_table_add_cmd(cbs_table, NULL, "SBS", sbs_cmd); msn_table_add_cmd(cbs_table, NULL, "NOT", not_cmd); msn_table_add_cmd(cbs_table, NULL, "CHL", chl_cmd); - msn_table_add_cmd(cbs_table, NULL, "REM", rem_cmd); - msn_table_add_cmd(cbs_table, NULL, "ADD", add_cmd); + msn_table_add_cmd(cbs_table, NULL, "RML", rml_cmd); + msn_table_add_cmd(cbs_table, NULL, "ADL", adl_cmd); + msn_table_add_cmd(cbs_table, NULL, "FQY", fqy_cmd); msn_table_add_cmd(cbs_table, NULL, "QRY", NULL); msn_table_add_cmd(cbs_table, NULL, "QNG", qng_cmd); @@ -1433,11 +2060,15 @@ msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd); msn_table_add_cmd(cbs_table, NULL, "RNG", rng_cmd); + msn_table_add_cmd(cbs_table, NULL, "UBX", ubx_cmd); + msn_table_add_cmd(cbs_table, NULL, "UUX", uux_cmd); + msn_table_add_cmd(cbs_table, NULL, "URL", url_cmd); msn_table_add_cmd(cbs_table, "fallback", "XFR", xfr_cmd); msn_table_add_error(cbs_table, "ADD", add_error); + msn_table_add_error(cbs_table, "ADL", adl_error); msn_table_add_error(cbs_table, "REG", reg_error); msn_table_add_error(cbs_table, "RMG", rmg_error); /* msn_table_add_error(cbs_table, "REA", rea_error); */ @@ -1446,12 +2077,24 @@ msn_table_add_msg_type(cbs_table, "text/x-msmsgsprofile", profile_msg); + /*initial OIM notification*/ + msn_table_add_msg_type(cbs_table, + "text/x-msmsgsinitialmdatanotification", + initial_mdata_msg); + /*OIM notification when user online*/ + msn_table_add_msg_type(cbs_table, + "text/x-msmsgsoimnotification", + initial_mdata_msg); msn_table_add_msg_type(cbs_table, "text/x-msmsgsinitialemailnotification", initial_email_msg); msn_table_add_msg_type(cbs_table, "text/x-msmsgsemailnotification", email_msg); + /*delete an offline Message notification*/ + msn_table_add_msg_type(cbs_table, + "text/x-msmsgsactivemailnotification", + delete_oim_msg); msn_table_add_msg_type(cbs_table, "application/x-msmsgssystemmessage", system_msg); @@ -1462,3 +2105,4 @@ { msn_table_destroy(cbs_table); } + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/notification.h --- a/libpurple/protocols/msn/notification.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/notification.h Tue Oct 23 17:41:06 2007 +0000 @@ -24,6 +24,14 @@ #ifndef _MSN_NOTIFICATION_H_ #define _MSN_NOTIFICATION_H_ +/*MSN protocol challenge info*/ +/*MSNP13 challenge*/ +#define MSNP13_WLM_PRODUCT_KEY "O4BG@C7BWLYQX?5G" +#define MSNP13_WLM_PRODUCT_ID "PROD01065C%ZFN6F" + +#define MSNP10_PRODUCT_KEY "VT6PX?UQTM4WM%YR" +#define MSNP10_PRODUCT_ID "PROD0038W!61ZTF9" + typedef struct _MsnNotification MsnNotification; #include "session.h" @@ -40,21 +48,24 @@ }; #include "state.h" +void uum_send_msg(MsnSession *session,MsnMessage *msg); void msn_notification_end(void); void msn_notification_init(void); -void msn_notification_add_buddy(MsnNotification *notification, - const char *list, const char *who, - const char *store_name, int group_id); -void msn_notification_rem_buddy(MsnNotification *notification, - const char *list, const char *who, - int group_id); +void msn_notification_add_buddy_to_list(MsnNotification *notification, + MsnListId list_id, const char *who); +void msn_notification_rem_buddy_from_list(MsnNotification *notification, + MsnListId list_id, const char *who); + +void msn_notification_send_fqy(MsnSession *session, const char *passport); + MsnNotification *msn_notification_new(MsnSession *session); void msn_notification_destroy(MsnNotification *notification); gboolean msn_notification_connect(MsnNotification *notification, - const char *host, int port); + const char *host, int port); void msn_notification_disconnect(MsnNotification *notification); +void msn_notification_dump_contact(MsnSession *session); /** * Closes a notification. diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/object.c --- a/libpurple/protocols/msn/object.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/object.c Tue Oct 23 17:41:06 2007 +0000 @@ -154,10 +154,8 @@ { g_return_if_fail(obj != NULL); - if (obj->creator != NULL) - g_free(obj->creator); - - obj->creator = (creator == NULL ? NULL : g_strdup(creator)); + g_free(obj->creator); + obj->creator = g_strdup(creator); } void @@ -181,10 +179,8 @@ { g_return_if_fail(obj != NULL); - if (obj->location != NULL) - g_free(obj->location); - - obj->location = (location == NULL ? NULL : g_strdup(location)); + g_free(obj->location); + obj->location = g_strdup(location); } void @@ -192,10 +188,8 @@ { g_return_if_fail(obj != NULL); - if (obj->friendly != NULL) - g_free(obj->friendly); - - obj->friendly = (friendly == NULL ? NULL : g_strdup(friendly)); + g_free(obj->friendly); + obj->friendly = g_strdup(friendly); } void @@ -203,10 +197,8 @@ { g_return_if_fail(obj != NULL); - if (obj->sha1d != NULL) - g_free(obj->sha1d); - - obj->sha1d = (sha1d == NULL ? NULL : g_strdup(sha1d)); + g_free(obj->sha1d); + obj->sha1d = g_strdup(sha1d); } void @@ -214,10 +206,8 @@ { g_return_if_fail(obj != NULL); - if (obj->sha1c != NULL) - g_free(obj->sha1c); - - obj->sha1c = (sha1c == NULL ? NULL : g_strdup(sha1c)); + g_free(obj->sha1c); + obj->sha1c = g_strdup(sha1c); } const char * diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/oim.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/oim.c Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,719 @@ +/** + * @file oim.c + * get and send MSN offline Instant Message via SOAP request + * Author + * MaYuan + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "msn.h" +#include "soap.h" +#include "oim.h" +#include "msnutils.h" + +/*Local Function Prototype*/ +static void msn_oim_post_single_get_msg(MsnOim *oim,const char *msgid); +static MsnOimSendReq *msn_oim_new_send_req(const char *from_member, + const char *friendname, + const char* to_member, + gint send_seq, + const char *msg); +static void msn_oim_retrieve_connect_init(MsnSoapConn *soapconn); +static void msn_oim_send_connect_init(MsnSoapConn *soapconn); +static void msn_oim_free_send_req(MsnOimSendReq *req); +static void msn_oim_report_to_user(MsnOim *oim, const char *msg_str); +static void msn_oim_get_process(MsnOim *oim, const char *oim_msg); +static gchar *msn_oim_msg_to_str(MsnOim *oim, const char *body); +static void msn_oim_send_process(MsnOim *oim, const char *body, int len); + +/*new a OIM object*/ +MsnOim * +msn_oim_new(MsnSession *session) +{ + MsnOim *oim; + + oim = g_new0(MsnOim, 1); + oim->session = session; + oim->retrieveconn = msn_soap_new(session, oim, TRUE); + + oim->oim_list = NULL; + oim->sendconn = msn_soap_new(session, oim, TRUE); + oim->run_id = rand_guid(); + oim->challenge = NULL; + oim->send_queue = g_queue_new(); + oim->send_seq = 1; + return oim; +} + +/*destroy the oim object*/ +void +msn_oim_destroy(MsnOim *oim) +{ + MsnOimSendReq *request; + + purple_debug_info("OIM","destroy the OIM \n"); + msn_soap_destroy(oim->retrieveconn); + msn_soap_destroy(oim->sendconn); + g_free(oim->run_id); + g_free(oim->challenge); + + while((request = g_queue_pop_head(oim->send_queue)) != NULL){ + msn_oim_free_send_req(request); + } + g_queue_free(oim->send_queue); + + g_free(oim); +} + +static MsnOimSendReq * +msn_oim_new_send_req(const char *from_member, const char*friendname, + const char* to_member, gint send_seq, + const char *msg) +{ + MsnOimSendReq *request; + + request = g_new0(MsnOimSendReq, 1); + request->from_member =g_strdup(from_member); + request->friendname = g_strdup(friendname); + request->to_member = g_strdup(to_member); + request->send_seq = send_seq; + request->oim_msg = g_strdup(msg); + return request; +} + +static void +msn_oim_free_send_req(MsnOimSendReq *req) +{ + g_return_if_fail(req != NULL); + + g_free(req->from_member); + g_free(req->friendname); + g_free(req->to_member); + g_free(req->oim_msg); + + g_free(req); +} + +/**************************************** + * OIM send SOAP request + * **************************************/ +/*encode the message to OIM Message Format*/ +static gchar * +msn_oim_msg_to_str(MsnOim *oim, const char *body) +{ + char *oim_body,*oim_base64; + + purple_debug_info("MSN OIM","encode OIM Message...\n"); + oim_base64 = purple_base64_encode((const guchar *)body, strlen(body)); + purple_debug_info("MSN OIM","encoded base64 body:{%s}\n",oim_base64); + oim_body = g_strdup_printf(MSN_OIM_MSG_TEMPLATE, + oim->run_id,oim->send_seq,oim_base64); + g_free(oim_base64); + + return oim_body; +} + +/*oim SOAP server login error*/ +static void +msn_oim_send_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error) +{ + MsnSession *session; + + session = soapconn->session; + g_return_if_fail(session != NULL); + + msn_session_set_error(session, MSN_ERROR_SERV_DOWN, _("Unable to connect to OIM server")); +} + +/*msn oim SOAP server connect process*/ +static gboolean +msn_oim_send_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc) +{ + MsnSession * session; + MsnOim *oim; + + oim = soapconn->parent; + g_return_val_if_fail(oim != NULL, TRUE); + + session = oim->session; + g_return_val_if_fail(session != NULL, FALSE); + + return TRUE; +} + +/* + * Process the send return SOAP string + * If got SOAP Fault,get the lock key,and resend it. + */ +static void +msn_oim_send_process(MsnOim *oim, const char *body, int len) +{ + xmlnode *responseNode, *bodyNode; + xmlnode *faultNode = NULL, *faultCodeNode, *faultstringNode; + xmlnode *detailNode, *challengeNode; + char *fault_code, *fault_text; + + responseNode = xmlnode_from_str(body,len); + + g_return_if_fail(responseNode != NULL); + + if ((bodyNode = xmlnode_get_child(responseNode, "Body"))) + faultNode = xmlnode_get_child(bodyNode, "Fault"); + + if (faultNode == NULL) { + /*Send OK! return*/ + MsnOimSendReq *request; + + xmlnode_free(responseNode); + request = g_queue_pop_head(oim->send_queue); + msn_oim_free_send_req(request); + /*send next buffered Offline Message*/ + msn_soap_post(oim->sendconn, NULL); + + return; + } + + /*get the challenge,and repost it*/ + if (faultNode) + faultCodeNode = xmlnode_get_child(faultNode, "faultcode"); + + if(faultCodeNode == NULL){ + purple_debug_info("MSN OIM", "No faultcode for failed Offline Message.\n"); + xmlnode_free(responseNode); + return; + } + + fault_code = xmlnode_get_data(faultCodeNode); +#if 0 + if(!strcmp(fault_code,"q0:AuthenticationFailed")){ + /*other Fault Reason?*/ + goto oim_send_process_fail; + } +#endif + + faultstringNode = xmlnode_get_child(faultNode, "faultstring"); + fault_text = xmlnode_get_data(faultstringNode); + purple_debug_info("MSN OIM", "Error sending Offline Message: %s (%s)\n", + fault_text ? fault_text : "(null)", fault_code ? fault_code : "(null)"); + + /* lock key fault reason, + * compute the challenge and resend it + */ + if ((detailNode = xmlnode_get_child(faultNode, "detail")) + && (challengeNode = xmlnode_get_child(detailNode, "LockKeyChallenge"))) { + g_free(oim->challenge); + oim->challenge = xmlnode_get_data(challengeNode); + + purple_debug_info("MSN OIM", "Retrying Offline IM with lockkey:{%s}\n", + oim->challenge ? oim->challenge : "(null)"); + + /*repost the send*/ + msn_oim_send_msg(oim); + + /* XXX: This needs to give up eventually (1 retry, maybe?) */ + } + + g_free(fault_text); + g_free(fault_code); + xmlnode_free(responseNode); +} + +static gboolean +msn_oim_send_read_cb(MsnSoapConn *soapconn) +{ + MsnSession *session = soapconn->session; + MsnOim * oim; + + if (soapconn->body == NULL) + return TRUE; + + g_return_val_if_fail(session != NULL, FALSE); + oim = soapconn->session->oim; + g_return_val_if_fail(oim != NULL, TRUE); + + purple_debug_info("MSN OIM","read buffer:{%s}\n", soapconn->body); + msn_oim_send_process(oim,soapconn->body,soapconn->body_len); + + return TRUE; +} + +static void +msn_oim_send_written_cb(MsnSoapConn *soapconn) +{ + soapconn->read_cb = msn_oim_send_read_cb; +// msn_soap_read_cb(data,source,cond); +} + +void +msn_oim_prep_send_msg_info(MsnOim *oim, const char *membername, + const char* friendname, const char *tomember, + const char * msg) +{ + MsnOimSendReq *request; + + g_return_if_fail(oim != NULL); + + request = msn_oim_new_send_req(membername,friendname,tomember,oim->send_seq,msg); + g_queue_push_tail(oim->send_queue,request); +} + +/*post send single message request to oim server*/ +void +msn_oim_send_msg(MsnOim *oim) +{ + MsnSoapReq *soap_request; + MsnOimSendReq *oim_request; + char *soap_body,*mspauth; + gchar *msg_body; + char buf[33]; + + g_return_if_fail(oim != NULL); + oim_request = g_queue_pop_head(oim->send_queue); + g_return_if_fail(oim_request != NULL); + + purple_debug_info("MSN OIM","send single OIM Message\n"); + mspauth = g_strdup_printf("t=%s&p=%s", + oim->session->passport_info.t, + oim->session->passport_info.p + ); + g_queue_push_head(oim->send_queue,oim_request); + + /* if we got the challenge lock key, we compute it + * else we go for the SOAP fault and resend it. + */ + if(oim->challenge != NULL){ + msn_handle_chl(oim->challenge, buf); + }else{ + purple_debug_info("MSN OIM","no lock key challenge,wait for SOAP Fault and Resend\n"); + buf[0]='\0'; + } + purple_debug_info("MSN OIM","get the lock key challenge {%s}\n",buf); + + msg_body = msn_oim_msg_to_str(oim, oim_request->oim_msg); + soap_body = g_strdup_printf(MSN_OIM_SEND_TEMPLATE, + oim_request->from_member, + oim_request->friendname, + oim_request->to_member, + mspauth, + MSNP13_WLM_PRODUCT_ID, + buf, + oim_request->send_seq, + msg_body); + + soap_request = msn_soap_request_new(MSN_OIM_SEND_HOST, + MSN_OIM_SEND_URL, + MSN_OIM_SEND_SOAP_ACTION, + soap_body, + NULL, + msn_oim_send_read_cb, + msn_oim_send_written_cb, + msn_oim_send_connect_init); + g_free(mspauth); + g_free(msg_body); + g_free(soap_body); + + /*increase the offline Sequence control*/ + if(oim->challenge != NULL){ + oim->send_seq++; + } + msn_soap_post(oim->sendconn,soap_request); +} + +/**************************************** + * OIM delete SOAP request + * **************************************/ +static gboolean +msn_oim_delete_read_cb(MsnSoapConn *soapconn) +{ + if (soapconn->body == NULL) + return TRUE; + purple_debug_info("MSN OIM","OIM delete read buffer:{%s}\n",soapconn->body); + + msn_soap_free_read_buf(soapconn); + /*get next single Offline Message*/ +// msn_soap_post(soapconn,NULL); /* we already do this in soap.c */ + return TRUE; +} + +static void +msn_oim_delete_written_cb(MsnSoapConn *soapconn) +{ + soapconn->read_cb = msn_oim_delete_read_cb; +} + +/*Post to get the Offline Instant Message*/ +static void +msn_oim_post_delete_msg(MsnOim *oim,const char *msgid) +{ + MsnSoapReq *soap_request; + gchar *soap_body; + const char *t,*p; + + g_return_if_fail(oim != NULL); + g_return_if_fail(msgid != NULL); + + purple_debug_info("MSN OIM","Delete single OIM Message {%s}\n",msgid); + t = oim->session->passport_info.t; + p = oim->session->passport_info.p; + + soap_body = g_strdup_printf(MSN_OIM_DEL_TEMPLATE, + t, + p, + msgid + ); + soap_request = msn_soap_request_new(MSN_OIM_RETRIEVE_HOST, + MSN_OIM_RETRIEVE_URL, + MSN_OIM_DEL_SOAP_ACTION, + soap_body, + NULL, + msn_oim_delete_read_cb, + msn_oim_delete_written_cb, + msn_oim_retrieve_connect_init); + g_free(soap_body); + msn_soap_post(oim->retrieveconn,soap_request); +} + +/**************************************** + * OIM get SOAP request + * **************************************/ +/*oim SOAP server login error*/ +static void +msn_oim_get_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error) +{ + MsnSession *session; + + session = soapconn->session; + g_return_if_fail(session != NULL); + msn_soap_clean_unhandled_requests(soapconn); + +// msn_session_set_error(session, MSN_ERROR_SERV_DOWN, _("Unable to connect to OIM server")); +} + +/*msn oim SOAP server connect process*/ +static gboolean +msn_oim_get_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc) +{ + MsnSession * session; + MsnOim *oim; + + oim = soapconn->parent; + g_return_val_if_fail(oim != NULL, TRUE); + + session = oim->session; + g_return_val_if_fail(session != NULL, FALSE); + + purple_debug_info("MSN OIM","Connected and ready to get OIM!\n"); + + return TRUE; +} + +/* like purple_str_to_time, but different. The format of the timestamp + * is like this: 5 Sep 2007 21:42:12 -0700 */ +static time_t +msn_oim_parse_timestamp(const char *timestamp) +{ + char month_str[4], tz_str[6]; + char *tz_ptr = tz_str; + static const char *months[] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL + }; + struct tm t; + memset(&t, 0, sizeof(t)); + + if (sscanf(timestamp, "%02d %03s %04d %02d:%02d:%02d %05s", + &t.tm_mday, month_str, &t.tm_year, + &t.tm_hour, &t.tm_min, &t.tm_sec, tz_str) == 7) { + gboolean offset_positive = TRUE; + int tzhrs; + int tzmins; + + for (t.tm_mon = 0; + months[t.tm_mon] != NULL && + strcmp(months[t.tm_mon], month_str) != 0; t.tm_mon++); + if (months[t.tm_mon] != NULL) { + if (*tz_str == '-') { + offset_positive = FALSE; + tz_ptr++; + } else if (*tz_str == '+') { + tz_ptr++; + } + + if (sscanf(tz_ptr, "%02d%02d", &tzhrs, &tzmins) == 2) { + time_t tzoff = tzhrs * 60 * 60 + tzmins * 60; +#ifdef _WIN32 + long sys_tzoff; +#endif + + if (!offset_positive) + tzoff *= -1; + + t.tm_year -= 1900; + t.tm_isdst = 0; + +#ifdef _WIN32 + if ((sys_tzoff = wpurple_get_tz_offset()) != -1) + tzoff += sys_tzoff; +#else +#ifdef HAVE_TM_GMTOFF + tzoff += t.tm_gmtoff; +#else +# ifdef HAVE_TIMEZONE + tzset(); /* making sure */ + tzoff -= timezone; +# endif +#endif +#endif /* _WIN32 */ + + return mktime(&t) + tzoff; + } + } + } + + purple_debug_info("MSN OIM:OIM", "Can't parse timestamp %s\n", timestamp); + return time(NULL); +} + +/*Post the Offline Instant Message to User Conversation*/ +static void +msn_oim_report_to_user(MsnOim *oim, const char *msg_str) +{ + MsnMessage *message; + char *date,*from,*decode_msg; + gsize body_len; + char **tokens; + char *start,*end; + int has_nick = 0; + char *passport_str, *passport; + char *msg_id; + time_t stamp; + + message = msn_message_new(MSN_MSG_UNKNOWN); + + msn_message_parse_payload(message, msg_str, strlen(msg_str), + MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM); + purple_debug_info("MSN OIM","oim body:{%s}\n",message->body); + decode_msg = (char *)purple_base64_decode(message->body,&body_len); + date = (char *)g_hash_table_lookup(message->attr_table, "Date"); + from = (char *)g_hash_table_lookup(message->attr_table, "From"); + if(strstr(from," ")){ + has_nick = 1; + } + if(has_nick){ + tokens = g_strsplit(from , " " , 2); + passport_str = g_strdup(tokens[1]); + purple_debug_info("MSN OIM","oim Date:{%s},nickname:{%s},tokens[1]:{%s} passport{%s}\n", + date,tokens[0],tokens[1],passport_str); + g_strfreev(tokens); + }else{ + passport_str = g_strdup(from); + purple_debug_info("MSN OIM","oim Date:{%s},passport{%s}\n", + date,passport_str); + } + start = strstr(passport_str,"<"); + start += 1; + end = strstr(passport_str,">"); + passport = g_strndup(start,end - start); + g_free(passport_str); + purple_debug_info("MSN OIM","oim Date:{%s},passport{%s}\n",date,passport); + + stamp = msn_oim_parse_timestamp(date); + + serv_got_im(oim->session->account->gc, passport, decode_msg, 0, stamp); + + /*Now get the oim message ID from the oim_list. + * and append to read list to prepare for deleting the Offline Message when sign out + */ + if(oim->oim_list != NULL){ + msg_id = oim->oim_list->data; + msn_oim_post_delete_msg(oim,msg_id); + oim->oim_list = g_list_remove(oim->oim_list, oim->oim_list->data); + g_free(msg_id); + } + + g_free(passport); +} + +/* Parse the XML data, + * prepare to report the OIM to user + */ +static void +msn_oim_get_process(MsnOim *oim, const char *oim_msg) +{ + xmlnode *oim_node,*bodyNode,*responseNode,*msgNode; + char *msg_str; + + oim_node = xmlnode_from_str(oim_msg, strlen(oim_msg)); + bodyNode = xmlnode_get_child(oim_node,"Body"); + responseNode = xmlnode_get_child(bodyNode,"GetMessageResponse"); + msgNode = xmlnode_get_child(responseNode,"GetMessageResult"); + msg_str = xmlnode_get_data(msgNode); + purple_debug_info("OIM","msg:{%s}\n",msg_str); + msn_oim_report_to_user(oim,msg_str); + + g_free(msg_str); + xmlnode_free(oim_node); +} + +static gboolean +msn_oim_get_read_cb(MsnSoapConn *soapconn) +{ + MsnOim * oim = soapconn->session->oim; + + if (soapconn->body == NULL) + return TRUE; + + purple_debug_info("MSN OIM","OIM get read buffer:{%s}\n",soapconn->body); + + /*we need to process the read message!*/ + msn_oim_get_process(oim,soapconn->body); + msn_soap_free_read_buf(soapconn); + + /*get next single Offline Message*/ +// msn_soap_post(soapconn,NULL); /* we already do this in soap.c */ + return TRUE; +} + +static void +msn_oim_get_written_cb(MsnSoapConn *soapconn) +{ + soapconn->read_cb = msn_oim_get_read_cb; +// msn_soap_read_cb(data,source,cond); +} + +/* parse the oim XML data + * and post it to the soap server to get the Offline Message + * */ +void +msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg) +{ + xmlnode *node, *mNode,*ENode,*INode,*rtNode,*nNode; + char *passport,*msgid,*nickname, *unread, *rTime = NULL; + MsnSession *session = oim->session; + + purple_debug_info("MSN OIM:OIM", "%s", xmlmsg); + + node = xmlnode_from_str(xmlmsg, strlen(xmlmsg)); + if (!node || !node->name || strcmp(node->name, "MD") != 0) { + if (node) + xmlnode_free(node); + return; + } + + ENode = xmlnode_get_child(node, "E"); + INode = xmlnode_get_child(ENode, "IU"); + unread = xmlnode_get_data(INode); + + if (unread != NULL && purple_account_get_check_mail(session->account)) + { + int count = atoi(unread); + + if (count > 0) + { + const char *passport; + const char *url; + + passport = msn_user_get_passport(session->user); + url = session->passport_info.file; + + purple_notify_emails(session->account->gc, atoi(unread), FALSE, NULL, NULL, + &passport, &url, NULL, NULL); + } + } + + for(mNode = xmlnode_get_child(node, "M"); mNode; + mNode = xmlnode_get_next_twin(mNode)){ + /*email Node*/ + ENode = xmlnode_get_child(mNode,"E"); + passport = xmlnode_get_data(ENode); + /*Index */ + INode = xmlnode_get_child(mNode,"I"); + msgid = xmlnode_get_data(INode); + /*Nickname*/ + nNode = xmlnode_get_child(mNode,"N"); + nickname = xmlnode_get_data(nNode); + /*receive time*/ + rtNode = xmlnode_get_child(mNode,"RT"); + if(rtNode != NULL) + rTime = xmlnode_get_data(rtNode); +/* purple_debug_info("MSN OIM","E:{%s},I:{%s},rTime:{%s}\n",passport,msgid,rTime); */ + + oim->oim_list = g_list_append(oim->oim_list,strdup(msgid)); + msn_oim_post_single_get_msg(oim,msgid); + g_free(passport); + g_free(msgid); + g_free(rTime); + rTime = NULL; + g_free(nickname); + } + g_free(unread); + xmlnode_free(node); +} + +/*Post to get the Offline Instant Message*/ +static void +msn_oim_post_single_get_msg(MsnOim *oim,const char *msgid) +{ + MsnSoapReq *soap_request; + gchar *soap_body; + const char *t,*p; + + purple_debug_info("MSN OIM","Get single OIM Message\n"); + t = oim->session->passport_info.t; + p = oim->session->passport_info.p; + + soap_body = g_strdup_printf(MSN_OIM_GET_TEMPLATE, + t, + p, + msgid + ); + soap_request = msn_soap_request_new(MSN_OIM_RETRIEVE_HOST, + MSN_OIM_RETRIEVE_URL, + MSN_OIM_GET_SOAP_ACTION, + soap_body, + NULL, + msn_oim_get_read_cb, + msn_oim_get_written_cb, + msn_oim_retrieve_connect_init); + g_free(soap_body); + msn_soap_post(oim->retrieveconn,soap_request); +} + +/*msn oim retrieve server connect init */ +static void +msn_oim_retrieve_connect_init(MsnSoapConn *soapconn) +{ + purple_debug_info("MSN OIM","Initializing OIM retrieve connection\n"); + msn_soap_init(soapconn, MSN_OIM_RETRIEVE_HOST, TRUE, + msn_oim_get_connect_cb, + msn_oim_get_error_cb); +} + +/*Msn OIM Send Server Connect Init Function*/ +static void +msn_oim_send_connect_init(MsnSoapConn *sendconn) +{ + purple_debug_info("MSN OIM","Initializing OIM send connection\n"); + msn_soap_init(sendconn, MSN_OIM_SEND_HOST, TRUE, + msn_oim_send_connect_cb, + msn_oim_send_error_cb); +} + +/* EOF oim.c*/ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/oim.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/oim.h Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,148 @@ +/** + * @file oim.h Header file for oim.c + * Author + * MaYuan + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef _MSN_OIM_H_ +#define _MSN_OIM_H_ + +/*OIM Retrieve SOAP Template*/ +#define MSN_OIM_RETRIEVE_HOST "rsi.hotmail.com" +#define MSN_OIM_RETRIEVE_URL "/rsi/rsi.asmx" +#define MSN_OIM_GET_SOAP_ACTION "http://www.hotmail.msn.com/ws/2004/09/oim/rsi/GetMessage" + +#define MSN_OIM_GET_TEMPLATE ""\ +""\ + ""\ + ""\ + "%s"\ + "

%s

"\ + "
"\ + "
"\ + ""\ + ""\ + "%s"\ + "false"\ + ""\ + ""\ +"
" + +/*OIM Delete SOAP Template*/ +#define MSN_OIM_DEL_SOAP_ACTION "http://www.hotmail.msn.com/ws/2004/09/oim/rsi/DeleteMessages" + +#define MSN_OIM_DEL_TEMPLATE ""\ +""\ + ""\ + ""\ + "%s"\ + "

%s

"\ + "
"\ + "
"\ + ""\ + ""\ + ""\ + "%s"\ + ""\ + ""\ + ""\ +"
" + +/*OIM Send SOAP Template*/ +#define MSN_OIM_MSG_TEMPLATE "MIME-Version: 1.0\n"\ + "Content-Type: text/plain; charset=UTF-8\n"\ + "Content-Transfer-Encoding: base64\n"\ + "X-OIM-Message-Type: OfflineMessage\n"\ + "X-OIM-Run-Id: {%s}\n"\ + "X-OIM-Sequence-Num: %d\n\n"\ + "%s" + +#define MSN_OIM_SEND_HOST "ows.messenger.msn.com" +#define MSN_OIM_SEND_URL "/OimWS/oim.asmx" +#define MSN_OIM_SEND_SOAP_ACTION "http://messenger.msn.com/ws/2004/09/oim/Store" +#define MSN_OIM_SEND_TEMPLATE ""\ +""\ + ""\ + ""\ + ""\ + ""\ + ""\ + "http://messenger.msn.com"\ + "%d"\ + ""\ + ""\ + ""\ + "text"\ + "%s"\ + ""\ +"" + +typedef struct _MsnOimSendReq MsnOimSendReq; + +struct _MsnOimSendReq +{ + char *from_member; + char *friendname; + char *to_member; + char *oim_msg; + gint send_seq; +}; + +typedef struct _MsnOim MsnOim; + +struct _MsnOim +{ + MsnSession *session; + + MsnSoapConn *retrieveconn; + GList * oim_list; + + MsnSoapConn *sendconn; + char *challenge; + char *run_id; + gint send_seq; + GQueue *send_queue; +}; + +/**************************************************** + * function prototype + * **************************************************/ +MsnOim * msn_oim_new(MsnSession *session); +void msn_oim_destroy(MsnOim *oim); +void msn_oim_connect(MsnOim *oim); + +void msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg); + +/*Send OIM Message*/ +void msn_oim_prep_send_msg_info(MsnOim *oim, const char *membername, + const char *friendname, const char *tomember, + const char * msg); + +void msn_oim_send_msg(MsnOim *oim); + +/*get the OIM message*/ +void msn_oim_get_msg(MsnOim *oim); + +/*report the oim message to the conversation*/ +void msn_oim_report_user(MsnOim *oim,const char *passport,char *msg); + +#endif/* _MSN_OIM_H_*/ +/*endof oim.h*/ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/page.c --- a/libpurple/protocols/msn/page.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/page.c Tue Oct 23 17:41:06 2007 +0000 @@ -74,9 +74,7 @@ g_return_if_fail(page != NULL); g_return_if_fail(body != NULL); - if (page->body != NULL) - g_free(page->body); - + g_free(page->body); page->body = g_strdup(body); } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/servconn.c --- a/libpurple/protocols/msn/servconn.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/servconn.c Tue Oct 23 17:41:06 2007 +0000 @@ -168,7 +168,7 @@ **************************************************************************/ static void -connect_cb(gpointer data, gint source, const gchar *error_message) +connect_cb(gpointer data, gint source, const char *error_message) { MsnServConn *servconn; @@ -245,7 +245,9 @@ return TRUE; } else + { return FALSE; + } } void @@ -390,14 +392,21 @@ len = read(servconn->fd, buf, sizeof(buf) - 1); - if (len < 0 && errno == EAGAIN) - return; - else if (len <= 0) - { - purple_debug_error("msn", "servconn read error, len: %d error: %s\n", len, strerror(errno)); - msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ); + if (len <= 0) { + switch (errno) { + + case 0: - return; + case EBADF: + case EAGAIN: return; + + default: purple_debug_error("msn", "servconn read error," + "len: %d, errno: %d, error: %s\n", + len, errno, strerror(errno)); + msn_servconn_got_error(servconn, + MSN_SERVCONN_ERROR_READ); + return; + } } buf[len] = '\0'; @@ -446,6 +455,7 @@ else { msn_cmdproc_process_cmd_text(servconn->cmdproc, cur); + servconn->payload_len = servconn->cmdproc->last_cmd->payload_len; } } while (servconn->connected && !servconn->wasted && servconn->rx_len > 0); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/session.c --- a/libpurple/protocols/msn/session.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/session.c Tue Oct 23 17:41:06 2007 +0000 @@ -43,7 +43,9 @@ session->user = msn_user_new(session->userlist, purple_account_get_username(account), NULL); - session->protocol_ver = 9; + /*if you want to chat with Yahoo Messenger*/ + //session->protocol_ver = WLM_YAHOO_PROT_VER; + session->protocol_ver = WLM_PROT_VER; session->conv_seq = 1; return session; @@ -70,6 +72,8 @@ msn_userlist_destroy(session->userlist); + g_free(session->passport_info.t); + g_free(session->passport_info.p); g_free(session->passport_info.kv); g_free(session->passport_info.sid); g_free(session->passport_info.mspauth); @@ -87,6 +91,11 @@ if (session->nexus != NULL) msn_nexus_destroy(session->nexus); + if (session->contact != NULL) + msn_contact_destroy(session->contact); + if (session->oim != NULL) + msn_oim_destroy(session->oim); + if (session->user != NULL) msn_user_destroy(session->user); @@ -121,7 +130,9 @@ msn_session_disconnect(MsnSession *session) { g_return_if_fail(session != NULL); - g_return_if_fail(session->connected); + + if (!session->connected) + return; session->connected = FALSE; @@ -154,6 +165,37 @@ return NULL; } +static PurpleConversation * +msn_session_get_conv(MsnSession *session,const char *passport) +{ + PurpleAccount *account; + PurpleConversation * conv; + + g_return_val_if_fail(session != NULL, NULL); + account = session->account; + + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, + passport, account); + if(conv == NULL){ + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, passport); + } + return conv; +} + +/* put Message to User Conversation + * + * passport - the one want to talk to you + */ +void +msn_session_report_user(MsnSession *session,const char *passport,char *msg,PurpleMessageFlags flags) +{ + PurpleConversation * conv; + + if ((conv = msn_session_get_conv(session,passport)) != NULL){ + purple_conversation_write(conv, NULL, msg, flags, time(NULL)); + } +} + MsnSwitchBoard * msn_session_find_swboard_with_conv(MsnSession *session, PurpleConversation *conv) { @@ -229,13 +271,14 @@ /* The core used to use msn_add_buddy to add all buddies before * being logged in. This no longer happens, so we manually iterate - * over the whole buddy list to identify sync issues. */ - - for (gnode = purple_blist_get_root(); gnode; gnode = gnode->next) { + * over the whole buddy list to identify sync issues. + */ + for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { PurpleGroup *group = (PurpleGroup *)gnode; - const char *group_name = group->name; + const char *group_name; if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue; + group_name = group->name; for(cnode = gnode->child; cnode; cnode = cnode->next) { if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; @@ -252,21 +295,17 @@ if ((remote_user != NULL) && (remote_user->list_op & MSN_LIST_FL_OP)) { - int group_id; GList *l; - group_id = msn_userlist_find_group_id(remote_user->userlist, - group_name); - for (l = remote_user->group_ids; l != NULL; l = l->next) { - if (group_id == GPOINTER_TO_INT(l->data)) + const char *name = msn_userlist_find_group_name(remote_user->userlist, l->data); + if (name && !g_strcasecmp(group_name, name)) { found = TRUE; break; } } - } if (!found) @@ -305,6 +344,8 @@ case MSN_ERROR_SIGN_OTHER: gc->wants_to_die = TRUE; msg = g_strdup(_("You have signed on from another location.")); + if (!purple_account_get_remember_password(session->account)) + purple_account_set_password(session->account, NULL); break; case MSN_ERROR_SERV_UNAVAILABLE: msg = g_strdup(_("The MSN servers are temporarily " @@ -419,3 +460,4 @@ msn_cmdproc_send(session->notification->cmdproc, "URL", "%s", "INBOX"); } } + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/session.h --- a/libpurple/protocols/msn/session.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/session.h Tue Oct 23 17:41:06 2007 +0000 @@ -38,6 +38,8 @@ #include "cmdproc.h" #include "nexus.h" #include "httpconn.h" +#include "contact.h" +#include "oim.h" #include "userlist.h" #include "sync.h" @@ -94,6 +96,8 @@ MsnNotification *notification; MsnNexus *nexus; + MsnContact *contact; + MsnOim *oim; MsnSync *sync; MsnUserList *userlist; @@ -105,8 +109,15 @@ int conv_seq; /**< The current conversation sequence number. */ + /*psm info*/ + char *psm; + struct { + /*t and p, get via USR TWN*/ + char *t; + char *p; + char *kv; char *sid; char *mspauth; @@ -114,7 +125,6 @@ char *file; char *client_ip; int client_port; - } passport_info; }; @@ -224,4 +234,8 @@ */ void msn_session_finish_login(MsnSession *session); +/*post message to User*/ +void msn_session_report_user(MsnSession *session,const char *passport, + char *msg,PurpleMessageFlags flags); + #endif /* _MSN_SESSION_H_ */ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/slp.c Tue Oct 23 17:41:06 2007 +0000 @@ -33,6 +33,8 @@ /* ms to delay between sending buddy icon requests to the server. */ #define BUDDY_ICON_DELAY 20000 +/*debug SLP*/ +#define MSN_DEBUG_UD static void send_ok(MsnSlpCall *slpcall, const char *branch, const char *type, const char *content); @@ -503,6 +505,9 @@ int port; nonce = get_token(content, "Nonce: {", "}\r\n"); + if (ip_addrs == NULL) + return; + ip_addrs = get_token(content, "IPv4Internal-Addrs: ", "\r\n"); temp = get_token(content, "IPv4Internal-Port: ", "\r\n"); @@ -512,9 +517,6 @@ port = -1; g_free(temp); - if (ip_addrs == NULL) - return; - if (port > 0) got_transresp(slpcall, nonce, ip_addrs, port); @@ -596,6 +598,9 @@ int port; nonce = get_token(content, "Nonce: {", "}\r\n"); + if (ip_addrs == NULL) + return; + ip_addrs = get_token(content, "IPv4Internal-Addrs: ", "\r\n"); temp = get_token(content, "IPv4Internal-Port: ", "\r\n"); @@ -605,9 +610,6 @@ port = -1; g_free(temp); - if (ip_addrs == NULL) - return; - if (port > 0) got_transresp(slpcall, nonce, ip_addrs, port); @@ -777,11 +779,11 @@ if ((conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, who, gc->account))) { /* FIXME: it would be better if we wrote the data as we received it - instead of all at once, calling write multiple times and - close once at the very end - */ + instead of all at once, calling write multiple times and + close once at the very end + */ purple_conv_custom_smiley_write(conv, slpcall->data_info, data, size); - purple_conv_custom_smiley_close(conv, slpcall->data_info); + purple_conv_custom_smiley_close(conv, slpcall->data_info ); } #ifdef MSN_DEBUG_UD purple_debug_info("msn", "Got smiley: %s\n", slpcall->data_info); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/slpcall.c --- a/libpurple/protocols/msn/slpcall.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/slpcall.c Tue Oct 23 17:41:06 2007 +0000 @@ -22,6 +22,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ #include "msn.h" +#include "msnutils.h" #include "slpcall.h" #include "slpsession.h" @@ -30,24 +31,6 @@ /* #define MSN_DEBUG_SLPCALL */ /************************************************************************** - * Util - **************************************************************************/ - -static char * -rand_guid() -{ - return g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X", - rand() % 0xAAFF + 0x1111, - rand() % 0xAAFF + 0x1111, - rand() % 0xAAFF + 0x1111, - rand() % 0xAAFF + 0x1111, - rand() % 0xAAFF + 0x1111, - rand() % 0xAAFF + 0x1111, - rand() % 0xAAFF + 0x1111, - rand() % 0xAAFF + 0x1111); -} - -/************************************************************************** * Main **************************************************************************/ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/slplink.c --- a/libpurple/protocols/msn/slplink.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/slplink.c Tue Oct 23 17:41:06 2007 +0000 @@ -112,12 +112,16 @@ if (slplink->remote_user != NULL) g_free(slplink->remote_user); +#if 0 if (slplink->directconn != NULL) msn_directconn_destroy(slplink->directconn); +#endif while (slplink->slp_calls != NULL) msn_slp_call_destroy(slplink->slp_calls->data); + g_queue_free(slplink->slp_msg_queue); + session->slplinks = g_list_remove(session->slplinks, slplink); @@ -244,11 +248,13 @@ void msn_slplink_send_msg(MsnSlpLink *slplink, MsnMessage *msg) { +#if 0 if (slplink->directconn != NULL) { msn_directconn_send_msg(slplink->directconn, msg); } else +#endif { if (slplink->swboard == NULL) { @@ -634,9 +640,10 @@ MsnDirectConn *directconn; directconn = slplink->directconn; - +#if 0 if (!directconn->acked) msn_directconn_send_handshake(directconn); +#endif } else if (slpmsg->flags == 0x0 || slpmsg->flags == 0x20 || slpmsg->flags == 0x1000030) diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/soap.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/soap.c Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,874 @@ +/** + * @file soap.c + * SOAP connection related process + * Author + * MaYuan + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "msn.h" +#include "soap.h" + +#define MSN_SOAP_DEBUG +/*local function prototype*/ +void msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step); + +/*setup the soap process step*/ +void +msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step) +{ +#ifdef MSN_SOAP_DEBUG + const char *MsnSoapStepText[] = + { + "Unconnected", + "Connecting", + "Connected", + "Processing", + "Connected Idle" + }; + + purple_debug_info("MSN SOAP", "Setting SOAP process step to %s\n", MsnSoapStepText[step]); +#endif + soapconn->step = step; +} + +/*new a soap connection*/ +MsnSoapConn * +msn_soap_new(MsnSession *session,gpointer data, gboolean ssl) +{ + MsnSoapConn *soapconn; + + soapconn = g_new0(MsnSoapConn, 1); + soapconn->session = session; + soapconn->parent = data; + soapconn->ssl_conn = ssl; + + soapconn->gsc = NULL; + soapconn->input_handler = 0; + soapconn->output_handler = 0; + + msn_soap_set_process_step(soapconn, MSN_SOAP_UNCONNECTED); + soapconn->soap_queue = g_queue_new(); + + return soapconn; +} + +/*ssl soap connect callback*/ +void +msn_soap_connect_cb(gpointer data, PurpleSslConnection *gsc, + PurpleInputCondition cond) +{ + MsnSoapConn * soapconn; + MsnSession *session; + gboolean soapconn_is_valid = FALSE; + + purple_debug_misc("MSN SOAP","SOAP server connection established!\n"); + + soapconn = data; + g_return_if_fail(soapconn != NULL); + + session = soapconn->session; + g_return_if_fail(session != NULL); + + soapconn->gsc = gsc; + + msn_soap_set_process_step(soapconn, MSN_SOAP_CONNECTED); + + /*connection callback*/ + if (soapconn->connect_cb != NULL) { + soapconn_is_valid = soapconn->connect_cb(soapconn, gsc); + } + + if (!soapconn_is_valid) { + return; + } + + /*we do the SOAP request here*/ + msn_soap_post_head_request(soapconn); +} + +/*ssl soap error callback*/ +static void +msn_soap_error_cb(PurpleSslConnection *gsc, PurpleSslErrorType error, void *data) +{ + MsnSoapConn * soapconn = data; + + g_return_if_fail(data != NULL); + + purple_debug_warning("MSN SOAP","Soap connection error!\n"); + + msn_soap_set_process_step(soapconn, MSN_SOAP_UNCONNECTED); + + /*error callback*/ + if (soapconn->error_cb != NULL) { + soapconn->error_cb(soapconn, gsc, error); + } else { + msn_soap_post(soapconn, NULL); + } +} + +/*init the soap connection*/ +void +msn_soap_init(MsnSoapConn *soapconn,char * host, gboolean ssl, + MsnSoapSslConnectCbFunction connect_cb, + MsnSoapSslErrorCbFunction error_cb) +{ + purple_debug_misc("MSN SOAP","Initializing SOAP connection\n"); + g_free(soapconn->login_host); + soapconn->login_host = g_strdup(host); + soapconn->ssl_conn = ssl; + soapconn->connect_cb = connect_cb; + soapconn->error_cb = error_cb; +} + +/*connect the soap connection*/ +void +msn_soap_connect(MsnSoapConn *soapconn) +{ + if (soapconn->ssl_conn) { + purple_ssl_connect(soapconn->session->account, soapconn->login_host, + PURPLE_SSL_DEFAULT_PORT, msn_soap_connect_cb, msn_soap_error_cb, + soapconn); + } else { + } + + msn_soap_set_process_step(soapconn, MSN_SOAP_CONNECTING); +} + + +static void +msn_soap_close_handler(guint *handler) +{ + if (*handler > 0) { + purple_input_remove(*handler); + *handler = 0; + } +#ifdef MSN_SOAP_DEBUG + else { + purple_debug_misc("MSN SOAP", "Handler inactive, not removing\n"); + } +#endif + +} + + +/*close the soap connection*/ +void +msn_soap_close(MsnSoapConn *soapconn) +{ + if (soapconn->ssl_conn) { + if (soapconn->gsc != NULL) { + purple_ssl_close(soapconn->gsc); + soapconn->gsc = NULL; + } + } else { + } + msn_soap_set_process_step(soapconn, MSN_SOAP_UNCONNECTED); +} + +/*clean the unhandled SOAP request*/ +void +msn_soap_clean_unhandled_requests(MsnSoapConn *soapconn) +{ + MsnSoapReq *request; + + g_return_if_fail(soapconn != NULL); + + soapconn->body = NULL; + + while ((request = g_queue_pop_head(soapconn->soap_queue)) != NULL){ + if (soapconn->read_cb) { + soapconn->read_cb(soapconn); + } + msn_soap_request_free(request); + } +} + +/*destroy the soap connection*/ +void +msn_soap_destroy(MsnSoapConn *soapconn) +{ + g_free(soapconn->login_host); + + g_free(soapconn->login_path); + + /*remove the write handler*/ + if (soapconn->output_handler > 0){ + purple_input_remove(soapconn->output_handler); + soapconn->output_handler = 0; + } + /*remove the read handler*/ + if (soapconn->input_handler > 0){ + purple_input_remove(soapconn->input_handler); + soapconn->input_handler = 0; + } + msn_soap_free_read_buf(soapconn); + msn_soap_free_write_buf(soapconn); + + /*close ssl connection*/ + msn_soap_close(soapconn); + + /*process the unhandled soap request*/ + msn_soap_clean_unhandled_requests(soapconn); + + g_queue_free(soapconn->soap_queue); + g_free(soapconn); +} + +/*check the soap is connected? + * if connected return 1 + */ +int +msn_soap_connected(MsnSoapConn *soapconn) +{ + if (soapconn->ssl_conn) { + return (soapconn->gsc == NULL ? 0 : 1); + } + return (soapconn->fd > 0 ? 1 : 0); +} + +/*read and append the content to the buffer*/ +static gssize +msn_soap_read(MsnSoapConn *soapconn) +{ + gssize len, requested_len; + char temp_buf[MSN_SOAP_READ_BUFF_SIZE]; + + if ( soapconn->need_to_read == 0 || soapconn->need_to_read > MSN_SOAP_READ_BUFF_SIZE) { + requested_len = MSN_SOAP_READ_BUFF_SIZE; + } + else { + requested_len = soapconn->need_to_read; + } + + if ( soapconn->ssl_conn ) { + len = purple_ssl_read(soapconn->gsc, temp_buf, requested_len); + } else { + len = read(soapconn->fd, temp_buf, requested_len); + } + + + if ( len <= 0 ) { + switch (errno) { + + case 0: + case EBADF: /* we are sometimes getting this in Windows */ + case EAGAIN: return len; + + default : purple_debug_error("MSN SOAP", "Read error!" + "read len: %d, error = %s\n", + len, strerror(errno)); + purple_input_remove(soapconn->input_handler); + //soapconn->input_handler = 0; + g_free(soapconn->read_buf); + soapconn->read_buf = NULL; + soapconn->read_len = 0; + /* TODO: error handling */ + return len; + } + } + else { + soapconn->read_buf = g_realloc(soapconn->read_buf, + soapconn->read_len + len + 1); + if ( soapconn->read_buf != NULL ) { + memcpy(soapconn->read_buf + soapconn->read_len, temp_buf, len); + soapconn->read_len += len; + soapconn->read_buf[soapconn->read_len] = '\0'; + } + else { + purple_debug_error("MSN SOAP", "Failure re-allocating %d bytes of memory!\n", soapconn->read_len + len + 1); + exit(EXIT_FAILURE); + } + + } + +#if defined(MSN_SOAP_DEBUG) + if (len > 0) + purple_debug_info("MSN SOAP","Read %d bytes from SOAP server:\n%s\n", len, soapconn->read_buf + soapconn->read_len - len); +#endif + + return len; +} + +/*read the whole SOAP server response*/ +void +msn_soap_read_cb(gpointer data, gint source, PurpleInputCondition cond) +{ + MsnSoapConn *soapconn = data; + MsnSession *session; + int len; + char * body_start,*body_len; + char *length_start,*length_end; +#ifdef MSN_SOAP_DEBUG +#if !defined(_WIN32) + gchar * formattedxml = NULL; + gchar * http_headers = NULL; + xmlnode * node = NULL; +#endif + purple_debug_misc("MSN SOAP", "msn_soap_read_cb()\n"); +#endif + session = soapconn->session; + g_return_if_fail(session != NULL); + + + /*read the request header*/ + len = msn_soap_read(soapconn); + + if ( len < 0 ) + return; + + if (soapconn->read_buf == NULL) { + return; + } + + if ( (strstr(soapconn->read_buf, "HTTP/1.1 302") != NULL) + || ( strstr(soapconn->read_buf, "HTTP/1.1 301") != NULL ) ) + { + /* Redirect. */ + char *location, *c; + + purple_debug_info("MSN SOAP", "HTTP Redirect\n"); + location = strstr(soapconn->read_buf, "Location: "); + if (location == NULL) + { + c = (char *) g_strstr_len(soapconn->read_buf, soapconn->read_len,"\r\n\r\n"); + if (c != NULL) { + /* we have read the whole HTTP headers and found no Location: */ + msn_soap_free_read_buf(soapconn); + msn_soap_post(soapconn, NULL); + } + + return; + } + location = strchr(location, ' ') + 1; + + if ((c = strchr(location, '\r')) != NULL) + *c = '\0'; + else + return; + + /* Skip the http:// */ + if ((c = strchr(location, '/')) != NULL) + location = c + 2; + + if ((c = strchr(location, '/')) != NULL) + { + g_free(soapconn->login_path); + soapconn->login_path = g_strdup(c); + + *c = '\0'; + } + + g_free(soapconn->login_host); + soapconn->login_host = g_strdup(location); + + msn_soap_close_handler( &(soapconn->input_handler) ); + msn_soap_close(soapconn); + + if (purple_ssl_connect(session->account, soapconn->login_host, + PURPLE_SSL_DEFAULT_PORT, msn_soap_connect_cb, + msn_soap_error_cb, soapconn) == NULL) { + + purple_debug_error("MSN SOAP", "Unable to connect to %s !\n", soapconn->login_host); + // dispatch next request + msn_soap_post(soapconn, NULL); + } + } + /* Another case of redirection, active on May, 2007 + See http://msnpiki.msnfanatic.com/index.php/MSNP13:SOAPTweener#Redirect + */ + else if (strstr(soapconn->read_buf, + "psf:Redirect") != NULL) + { + char *location, *c; + + if ( (location = strstr(soapconn->read_buf, "") ) == NULL) + return; + + /* Omit the tag preceding the URL */ + location += strlen(""); + if (location > soapconn->read_buf + soapconn->read_len) + return; + if ( (location = strstr(location, "://")) == NULL) + return; + + location += strlen("://"); /* Skip http:// or https:// */ + + if ( (c = strstr(location, "")) != NULL ) + *c = '\0'; + else + return; + + if ( (c = strstr(location, "/")) != NULL ) + { + g_free(soapconn->login_path); + soapconn->login_path = g_strdup(c); + *c = '\0'; + } + + g_free(soapconn->login_host); + soapconn->login_host = g_strdup(location); + + msn_soap_close_handler( &(soapconn->input_handler) ); + msn_soap_close(soapconn); + + if (purple_ssl_connect(session->account, soapconn->login_host, + PURPLE_SSL_DEFAULT_PORT, msn_soap_connect_cb, + msn_soap_error_cb, soapconn) == NULL) { + + purple_debug_error("MSN SOAP", "Unable to connect to %s !\n", soapconn->login_host); + // dispatch next request + msn_soap_post(soapconn, NULL); + } + } + else if (strstr(soapconn->read_buf, "HTTP/1.1 401 Unauthorized") != NULL) + { + const char *error; + + purple_debug_error("MSN SOAP", "Received HTTP error 401 Unauthorized\n"); + if ((error = strstr(soapconn->read_buf, "WWW-Authenticate")) != NULL) + { + if ((error = strstr(error, "cbtxt=")) != NULL) + { + const char *c; + char *temp; + + error += strlen("cbtxt="); + + if ((c = strchr(error, '\n')) == NULL) + c = error + strlen(error); + + temp = g_strndup(error, c - error); + error = purple_url_decode(temp); + g_free(temp); + } + } + + msn_session_set_error(session, MSN_ERROR_AUTH, error); + } + /* Handle Passport 3.0 authentication failures. + * Further info: http://msnpiki.msnfanatic.com/index.php/MSNP13:SOAPTweener + */ + else if (strstr(soapconn->read_buf, + "wsse:FailedAuthentication") != NULL) + { + gchar *faultstring; + + faultstring = strstr(soapconn->read_buf, ""); + + if (faultstring != NULL) + { + gchar *c; + faultstring += strlen(""); + if (faultstring < soapconn->read_buf + soapconn->read_len) { + c = strstr(soapconn->read_buf, ""); + if (c != NULL) { + *c = '\0'; + msn_session_set_error(session, MSN_ERROR_AUTH, faultstring); + } + } + } + + } + else if (strstr(soapconn->read_buf, "HTTP/1.1 503 Service Unavailable")) + { + msn_session_set_error(session, MSN_ERROR_SERV_UNAVAILABLE, NULL); + } + else if ((strstr(soapconn->read_buf, "HTTP/1.1 200 OK")) + ||(strstr(soapconn->read_buf, "HTTP/1.1 500"))) + { + gboolean soapconn_is_valid = FALSE; + + /*OK! process the SOAP body*/ + body_start = (char *)g_strstr_len(soapconn->read_buf, soapconn->read_len,"\r\n\r\n"); + if (!body_start) { + return; + } + body_start += 4; + + if (body_start > soapconn->read_buf + soapconn->read_len) + return; + + /* we read the content-length*/ + if ( (length_start = g_strstr_len(soapconn->read_buf, soapconn->read_len, "Content-Length: ")) != NULL) + length_start += strlen("Content-Length: "); + + if (length_start > soapconn->read_buf + soapconn->read_len) + return; + + if ( (length_end = strstr(length_start, "\r\n")) == NULL ) + return; + + body_len = g_strndup(length_start, length_end - length_start); + + /*setup the conn body */ + soapconn->body = body_start; + soapconn->body_len = atoi(body_len); + g_free(body_len); +#ifdef MSN_SOAP_DEBUG + purple_debug_misc("MSN SOAP","SOAP bytes read so far: %d, Content-Length: %d\n", soapconn->read_len, soapconn->body_len); +#endif + soapconn->need_to_read = (body_start - soapconn->read_buf + soapconn->body_len) - soapconn->read_len; + if ( soapconn->need_to_read > 0 ) { + return; + } + +#if defined(MSN_SOAP_DEBUG) && !defined(_WIN32) + + node = xmlnode_from_str(soapconn->body, soapconn->body_len); + + if (node != NULL) { + formattedxml = xmlnode_to_formatted_str(node, NULL); + http_headers = g_strndup(soapconn->read_buf, soapconn->body - soapconn->read_buf); + + purple_debug_info("MSN SOAP","Data with XML payload received from the SOAP server:\n%s%s\n", http_headers, formattedxml); + g_free(http_headers); + g_free(formattedxml); + xmlnode_free(node); + } + else + purple_debug_info("MSN SOAP","Data received from the SOAP server:\n%s\n", soapconn->read_buf); +#endif + + /*remove the read handler*/ + msn_soap_close_handler( &(soapconn->input_handler) ); +// purple_input_remove(soapconn->input_handler); +// soapconn->input_handler = 0; + /* + * close the soap connection,if more soap request came, + * Just reconnect to do it, + * + * To solve the problem described below: + * When I post the soap request in one socket one after the other, + * The first read is ok, But the second soap read always got 0 bytes, + * Weird! + * */ + msn_soap_close(soapconn); + + /*call the read callback*/ + if ( soapconn->read_cb != NULL ) { + soapconn_is_valid = soapconn->read_cb(soapconn); + } + + if (!soapconn_is_valid) { + return; + } + + /* dispatch next request in queue */ + msn_soap_post(soapconn, NULL); + } + return; +} + +void +msn_soap_free_read_buf(MsnSoapConn *soapconn) +{ + g_return_if_fail(soapconn != NULL); + + if (soapconn->read_buf) { + g_free(soapconn->read_buf); + } + soapconn->read_buf = NULL; + soapconn->read_len = 0; + soapconn->need_to_read = 0; +} + +void +msn_soap_free_write_buf(MsnSoapConn *soapconn) +{ + g_return_if_fail(soapconn != NULL); + + if (soapconn->write_buf) { + g_free(soapconn->write_buf); + } + soapconn->write_buf = NULL; + soapconn->written_len = 0; +} + +/*Soap write process func*/ +static void +msn_soap_write_cb(gpointer data, gint source, PurpleInputCondition cond) +{ + MsnSoapConn *soapconn = data; + int len, total_len; + + g_return_if_fail(soapconn != NULL); + if ( soapconn->write_buf == NULL ) { + purple_debug_error("MSN SOAP","SOAP write buffer is NULL\n"); + // msn_soap_check_conn_errors(soapconn); + // purple_input_remove(soapconn->output_handler); + // soapconn->output_handler = 0; + msn_soap_close_handler( &(soapconn->output_handler) ); + return; + } + total_len = strlen(soapconn->write_buf); + + /* + * write the content to SSL server, + */ + len = purple_ssl_write(soapconn->gsc, + soapconn->write_buf + soapconn->written_len, + total_len - soapconn->written_len); + + if (len < 0 && errno == EAGAIN) + return; + else if (len <= 0){ + /*SSL write error!*/ +// msn_soap_check_conn_errors(soapconn); + + msn_soap_close_handler( &(soapconn->output_handler) ); +// purple_input_remove(soapconn->output_handler); +// soapconn->output_handler = 0; + + msn_soap_close(soapconn); + + /* TODO: notify of the error */ + purple_debug_error("MSN SOAP", "Error writing to SSL connection!\n"); + msn_soap_post(soapconn, NULL); + return; + } + soapconn->written_len += len; + + if (soapconn->written_len < total_len) + return; + + msn_soap_close_handler( &(soapconn->output_handler) ); +// purple_input_remove(soapconn->output_handler); +// soapconn->output_handler = 0; + + /*clear the write buff*/ + msn_soap_free_write_buf(soapconn); + + /* Write finish! + * callback for write done + */ + if(soapconn->written_cb != NULL){ + soapconn->written_cb(soapconn); + } + /*maybe we need to read the input?*/ + if ( soapconn->input_handler == 0 ) { + soapconn->input_handler = purple_input_add(soapconn->gsc->fd, + PURPLE_INPUT_READ, msn_soap_read_cb, soapconn); + } +} + +/*write the buffer to SOAP connection*/ +void +msn_soap_write(MsnSoapConn * soapconn, char *write_buf, MsnSoapWrittenCbFunction written_cb) +{ + if (soapconn == NULL) { + return; + } + + msn_soap_set_process_step(soapconn, MSN_SOAP_PROCESSING); + + /* Ideally this wouldn't ever be necessary, but i believe that it is leaking the previous value */ + g_free(soapconn->write_buf); + soapconn->write_buf = write_buf; + soapconn->written_len = 0; + soapconn->written_cb = written_cb; + + msn_soap_free_read_buf(soapconn); + + /*clear the read buffer first*/ + /*start the write*/ + soapconn->output_handler = purple_input_add(soapconn->gsc->fd, PURPLE_INPUT_WRITE, + msn_soap_write_cb, soapconn); + msn_soap_write_cb(soapconn, soapconn->gsc->fd, PURPLE_INPUT_WRITE); +} + +/* New a soap request*/ +MsnSoapReq * +msn_soap_request_new(const char *host,const char *post_url,const char *soap_action, + const char *body, const gpointer data_cb, + MsnSoapReadCbFunction read_cb, + MsnSoapWrittenCbFunction written_cb, + MsnSoapConnectInitFunction connect_init) +{ + MsnSoapReq *request; + + request = g_new0(MsnSoapReq, 1); + request->id = 0; + + request->login_host = g_strdup(host); + request->login_path = g_strdup(post_url); + request->soap_action = g_strdup(soap_action); + request->body = g_strdup(body); + request->data_cb = data_cb; + request->read_cb = read_cb; + request->written_cb = written_cb; + request->connect_init = connect_init; + + return request; +} + +/*free a soap request*/ +void +msn_soap_request_free(MsnSoapReq *request) +{ + g_return_if_fail(request != NULL); + + g_free(request->login_host); + g_free(request->login_path); + g_free(request->soap_action); + g_free(request->body); + request->read_cb = NULL; + request->written_cb = NULL; + request->connect_init = NULL; + + g_free(request); +} + +/*post the soap request queue's head request*/ +void +msn_soap_post_head_request(MsnSoapConn *soapconn) +{ + g_return_if_fail(soapconn != NULL); + g_return_if_fail(soapconn->soap_queue != NULL); + + if (soapconn->step == MSN_SOAP_CONNECTED || + soapconn->step == MSN_SOAP_CONNECTED_IDLE) { + + purple_debug_info("MSN SOAP", "Posting new request from head of the queue\n"); + + if ( !g_queue_is_empty(soapconn->soap_queue) ) { + MsnSoapReq *request; + + if ( (request = g_queue_pop_head(soapconn->soap_queue)) != NULL ) { + msn_soap_post_request(soapconn,request); + } + } else { + purple_debug_info("MSN SOAP", "No requests to process found.\n"); + msn_soap_set_process_step(soapconn, MSN_SOAP_CONNECTED_IDLE); + } + } +} + +/*post the soap request , + * if not connected, Connected first. + */ +void +msn_soap_post(MsnSoapConn *soapconn, MsnSoapReq *request) +{ + MsnSoapReq *head_request; + + if (soapconn == NULL) + return; + + if (request != NULL) { +#ifdef MSN_SOAP_DEBUG + purple_debug_misc("MSN SOAP", "Request added to the queue\n"); +#endif + g_queue_push_tail(soapconn->soap_queue, request); + } + + if ( !g_queue_is_empty(soapconn->soap_queue)) { + + /* we may have to reinitialize the soap connection, so avoid + * reusing the connection for now */ + + if (soapconn->step == MSN_SOAP_CONNECTED_IDLE) { + purple_debug_misc("MSN SOAP","Already connected to SOAP server, re-initializing\n"); + msn_soap_close_handler( &(soapconn->input_handler) ); + msn_soap_close_handler( &(soapconn->output_handler) ); + msn_soap_close(soapconn); + } + + if (!msn_soap_connected(soapconn) && (soapconn->step == MSN_SOAP_UNCONNECTED)) { + + /*not connected?and we have something to process connect it first*/ + purple_debug_misc("MSN SOAP","No connection to SOAP server. Connecting...\n"); + head_request = g_queue_peek_head(soapconn->soap_queue); + + if (head_request == NULL) { + purple_debug_error("MSN SOAP", "Queue is not empty, but failed to peek the head request!\n"); + return; + } + + if (head_request->connect_init != NULL) { + head_request->connect_init(soapconn); + } + msn_soap_connect(soapconn); + return; + } + +#ifdef MSN_SOAP_DEBUG + purple_debug_info("MSN SOAP", "Currently processing another SOAP request\n"); + } else { + purple_debug_info("MSN SOAP", "No requests left to dispatch\n"); + } +#else + } +#endif + +} + +/*Post the soap request action*/ +void +msn_soap_post_request(MsnSoapConn *soapconn, MsnSoapReq *request) +{ + char * request_str = NULL; +#ifdef MSN_SOAP_DEBUG +#if !defined(_WIN32) + xmlnode * node; +#endif + purple_debug_misc("MSN SOAP","msn_soap_post_request()\n"); +#endif + + msn_soap_set_process_step(soapconn, MSN_SOAP_PROCESSING); + request_str = g_strdup_printf( + "POST %s HTTP/1.1\r\n" + "SOAPAction: %s\r\n" + "Content-Type:text/xml; charset=utf-8\r\n" + "Cookie: MSPAuth=%s\r\n" + "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n" + "Accept: */*\r\n" + "Host: %s\r\n" + "Content-Length: %" G_GSIZE_FORMAT "\r\n" + "Connection: Keep-Alive\r\n" + "Cache-Control: no-cache\r\n\r\n" + "%s", + request->login_path, + request->soap_action, + soapconn->session->passport_info.mspauth, + request->login_host, + strlen(request->body), + request->body + ); + +#if defined(MSN_SOAP_DEBUG) && !defined(_WIN32) + node = xmlnode_from_str(request->body, -1); + if (node != NULL) { + char *formattedstr = xmlnode_to_formatted_str(node, NULL); + purple_debug_info("MSN SOAP","Posting request to SOAP server:\n%s%s\n",request_str, formattedstr); + g_free(formattedstr); + xmlnode_free(node); + } + else + purple_debug_info("MSN SOAP","Failed to parse SOAP request being sent:\n%s\n", request_str); +#endif + + /*free read buffer*/ + // msn_soap_free_read_buf(soapconn); + /*post it to server*/ + soapconn->data_cb = request->data_cb; + msn_soap_write(soapconn, request_str, request->written_cb); +} + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/soap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/msn/soap.h Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,167 @@ +/** + * @file soap.h + * header file for SOAP connection related process + * Author + * MaYuan + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef _MSN_SOAP_H_ +#define _MSN_SOAP_H_ + +#define MSN_SOAP_READ_BUFF_SIZE 8192 + +/* define this to debug the communications with the SOAP server */ +/* #define MSN_SOAP_DEBUG */ + +#define MSN_SOAP_READ 1 +#define MSN_SOAP_WRITE 2 + +typedef enum +{ + MSN_SOAP_UNCONNECTED, + MSN_SOAP_CONNECTING, + MSN_SOAP_CONNECTED, + MSN_SOAP_PROCESSING, + MSN_SOAP_CONNECTED_IDLE +}MsnSoapStep; + +/* MSN SoapRequest structure*/ +typedef struct _MsnSoapReq MsnSoapReq; + +/* MSN Https connection structure*/ +typedef struct _MsnSoapConn MsnSoapConn; + +typedef void (*MsnSoapConnectInitFunction)(MsnSoapConn *); +typedef gboolean (*MsnSoapReadCbFunction)(MsnSoapConn *); +typedef void (*MsnSoapWrittenCbFunction)(MsnSoapConn *); + +typedef gboolean (*MsnSoapSslConnectCbFunction)(MsnSoapConn *, PurpleSslConnection *); +typedef void (*MsnSoapSslErrorCbFunction)(MsnSoapConn *, PurpleSslConnection *, PurpleSslErrorType); + + +struct _MsnSoapReq{ + /*request sequence*/ + int id; + + char *login_host; + char *login_path; + char *soap_action; + + char *body; + + gpointer data_cb; + MsnSoapReadCbFunction read_cb; + MsnSoapWrittenCbFunction written_cb; + MsnSoapConnectInitFunction connect_init; +}; + +struct _MsnSoapConn{ + MsnSession *session; + gpointer parent; + + char *login_host; + char *login_path; + char *soap_action; + + MsnSoapStep step; + /*ssl connection?*/ + gboolean ssl_conn; + /*normal connection*/ + guint fd; + /*SSL connection*/ + PurpleSslConnection *gsc; + /*ssl connection callback*/ + MsnSoapSslConnectCbFunction connect_cb; + /*ssl error callback*/ + MsnSoapSslErrorCbFunction error_cb; + + /*read handler*/ + guint input_handler; + /*write handler*/ + guint output_handler; + + /*Queue of SOAP request to send*/ + int soap_id; + GQueue *soap_queue; + + /*write buffer*/ + char *write_buf; + gsize written_len; + MsnSoapWrittenCbFunction written_cb; + + /*read buffer*/ + char *read_buf; + gsize read_len; + gsize need_to_read; + MsnSoapReadCbFunction read_cb; + + gpointer data_cb; + + /*HTTP reply body part*/ + char *body; + int body_len; +}; + + +/*Function Prototype*/ +/*Soap Request Function */ +MsnSoapReq *msn_soap_request_new(const char *host, const char *post_url, + const char *soap_action, const char *body, + const gpointer data_cb, + MsnSoapReadCbFunction read_cb, + MsnSoapWrittenCbFunction written_cb, + MsnSoapConnectInitFunction connect_init); + +void msn_soap_request_free(MsnSoapReq *request); +void msn_soap_post_request(MsnSoapConn *soapconn,MsnSoapReq *request); +void msn_soap_post_head_request(MsnSoapConn *soapconn); + +/*new a soap conneciton */ +MsnSoapConn *msn_soap_new(MsnSession *session, gpointer data, gboolean ssl); + +/*destroy */ +void msn_soap_destroy(MsnSoapConn *soapconn); + +/*init a soap conneciton */ +void msn_soap_init(MsnSoapConn *soapconn, char * host, gboolean ssl, + MsnSoapSslConnectCbFunction connect_cb, + MsnSoapSslErrorCbFunction error_cb); +void msn_soap_connect(MsnSoapConn *soapconn); +void msn_soap_close(MsnSoapConn *soapconn); + +/*write to soap*/ +void msn_soap_write(MsnSoapConn * soapconn, char *write_buf, MsnSoapWrittenCbFunction written_cb); +void msn_soap_post(MsnSoapConn *soapconn,MsnSoapReq *request); + +void msn_soap_free_read_buf(MsnSoapConn *soapconn); +void msn_soap_free_write_buf(MsnSoapConn *soapconn); +void msn_soap_connect_cb(gpointer data, PurpleSslConnection *gsc, PurpleInputCondition cond); +void msn_soap_read_cb(gpointer data, gint source, PurpleInputCondition cond); + +/*clean the unhandled requests*/ +void msn_soap_clean_unhandled_requests(MsnSoapConn *soapconn); + +/*check if the soap connection is connected*/ +int msn_soap_connected(MsnSoapConn *soapconn); +void msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step); + +#endif/*_MSN_SOAP_H_*/ + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/state.c --- a/libpurple/protocols/msn/state.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/state.c Tue Oct 23 17:41:06 2007 +0000 @@ -38,6 +38,197 @@ N_("Available") }; +/* Local Function Prototype*/ +static char *msn_build_psm(const char *psmstr,const char *mediastr, + const char *guidstr); + +/* + * WLM media PSM info build prcedure + * + * Result can like: + * \0Music\01\0{0} - {1}\0Song Title\0Song Artist\0Song Album\0\0\ + * \0Games\01\0Playing {0}\0Game Name\0\ + * \0Office\01\0Office Message\0Office App Name\0" + */ +static char * +msn_build_psm(const char *psmstr,const char *mediastr, const char *guidstr) +{ + xmlnode *dataNode,*psmNode,*mediaNode,*guidNode; + char *result; + int length; + + dataNode = xmlnode_new("Data"); + + psmNode = xmlnode_new("PSM"); + if(psmstr != NULL){ + xmlnode_insert_data(psmNode,psmstr,strlen(psmstr)); + } + xmlnode_insert_child(dataNode,psmNode); + + mediaNode = xmlnode_new("CurrentMedia"); + if(mediastr != NULL){ + xmlnode_insert_data(mediaNode,mediastr,strlen(mediastr)); + } + xmlnode_insert_child(dataNode,mediaNode); + + guidNode = xmlnode_new("MachineGuid"); + if(guidstr != NULL){ + xmlnode_insert_data(guidNode,guidstr,strlen(guidstr)); + } + xmlnode_insert_child(dataNode,guidNode); + + result = xmlnode_to_str(dataNode,&length); + xmlnode_free(dataNode); + return result; +} + +/* parse CurrentMedia string */ +char * +msn_parse_currentmedia(const char *cmedia) +{ + char **cmedia_array; + GString *buffer = NULL; + int strings; + + if ((cmedia == NULL) || (*cmedia == '\0')) { + purple_debug_info("msn", "No currentmedia string\n"); + return NULL; + } + + purple_debug_info("msn", "Parsing currentmedia string: \"%s\"\n", cmedia); + + cmedia_array = g_strsplit(cmedia, "\\0", 0); + + strings = 0; + /* Yes, we want to skip the first element here, as it is empty due to + * the cmedia string starting with \0 -- see the examples below. */ + while (cmedia_array[++strings] != NULL); + + /* The cmedia_array[2] field contains a 1 if enabled. */ + if ((strings > 3) && (!strcmp(cmedia_array[2], "1"))) { + char *inptr = cmedia_array[3]; + + buffer = g_string_new(NULL); + + while (*inptr != '\0') { + if ((*inptr == '{') && ((*(inptr + 1) != '\0') && (*(inptr+2) == '}'))) { + char *tmpptr; + int tmp; + + errno = 0; + tmp = strtol(inptr + 1, &tmpptr, 10); + + if (errno == 0 && tmpptr != inptr + 1 && + tmp + 4 < strings) { + /* Replace {?} tag with appropriate text only when successful. + * Skip otherwise. */ + buffer = g_string_append(buffer, cmedia_array[tmp + 4]); + } + inptr += 3; /* Skip to the next char after '}' */ + } else { + buffer = g_string_append_c(buffer, *inptr++); + } + } + purple_debug_info("msn", "Parsed currentmedia string, result: \"%s\"\n", + buffer->str); + } else { + purple_debug_info("msn", "Current media marked disabled, not parsing.\n"); + } + + g_strfreev(cmedia_array); + return buffer ? g_string_free(buffer, FALSE) : NULL; +} + +/* get the CurrentMedia info from the XML string */ +char * +msn_get_currentmedia(char *xml_str, gsize len) +{ + xmlnode *payloadNode, *currentmediaNode; + char *currentmedia; + + purple_debug_info("msn","msn get CurrentMedia\n"); + payloadNode = xmlnode_from_str(xml_str, len); + if (!payloadNode){ + purple_debug_error("msn","PSM XML parse Error!\n"); + return NULL; + } + currentmediaNode = xmlnode_get_child(payloadNode, "CurrentMedia"); + if (currentmediaNode == NULL){ + purple_debug_info("msn","No CurrentMedia Node"); + xmlnode_free(payloadNode); + return NULL; + } + currentmedia = xmlnode_get_data(currentmediaNode); + + xmlnode_free(payloadNode); + + return currentmedia; +} + +/*get the PSM info from the XML string*/ +char * +msn_get_psm(char *xml_str, gsize len) +{ + xmlnode *payloadNode, *psmNode; + char *psm; + + purple_debug_info("MSNP14","msn get PSM\n"); + payloadNode = xmlnode_from_str(xml_str, len); + if (!payloadNode){ + purple_debug_error("MSNP14","PSM XML parse Error!\n"); + return NULL; + } + psmNode = xmlnode_get_child(payloadNode, "PSM"); + if (psmNode == NULL){ + purple_debug_info("MSNP14","No PSM status Node"); + xmlnode_free(payloadNode); + return NULL; + } + psm = xmlnode_get_data(psmNode); + + xmlnode_free(payloadNode); + + return psm; +} + +/* Set the MSN PSM based on the "message" attribute of the current status + * Thanks for Cris Code + */ +void +msn_set_psm(MsnSession *session) +{ + PurpleAccount *account = session->account; + PurplePresence *presence; + PurpleStatus *status; + MsnCmdProc *cmdproc; + MsnTransaction *trans; + char *payload; + const char *statusline; + gchar *statusline_stripped; + + g_return_if_fail(session != NULL); + g_return_if_fail(session->notification != NULL); + + cmdproc = session->notification->cmdproc; + + /* Get the PSM string from Purple's Status Line */ + presence = purple_account_get_presence(account); + status = purple_presence_get_active_status(presence); + statusline = purple_status_get_attr_string(status, "message"); + + /* MSN expects plain text, not HTML */ + statusline_stripped = purple_markup_strip_html(statusline); + g_free(session->psm); + session->psm = msn_build_psm(statusline_stripped, NULL, NULL); + g_free(statusline_stripped); + + payload = session->psm; + purple_debug_misc("MSNP14","Sending UUX command with payload: %s\n",payload); + trans = msn_transaction_new(cmdproc, "UUX", "%d", strlen(payload)); + msn_transaction_set_payload(trans, payload, strlen(payload)); + msn_cmdproc_send_trans(cmdproc, trans); +} + void msn_change_status(MsnSession *session) { @@ -79,6 +270,7 @@ g_free(msnobj_str); } + msn_set_psm(session); } const char * diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/state.h --- a/libpurple/protocols/msn/state.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/state.h Tue Oct 23 17:41:06 2007 +0000 @@ -59,6 +59,17 @@ const char *msn_state_get_text(MsnAwayType state); +void msn_set_psm(MsnSession *session); + +/* Parse CurrentMedia string */ +char * msn_parse_currentmedia(const char *cmedia); + +/* Get the CurrentMedia info from the XML string */ +char * msn_get_currentmedia(char *xml_str,gsize len); + +/*get the PSM info from the XML string*/ +char * msn_get_psm(char *xml_str,gsize len); + MsnAwayType msn_state_from_account(PurpleAccount *account); #endif /* _MSN_STATE_H_ */ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/switchboard.c --- a/libpurple/protocols/msn/switchboard.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/switchboard.c Tue Oct 23 17:41:06 2007 +0000 @@ -25,7 +25,7 @@ #include "prefs.h" #include "switchboard.h" #include "notification.h" -#include "msn-utils.h" +#include "msnutils.h" #include "error.h" @@ -108,8 +108,8 @@ g_free(swboard->auth_key); g_free(swboard->session_id); - for (l = swboard->users; l != NULL; l = l->next) - g_free(l->data); + for (; swboard->users; swboard->users = g_list_delete_link(swboard->users, swboard->users)) + g_free(swboard->users->data); session = swboard->session; session->switches = g_list_remove(session->switches, swboard); @@ -152,9 +152,7 @@ g_return_if_fail(swboard != NULL); g_return_if_fail(id != NULL); - if (swboard->session_id != NULL) - g_free(swboard->session_id); - + g_free(swboard->session_id); swboard->session_id = g_strdup(id); } @@ -534,6 +532,7 @@ payload = msn_message_gen_payload(msg, &payload_len); #ifdef MSN_DEBUG_SB + purple_debug_info("MSNP14","SB length:{%d}",payload_len); msn_message_show_readable(msg, "SB SEND", FALSE); #endif @@ -621,6 +620,7 @@ g_return_if_fail(swboard != NULL); g_return_if_fail(msg != NULL); + purple_debug_info("MSNP14","switchboard send msg..\n"); if (msn_switchboard_can_send(swboard)) release_msg(swboard, msg); else if (queue) @@ -727,15 +727,15 @@ msg = msn_message_new_from_cmd(cmdproc->session, cmd); - msn_message_parse_payload(msg, payload, len); + msn_message_parse_payload(msg, payload, len, + MSG_LINE_DEM,MSG_BODY_DEM); #ifdef MSN_DEBUG_SB msn_message_show_readable(msg, "SB RECV", FALSE); #endif - if (msg->remote_user != NULL) - g_free (msg->remote_user); + g_free (msg->remote_user); + msg->remote_user = g_strdup(cmd->params[0]); - msg->remote_user = g_strdup(cmd->params[0]); msn_cmdproc_process_msg(cmdproc, msg); msn_message_destroy(msg); @@ -749,6 +749,14 @@ } static void +ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) +{ + purple_debug_misc("MSNP14","get UBM...\n"); + cmdproc->servconn->payload_len = atoi(cmd->params[4]); + cmdproc->last_cmd->payload_cb = msg_cmd_post; +} + +static void nak_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnMessage *msg; @@ -1084,6 +1092,8 @@ cal_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) { int reason = MSN_SB_ERROR_UNKNOWN; + MsnMessage *msg; + MsnSwitchBoard *swboard = trans->data; if (error == 215) { @@ -1096,7 +1106,19 @@ } purple_debug_warning("msn", "cal_error: command %s gave error %i\n", trans->command, error); + purple_debug_warning("msn", "Will Use Offline Message to sendit\n"); +// cal_error_helper(trans, reason); + /*offline Message send Process*/ + + while ((msg = g_queue_pop_head(swboard->msg_queue)) != NULL){ + purple_debug_warning("MSNP14","offline msg to send:{%s}\n",msg->body); + /* The messages could not be sent due to a switchboard error */ + swboard->error = MSN_SB_ERROR_USER_OFFLINE; + msg_error_helper(swboard->cmdproc, msg, + MSN_MSG_ERROR_SB); + msn_message_unref(msg); + } cal_error_helper(trans, reason); } @@ -1140,6 +1162,7 @@ /* The conversation window was closed. */ return; + purple_debug_info("MSNP14","Switchboard:auth:{%s} socket:{%s}\n",cmd->params[4],cmd->params[2]); msn_switchboard_set_auth_key(swboard, cmd->params[4]); msn_parse_socket(cmd->params[2], &host, &port); @@ -1252,6 +1275,7 @@ msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd); msn_table_add_cmd(cbs_table, NULL, "MSG", msg_cmd); + msn_table_add_cmd(cbs_table, NULL, "UBM", ubm_cmd); msn_table_add_cmd(cbs_table, NULL, "JOI", joi_cmd); msn_table_add_cmd(cbs_table, NULL, "BYE", bye_cmd); msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/sync.c --- a/libpurple/protocols/msn/sync.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/sync.c Tue Oct 23 17:41:06 2007 +0000 @@ -90,9 +90,9 @@ { MsnSession *session = cmdproc->session; const char *name; - int group_id; + const char *group_id; - group_id = atoi(cmd->params[0]); + group_id = cmd->params[0]; name = purple_url_decode(cmd->params[1]); msn_group_new(session->userlist, group_id, name); @@ -156,10 +156,10 @@ for (c = tokens; *c != NULL; c++) { - int id; + char *id; - id = atoi(*c); - group_ids = g_slist_append(group_ids, GINT_TO_POINTER(id)); + id = *c; + group_ids = g_slist_append(group_ids, g_strdup(id)); } g_strfreev(tokens); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/user.c --- a/libpurple/protocols/msn/user.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/user.c Tue Oct 23 17:41:06 2007 +0000 @@ -25,6 +25,7 @@ #include "user.h" #include "slp.h" +/*new a user object*/ MsnUser * msn_user_new(MsnUserList *userlist, const char *passport, const char *store_name) @@ -50,6 +51,7 @@ return user; } +/*destroy a user object*/ void msn_user_destroy(MsnUser *user) { @@ -59,7 +61,14 @@ g_hash_table_destroy(user->clientcaps); if (user->group_ids != NULL) + { + GList *l; + for (l = user->group_ids; l != NULL; l = l->next) + { + g_free(l->data); + } g_list_free(user->group_ids); + } if (user->msnobj != NULL) msn_object_destroy(user->msnobj); @@ -67,6 +76,7 @@ g_free(user->passport); g_free(user->friendly_name); g_free(user->store_name); + g_free(user->uid); g_free(user->phone.home); g_free(user->phone.work); g_free(user->phone.mobile); @@ -81,7 +91,18 @@ account = user->userlist->session->account; - if (user->status != NULL) { + if (user->statusline != NULL && user->currentmedia != NULL) { + purple_prpl_got_user_status(account, user->passport, user->status, + "message", user->statusline, + PURPLE_TUNE_FULL, user->currentmedia, NULL); + } else if (user->currentmedia != NULL) { + purple_prpl_got_user_status(account, user->passport, user->status, PURPLE_TUNE_FULL, + user->currentmedia, NULL); + } else if (user->statusline != NULL) { + //char *status = g_strdup_printf("%s - %s", user->status, user->statusline); + purple_prpl_got_user_status(account, user->passport, user->status, + "message", user->statusline, NULL); + } else if (user->status != NULL) { if (!strcmp(user->status, "offline") && user->mobile) { purple_prpl_got_user_status(account, user->passport, "offline", NULL); purple_prpl_got_user_status(account, user->passport, "mobile", NULL); @@ -142,12 +163,66 @@ } void +msn_user_set_statusline(MsnUser *user, const char *statusline) +{ + g_return_if_fail(user != NULL); + + g_free(user->statusline); + user->statusline = g_strdup(statusline); +} + +void +msn_user_set_currentmedia(MsnUser *user, const char *currentmedia) +{ + g_return_if_fail(user != NULL); + + g_free(user->currentmedia); + user->currentmedia = g_strdup(currentmedia); +} + +void msn_user_set_store_name(MsnUser *user, const char *name) { g_return_if_fail(user != NULL); - g_free(user->store_name); - user->store_name = g_strdup(name); + if (name != NULL) + { + g_free(user->store_name); + user->store_name = g_strdup(name); + } +} + +void +msn_user_set_uid(MsnUser *user, const char *uid) +{ + g_return_if_fail(user != NULL); + + g_free(user->uid); + user->uid = g_strdup(uid); +} + +void +msn_user_set_type(MsnUser *user, MsnUserType type) +{ + g_return_if_fail(user != NULL); + + user->type = type; +} + +void +msn_user_set_op(MsnUser *user, int list_op) +{ + g_return_if_fail(user != NULL); + + user->list_op |= list_op; +} + +void +msn_user_unset_op(MsnUser *user, int list_op) +{ + g_return_if_fail(user != NULL); + + user->list_op &= ~list_op; } void @@ -218,54 +293,97 @@ } } +/*add group id to User object*/ void -msn_user_add_group_id(MsnUser *user, int id) +msn_user_add_group_id(MsnUser *user, const char* id) { MsnUserList *userlist; PurpleAccount *account; PurpleBuddy *b; PurpleGroup *g; const char *passport; + char *group_id; const char *group_name; g_return_if_fail(user != NULL); - g_return_if_fail(id >= 0); + g_return_if_fail(id != NULL); - user->group_ids = g_list_append(user->group_ids, GINT_TO_POINTER(id)); + group_id = g_strdup(id); + user->group_ids = g_list_append(user->group_ids, group_id); userlist = user->userlist; account = userlist->session->account; passport = msn_user_get_passport(user); - group_name = msn_userlist_find_group_name(userlist, id); + group_name = msn_userlist_find_group_name(userlist, group_id); + + purple_debug_info("User","group id:%s,name:%s,user:%s\n", group_id, group_name, passport); g = purple_find_group(group_name); - if ((id == 0) && (g == NULL)) + if ((id == NULL) && (g == NULL)) { g = purple_group_new(group_name); purple_blist_add_group(g, NULL); } b = purple_find_buddy_in_group(account, passport, g); - if (b == NULL) { b = purple_buddy_new(account, passport, NULL); - purple_blist_add_buddy(b, NULL, g, NULL); } + b->proto_data = user; + /*Update the blist Node info*/ +// purple_blist_node_set_string(&(b->node), "", ""); +} - b->proto_data = user; +/*check if the msn user is online*/ +gboolean +msn_user_is_online(PurpleAccount *account, const char *name) +{ + PurpleBuddy *buddy; + + buddy =purple_find_buddy(account,name); + return PURPLE_BUDDY_IS_ONLINE(buddy); +} + +gboolean +msn_user_is_yahoo(PurpleAccount *account, const char *name) +{ + MsnSession *session = NULL; + MsnUser *user; + PurpleConnection *gc; + + gc = purple_account_get_connection(account); + if (gc != NULL) + session = gc->proto_data; + + if ((session != NULL) && (session->protocol_ver == WLM_PROT_VER)) + return FALSE; + + if ((session != NULL) && (user = msn_userlist_find_user(session->userlist, name)) != NULL) + { + return (user->type == MSN_USER_TYPE_YAHOO); + } + return (strstr(name,"@yahoo.") != NULL); } void -msn_user_remove_group_id(MsnUser *user, int id) +msn_user_remove_group_id(MsnUser *user, const char *id) { + GList *l; + g_return_if_fail(user != NULL); - g_return_if_fail(id >= 0); + g_return_if_fail(id != NULL); + + l = g_list_find_custom(user->group_ids, id, (GCompareFunc)strcmp); - user->group_ids = g_list_remove(user->group_ids, GINT_TO_POINTER(id)); + if (l == NULL) + return; + + g_free(l->data); + user->group_ids = g_list_delete_link(user->group_ids, l); } void @@ -273,10 +391,8 @@ { g_return_if_fail(user != NULL); - if (user->phone.home != NULL) - g_free(user->phone.home); - - user->phone.home = (number == NULL ? NULL : g_strdup(number)); + g_free(user->phone.home); + user->phone.home = g_strdup(number); } void @@ -284,10 +400,8 @@ { g_return_if_fail(user != NULL); - if (user->phone.work != NULL) - g_free(user->phone.work); - - user->phone.work = (number == NULL ? NULL : g_strdup(number)); + g_free(user->phone.work); + user->phone.work = g_strdup(number); } void @@ -295,10 +409,8 @@ { g_return_if_fail(user != NULL); - if (user->phone.mobile != NULL) - g_free(user->phone.mobile); - - user->phone.mobile = (number == NULL ? NULL : g_strdup(number)); + g_free(user->phone.mobile); + user->phone.mobile = g_strdup(number); } void diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/user.h --- a/libpurple/protocols/msn/user.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/user.h Tue Oct 23 17:41:06 2007 +0000 @@ -31,6 +31,17 @@ #include "userlist.h" +typedef enum +{ + MSN_USER_TYPE_UNKNOWN = 0x00, + MSN_USER_TYPE_PASSPORT = 0x01, + MSN_USER_TYPE_UNKNOWN1 = 0x02, + MSN_USER_TYPE_MOBILE = 0x04, + MSN_USER_TYPE_UNKNOWN2 = 0x08, + MSN_USER_TYPE_UNKNOWN3 = 0x10, + MSN_USER_TYPE_YAHOO = 0x20 +} MsnUserType; + /** * A user. */ @@ -45,7 +56,12 @@ char *store_name; /**< The name stored in the server. */ char *friendly_name; /**< The friendly name. */ + char * uid; /*< User Id */ + const char *status; /**< The state of the user. */ + char *statusline; /**< The state of the user. */ + char *currentmedia; /**< The current media of the user. */ + gboolean idle; /**< The idle state of the user. */ struct @@ -65,7 +81,12 @@ GHashTable *clientcaps; /**< The client's capabilities. */ - int list_op; + MsnUserType type; /**< The user type */ + + int list_op; /**< Which lists the user is in */ + + guint membership_id[5]; /**< The membershipId sent by the contacts server, + indexed by the list it belongs to */ }; /**************************************************************************/ @@ -102,6 +123,22 @@ */ void msn_user_update(MsnUser *user); + /** + * Sets the new statusline of user. + * + * @param user The user. + * @param state The statusline string. + */ +void msn_user_set_statusline(MsnUser *user, const char *statusline); + + /** + * Sets the current media of user. + * + * @param user The user. + * @param state The statusline string. + */ +void msn_user_set_currentmedia(MsnUser *user, const char *currentmedia); + /** * Sets the new state of user. * @@ -156,7 +193,7 @@ * @param user The user. * @param id The group ID. */ -void msn_user_add_group_id(MsnUser *user, int id); +void msn_user_add_group_id(MsnUser *user, const char * id); /** * Removes the group ID from a user. @@ -164,7 +201,7 @@ * @param user The user. * @param id The group ID. */ -void msn_user_remove_group_id(MsnUser *user, int id); +void msn_user_remove_group_id(MsnUser *user, const char * id); /** * Sets the home phone number for a user. @@ -182,6 +219,9 @@ */ void msn_user_set_work_phone(MsnUser *user, const char *number); +void msn_user_set_uid(MsnUser *user, const char *uid); +void msn_user_set_type(MsnUser *user, MsnUserType type); + /** * Sets the mobile phone number for a user. * @@ -279,6 +319,22 @@ */ GHashTable *msn_user_get_client_caps(const MsnUser *user); +/** + * check to see if user is online + */ +gboolean +msn_user_is_online(PurpleAccount *account, const char *name); + +/** + * check to see if user is Yahoo User + */ +gboolean +msn_user_is_yahoo(PurpleAccount *account ,const char *name); + +void msn_user_set_op(MsnUser *user, int list_op); +void msn_user_unset_op(MsnUser *user, int list_op); + /*@}*/ + #endif /* _MSN_USER_H_ */ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/userlist.c --- a/libpurple/protocols/msn/userlist.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/userlist.c Tue Oct 23 17:41:06 2007 +0000 @@ -41,10 +41,18 @@ msn_accept_add_cb(gpointer data) { MsnPermitAdd *pa = data; - MsnSession *session = pa->gc->proto_data; - MsnUserList *userlist = session->userlist; + + purple_debug_misc("MSN Userlist", "Accepted the new buddy: %s\n", pa->who); - msn_userlist_add_buddy(userlist, pa->who, MSN_LIST_AL, NULL); + if (PURPLE_CONNECTION_IS_VALID(pa->gc)) + { + MsnSession *session = pa->gc->proto_data; + MsnUserList *userlist = session->userlist; + + msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL); + + msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL); + } g_free(pa->who); g_free(pa->friendly); @@ -55,10 +63,20 @@ msn_cancel_add_cb(gpointer data) { MsnPermitAdd *pa = data; - MsnSession *session = pa->gc->proto_data; - MsnUserList *userlist = session->userlist; + + purple_debug_misc("MSN Userlist", "Denied the new buddy: %s\n", pa->who); - msn_userlist_add_buddy(userlist, pa->who, MSN_LIST_BL, NULL); + if (PURPLE_CONNECTION_IS_VALID(pa->gc)) + { + MsnSession *session = pa->gc->proto_data; + MsnUserList *userlist = session->userlist; + MsnCallbackState *state = msn_callback_state_new(); + + msn_callback_state_set_action(state, MSN_DENIED_BUDDY); + + msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_BL); + msn_del_contact_from_list(session->contact, state, pa->who, MSN_LIST_PL); + } g_free(pa->who); g_free(pa->friendly); @@ -68,59 +86,57 @@ static void got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly) { + PurpleAccount *acct; MsnPermitAdd *pa; pa = g_new0(MsnPermitAdd, 1); pa->who = g_strdup(passport); pa->friendly = g_strdup(friendly); pa->gc = gc; - - purple_account_request_authorization(purple_connection_get_account(gc), passport, NULL, friendly, NULL, - purple_find_buddy(purple_connection_get_account(gc), passport) != NULL, - msn_accept_add_cb, msn_cancel_add_cb, pa); + + acct = purple_connection_get_account(gc); + purple_account_request_authorization(acct, passport, NULL, friendly, NULL, + purple_find_buddy(acct, passport) != NULL, + msn_accept_add_cb, msn_cancel_add_cb, pa); + } /************************************************************************** * Utility functions **************************************************************************/ -static gboolean -user_is_in_group(MsnUser *user, int group_id) +gboolean +msn_userlist_user_is_in_group(MsnUser *user, const char * group_id) { if (user == NULL) return FALSE; - if (group_id < 0) + if (group_id == NULL) return FALSE; - if (g_list_find(user->group_ids, GINT_TO_POINTER(group_id))) + if (g_list_find_custom(user->group_ids, group_id, (GCompareFunc)strcmp)) return TRUE; return FALSE; } -static gboolean -user_is_there(MsnUser *user, int list_id, int group_id) +gboolean +msn_userlist_user_is_in_list(MsnUser *user, MsnListId list_id) { int list_op; if (user == NULL) return FALSE; - + list_op = 1 << list_id; - if (!(user->list_op & list_op)) + if (user->list_op & list_op) + return TRUE; + else return FALSE; - - if (list_id == MSN_LIST_FL) - { - if (group_id >= 0) - return user_is_in_group(user, group_id); - } - - return TRUE; } +#if 0 static const char* get_store_name(MsnUser *user) { @@ -148,31 +164,7 @@ return store_name; } - -static void -msn_request_add_group(MsnUserList *userlist, const char *who, - const char *old_group_name, const char *new_group_name) -{ - MsnCmdProc *cmdproc; - MsnTransaction *trans; - MsnMoveBuddy *data; - - cmdproc = userlist->session->notification->cmdproc; - data = g_new0(MsnMoveBuddy, 1); - - data->who = g_strdup(who); - - if (old_group_name) - data->old_group_name = g_strdup(old_group_name); - - trans = msn_transaction_new(cmdproc, "ADG", "%s %d", - purple_url_encode(new_group_name), - 0); - - msn_transaction_set_data(trans, data); - - msn_cmdproc_send_trans(cmdproc, trans); -} +#endif /************************************************************************** * Server functions @@ -193,14 +185,16 @@ return -1; } +/* this function msn_got_add_user isn't called anywhere */ void msn_got_add_user(MsnSession *session, MsnUser *user, - MsnListId list_id, int group_id) + MsnListId list_id, const char * group_id) { PurpleAccount *account; const char *passport; const char *friendly; + purple_debug_info("MSNP14","got add user...\n"); account = session->account; passport = msn_user_get_passport(user); @@ -214,7 +208,7 @@ serv_got_alias(gc, passport, friendly); - if (group_id >= 0) + if (group_id != NULL) { msn_user_add_group_id(user, group_id); } @@ -233,11 +227,8 @@ } else if (list_id == MSN_LIST_RL) { - PurpleConnection *gc; PurpleConversation *convo; - gc = purple_account_get_connection(account); - purple_debug_info("msn", "%s has added you to his or her buddy list.\n", passport); @@ -263,7 +254,7 @@ * looked at this. Maybe we should use the store * name instead? --KingAnt */ - got_new_entry(gc, passport, friendly); +// got_new_entry(gc, passport, friendly); } } @@ -273,7 +264,7 @@ void msn_got_rem_user(MsnSession *session, MsnUser *user, - MsnListId list_id, int group_id) + MsnListId list_id, const char * group_id) { PurpleAccount *account; const char *passport; @@ -285,7 +276,7 @@ if (list_id == MSN_LIST_FL) { /* TODO: When is the user totally removed? */ - if (group_id >= 0) + if (group_id != NULL) { msn_user_remove_group_id(user, group_id); return; @@ -333,7 +324,6 @@ { purple_debug_info("msn", "Buddy '%s' shall be deleted?.\n", passport); - } } @@ -351,14 +341,16 @@ passport = msn_user_get_passport(user); store = msn_user_get_store_name(user); + + msn_user_set_op(user, list_op); if (list_op & MSN_LIST_FL_OP) { GSList *c; for (c = group_ids; c != NULL; c = g_slist_next(c)) { - int group_id; - group_id = GPOINTER_TO_INT(c->data); + char *group_id; + group_id = c->data; msn_user_add_group_id(user, group_id); } @@ -393,11 +385,14 @@ if (!(list_op & (MSN_LIST_AL_OP | MSN_LIST_BL_OP))) { - got_new_entry(gc, passport, store); +// got_new_entry(gc, passport, store); } } - user->list_op = list_op; + if (list_op & MSN_LIST_PL_OP) + { + got_new_entry(gc, passport, store); + } } /************************************************************************** @@ -427,18 +422,18 @@ { GList *l; + /*destroy userlist*/ for (l = userlist->users; l != NULL; l = l->next) { msn_user_destroy(l->data); } - g_list_free(userlist->users); + /*destroy group list*/ for (l = userlist->groups; l != NULL; l = l->next) { msn_group_destroy(l->data); } - g_list_free(userlist->groups); g_queue_free(userlist->buddy_icon_requests); @@ -449,6 +444,22 @@ g_free(userlist); } +MsnUser * +msn_userlist_find_add_user(MsnUserList *userlist,const char *passport,const char *userName) +{ + MsnUser *user; + + user = msn_userlist_find_user(userlist, passport); + if (user == NULL) + { + user = msn_user_new(userlist, passport, userName); + msn_userlist_add_user(userlist, user); + } else { + msn_user_set_store_name(user, userName); + } + return user; +} + void msn_userlist_add_user(MsnUserList *userlist, MsnUser *user) { @@ -472,10 +483,36 @@ { MsnUser *user = (MsnUser *)l->data; +// purple_debug_info("MsnUserList","user passport:%s,passport:%s\n",user->passport,passport); g_return_val_if_fail(user->passport != NULL, NULL); - if (!strcmp(passport, user->passport)) + if (!g_strcasecmp(passport, user->passport)){ +// purple_debug_info("MsnUserList","return:%p\n",user); return user; + } + } + + return NULL; +} + +MsnUser * +msn_userlist_find_user_with_id(MsnUserList *userlist, const char *uid) +{ + GList *l; + + g_return_val_if_fail(uid != NULL, NULL); + + for (l = userlist->users; l != NULL; l = l->next) + { + MsnUser *user = (MsnUser *)l->data; + + if (user->uid == NULL) { + continue; + } + + if ( !g_strcasecmp(uid, user->uid) ) { + return user; + } } return NULL; @@ -494,18 +531,18 @@ } MsnGroup * -msn_userlist_find_group_with_id(MsnUserList *userlist, int id) +msn_userlist_find_group_with_id(MsnUserList *userlist, const char * id) { GList *l; g_return_val_if_fail(userlist != NULL, NULL); - g_return_val_if_fail(id >= 0, NULL); + g_return_val_if_fail(id != NULL, NULL); for (l = userlist->groups; l != NULL; l = l->next) { MsnGroup *group = l->data; - if (group->id == id) + if (!g_strcasecmp(group->id,id)) return group; } @@ -524,14 +561,14 @@ { MsnGroup *group = l->data; - if ((group->name != NULL) && !g_ascii_strcasecmp(name, group->name)) + if ((group->name != NULL) && !g_strcasecmp(name, group->name)) return group; } return NULL; } -int +const char * msn_userlist_find_group_id(MsnUserList *userlist, const char *group_name) { MsnGroup *group; @@ -541,11 +578,11 @@ if (group != NULL) return msn_group_get_id(group); else - return -1; + return NULL; } const char * -msn_userlist_find_group_name(MsnUserList *userlist, int group_id) +msn_userlist_find_group_name(MsnUserList *userlist, const char * group_id) { MsnGroup *group; @@ -558,7 +595,7 @@ } void -msn_userlist_rename_group_id(MsnUserList *userlist, int group_id, +msn_userlist_rename_group_id(MsnUserList *userlist, const char * group_id, const char *new_name) { MsnGroup *group; @@ -570,7 +607,7 @@ } void -msn_userlist_remove_group_id(MsnUserList *userlist, int group_id) +msn_userlist_remove_group_id(MsnUserList *userlist, const char * group_id) { MsnGroup *group; @@ -584,116 +621,293 @@ } void -msn_userlist_rem_buddy(MsnUserList *userlist, - const char *who, int list_id, const char *group_name) +msn_userlist_rem_buddy(MsnUserList *userlist, const char *who) +{ + MsnUser *user = NULL; + + g_return_if_fail(userlist != NULL); + g_return_if_fail(userlist->session != NULL); + g_return_if_fail(userlist->session->contact != NULL); + g_return_if_fail(who != NULL); + + user = msn_userlist_find_user(userlist, who); + + msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_FL); + + /* delete the contact from address book via soap action */ + if (user != NULL) { + msn_delete_contact(userlist->session->contact, user->uid); + } +} + +void +msn_userlist_rem_buddy_from_list(MsnUserList *userlist, const char *who, + MsnListId list_id) { MsnUser *user; - int group_id; - const char *list; + const gchar *list; + MsnListOp list_op = 1 << list_id; user = msn_userlist_find_user(userlist, who); - group_id = -1; - - if (group_name != NULL) - { - group_id = msn_userlist_find_group_id(userlist, group_name); - - if (group_id < 0) - { - /* Whoa, there is no such group. */ - purple_debug_error("msn", "Group doesn't exist: %s\n", group_name); - return; - } - } - - /* First we're going to check if not there. */ - if (!(user_is_there(user, list_id, group_id))) - { + + g_return_if_fail(user != NULL); + + if ( !msn_userlist_user_is_in_list(user, list_id)) { list = lists[list_id]; - purple_debug_error("msn", "User '%s' is not there: %s\n", - who, list); + purple_debug_info("MSN Userlist", "User %s is not in list %s, not removing.\n", who, list); return; } - /* Then request the rem to the server. */ - list = lists[list_id]; + msn_user_unset_op(user, list_op); - msn_notification_rem_buddy(userlist->session->notification, list, who, group_id); + msn_notification_rem_buddy_from_list(userlist->session->notification, list_id, who); } +/*add buddy*/ void -msn_userlist_add_buddy(MsnUserList *userlist, - const char *who, int list_id, - const char *group_name) +msn_userlist_add_buddy(MsnUserList *userlist, const char *who, const char *group_name) { MsnUser *user; - int group_id; - const char *list; - const char *store_name; + MsnCallbackState *state = NULL; + const char *group_id = NULL, *new_group_name; + + new_group_name = group_name == NULL ? MSN_INDIVIDUALS_GROUP_NAME : group_name; - group_id = -1; + + g_return_if_fail(userlist != NULL); + g_return_if_fail(userlist->session != NULL); + + + purple_debug_info("MSN Userlist", "Add user: %s to group: %s\n", who, new_group_name); + + state = msn_callback_state_new(); + msn_callback_state_set_who(state, who); + msn_callback_state_set_new_group_name(state, new_group_name); if (!purple_email_is_valid(who)) { /* 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 */ - if (list_id == MSN_LIST_FL) - { - char *str = g_strdup_printf(_("Unable to add \"%s\"."), who); - purple_notify_error(NULL, NULL, str, - _("The screen name specified is invalid.")); - g_free(str); - } + + char *str = g_strdup_printf(_("Unable to add \"%s\"."), who); + + purple_notify_error(NULL, NULL, str, + _("The screen name specified is invalid.")); + g_free(str); return; } - if (group_name != NULL) + group_id = msn_userlist_find_group_id(userlist, new_group_name); + + if (group_id == NULL) { - group_id = msn_userlist_find_group_id(userlist, group_name); + /* Whoa, we must add that group first. */ + purple_debug_info("MSN Userlist", "Adding user %s to a new group, creating group %s first\n", who, new_group_name); + + msn_callback_state_set_action(state, MSN_ADD_BUDDY); - if (group_id < 0) - { - /* Whoa, we must add that group first. */ - msn_request_add_group(userlist, who, NULL, group_name); + msn_add_group(userlist->session, state, new_group_name); + return; + } else { + msn_callback_state_set_guid(state, group_id); + } + + /* XXX: adding user here may not be correct (should add them in the + * ACK to the ADL command), but for now we need to make sure they exist + * early enough that the ILN command doesn't screw us up */ + + user = msn_userlist_find_add_user(userlist, who, who); + + if ( msn_userlist_user_is_in_list(user, MSN_LIST_FL) ) { + + purple_debug_info("MSN Userlist", "User %s already exists\n", who); + + msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL); + + if (msn_userlist_user_is_in_group(user, group_id)) { + purple_debug_info("MSN Userlist", "User %s is already in group %s, returning\n", who, new_group_name); return; } } + + purple_debug_info("MSN Userlist", "Adding user: %s to group id: %s\n", who, group_id); - user = msn_userlist_find_user(userlist, who); + msn_callback_state_set_action(state, MSN_ADD_BUDDY); + + /* Add contact in the Contact server with a SOAP request and if + successful, send ADL with MSN_LIST_AL and MSN_LIST_FL and a FQY */ + msn_add_contact_to_group(userlist->session->contact, state, who, group_id); +} +void +msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, + MsnListId list_id) +{ + MsnUser *user = NULL; + const gchar *list; + MsnListOp list_op = 1 << list_id; + + g_return_if_fail(userlist != NULL); + + user = msn_userlist_find_add_user(userlist, who, who); + /* First we're going to check if it's already there. */ - if (user_is_there(user, list_id, group_id)) + if (msn_userlist_user_is_in_list(user, list_id)) { list = lists[list_id]; - purple_debug_error("msn", "User '%s' is already there: %s\n", who, list); + purple_debug_info("MSN Userlist", "User '%s' is already in list: %s\n", who, list); return; } + + //store_name = (user != NULL) ? get_store_name(user) : who; + + //purple_debug_info("MSN Userlist", "store_name = %s\n", store_name); + + /* XXX: see XXX above, this should really be done when we get the response from + the server */ + + msn_user_set_op(user, list_op); + + msn_notification_add_buddy_to_list(userlist->session->notification, list_id, who); +} + +gboolean +msn_userlist_add_buddy_to_group(MsnUserList *userlist, const char *who, + const char *group_name) +{ + MsnUser *user; + gchar * group_id; + + g_return_val_if_fail(userlist != NULL, FALSE); + g_return_val_if_fail(group_name != NULL, FALSE); + g_return_val_if_fail(who != NULL, FALSE); + + purple_debug_info("MSN Userlist","Adding buddy with passport %s to group %s\n", who, group_name); + + if ( (group_id = (gchar *)msn_userlist_find_group_id(userlist, group_name)) == NULL) { + purple_debug_error("MSN Userlist", "Group %s has no guid!\n", group_name); + return FALSE; + } - store_name = (user != NULL) ? get_store_name(user) : who; + if ( (user = msn_userlist_find_user(userlist, who)) == NULL) { + purple_debug_error("MSN Userlist", "User %s not found!", who); + return FALSE; + } + + msn_user_add_group_id(user, group_id); + + return TRUE; +} + + +gboolean +msn_userlist_rem_buddy_from_group(MsnUserList *userlist, const char *who, + const char *group_name) +{ + const gchar * group_id; + MsnUser *user; - /* Then request the add to the server. */ - list = lists[list_id]; + g_return_val_if_fail(userlist != NULL, FALSE); + g_return_val_if_fail(group_name != NULL, FALSE); + g_return_val_if_fail(who != NULL, FALSE); + + purple_debug_info("MSN Userlist","Removing buddy with passport %s from group %s\n", who, group_name); - msn_notification_add_buddy(userlist->session->notification, list, who, - store_name, group_id); + if ( (group_id = msn_userlist_find_group_id(userlist, group_name)) == NULL) { + purple_debug_error("MSN Userlist", "Group %s has no guid!\n", group_name); + return FALSE; + } + + if ( (user = msn_userlist_find_user(userlist, who)) == NULL) { + purple_debug_error("MSN Userlist", "User %s not found!", who); + return FALSE; + } + + msn_user_remove_group_id(user, group_id); + + return TRUE; } void msn_userlist_move_buddy(MsnUserList *userlist, const char *who, - const char *old_group_name, const char *new_group_name) + const char *old_group_name, const char *new_group_name) { - int new_group_id; + const char *new_group_id; + MsnCallbackState *state; + + g_return_if_fail(userlist != NULL); + g_return_if_fail(userlist->session != NULL); + g_return_if_fail(userlist->session->contact != NULL); + + state = msn_callback_state_new(); + msn_callback_state_set_who(state, who); + msn_callback_state_set_action(state, MSN_MOVE_BUDDY); + msn_callback_state_set_old_group_name(state, old_group_name); + msn_callback_state_set_new_group_name(state, new_group_name); new_group_id = msn_userlist_find_group_id(userlist, new_group_name); - if (new_group_id < 0) - { - msn_request_add_group(userlist, who, old_group_name, new_group_name); + if (new_group_id == NULL) + { + msn_add_group(userlist->session, state, new_group_name); return; } + + /* add the contact to the new group, and remove it from the old one in + * the callback + */ + msn_add_contact_to_group(userlist->session->contact, state, who, new_group_id); +} - msn_userlist_add_buddy(userlist, who, MSN_LIST_FL, new_group_name); - msn_userlist_rem_buddy(userlist, who, MSN_LIST_FL, old_group_name); +/*load userlist from the Blist file cache*/ +void +msn_userlist_load(MsnSession *session) +{ + PurpleBlistNode *gnode, *cnode, *bnode; + PurpleConnection *gc = purple_account_get_connection(session->account); + GSList *l; + MsnUser * user; + + g_return_if_fail(gc != NULL); + + for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) + { + if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) + continue; + for (cnode = gnode->child; cnode; cnode = cnode->next) + { + if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) + continue; + for (bnode = cnode->child; bnode; bnode = bnode->next) + { + PurpleBuddy *b; + if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) + continue; + b = (PurpleBuddy *)bnode; + if (b->account == gc->account) + { + user = msn_userlist_find_add_user(session->userlist, + b->name,NULL); + b->proto_data = user; + msn_user_set_op(user, MSN_LIST_FL_OP); + } + } + } + } + for (l = session->account->permit; l != NULL; l = l->next) + { + user = msn_userlist_find_add_user(session->userlist, + (char *)l->data,NULL); + msn_user_set_op(user, MSN_LIST_AL_OP); + } + for (l = session->account->deny; l != NULL; l = l->next) + { + user = msn_userlist_find_add_user(session->userlist, + (char *)l->data,NULL); + msn_user_set_op(user, MSN_LIST_BL_OP); + } + } + diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/msn/userlist.h --- a/libpurple/protocols/msn/userlist.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/msn/userlist.h Tue Oct 23 17:41:06 2007 +0000 @@ -35,16 +35,11 @@ MSN_LIST_FL, MSN_LIST_AL, MSN_LIST_BL, - MSN_LIST_RL + MSN_LIST_RL, + MSN_LIST_PL } MsnListId; -typedef struct -{ - char *who; - char *old_group_name; - -} MsnMoveBuddy; struct _MsnUserList { @@ -64,40 +59,57 @@ }; +gboolean msn_userlist_user_is_in_group(MsnUser *user, const char * group_id); +gboolean msn_userlist_user_is_in_list(MsnUser *user, MsnListId list_id); MsnListId msn_get_list_id(const char *list); void msn_got_add_user(MsnSession *session, MsnUser *user, - MsnListId list_id, int group_id); + MsnListId list_id, const char *group_id); void msn_got_rem_user(MsnSession *session, MsnUser *user, - MsnListId list_id, int group_id); + MsnListId list_id, const char *group_id); void msn_got_lst_user(MsnSession *session, MsnUser *user, int list_op, GSList *group_ids); MsnUserList *msn_userlist_new(MsnSession *session); void msn_userlist_destroy(MsnUserList *userlist); + void msn_userlist_add_user(MsnUserList *userlist, MsnUser *user); void msn_userlist_remove_user(MsnUserList *userlist, MsnUser *user); -MsnUser *msn_userlist_find_user(MsnUserList *userlist, - const char *passport); + +MsnUser * msn_userlist_find_user(MsnUserList *userlist, const char *passport); +MsnUser * msn_userlist_find_add_user(MsnUserList *userlist, + const char *passport, const char *userName); +MsnUser * msn_userlist_find_user_with_id(MsnUserList *userlist, const char *uid); + void msn_userlist_add_group(MsnUserList *userlist, MsnGroup *group); void msn_userlist_remove_group(MsnUserList *userlist, MsnGroup *group); -MsnGroup *msn_userlist_find_group_with_id(MsnUserList *userlist, int id); -MsnGroup *msn_userlist_find_group_with_name(MsnUserList *userlist, - const char *name); -int msn_userlist_find_group_id(MsnUserList *userlist, - const char *group_name); -const char *msn_userlist_find_group_name(MsnUserList *userlist, - int group_id); -void msn_userlist_rename_group_id(MsnUserList *userlist, int group_id, - const char *new_name); -void msn_userlist_remove_group_id(MsnUserList *userlist, int group_id); +MsnGroup *msn_userlist_find_group_with_id(MsnUserList *userlist, const char *id); +MsnGroup *msn_userlist_find_group_with_name(MsnUserList *userlist, const char *name); +const char * msn_userlist_find_group_id(MsnUserList *userlist, + const char *group_name); +const char *msn_userlist_find_group_name(MsnUserList *userlist, const char *group_id); +void msn_userlist_rename_group_id(MsnUserList *userlist, const char *group_id, + const char *new_name); +void msn_userlist_remove_group_id(MsnUserList *userlist, const char *group_id); -void msn_userlist_rem_buddy(MsnUserList *userlist, const char *who, - int list_id, const char *group_name); -void msn_userlist_add_buddy(MsnUserList *userlist, const char *who, - int list_id, const char *group_name); +void msn_userlist_rem_buddy(MsnUserList *userlist, const char *who); +void msn_userlist_add_buddy(MsnUserList *userlist, + const char *who, const char *group_name); void msn_userlist_move_buddy(MsnUserList *userlist, const char *who, - const char *old_group_name, - const char *new_group_name); + const char *old_group_name, + const char *new_group_name); + +gboolean msn_userlist_add_buddy_to_group(MsnUserList *userlist, const char *who, + const char *group_name); +gboolean msn_userlist_rem_buddy_from_group(MsnUserList *userlist, + const char *who, + const char *group_name); + +void msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, + MsnListId list_id); +void msn_userlist_rem_buddy_from_list(MsnUserList *userlist, const char *who, + MsnListId list_id); + +void msn_userlist_load(MsnSession *session); #endif /* _MSN_USERLIST_H_ */ diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/myspace/markup.c --- a/libpurple/protocols/myspace/markup.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/myspace/markup.c Tue Oct 23 17:41:06 2007 +0000 @@ -519,7 +519,8 @@ #endif err = g_strdup_printf("html_tag_to_msim_markup: unrecognized " - "HTML tag %s was sent by the IM client; ignoring", (root->name ? root->name : "(NULL)")); + "HTML tag %s was sent by the IM client; ignoring", + root->name ? root->name : "(NULL)"); msim_unrecognized(NULL, NULL, err); g_free(err); } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/myspace/myspace.c --- a/libpurple/protocols/myspace/myspace.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/myspace/myspace.c Tue Oct 23 17:41:06 2007 +0000 @@ -291,9 +291,10 @@ /* Notify an error message also, because this is important! */ purple_notify_error(acct, _("MySpaceIM Error"), str, NULL); + gc->wants_to_die = TRUE; purple_connection_error(gc, str); - g_free(str); + return; } #endif @@ -458,6 +459,7 @@ purple_cipher_context_append(key_context, hash_pw, HASH_SIZE); purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE); purple_cipher_context_digest(key_context, sizeof(key), key, NULL); + purple_cipher_context_destroy(key_context); #ifdef MSIM_DEBUG_LOGIN_CHALLENGE purple_debug_info("msim", "key = "); @@ -1044,7 +1046,7 @@ PurpleStatusType *type; MsimSession *session; guint status_code; - const gchar *statstring; + gchar *statstring; session = (MsimSession *)account->gc->proto_data; @@ -1078,7 +1080,7 @@ break; } - statstring = purple_status_get_attr_string(status, "message"); + statstring = (gchar *)purple_status_get_attr_string(status, "message"); if (!statstring) { statstring = ""; @@ -1087,7 +1089,7 @@ /* Status strings are plain text. */ statstring = purple_markup_strip_html(statstring); - msim_set_status_code(session, status_code, g_strdup(statstring)); + msim_set_status_code(session, status_code, statstring); } /** Go idle. */ @@ -1218,7 +1220,7 @@ if (uid == wanted_uid) { ret = g_strdup(name); - break; + break; } } @@ -1795,11 +1797,13 @@ /* Destroy session if fatal. */ if (msim_msg_get(msg, "fatal")) { purple_debug_info("msim", "fatal error, closing\n"); - if (err == 260) { - /* Incorrect password */ - session->gc->wants_to_die = TRUE; - if (!purple_account_get_remember_password(session->account)) - purple_account_set_password(session->account, NULL); + switch (err) { + case 260: /* Incorrect password */ + case 6: /* Logged in elsewhere */ + session->gc->wants_to_die = TRUE; + if (!purple_account_get_remember_password(session->account)) + purple_account_set_password(session->account, NULL); + break; } purple_connection_error(session->gc, full_errmsg); } else { @@ -1871,6 +1875,7 @@ purple_blist_add_buddy(buddy, NULL, NULL, NULL); user = msim_get_user_from_buddy(buddy); + /* TODO: free user. memory leak? */ /* All buddies on list should have 'uid' integer associated with them. */ purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f")); @@ -2537,14 +2542,14 @@ display_name = headline = NULL; /* Retrieve display name and/or headline, depending on user preference. */ - if (purple_account_get_bool(session->account, "show_display_name", TRUE)) { + if (purple_account_get_bool(session->account, "show_headline", TRUE)) { + headline = user->headline; + } + + if (purple_account_get_bool(session->account, "show_display_name", FALSE)) { display_name = user->display_name; } - if (purple_account_get_bool(session->account, "show_headline", FALSE)) { - headline = user->headline; - } - /* Return appropriate combination of display name and/or headline, or neither. */ if (display_name && headline) { @@ -2864,7 +2869,7 @@ } /** Callbacks called by Purple, to access this plugin. */ -PurplePluginProtocolInfo prpl_info = { +static PurplePluginProtocolInfo prpl_info = { /* options */ OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ | OPT_PROTO_MAIL_CHECK, diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/myspace/user.c --- a/libpurple/protocols/myspace/user.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/myspace/user.c Tue Oct 23 17:41:06 2007 +0000 @@ -161,7 +161,13 @@ } } -/** Store a field of information about a buddy. */ +/** Store a field of information about a buddy. + * + * @param key_str Key to store. + * @param value_str Value string, either user takes ownership of this string + * or it is freed if MsimUser doesn't store the string. + * @param user User to store data in. Existing data will be replaced. + * */ void msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user) { @@ -175,21 +181,27 @@ /* Need to store in MsimUser, too? What if not on blist? */ } else if (g_str_equal(key_str, "Age")) { user->age = atol(value_str); + g_free(value_str); } else if (g_str_equal(key_str, "Gender")) { - user->gender = g_strdup(value_str); + g_free(user->gender); + user->gender = value_str; } else if (g_str_equal(key_str, "Location")) { - user->location = g_strdup(value_str); + g_free(user->location); + user->location = value_str; } else if (g_str_equal(key_str, "TotalFriends")) { user->total_friends = atol(value_str); } else if (g_str_equal(key_str, "DisplayName")) { - user->display_name = g_strdup(value_str); + g_free(user->display_name); + user->display_name = value_str; } else if (g_str_equal(key_str, "BandName")) { - user->band_name = g_strdup(value_str); + g_free(user->band_name); + user->band_name = value_str; } else if (g_str_equal(key_str, "SongName")) { - user->song_name = g_strdup(value_str); + g_free(user->song_name); + user->song_name = value_str; } else if (g_str_equal(key_str, "UserName") || g_str_equal(key_str, "IMName") || g_str_equal(key_str, "NickName")) { /* Ignore because PurpleBuddy knows this already */ - ; + g_free(value_str); } else if (g_str_equal(key_str, "ImageURL") || g_str_equal(key_str, "AvatarURL")) { if (user->temporary_user) { /* This user will be destroyed soon; don't try to look up its image or avatar, @@ -201,7 +213,17 @@ const gchar *previous_url; - user->image_url = g_strdup(value_str); + if (user->temporary_user) { + /* This user will be destroyed soon; don't try to look up its image or avatar, + * since that won't return immediately and we will end up accessing freed data. + */ + g_free(value_str); + return; + } + + g_free(user->image_url); + + user->image_url = value_str; /* Instead of showing 'no photo' picture, show nothing. */ if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif")) @@ -222,14 +244,17 @@ } else if (g_str_equal(key_str, "LastImageUpdated")) { /* TODO: use somewhere */ user->last_image_updated = atol(value_str); + g_free(value_str); } else if (g_str_equal(key_str, "Headline")) { - user->headline = g_strdup(value_str); + g_free(user->headline); + user->headline = value_str; } else { /* TODO: other fields in MsimUser */ gchar *msg; msg = g_strdup_printf("msim_store_user_info_each: unknown field %s=%s", key_str, value_str); + g_free(value_str); msim_unrecognized(NULL, NULL, msg); @@ -299,7 +324,6 @@ value_str = msim_msg_get_string_from_element(elem); msim_store_user_info_each(key_str, value_str, user); - g_free(value_str); } if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN && @@ -316,6 +340,7 @@ } msim_msg_free(body); + g_free(username); return TRUE; } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/myspace/zap.c --- a/libpurple/protocols/myspace/zap.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/myspace/zap.c Tue Oct 23 17:41:06 2007 +0000 @@ -41,15 +41,52 @@ types = g_list_append(types, attn); /* 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." */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Zap"), _("%s has zapped you!"), _("Zapping %s...")); + + /* Whack means "to hit or strike someone with a sharp blow" */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Whack"), _("%s has whacked you!"), _("Whacking %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. */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Torch"), _("%s has torched you!"), _("Torching %s...")); + + /* Smooch means "to kiss someone, often enthusiastically" */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Smooch"), _("%s has smooched you!"), _("Smooching %s...")); + + /* A hug is a display of affection; wrapping your arms around someone */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Hug"), _("%s has hugged you!"), _("Hugging %s...")); + + /* Slap means "to hit someone with an open/flat hand" */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Slap"), _("%s has slapped you!"), _("Slapping %s...")); + + /* Goose means "to pinch someone on their butt" */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Goose"), _("%s has goosed you!"), _("Goosing %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. */ _MSIM_ADD_NEW_ATTENTION(NULL, _("High-five"), _("%s has high-fived you!"), _("High-fiving %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. */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Punk"), _("%s has punk'd you!"), _("Punking %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. */ _MSIM_ADD_NEW_ATTENTION(NULL, _("Raspberry"), _("%s has raspberried you!"), _("Raspberrying %s...")); } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/novell/novell.c --- a/libpurple/protocols/novell/novell.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/novell/novell.c Tue Oct 23 17:41:06 2007 +0000 @@ -130,6 +130,8 @@ if (ret_code == NMERR_AUTHENTICATION_FAILED || ret_code == NMERR_CREDENTIALS_MISSING || ret_code == NMERR_PASSWORD_INVALID) { + if (!purple_account_get_remember_password(gc->account)) + purple_account_set_password(gc->account, NULL); gc->wants_to_die = TRUE; } purple_connection_error(gc, err); @@ -2004,11 +2006,14 @@ _evt_user_disconnect(NMUser * user, NMEvent * event) { PurpleConnection *gc; - - gc = purple_account_get_connection((PurpleAccount *) user->client_data); + PurpleAccount *account = user->client_data; + + gc = purple_account_get_connection(account); if (gc) { gc->wants_to_die = TRUE; /* we don't want to reconnect in this case */ + if (!purple_account_get_remember_password(account)) + purple_account_set_password(account, NULL); purple_connection_error(gc, _("You have been logged out because you" " logged in at another workstation.")); } @@ -2799,7 +2804,7 @@ const char *text = NULL; if (buddy == NULL) - return; + return; gc = purple_account_get_connection(buddy->account); if (gc == NULL || (user = gc->proto_data) == NULL) diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/oscar/flap_connection.c --- a/libpurple/protocols/oscar/flap_connection.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/oscar/flap_connection.c Tue Oct 23 17:41:06 2007 +0000 @@ -382,6 +382,8 @@ gchar *tmp; if (conn->disconnect_code == 0x0001) { tmp = g_strdup(_("You have signed on from another location.")); + if (!purple_account_get_remember_password(account)) + purple_account_set_password(account, NULL); od->gc->wants_to_die = TRUE; } else if (conn->disconnect_reason == OSCAR_DISCONNECT_REMOTE_CLOSED) tmp = g_strdup(_("Server closed the connection.")); diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Tue Oct 23 17:41:06 2007 +0000 @@ -5575,6 +5575,8 @@ return "hiptop"; if (userinfo->capabilities & OSCAR_CAPABILITY_SECUREIM) return "secure"; + if (userinfo->icqinfo.status & AIM_ICQ_STATE_BIRTHDAY) + return "birthday"; } return NULL; } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/qq/login_logout.c --- a/libpurple/protocols/qq/login_logout.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/qq/login_logout.c Tue Oct 23 17:41:06 2007 +0000 @@ -480,6 +480,8 @@ switch (ret) { case QQ_LOGIN_REPLY_PWD_ERROR: gc->wants_to_die = TRUE; + if (!purple_account_get_remember_password(gc->account)) + purple_account_set_password(gc->account, NULL); purple_connection_error(gc, _("Incorrect password.")); break; case QQ_LOGIN_REPLY_MISC_ERROR: diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/simple/simple.c --- a/libpurple/protocols/simple/simple.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/simple/simple.c Tue Oct 23 17:41:06 2007 +0000 @@ -696,7 +696,7 @@ static void do_register_exp(struct simple_account_data *sip, int expire) { char *uri, *to, *contact, *hdr; - /* Set our default expiration to 900, + /* Set our default expiration to 900, * as done in the initialization of the simple_account_data * structure. */ @@ -1043,6 +1043,8 @@ if(sip->registrar.retries > SIMPLE_REGISTER_RETRY_MAX) { purple_debug_info("simple", "Setting wants_to_die to true.\n"); sip->gc->wants_to_die = TRUE; + if (!purple_account_get_remember_password(sip->gc->account)) + purple_account_set_password(sip->gc->account, NULL); purple_connection_error(sip->gc, _("Incorrect password.")); return TRUE; } diff -r 7697f6872380 -r f7e4a558a439 libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Tue Oct 23 17:41:06 2007 +0000 @@ -202,6 +202,8 @@ if (pkt->service == YAHOO_SERVICE_LOGOFF && pkt->status == -1) { gc->wants_to_die = TRUE; + if (!purple_account_get_remember_password(account)) + purple_account_set_password(account, NULL); purple_connection_error(gc, _("You have signed on from another location.")); return; } @@ -4090,12 +4092,12 @@ { return TRUE; } - + gboolean yahoo_send_attention(PurpleConnection *gc, const char *username, guint type) { PurpleConversation *c; - c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, + c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, username, gc->account); g_return_val_if_fail(c != NULL, FALSE); @@ -4120,7 +4122,7 @@ attn->incoming_description = _("%s has buzzed you!"); attn->outgoing_description = _("Buzzing %s..."); list = g_list_append(list, attn); - } + } return list; } diff -r 7697f6872380 -r f7e4a558a439 libpurple/prpl.h --- a/libpurple/prpl.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/prpl.h Tue Oct 23 17:41:06 2007 +0000 @@ -226,11 +226,17 @@ void (*tooltip_text)(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboolean full); /** - * This must be implemented, and must add at least the offline - * and online states. + * Returns a list of #PurpleStatusType which exist for this account; + * this must be implemented, and must add at least the offline and + * online states. */ GList *(*status_types)(PurpleAccount *account); + /** + * Returns a list of #PurpleMenuAction structs, which represent extra + * actions to be shown in (for example) the right-click menu for @a + * node. + */ GList *(*blist_node_menu)(PurpleBlistNode *node); GList *(*chat_info)(PurpleConnection *); GHashTable *(*chat_info_defaults)(PurpleConnection *, const char *chat_name); @@ -258,6 +264,10 @@ void (*set_info)(PurpleConnection *, const char *info); unsigned int (*send_typing)(PurpleConnection *, const char *name, PurpleTypingState state); + /** + * Should arrange for purple_notify_userinfo() to be called with + * @a who's user info. + */ void (*get_info)(PurpleConnection *, const char *who); void (*set_status)(PurpleAccount *account, PurpleStatus *status); @@ -287,8 +297,14 @@ /** new user registration */ void (*register_user)(PurpleAccount *); - /* get "chat buddy" info and away message */ + /** + * @deprecated Use #PurplePluginProtocolInfo.get_info instead. + */ void (*get_cb_info)(PurpleConnection *, int, const char *who); + /** + * @deprecated Use #PurplePluginProtocolInfo.get_cb_real_name and + * #PurplePluginProtocolInfo.status_text instead. + */ void (*get_cb_away)(PurpleConnection *, int, const char *who); /** save/store buddy's alias on server list/roster */ @@ -348,9 +364,12 @@ /* room list serialize */ char *(*roomlist_room_serialize)(PurpleRoomlistRoom *room); - /* Remove the user from the server. (This is only at the bottom to keep binary compatibility.) - * The account can either be connected or disconnected. After the removal is finished, - * the connection will stay open and has to be closed! + /** Remove the user from the server. The account can either be + * connected or disconnected. After the removal is finished, the + * connection will stay open and has to be closed! + */ + /* This is here rather than next to register_user for API compatibility + * reasons. */ void (*unregister_user)(PurpleAccount *, PurpleAccountUnregistrationCb cb, void *user_data); diff -r 7697f6872380 -r f7e4a558a439 libpurple/request.h --- a/libpurple/request.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/request.h Tue Oct 23 17:41:06 2007 +0000 @@ -266,7 +266,7 @@ * * @param fields The fields list. * - * @return A list of groups. + * @constreturn A list of groups. */ GList *purple_request_fields_get_groups(const PurpleRequestFields *fields); @@ -424,7 +424,7 @@ * * @param group The group. * - * @return The list of fields in the group. + * @constreturn The list of fields in the group. */ GList *purple_request_field_group_get_fields( const PurpleRequestFieldGroup *group); @@ -836,7 +836,7 @@ * * @param field The field. * - * @return The list of labels. + * @constreturn The list of labels. */ GList *purple_request_field_choice_get_labels(const PurpleRequestField *field); diff -r 7697f6872380 -r f7e4a558a439 libpurple/savedstatuses.c --- a/libpurple/savedstatuses.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/savedstatuses.c Tue Oct 23 17:41:06 2007 +0000 @@ -761,10 +761,13 @@ { GList *popular = NULL; GList *cur; - int i; + unsigned int i; PurpleSavedStatus *next; - /* Copy 'how_many' elements to a new list */ + /* Copy 'how_many' elements to a new list. If 'how_many' is 0, then copy all of 'em. */ + if (how_many == 0) + how_many = (unsigned int) -1; + i = 0; cur = saved_statuses; while ((i < how_many) && (cur != NULL)) @@ -773,7 +776,7 @@ if ((!purple_savedstatus_is_transient(next) || purple_savedstatus_get_message(next) != NULL)) { - popular = g_list_prepend(popular, cur->data); + popular = g_list_prepend(popular, next); i++; } cur = cur->next; diff -r 7697f6872380 -r f7e4a558a439 libpurple/savedstatuses.h --- a/libpurple/savedstatuses.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/savedstatuses.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file savedstatuses.h Saved Status API * @ingroup core + * @see @ref savedstatus-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref savedstatus-signals */ #ifndef _PURPLE_SAVEDSTATUSES_H_ #define _PURPLE_SAVEDSTATUSES_H_ @@ -171,11 +170,8 @@ /** * Returns the n most popular saved statuses. "Popularity" is * determined by when the last time a saved_status was used and - * how many times it has been used. If the current status would - * normally show up in this list, then it is omited and instead - * the "how_many+1" saved status will appear in the list. Also - * transient statuses without messages are not included in the - * list. + * how many times it has been used. Transient statuses without + * messages are not included in the list. * * @param how_many The maximum number of saved statuses * to return, or '0' to get all saved diff -r 7697f6872380 -r f7e4a558a439 libpurple/server.c --- a/libpurple/server.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/server.c Tue Oct 23 17:41:06 2007 +0000 @@ -543,7 +543,7 @@ PurpleMessageFlags flags, time_t mtime) { PurpleAccount *account; - PurpleConversation *cnv; + PurpleConversation *conv; char *message, *name; char *angel, *buffy; int plugin_return; @@ -562,22 +562,19 @@ * We should update the conversation window buttons and menu, * if it exists. */ - cnv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, gc->account); + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, gc->account); /* - * Plugin stuff. we pass a char ** but we don't want to pass what's - * been given us by the prpls. So we create temp holders and pass - * those instead. It's basically just to avoid segfaults. + * Make copies of the message and the sender in case plugins want + * to free these strings and replace them with a modifed version. */ - /* TODO: MAX(message, BUF_LONG) is pretty ugly. */ - buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG)); - strcpy(buffy, msg); + buffy = g_strdup(msg); angel = g_strdup(who); plugin_return = GPOINTER_TO_INT( purple_signal_emit_return_1(purple_conversations_get_handle(), "receiving-im-msg", gc->account, - &angel, &buffy, cnv, &flags)); + &angel, &buffy, conv, &flags)); if (!buffy || !angel || plugin_return) { g_free(buffy); @@ -589,21 +586,21 @@ message = buffy; purple_signal_emit(purple_conversations_get_handle(), "received-im-msg", gc->account, - name, message, cnv, flags); + name, message, conv, flags); /* search for conversation again in case it was created by received-im-msg handler */ - if (cnv == NULL) - cnv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, gc->account); + if (conv == NULL) + conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, gc->account); /* * XXX: Should we be setting this here, or relying on prpls to set it? */ flags |= PURPLE_MESSAGE_RECV; - if (cnv == NULL) - cnv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name); + if (conv == NULL) + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name); - purple_conv_im_write(PURPLE_CONV_IM(cnv), NULL, message, flags, mtime); + purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, message, flags, mtime); g_free(message); /* @@ -670,7 +667,7 @@ { serv_send_im(gc, name, away_msg, PURPLE_MESSAGE_AUTO_RESP); - purple_conv_im_write(PURPLE_CONV_IM(cnv), NULL, away_msg, + purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, away_msg, PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_AUTO_RESP, mtime); } @@ -892,15 +889,10 @@ return; /* - * Plugin stuff. We pass a char ** but we don't want to pass what's - * been given us by the prpls. so we create temp holders and pass those - * instead. It's basically just to avoid segfaults. Of course, if the - * data is binary, plugins don't see it. Bitch all you want; i really - * don't want you to be dealing with it. + * Make copies of the message and the sender in case plugins want + * to free these strings and replace them with a modifed version. */ - /* TODO: MAX(message, BUF_LONG) is pretty ugly. */ - buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); - strcpy(buffy, message); + buffy = g_strdup(message); angel = g_strdup(who); plugin_return = GPOINTER_TO_INT( @@ -913,6 +905,7 @@ g_free(angel); return; } + who = angel; message = buffy; diff -r 7697f6872380 -r f7e4a558a439 libpurple/sound.h --- a/libpurple/sound.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/sound.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file sound.h Sound API * @ingroup core + * @see @ref sound-signals */ /* purple @@ -22,8 +23,6 @@ * 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 - * - * @see @ref sound-signals */ #ifndef _PURPLE_SOUND_H_ #define _PURPLE_SOUND_H_ diff -r 7697f6872380 -r f7e4a558a439 libpurple/sslconn.h --- a/libpurple/sslconn.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/sslconn.h Tue Oct 23 17:41:06 2007 +0000 @@ -31,6 +31,7 @@ #define PURPLE_SSL_DEFAULT_PORT 443 +/** Possible SSL errors. */ typedef enum { PURPLE_SSL_HANDSHAKE_FAILED = 1, @@ -86,39 +87,48 @@ typedef struct { /** Initializes the SSL system provided. - * @return TRUE if initialization succeeded - */ + * @return @a TRUE if initialization succeeded + * @see purple_ssl_init + */ gboolean (*init)(void); - /** Unloads the SSL system. Inverse of init. */ + /** Unloads the SSL system. Inverse of PurpleSslOps::init. + * @see purple_ssl_uninit + */ void (*uninit)(void); - /** Sets up the SSL connection for a PurpleSslConnection once - * the TCP connection has been established */ + /** Sets up the SSL connection for a #PurpleSslConnection once + * the TCP connection has been established + * @see purple_ssl_connect + */ void (*connectfunc)(PurpleSslConnection *gsc); /** Destroys the internal data of the SSL connection provided. * Freeing gsc itself is left to purple_ssl_close() - * + * @see purple_ssl_close */ void (*close)(PurpleSslConnection *gsc); /** Reads data from a connection (like POSIX read()) - * @param gsc Connection context - * @param data Pointer to buffer to drop data into - * @param len Maximum number of bytes to read - * @return Number of bytes actually written into the buffer, or <0 on error + * @param gsc Connection context + * @param data Pointer to buffer to drop data into + * @param len Maximum number of bytes to read + * @return Number of bytes actually written into @a data (which may be + * less than @a len), or <0 on error + * @see purple_ssl_read */ size_t (*read)(PurpleSslConnection *gsc, void *data, size_t len); /** Writes data to a connection (like POSIX send()) - * @param gsc Connection context - * @param data Data buffer to send data from - * @param len Number of bytes to send from buffer - * @return The number of bytes written (may be less than len) or <0 on error + * @param gsc Connection context + * @param data Data buffer to send data from + * @param len Number of bytes to send from buffer + * @return The number of bytes written to @a data (may be less than + * @a len) or <0 on error + * @see purple_ssl_write */ size_t (*write)(PurpleSslConnection *gsc, const void *data, size_t len); /** Obtains the certificate chain provided by the peer * * @param gsc Connection context - * @return A newly allocated list containing the certificates - * the peer provided. - * @see PurpleCertificate + * @return A newly allocated list of #PurpleCertificate containing the + * certificates the peer provided. + * @see purple_ssl_get_peer_certificates * @todo Decide whether the ordering of certificates in this * list can be guaranteed. */ @@ -141,12 +151,12 @@ /** * Returns whether or not SSL is currently supported. * - * @return TRUE if SSL is supported, or FALSE otherwise. + * @return @a TRUE if SSL is supported, or @a FALSE otherwise. */ gboolean purple_ssl_is_supported(void); /** - * Returns a human-readable string for an SSL error + * Returns a human-readable string for an SSL error. * * @param error Error code * @return Human-readable error explanation @@ -163,8 +173,8 @@ * @param port The destination port. * @param func The SSL input handler function. * @param error_func The SSL error handler function. This function - * should NOT call purple_ssl_close(). In the event - * of an error the PurpleSslConnection will be + * should NOT call purple_ssl_close(). In + * the event of an error the #PurpleSslConnection will be * destroyed for you. * @param data User-defined data. * @@ -177,7 +187,8 @@ /** * Makes a SSL connection using an already open file descriptor. - * DEPRECATED. Use purple_ssl_connect_with_host_fd instead. + * + * @deprecated Use purple_ssl_connect_with_host_fd() instead. * * @param account The account making the connection. * @param fd The file descriptor. @@ -193,17 +204,19 @@ void *data); /** - * Makes a SSL connection using an already open file descriptor. - * - * @param account The account making the connection. - * @param fd The file descriptor. - * @param func The SSL input handler function. - * @param error_func The SSL error handler function. - * @param host The hostname of the other peer (to verify the CN) - * @param data User-defined data. - * - * @return The SSL connection handle. - */ + * Makes a SSL connection using an already open file descriptor. + * + * @param account The account making the connection. + * @param fd The file descriptor. + * @param func The SSL input handler function. + * @param error_func The SSL error handler function. + * @param host The hostname of the other peer (to verify the CN) + * @param data User-defined data. + * + * @return The SSL connection handle. + * + * @since 2.2.0 + */ PurpleSslConnection *purple_ssl_connect_with_host_fd(PurpleAccount *account, int fd, PurpleSslInputFunction func, PurpleSslErrorFunction error_func, @@ -256,7 +269,9 @@ * @param gsc The SSL connection handle * * @return The peer certificate chain, in the order of certificate, issuer, - * issuer's issuer, etc. NULL if no certificates have been provided, + * issuer's issuer, etc. @a NULL if no certificates have been provided, + * + * @since 2.2.0 */ GList * purple_ssl_get_peer_certificates(PurpleSslConnection *gsc); diff -r 7697f6872380 -r f7e4a558a439 libpurple/status.c --- a/libpurple/status.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/status.c Tue Oct 23 17:41:06 2007 +0000 @@ -601,7 +601,7 @@ { time_t current_time = time(NULL); const char *buddy_alias = purple_buddy_get_alias(buddy); - char *tmp; + char *tmp, *logtmp; PurpleLog *log; if (old_status != NULL) @@ -609,6 +609,10 @@ tmp = g_strdup_printf(_("%s changed status from %s to %s"), buddy_alias, purple_status_get_name(old_status), purple_status_get_name(new_status)); + logtmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias, buddy->name, + purple_status_get_name(old_status), + purple_status_get_name(new_status)); + } else { @@ -618,11 +622,16 @@ { tmp = g_strdup_printf(_("%s is now %s"), buddy_alias, purple_status_get_name(new_status)); + logtmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias, buddy->name, + purple_status_get_name(new_status)); + } else { tmp = g_strdup_printf(_("%s is no longer %s"), buddy_alias, purple_status_get_name(new_status)); + logtmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias, buddy->name, + purple_status_get_name(new_status)); } } @@ -630,10 +639,11 @@ if (log != NULL) { purple_log_write(log, PURPLE_MESSAGE_SYSTEM, buddy_alias, - current_time, tmp); + current_time, logtmp); } g_free(tmp); + g_free(logtmp); } } diff -r 7697f6872380 -r f7e4a558a439 libpurple/status.h --- a/libpurple/status.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/status.h Tue Oct 23 17:41:06 2007 +0000 @@ -121,7 +121,8 @@ #define PURPLE_TUNE_TRACK "tune_track" #define PURPLE_TUNE_TIME "tune_time" #define PURPLE_TUNE_YEAR "tune_year" -#define PURPLE_TUNE_URL "tune_url" +#define PURPLE_TUNE_URL "tune_url" +#define PURPLE_TUNE_FULL "tune_full" #ifdef __cplusplus extern "C" { diff -r 7697f6872380 -r f7e4a558a439 libpurple/util.c --- a/libpurple/util.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/util.c Tue Oct 23 17:41:06 2007 +0000 @@ -68,7 +68,7 @@ }; static char *custom_user_dir = NULL; -static char *home_dir = NULL; +static char *user_dir = NULL; PurpleMenuAction * purple_menu_action_new(const char *label, PurpleCallback callback, gpointer data, @@ -515,23 +515,6 @@ * Date/Time Functions **************************************************************************/ -#ifdef _WIN32 -static long win32_get_tz_offset() { - TIME_ZONE_INFORMATION tzi; - DWORD ret; - long off = -1; - - if ((ret = GetTimeZoneInformation(&tzi)) != TIME_ZONE_ID_INVALID) - { - off = -(tzi.Bias * 60); - if (ret == TIME_ZONE_ID_DAYLIGHT) - off -= tzi.DaylightBias * 60; - } - - return off; -} -#endif - const char *purple_get_tzoff_str(const struct tm *tm, gboolean iso) { static char buf[7]; @@ -546,7 +529,7 @@ g_return_val_if_reached(""); #ifdef _WIN32 - if ((off = win32_get_tz_offset()) == -1) + if ((off = wpurple_get_tz_offset()) == -1) return ""; #else # ifdef HAVE_TM_GMTOFF @@ -854,7 +837,7 @@ #endif #ifdef _WIN32 - if ((sys_tzoff = win32_get_tz_offset()) == -1) + if ((sys_tzoff = wpurple_get_tz_offset()) == -1) tzoff = PURPLE_NO_TZ_OFF; else tzoff += sys_tzoff; @@ -2465,10 +2448,10 @@ { if (custom_user_dir != NULL) return custom_user_dir; - else if (!home_dir) - home_dir = g_build_filename(purple_home_dir(), ".purple", NULL); - - return home_dir; + else if (!user_dir) + user_dir = g_build_filename(purple_home_dir(), ".purple", NULL); + + return user_dir; } void purple_util_set_user_dir(const char *dir) diff -r 7697f6872380 -r f7e4a558a439 libpurple/win32/win32dep.c --- a/libpurple/win32/win32dep.c Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/win32/win32dep.c Tue Oct 23 17:41:06 2007 +0000 @@ -575,6 +575,22 @@ libpurpledll_hInstance = NULL; } +long +wpurple_get_tz_offset() { + TIME_ZONE_INFORMATION tzi; + DWORD ret; + long off = -1; + + if ((ret = GetTimeZoneInformation(&tzi)) != TIME_ZONE_ID_INVALID) + { + off = -(tzi.Bias * 60); + if (ret == TIME_ZONE_ID_DAYLIGHT) + off -= tzi.DaylightBias * 60; + } + + return off; +} + /* DLL initializer */ /* suppress gcc "no previous prototype" warning */ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); diff -r 7697f6872380 -r f7e4a558a439 libpurple/win32/win32dep.h --- a/libpurple/win32/win32dep.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/win32/win32dep.h Tue Oct 23 17:41:06 2007 +0000 @@ -60,6 +60,7 @@ void wpurple_init(void); void wpurple_cleanup(void); +long wpurple_get_tz_offset(void); /* * MACROS diff -r 7697f6872380 -r f7e4a558a439 libpurple/xmlnode.h --- a/libpurple/xmlnode.h Tue Oct 23 17:40:56 2007 +0000 +++ b/libpurple/xmlnode.h Tue Oct 23 17:41:06 2007 +0000 @@ -129,7 +129,7 @@ * * @param node The node to get data from. * - * @return The data from the node. This data is in raw escaped format. + * @return The data from the node or NULL. This data is in raw escaped format. * You must g_free this string when finished using it. */ char *xmlnode_get_data(xmlnode *node); diff -r 7697f6872380 -r f7e4a558a439 pidgin/eggtrayicon.c --- a/pidgin/eggtrayicon.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/eggtrayicon.c Tue Oct 23 17:41:06 2007 +0000 @@ -23,7 +23,6 @@ #include "eggtrayicon.h" -#include #include #define _(x) x diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkaccount.h --- a/pidgin/gtkaccount.h Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkaccount.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file gtkaccount.h GTK+ Account Editor UI * @ingroup pidgin + * @see @ref gtkaccount-signals */ /* pidgin diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkblist.c --- a/pidgin/gtkblist.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkblist.c Tue Oct 23 17:41:06 2007 +0000 @@ -88,6 +88,8 @@ GtkWidget *group_combo; GtkWidget *entries_box; GtkSizeGroup *sg; + GtkWidget *autojoin; + GtkWidget *persistent; GList *entries; @@ -138,13 +140,23 @@ static void redo_buddy_list(PurpleBuddyList *list, gboolean remove, gboolean rerender); static void pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node); static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded); - -struct _pidgin_blist_node { +static void pidgin_blist_expand_contact_cb(GtkWidget *w, PurpleBlistNode *node); + +typedef enum { + PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */ +} PidginBlistNodeFlags; + +typedef struct _pidgin_blist_node { GtkTreeRowReference *row; gboolean contact_expanded; gboolean recent_signonoff; gint recent_signonoff_timer; -}; + struct { + PurpleConversation *conv; + time_t last_message; /* timestamp for last displayed message */ + PidginBlistNodeFlags flags; + } conv; +} PidginBlistNode; static char dim_grey_string[8] = ""; static char *dim_grey() @@ -306,12 +318,36 @@ serv_send_file(b->account->gc, b->name, NULL); } +static void gtk_blist_menu_move_to_cb(GtkWidget *w, PurpleBlistNode *node) +{ + PurpleGroup *group = g_object_get_data(G_OBJECT(w), "groupnode"); + purple_blist_add_contact((PurpleContact *)node, group, NULL); + +} + static void gtk_blist_menu_autojoin_cb(GtkWidget *w, PurpleChat *chat) { purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-autojoin", gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))); } +static void gtk_blist_menu_persistent_cb(GtkWidget *w, PurpleChat *chat) +{ + purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-persistent", + gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))); +} + +static PurpleConversation * +find_conversation_with_buddy(PurpleBuddy *buddy) +{ + PidginBlistNode *ui = buddy->node.ui_data; + if (ui) + return ui->conv.conv; + return purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, + purple_buddy_get_name(buddy), + purple_buddy_get_account(buddy)); +} + static void gtk_blist_join_chat(PurpleChat *chat) { PurpleConversation *conv; @@ -395,6 +431,105 @@ } #endif +static void +gtk_blist_do_personize(GList *merges) +{ + PurpleBlistNode *contact = NULL; + int max = 0; + GList *tmp; + + /* First, we find the contact to merge the rest of the buddies into. + * This will be the contact with the most buddies in it; ties are broken + * by which contact is higher in the list + */ + for (tmp = merges; tmp; tmp = tmp->next) { + PurpleBlistNode *node = tmp->data; + PurpleBlistNode *b; + int i = 0; + + if (node->type == PURPLE_BLIST_BUDDY_NODE) + node = node->parent; + + if (node->type != PURPLE_BLIST_CONTACT_NODE) + continue; + + + for (b = node->child; b; b = b->next) + i++; + if (i > max) { + contact = node; + max = i; + } + } + + if (contact == NULL) + return; + + /* 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 (node == contact) + continue; + + purple_blist_merge_contact((PurpleContact *)node, contact); + } + + /* And show the expanded contact, so the people know what's going on */ + pidgin_blist_expand_contact_cb(NULL, contact); + g_list_free(merges); +} + +static void +gtk_blist_auto_personize(PurpleBlistNode *group, const char *alias) +{ + PurpleBlistNode *contact; + PurpleBlistNode *buddy; + GList *merges = NULL; + int i = 0; + char *a = g_utf8_casefold(alias, -1); + + for (contact = group->child; contact; contact = contact->next) { + char *node_alias; + if (contact->type != PURPLE_BLIST_CONTACT_NODE) + continue; + + node_alias = g_utf8_casefold(purple_contact_get_alias((PurpleContact *)contact), -1); + if (node_alias && !g_utf8_collate(node_alias, a)) { + merges = g_list_append(merges, contact); + i++; + g_free(node_alias); + continue; + } + g_free(node_alias); + + for (buddy = contact->child; buddy; buddy = buddy->next) { + if (buddy->type != PURPLE_BLIST_BUDDY_NODE) + continue; + + node_alias = g_utf8_casefold(purple_buddy_get_alias((PurpleBuddy *)buddy), -1); + if (node_alias && !g_utf8_collate(node_alias, a)) { + merges = g_list_append(merges, buddy); + i++; + } + g_free(node_alias); + } + } + g_free(a); + + if (i > 1) + { + char *msg = g_strdup_printf(ngettext("You have %d contact named %s. Would you like to merge them?", "You currently have %d contacts named %s. Would you like to merge them?", i), i, alias); + purple_request_action(NULL, NULL, msg, _("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"), 0, NULL, NULL, NULL, + merges, 2, _("_Merge"), PURPLE_CALLBACK(gtk_blist_do_personize), _("_Cancel"), PURPLE_CALLBACK(g_list_free)); + g_free(msg); + } else + g_list_free(merges); +} + static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1, char *arg2, PurpleBuddyList *list) { @@ -421,13 +556,14 @@ PurpleContact *contact = (PurpleContact *)node; struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data; - if (contact->alias || gtknode->contact_expanded) + if (contact->alias || gtknode->contact_expanded) { purple_blist_alias_contact(contact, arg2); - else - { + gtk_blist_auto_personize(node->parent, 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); } } break; @@ -435,6 +571,7 @@ 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); break; case PURPLE_BLIST_GROUP_NODE: dest = purple_find_group(arg2); @@ -525,6 +662,26 @@ } } +static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node) +{ + if (PURPLE_BLIST_NODE_IS_BUDDY(node)) + { + purple_blist_node_set_bool(node, "show_offline", + !purple_blist_node_get_bool(node, "show_offline")); + } + else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) + { + PurpleBlistNode *bnode; + 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) { + purple_blist_node_set_bool(bnode, "show_offline", setting); + } + } + pidgin_blist_update(purple_get_blist(), node); +} + static void gtk_blist_show_systemlog_cb() { pidgin_syslog_show(); @@ -1119,17 +1276,49 @@ g_list_free(ll); } + + +static void +pidgin_append_blist_node_move_to_menu(GtkWidget *menu, PurpleBlistNode *node) +{ + GtkWidget *submenu; + GtkWidget *menuitem; + PurpleBlistNode *group; + + menuitem = gtk_menu_item_new_with_label(_("Move to")); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); + gtk_widget_show(menuitem); + + submenu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); + + for (group = purple_blist_get_root(); group; group = group->next) { + if (group->type != PURPLE_BLIST_GROUP_NODE) + continue; + if (group == node->parent) + continue; + menuitem = pidgin_new_item_from_stock(submenu, purple_group_get_name((PurpleGroup *)group), NULL, + G_CALLBACK(gtk_blist_menu_move_to_cb), node, 0, 0, NULL); + g_object_set_data(G_OBJECT(menuitem), "groupnode", group); + } + gtk_widget_show_all(submenu); +} + void pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub) { PurplePluginProtocolInfo *prpl_info; PurpleContact *contact; + PurpleBlistNode *node; gboolean contact_expanded = FALSE; + gboolean show_offline = FALSE; g_return_if_fail(menu); g_return_if_fail(buddy); prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl); + node = (PurpleBlistNode*)buddy; + contact = purple_buddy_get_contact(buddy); if (contact) { contact_expanded = ((struct _pidgin_blist_node *)(((PurpleBlistNode*)contact)->ui_data))->contact_expanded; @@ -1145,17 +1334,17 @@ if (!prpl_info->can_receive_file || prpl_info->can_receive_file(buddy->account->gc, buddy->name)) { - pidgin_new_item_from_stock(menu, _("_Send File"), + pidgin_new_item_from_stock(menu, _("_Send File..."), PIDGIN_STOCK_TOOLBAR_SEND_FILE, G_CALLBACK(gtk_blist_menu_send_file_cb), buddy, 0, 0, NULL); } } - pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce"), NULL, + pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce..."), NULL, G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL); - if (((PurpleBlistNode*)buddy)->parent && ((PurpleBlistNode*)buddy)->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), @@ -1165,15 +1354,22 @@ G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL); } - - pidgin_append_blist_node_proto_menu(menu, buddy->account->gc, - (PurpleBlistNode *)buddy); - pidgin_append_blist_node_extended_menu(menu, (PurpleBlistNode *)buddy); - - if (((PurpleBlistNode*)buddy)->parent && ((PurpleBlistNode*)buddy)->parent->child->next && + if (!(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE)) { + show_offline = purple_blist_node_get_bool(node, "show_offline"); + pidgin_new_item_from_stock(menu, show_offline ? _("Hide when offline") : _("Show when offline"), + NULL, G_CALLBACK(gtk_blist_menu_showoffline_cb), node, 0, 0, NULL); + } + + pidgin_append_blist_node_proto_menu(menu, buddy->account->gc, node); + pidgin_append_blist_node_extended_menu(menu, node); + + if (!contact_expanded) + pidgin_append_blist_node_move_to_menu(menu, (PurpleBlistNode *)contact); + + if (node->parent && node->parent->child->next && !sub && !contact_expanded) { pidgin_separator(menu); - pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy); + pidgin_append_blist_node_privacy_menu(menu, node); pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS, G_CALLBACK(gtk_blist_menu_alias_cb), contact, 0, 0, NULL); @@ -1182,7 +1378,7 @@ contact, 0, 0, NULL); } else if (!sub || contact_expanded) { pidgin_separator(menu); - pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy); + pidgin_append_blist_node_privacy_menu(menu, node); pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS, G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL); pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE, @@ -1235,10 +1431,10 @@ GtkWidget *item; menu = gtk_menu_new(); - item = pidgin_new_item_from_stock(menu, _("Add a _Buddy"), GTK_STOCK_ADD, + item = pidgin_new_item_from_stock(menu, _("Add _Buddy..."), GTK_STOCK_ADD, G_CALLBACK(pidgin_blist_add_buddy_cb), node, 0, 0, NULL); gtk_widget_set_sensitive(item, purple_connections_get_all() != NULL); - item = pidgin_new_item_from_stock(menu, _("Add a C_hat"), GTK_STOCK_ADD, + item = pidgin_new_item_from_stock(menu, _("Add C_hat..."), GTK_STOCK_ADD, G_CALLBACK(pidgin_blist_add_chat_cb), node, 0, 0, NULL); gtk_widget_set_sensitive(item, pidgin_blist_joinchat_is_showable()); pidgin_new_item_from_stock(menu, _("_Delete Group"), GTK_STOCK_REMOVE, @@ -1256,16 +1452,19 @@ create_chat_menu(PurpleBlistNode *node, PurpleChat *c) { GtkWidget *menu; - gboolean autojoin; + gboolean autojoin, persistent; menu = gtk_menu_new(); autojoin = (purple_blist_node_get_bool(node, "gtk-autojoin") || (purple_blist_node_get_string(node, "gtk-autojoin") != NULL)); + persistent = purple_blist_node_get_bool(node, "gtk-persistent"); pidgin_new_item_from_stock(menu, _("_Join"), PIDGIN_STOCK_CHAT, G_CALLBACK(gtk_blist_menu_join_cb), node, 0, 0, NULL); pidgin_new_check_item(menu, _("Auto-Join"), G_CALLBACK(gtk_blist_menu_autojoin_cb), node, autojoin); + pidgin_new_check_item(menu, _("Persistent"), + G_CALLBACK(gtk_blist_menu_persistent_cb), node, persistent); pidgin_new_item_from_stock(menu, _("View _Log"), NULL, G_CALLBACK(gtk_blist_menu_showlog_cb), node, 0, 0, NULL); @@ -1307,7 +1506,6 @@ node, 0, 0, NULL); pidgin_append_blist_node_extended_menu(menu, node); - return menu; } @@ -2872,7 +3070,7 @@ { N_("/Buddies/Get User _Info..."), "I", pidgin_dialogs_info, 0, "", PIDGIN_STOCK_TOOLBAR_USER_INFO }, { N_("/Buddies/View User _Log..."), "L", pidgin_dialogs_log, 0, "", NULL }, { "/Buddies/sep1", NULL, NULL, 0, "", NULL }, - { N_("/Buddies/Show"), NULL, NULL, 0, "", NULL}, + { N_("/Buddies/Sh_ow"), NULL, NULL, 0, "", NULL}, { N_("/Buddies/Show/_Offline Buddies"), NULL, pidgin_blist_edit_mode_cb, 1, "", NULL }, { N_("/Buddies/Show/_Empty Groups"), NULL, pidgin_blist_show_empty_groups_cb, 1, "", NULL }, { N_("/Buddies/Show/Buddy _Details"), NULL, pidgin_blist_buddy_details_cb, 1, "", NULL }, @@ -2888,7 +3086,7 @@ /* Accounts menu */ { N_("/_Accounts"), NULL, NULL, 0, "", NULL }, - { N_("/Accounts/Add\\/Edit"), "A", pidgin_accounts_window_show, 0, "", NULL }, + { N_("/Accounts/Manage"), "A", pidgin_accounts_window_show, 0, "", NULL }, /* Tools */ { N_("/_Tools"), NULL, NULL, 0, "", NULL }, @@ -3145,8 +3343,6 @@ GdkPixbuf *ret; PurplePresence *p; - - if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { if(!gtknode->contact_expanded) { buddy = purple_contact_get_priority_buddy((PurpleContact*)node); @@ -3188,6 +3384,13 @@ return ret; } + if (purple_status_get_attr_string(purple_presence_get_active_status(p), PURPLE_TUNE_TITLE)) { + path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", "music.png", NULL); + ret = gdk_pixbuf_new_from_file(path, NULL); + g_free(path); + return ret; + } + prpl = purple_find_prpl(purple_account_get_protocol_id(buddy->account)); if (!prpl) return NULL; @@ -3261,17 +3464,17 @@ } if(buddy) { - PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, - purple_buddy_get_name(buddy), - purple_buddy_get_account(buddy)); + PurpleConversation *conv = find_conversation_with_buddy(buddy); PurplePresence *p; gboolean trans; if(conv != NULL) { PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); - if((gtkconv == NULL || pidgin_conv_is_hidden(gtkconv)) && size == PIDGIN_STATUS_ICON_SMALL) { - return gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_MESSAGE, - icon_size, "GtkTreeView"); + if (gtkconv == NULL && size == PIDGIN_STATUS_ICON_SMALL) { + PidginBlistNode *ui = buddy->node.ui_data; + if (ui == NULL || (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE)) + return gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), + PIDGIN_STOCK_STATUS_MESSAGE, icon_size, "GtkTreeView"); } } @@ -3327,16 +3530,17 @@ struct _pidgin_blist_node *gtkcontactnode = NULL; char *idletime = NULL, *statustext = NULL; time_t t; - PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, - purple_buddy_get_name(b), - purple_buddy_get_account(b)); - PidginConversation *gtkconv; + PurpleConversation *conv = find_conversation_with_buddy(b); gboolean hidden_conv = FALSE; - if(conv != NULL) { - gtkconv = PIDGIN_CONVERSATION(conv); - if(gtkconv == NULL || pidgin_conv_is_hidden(gtkconv)) { - hidden_conv = TRUE; + if (conv != NULL) { + PidginBlistNode *ui = b->node.ui_data; + if (ui) { + if (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE) + hidden_conv = TRUE; + } else { + if (PIDGIN_CONVERSATION(conv) == NULL) + hidden_conv = TRUE; } } @@ -3673,13 +3877,26 @@ { static GtkWidget *menu = NULL; GList *convs = NULL; + GList *chats, *ims; if (menu) { gtk_widget_destroy(menu); menu = NULL; } - convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0); + ims = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, + PIDGIN_UNSEEN_TEXT, FALSE, 0); + + chats = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT, + PIDGIN_UNSEEN_NICK, FALSE, 0); + + if(ims && chats) + convs = g_list_concat(ims, chats); + else if(ims && !chats) + convs = ims; + else if(!ims && chats) + convs = chats; + if (!convs) /* no conversations added, don't show the menu */ return; @@ -3701,7 +3918,11 @@ switch (event->button) { case 1: convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, - PIDGIN_UNSEEN_TEXT, TRUE, 1); + PIDGIN_UNSEEN_TEXT, FALSE, 1); + + if(!convs) + convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT, + PIDGIN_UNSEEN_NICK, FALSE, 1); if (convs) { pidgin_conv_present_conversation((PurpleConversation*)convs->data); g_list_free(convs); @@ -3719,6 +3940,7 @@ PidginBuddyList *gtkblist) { GList *convs = NULL; + GList *ims, *chats; GList *l = NULL; if (type != PURPLE_CONV_UPDATE_UNSEEN) @@ -3735,7 +3957,19 @@ gtkblist->menutrayicon = NULL; } - convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0); + ims = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, + PIDGIN_UNSEEN_TEXT, FALSE, 0); + + chats = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT, + PIDGIN_UNSEEN_NICK, FALSE, 0); + + if(ims && chats) + convs = g_list_concat(ims, chats); + else if(ims && !chats) + convs = ims; + else if(!ims && chats) + convs = chats; + if (convs) { GtkWidget *img = NULL; GString *tooltip_text = NULL; @@ -3743,14 +3977,17 @@ tooltip_text = g_string_new(""); l = convs; while (l != NULL) { - if (PIDGIN_IS_PIDGIN_CONVERSATION(l->data)) { - PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data); - - g_string_append_printf(tooltip_text, - ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count), - gtkconv->unseen_count, - gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); - } + int count = 0; + PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data); + + if(gtkconv) + count = gtkconv->unseen_count; + else if(purple_conversation_get_data(l->data, "unseen-count")) + count = GPOINTER_TO_INT(purple_conversation_get_data(l->data, "unseen-count")); + + g_string_append_printf(tooltip_text, + ngettext("%d unread message from %s\n", "%d unread messages from %s\n", count), + count, purple_conversation_get_title(l->data)); l = l->next; } if(tooltip_text->len > 0) { @@ -3778,6 +4015,88 @@ conversation_updated_cb(conv, PURPLE_CONV_UPDATE_UNSEEN, gtkblist); } +static void +conversation_deleted_update_ui_cb(PurpleConversation *conv, struct _pidgin_blist_node *ui) +{ + if (ui->conv.conv != conv) + return; + ui->conv.conv = NULL; + ui->conv.flags = 0; + ui->conv.last_message = 0; +} + +static void +written_msg_update_ui_cb(PurpleAccount *account, const char *who, const char *message, + PurpleConversation *conv, PurpleMessageFlags flag, PurpleBlistNode *node) +{ + PidginBlistNode *ui = node->ui_data; + if (ui->conv.conv != conv || PIDGIN_CONVERSATION(conv) || + !(flag & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV))) + return; + ui->conv.flags |= PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE; + ui->conv.last_message = time(NULL); /* XXX: for lack of better data */ + pidgin_blist_update(purple_get_blist(), node); +} + +static void +displayed_msg_update_ui_cb(PurpleAccount *account, const char *who, const char *message, + PurpleConversation *conv, PurpleMessageFlags flag, PurpleBlistNode *node) +{ + PidginBlistNode *ui = node->ui_data; + if (ui->conv.conv != conv) + return; + ui->conv.flags &= ~PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE; + pidgin_blist_update(purple_get_blist(), node); +} + +static void +conversation_created_cb(PurpleConversation *conv, PidginBuddyList *gtkblist) +{ + switch (conv->type) { + case PURPLE_CONV_TYPE_IM: + { + GSList *buddies = purple_find_buddies(conv->account, conv->name); + while (buddies) { + PurpleBlistNode *buddy = buddies->data; + struct _pidgin_blist_node *ui = buddy->ui_data; + buddies = g_slist_delete_link(buddies, buddies); + if (!ui) + continue; + ui->conv.conv = conv; + ui->conv.flags = 0; + ui->conv.last_message = 0; + purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation", + ui, PURPLE_CALLBACK(conversation_deleted_update_ui_cb), ui); + purple_signal_connect(purple_conversations_get_handle(), "wrote-im-msg", + ui, PURPLE_CALLBACK(written_msg_update_ui_cb), buddy); + purple_signal_connect(pidgin_conversations_get_handle(), "displayed-im-msg", + ui, PURPLE_CALLBACK(displayed_msg_update_ui_cb), buddy); + } + } + case PURPLE_CONV_TYPE_CHAT: + { + PurpleChat *chat = purple_blist_find_chat(conv->account, conv->name); + struct _pidgin_blist_node *ui; + if (!chat) + break; + ui = chat->node.ui_data; + if (!ui) + break; + ui->conv.conv = conv; + ui->conv.flags = 0; + ui->conv.last_message = 0; + purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation", + ui, PURPLE_CALLBACK(conversation_deleted_update_ui_cb), ui); + purple_signal_connect(purple_conversations_get_handle(), "wrote-chat-msg", + ui, PURPLE_CALLBACK(written_msg_update_ui_cb), chat); + purple_signal_connect(pidgin_conversations_get_handle(), "displayed-chat-msg", + ui, PURPLE_CALLBACK(displayed_msg_update_ui_cb), chat); + } + default: + break; + } +} + /********************************************************************************** * Public API Functions * **********************************************************************************/ @@ -4341,7 +4660,7 @@ tmp = g_strdup_printf(_("Welcome to %s!\n\n" "You have no accounts enabled. Enable your IM accounts from the " - "Accounts window at Accounts->Add/Edit. Once you " + "Accounts window at Accounts->Manage. Once you " "enable accounts, you'll be able to sign on, set your status, " "and talk to your friends."), PIDGIN_NAME); pretty = pidgin_make_pretty_arrows(tmp); @@ -4690,6 +5009,9 @@ purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation", gtkblist, PURPLE_CALLBACK(conversation_deleting_cb), gtkblist); + purple_signal_connect(purple_conversations_get_handle(), "conversation-created", + gtkblist, PURPLE_CALLBACK(conversation_created_cb), + gtkblist); gtk_widget_hide(gtkblist->headline_hbox); gtk_widget_hide(gtkblist->error_buttons); @@ -4796,6 +5118,7 @@ if(gtknode->recent_signonoff_timer > 0) purple_timeout_remove(gtknode->recent_signonoff_timer); + purple_signals_disconnect_by_handle(node->ui_data); g_free(node->ui_data); node->ui_data = NULL; } @@ -4960,7 +5283,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, @@ -5224,14 +5547,17 @@ GdkPixbuf *status, *avatar, *emblem, *prpl_icon; char *mark; gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); - const char *name = purple_chat_get_name(chat); - PurpleConversation *conv = - purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, chat->account); - gboolean hidden = (conv && !PIDGIN_CONVERSATION(conv)); - - if(!insert_node(list, node, &iter)) + PidginBlistNode *ui; + PurpleConversation *conv; + gboolean hidden; + + 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)); + status = pidgin_blist_get_status_icon(node, PIDGIN_STATUS_ICON_SMALL); emblem = pidgin_blist_get_emblem(node); @@ -5544,7 +5870,7 @@ gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); /* Set up stuff for the account box */ - label = gtk_label_new_with_mnemonic(_("_Account:")); + label = gtk_label_new_with_mnemonic(_("A_ccount:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); @@ -5661,6 +5987,12 @@ purple_blist_add_chat(chat, group, NULL); } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->autojoin))) + purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-autojoin", TRUE); + + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->persistent))) + purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-persistent", TRUE); + gtk_widget_destroy(data->window); g_free(data->default_chat_name); g_list_free(data->entries); @@ -5955,6 +6287,11 @@ gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_BIN(data->group_combo)->child); pidgin_set_accessible_label (data->group_combo, label); gtk_box_pack_end(GTK_BOX(rowbox), data->group_combo, TRUE, TRUE, 0); + + data->autojoin = gtk_check_button_new_with_mnemonic(_("Autojoin when account becomes online.")); + data->persistent = gtk_check_button_new_with_mnemonic(_("Hide chat when the window is closed.")); + gtk_box_pack_start(GTK_BOX(vbox), data->autojoin, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox), data->persistent, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(data->window), "response", G_CALLBACK(add_chat_resp_cb), data); @@ -6603,7 +6940,7 @@ for (l = gtk_container_get_children(GTK_CONTAINER(accountmenu)); l; l = g_list_delete_link(l, l)) { menuitem = l->data; - if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Add\\/Edit"))) + if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Manage"))) gtk_widget_destroy(menuitem); } diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkblist.h --- a/pidgin/gtkblist.h Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkblist.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file gtkblist.h GTK+ Buddy List API * @ingroup pidgin + * @see @ref gtkblist-signals */ /* pidgin @@ -370,6 +371,8 @@ * @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 * @return The markup for this buddy + * + * @since 2.1.0 */ gchar *pidgin_blist_get_name_markup(PurpleBuddy *buddy, gboolean selected, gboolean aliased); @@ -381,11 +384,15 @@ * * @param node The buddy list node to show a tooltip for * @param widget The widget to draw the tooltip on + * + * @since 2.1.0 */ void pidgin_blist_draw_tooltip(PurpleBlistNode *node, GtkWidget *widget); /** * Destroys the current (if any) Buddy List tooltip + * + * @since 2.1.0 */ void pidgin_blist_tooltip_destroy(void); diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkcellrendererexpander.c --- a/pidgin/gtkcellrendererexpander.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkcellrendererexpander.c Tue Oct 23 17:41:06 2007 +0000 @@ -270,6 +270,9 @@ 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, + widget->allocation.width, cell_area->y + cell_area->height); } static gboolean pidgin_cell_renderer_expander_activate(GtkCellRenderer *r, diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkconn.c --- a/pidgin/gtkconn.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkconn.c Tue Oct 23 17:41:06 2007 +0000 @@ -53,7 +53,7 @@ * The key is a pointer to the PurpleAccount and the * value is a pointer to a PidginAutoRecon. */ -static GHashTable *hash = NULL; +static GHashTable *auto_reconns = NULL; static void pidgin_connection_connect_progress(PurpleConnection *gc, @@ -80,7 +80,7 @@ pidgin_status_box_set_connecting(PIDGIN_STATUS_BOX(gtkblist->statusbox), (purple_connections_get_connecting() != NULL)); - g_hash_table_remove(hash, account); + g_hash_table_remove(auto_reconns, account); pidgin_blist_update_account_error_state(account, NULL); } @@ -120,7 +120,7 @@ purple_debug_info("autorecon", "do_signon called\n"); g_return_val_if_fail(account != NULL, FALSE); - info = g_hash_table_lookup(hash, account); + info = g_hash_table_lookup(auto_reconns, account); if (info) info->timeout = 0; @@ -141,15 +141,16 @@ { PurpleAccount *account = NULL; PidginAutoRecon *info; + GList *list; account = purple_connection_get_account(gc); - info = g_hash_table_lookup(hash, account); + info = g_hash_table_lookup(auto_reconns, account); pidgin_blist_update_account_error_state(account, text); if (!gc->wants_to_die) { if (info == NULL) { info = g_new0(PidginAutoRecon, 1); - g_hash_table_insert(hash, account, info); + g_hash_table_insert(auto_reconns, account, info); info->delay = g_random_int_range(INITIAL_RECON_DELAY_MIN, INITIAL_RECON_DELAY_MAX); } else { info->delay = MIN(2 * info->delay, MAX_RECON_DELAY); @@ -160,7 +161,7 @@ } else { char *p, *s, *n=NULL ; if (info != NULL) - g_hash_table_remove(hash, account); + g_hash_table_remove(auto_reconns, account); if (purple_account_get_alias(account)) { @@ -192,6 +193,17 @@ */ purple_account_set_enabled(account, PIDGIN_UI, FALSE); } + + /* If we have any open chats, we probably want to rejoin when we get back online. */ + list = purple_get_chats(); + while (list) { + PurpleConversation *conv = list->data; + list = list->next; + if (conv->account != account || + purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv))) + continue; + purple_conversation_set_data(conv, "want-to-rejoin", GINT_TO_POINTER(TRUE)); + } } static void pidgin_connection_network_connected () @@ -204,7 +216,7 @@ while (list) { PurpleAccount *account = (PurpleAccount*)list->data; - g_hash_table_remove(hash, account); + g_hash_table_remove(auto_reconns, account); if (purple_account_is_disconnected(account)) do_signon(account); list = list->next; @@ -265,7 +277,7 @@ static void account_removed_cb(PurpleAccount *account, gpointer user_data) { - g_hash_table_remove(hash, account); + g_hash_table_remove(auto_reconns, account); pidgin_blist_update_account_error_state(account, NULL); } @@ -286,7 +298,7 @@ void pidgin_connection_init(void) { - hash = g_hash_table_new_full( + auto_reconns = g_hash_table_new_full( g_direct_hash, g_direct_equal, NULL, free_auto_recon); @@ -300,5 +312,5 @@ { purple_signals_disconnect_by_handle(pidgin_connection_get_handle()); - g_hash_table_destroy(hash); + g_hash_table_destroy(auto_reconns); } diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkconv.c Tue Oct 23 17:41:06 2007 +0000 @@ -70,6 +70,8 @@ #include "gtknickcolors.h" +#define CLOSE_CONV_TIMEOUT_SECS (10 * 60) + #define AUTO_RESPONSE "<AUTO-REPLY> : " typedef enum @@ -123,7 +125,6 @@ static GtkWidget *invite_dialog = NULL; static GtkWidget *warn_close_dialog = NULL; -static PidginWindow *hidden_convwin = NULL; static GList *window_list = NULL; /* Lists of status icons at all available sizes for use as window icons */ @@ -147,6 +148,7 @@ static void add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const char *old_name); static gboolean tab_complete(PurpleConversation *conv); static void pidgin_conv_updated(PurpleConversation *conv, PurpleConvUpdateType type); +static void conv_set_unseen(PurpleConversation *gtkconv, PidginUnseenState state); static void gtkconv_set_unseen(PidginConversation *gtkconv, PidginUnseenState state); static void update_typing_icon(PidginConversation *gtkconv); static const char *item_factory_translate_func (const char *path, gpointer func_data); @@ -161,6 +163,7 @@ static gboolean infopane_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *conv); static gboolean pidgin_userlist_motion_cb (GtkWidget *w, GdkEventMotion *event, PidginConversation *gtkconv); static void pidgin_conv_leave_cb (GtkWidget *w, GdkEventCrossing *e, PidginConversation *gtkconv); +static void hide_conv(PidginConversation *gtkconv, gboolean closetimer); static void pidgin_conv_set_position_size(PidginWindow *win, int x, int y, int width, int height); @@ -208,12 +211,49 @@ **************************************************************************/ static gboolean -close_conv_cb(GtkWidget *w, GdkEventButton *event, PidginConversation *gtkconv) -{ +close_this_sucker(gpointer data) +{ + PidginConversation *gtkconv = data; GList *list = g_list_copy(gtkconv->convs); - g_list_foreach(list, (GFunc)purple_conversation_destroy, NULL); g_list_free(list); + return FALSE; +} + +static gboolean +close_conv_cb(GtkWidget *w, GdkEventButton *dontuse, PidginConversation *gtkconv) +{ + /* We are going to destroy the conversations immediately only if the 'close immediately' + * preference is selected. Otherwise, close the conversation after a reasonable timeout + * (I am going to consider 10 minutes as a 'reasonable timeout' here. + * For chats, close immediately if the chat is not in the buddylist, or if the chat is + * not marked 'Persistent' */ + PurpleConversation *conv = gtkconv->active_conv; + PurpleAccount *account = purple_conversation_get_account(conv); + const char *name = purple_conversation_get_name(conv); + + switch (purple_conversation_get_type(conv)) { + case PURPLE_CONV_TYPE_IM: + { + if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/close_immediately")) + close_this_sucker(gtkconv); + else + hide_conv(gtkconv, TRUE); + break; + } + case PURPLE_CONV_TYPE_CHAT: + { + PurpleChat *chat = purple_blist_find_chat(account, name); + if (!chat || + !purple_blist_node_get_bool(&chat->node, "gtk-persistent")) + close_this_sucker(gtkconv); + else + hide_conv(gtkconv, FALSE); + break; + } + default: + ; + } return TRUE; } @@ -337,10 +377,13 @@ static void clear_conversation_scrollback(PurpleConversation *conv) { PidginConversation *gtkconv = NULL; + GList *iter; gtkconv = PIDGIN_CONVERSATION(conv); gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); + for (iter = gtkconv->convs; iter; iter = iter->next) + purple_conversation_clear_message_history(iter->data); } static PurpleCmdRet @@ -348,7 +391,6 @@ const char *cmd, char **args, char **error, void *data) { clear_conversation_scrollback(conv); - purple_conversation_clear_message_history(conv); return PURPLE_CMD_STATUS_OK; } @@ -1060,12 +1102,9 @@ { PidginWindow *win = data; PurpleConversation *conv; - PidginConversation *gtkconv; conv = pidgin_conv_window_get_active_conversation(win); - gtkconv = PIDGIN_CONVERSATION(conv); - - gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); + clear_conversation_scrollback(conv); } struct _search { @@ -1315,18 +1354,33 @@ add_remove_cb(NULL, PIDGIN_CONVERSATION(conv)); } -#if 0 -static void -menu_hide_conv_cb(gpointer data, guint action, GtkWidget *widget) -{ - PidginWindow *win = data; - PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(win); - PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win); +static gboolean +close_already(gpointer data) +{ + purple_conversation_destroy(data); + return FALSE; +} + +static void +hide_conv(PidginConversation *gtkconv, gboolean closetimer) +{ + GList *list; + purple_signal_emit(pidgin_conversations_get_handle(), "conversation-hiding", gtkconv); - purple_conversation_set_ui_ops(conv, NULL); -} -#endif + + for (list = g_list_copy(gtkconv->convs); list; list = g_list_delete_link(list, list)) { + PurpleConversation *conv = list->data; + if (closetimer) { + guint timer = GPOINTER_TO_INT(purple_conversation_get_data(conv, "close-timer")); + if (timer) + purple_timeout_remove(timer); + timer = purple_timeout_add_seconds(CLOSE_CONV_TIMEOUT_SECS, close_already, conv); + purple_conversation_set_data(conv, "close-timer", GINT_TO_POINTER(timer)); + } + purple_conversation_set_ui_ops(conv, NULL); + } +} static void menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) @@ -2343,63 +2397,69 @@ return get_prpl_icon_list(account); } -GdkPixbuf * -pidgin_conv_get_tab_icon(PurpleConversation *conv, gboolean small_icon) -{ - PurpleAccount *account = NULL; - const char *name = NULL; - GdkPixbuf *status = NULL; - PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); - const char *icon_size = small_icon ? PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC : PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL; - g_return_val_if_fail(conv != NULL, NULL); - - account = purple_conversation_get_account(conv); - name = purple_conversation_get_name(conv); - - g_return_val_if_fail(account != NULL, NULL); - g_return_val_if_fail(name != NULL, NULL); - - /* Use the buddy icon, if possible */ - if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { - PurpleBuddy *b = purple_find_buddy(account, name); - if (b != NULL) { +static GdkPixbuf * +pidgin_conv_get_icon(PurpleConversation *conv, GtkWidget *parent, const char *icon_size) +{ + PurpleAccount *account = NULL; + const char *name = NULL; + GdkPixbuf *status = NULL; + PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); + g_return_val_if_fail(conv != NULL, NULL); + + account = purple_conversation_get_account(conv); + name = purple_conversation_get_name(conv); + + g_return_val_if_fail(account != NULL, NULL); + g_return_val_if_fail(name != NULL, NULL); + + /* Use the buddy icon, if possible */ + if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { + PurpleBuddy *b = purple_find_buddy(account, name); + if (b != NULL) { PurplePresence *p = purple_buddy_get_presence(b); - /* I hate this hack. It fixes a bug where the pending message icon - * displays in the conv tab even though it shouldn't. - * A better solution would be great. */ - if (ops && ops->update) - ops->update(NULL, (PurpleBlistNode*)b); + /* I hate this hack. It fixes a bug where the pending message icon + * displays in the conv tab even though it shouldn't. + * A better solution would be great. */ + 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 */ if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY)) - status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, PIDGIN_CONVERSATION(conv)->icon, icon_size); + status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, parent, icon_size); else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY)) - status = pidgin_create_status_icon(PURPLE_STATUS_EXTENDED_AWAY, PIDGIN_CONVERSATION(conv)->icon, icon_size); - else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE)) - status = pidgin_create_status_icon(PURPLE_STATUS_OFFLINE, PIDGIN_CONVERSATION(conv)->icon, icon_size); - else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AVAILABLE)) - status = pidgin_create_status_icon(PURPLE_STATUS_AVAILABLE, PIDGIN_CONVERSATION(conv)->icon, icon_size); - else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE)) - status = pidgin_create_status_icon(PURPLE_STATUS_INVISIBLE, PIDGIN_CONVERSATION(conv)->icon, icon_size); - else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE)) - status = pidgin_create_status_icon(PURPLE_STATUS_UNAVAILABLE, PIDGIN_CONVERSATION(conv)->icon, icon_size); - } - } - - /* If they don't have a buddy icon, then use the PRPL icon */ - if (status == NULL) { + status = pidgin_create_status_icon(PURPLE_STATUS_EXTENDED_AWAY, parent, icon_size); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE)) + status = pidgin_create_status_icon(PURPLE_STATUS_OFFLINE, parent, icon_size); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AVAILABLE)) + status = pidgin_create_status_icon(PURPLE_STATUS_AVAILABLE, parent, icon_size); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE)) + status = pidgin_create_status_icon(PURPLE_STATUS_INVISIBLE, parent, icon_size); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE)) + status = pidgin_create_status_icon(PURPLE_STATUS_UNAVAILABLE, parent, icon_size); + } + } + + /* If they don't have a buddy icon, then use the PRPL icon */ + if (status == NULL) { GtkIconSize size = gtk_icon_size_from_name(icon_size); if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { - status = gtk_widget_render_icon (PIDGIN_CONVERSATION(conv)->icon, PIDGIN_STOCK_STATUS_PERSON, - size, "GtkWidget"); + status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_PERSON, + size, "GtkWidget"); } else { - status = gtk_widget_render_icon (PIDGIN_CONVERSATION(conv)->icon, PIDGIN_STOCK_STATUS_CHAT, - size, "GtkWidget"); + status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_CHAT, + size, "GtkWidget"); } } return status; } +GdkPixbuf * +pidgin_conv_get_tab_icon(PurpleConversation *conv, gboolean small_icon) +{ + const char *icon_size = small_icon ? PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC : PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL; + return pidgin_conv_get_icon(conv, PIDGIN_CONVERSATION(conv)->icon, icon_size); +} + static void update_tab_icon(PurpleConversation *conv) @@ -2756,9 +2816,9 @@ PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); GdkModifierType state; - if(gtkconv->win==hidden_convwin) { - pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv); - pidgin_conv_placement_place(gtkconv); + if (gtkconv == NULL) { + pidgin_conv_attach_to_conversation(conv); + gtkconv = PIDGIN_CONVERSATION(conv); } pidgin_conv_switch_active_conversation(conv); @@ -2791,15 +2851,20 @@ PurpleConversation *conv = (PurpleConversation*)l->data; PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); - if(gtkconv == NULL || gtkconv->active_conv != conv) + if (gtkconv != NULL && gtkconv->active_conv != conv) continue; - - if (gtkconv->unseen_state >= min_state - && (!hidden_only || - (hidden_only && gtkconv->win == hidden_convwin))) { - + if (gtkconv == NULL) { + if (!purple_conversation_get_data(conv, "unseen-count") || + !purple_conversation_get_data(conv, "unseen-state") || + GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-state"))unseen_state >= min_state && !hidden_only) { + r = g_list_prepend(r, conv); + c++; + } } } @@ -2839,11 +2904,11 @@ PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); GtkWidget *icon = gtk_image_new(); - GdkPixbuf *pbuf = pidgin_conv_get_tab_icon(conv, TRUE); + GdkPixbuf *pbuf = pidgin_conv_get_icon(conv, icon, PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC); GtkWidget *item; gchar *text = g_strdup_printf("%s (%d)", - gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)), - gtkconv->unseen_count); + gtkconv ? gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)) : purple_conversation_get_name(conv), + gtkconv ? gtkconv->unseen_count : GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count"))); gtk_image_set_from_pixbuf(GTK_IMAGE(icon), pbuf); g_object_unref(pbuf); @@ -3101,7 +3166,7 @@ PurpleConversation *conv; GtkWidget *item; - if (win->window == NULL || win == hidden_convwin) + if (win->window == NULL) return; gtkconv = pidgin_conv_window_get_active_gtkconv(win); @@ -3577,7 +3642,7 @@ gtk_widget_destroy(win->menu.send_to); /* Build the Send To menu */ - win->menu.send_to = gtk_menu_item_new_with_mnemonic(_("_Send To")); + win->menu.send_to = gtk_menu_item_new_with_mnemonic(_("S_end To")); gtk_widget_show(win->menu.send_to); menu = gtk_menu_new(); @@ -4957,6 +5022,9 @@ GtkWidget *tab_cont; PurpleBlistNode *convnode; + if (hidden) + return; + if (conv_type == PURPLE_CONV_TYPE_IM && (gtkconv = pidgin_conv_find_gtkconv(conv))) { conv->ui_data = gtkconv; if (!g_list_find(gtkconv->convs, conv)) @@ -5056,10 +5124,7 @@ G_CALLBACK(gtk_widget_grab_focus), gtkconv->entry); - if (hidden) - pidgin_conv_window_add_gtkconv(hidden_convwin, gtkconv); - else - pidgin_conv_placement_place(gtkconv); + pidgin_conv_placement_place(gtkconv); if (nick_colors == NULL) { nbr_nick_colors = NUM_NICK_COLORS; @@ -5067,11 +5132,13 @@ } } +#if 0 static void pidgin_conv_new_hidden(PurpleConversation *conv) { private_gtkconv_new(conv, TRUE); } +#endif void pidgin_conv_new(PurpleConversation *conv) @@ -5087,26 +5154,24 @@ PurpleConversation *conv, PurpleMessageFlags flags) { PurpleConversationUiOps *ui_ops = pidgin_conversations_get_conv_ui_ops(); - if (conv != NULL) - return; /* create hidden conv if hide_new pref is always */ - if (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always") == 0) - { - ui_ops->create_conversation = pidgin_conv_new_hidden; - purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender); - ui_ops->create_conversation = pidgin_conv_new; - return; - } - - /* create hidden conv if hide_new pref is away and account is away */ - if (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away") == 0 && - !purple_status_is_available(purple_account_get_active_status(account))) - { - ui_ops->create_conversation = pidgin_conv_new_hidden; - purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender); - ui_ops->create_conversation = pidgin_conv_new; - return; + /* or if hide_new pref is away and account is away */ + if ((strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always") == 0) || + (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away") == 0 && + !purple_status_is_available(purple_account_get_active_status(account)))) { + if (!conv) { + ui_ops->create_conversation = NULL; + conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender); + purple_conversation_set_ui_ops(conv, NULL); + ui_ops->create_conversation = pidgin_conv_new; + } else { + /* TODO: update the unseen_state data on the conv here */ + } + } else { + /* new message for an IM */ + if (conv && conv->type == PURPLE_CONV_TYPE_IM) + pidgin_conv_attach_to_conversation(conv); } } @@ -5115,6 +5180,9 @@ { PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); + if (!gtkconv) + return; + gtkconv->convs = g_list_remove(gtkconv->convs, conv); /* Don't destroy ourselves until all our convos are gone */ if (gtkconv->convs) { @@ -6509,10 +6577,13 @@ style = "color=\"#c4a000\""; } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_NICK) { atk_object_set_description(accessibility_obj, _("Nick Said")); - style = "color=\"#204a87\""; + style = "color=\"#cc0000\""; } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT) { atk_object_set_description(accessibility_obj, _("Unread Messages")); - style = "color=\"#cc0000\""; + if (gtkconv->active_conv->type == PURPLE_CONV_TYPE_CHAT) + style = "color=\"#204a87\""; + else + style = "color=\"#cc0000\""; } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) { atk_object_set_description(accessibility_obj, _("New Event")); style = "color=\"#888a85\""; @@ -6524,7 +6595,7 @@ gtkconv->unseen_state == PIDGIN_UNSEEN_NICK || gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) bold = TRUE; - + if (style || bold) { char *html_title,*label; @@ -6600,6 +6671,30 @@ pidgin_conv_update_fields(conv, flags); } +static void +wrote_msg_update_unseen_cb(PurpleAccount *account, const char *who, const char *message, + PurpleConversation *conv, PurpleMessageFlags flags, gpointer null) +{ + if (conv == NULL || PIDGIN_IS_PIDGIN_CONVERSATION(conv)) + return; + if (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) { + PidginUnseenState unseen = PIDGIN_UNSEEN_NONE; + + if ((flags & PURPLE_MESSAGE_NICK) == PURPLE_MESSAGE_NICK) + unseen = PIDGIN_UNSEEN_NICK; + else if (((flags & PURPLE_MESSAGE_SYSTEM) == PURPLE_MESSAGE_SYSTEM) || + ((flags & PURPLE_MESSAGE_ERROR) == PURPLE_MESSAGE_ERROR)) + unseen = PIDGIN_UNSEEN_EVENT; + else if ((flags & PURPLE_MESSAGE_NO_LOG) == PURPLE_MESSAGE_NO_LOG) + unseen = PIDGIN_UNSEEN_NO_LOG; + else + unseen = PIDGIN_UNSEEN_TEXT; + + conv_set_unseen(conv, unseen); + purple_conversation_update(conv, PURPLE_CONV_UPDATE_UNSEEN); + } +} + static PurpleConversationUiOps conversation_ui_ops = { pidgin_conv_new, @@ -7099,6 +7194,7 @@ account_status_changed_cb(PurpleAccount *account, PurpleStatus *oldstatus, PurpleStatus *newstatus) { +#if 0 GList *l; PurpleConversation *conv = NULL; PidginConversation *gtkconv; @@ -7108,27 +7204,7 @@ if(purple_status_is_available(oldstatus) || !purple_status_is_available(newstatus)) return; - - while ((l = hidden_convwin->gtkconvs) != NULL) - { - gtkconv = l->data; - - conv = gtkconv->active_conv; - - while(l && !purple_status_is_available( - purple_account_get_active_status( - purple_conversation_get_account(conv)))) - l = l->next; - if (!l) - break; - - pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv); - pidgin_conv_placement_place(gtkconv); - - /* TODO: do we need to do anything for any other conversations that are in the same gtkconv here? - * I'm a little concerned that not doing so will cause the "pending" indicator in the gtkblist not to be cleared. -DAA*/ - purple_conversation_update(conv, PURPLE_CONV_UPDATE_UNSEEN); - } +#endif } static void @@ -7136,32 +7212,25 @@ gconstpointer value, gpointer data) { GList *l; - PurpleConversation *conv = NULL; - PidginConversation *gtkconv; gboolean when_away = FALSE; - if(!hidden_convwin) - return; - if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always")==0) return; if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away")==0) when_away = TRUE; - while ((l = hidden_convwin->gtkconvs) != NULL) + for (l = purple_get_conversations(); l; l = l->next) { - gtkconv = l->data; - - conv = gtkconv->active_conv; - + PurpleConversation *conv = l->data; + PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); + if (gtkconv) + continue; if(when_away && !purple_status_is_available( purple_account_get_active_status( purple_conversation_get_account(conv)))) continue; - - pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv); - pidgin_conv_placement_place(gtkconv); + pidgin_conv_attach_to_conversation(conv); } } @@ -7217,6 +7286,23 @@ /* if (purple_conversation_get_account(conv) == account) */ pidgin_conv_update_fields(conv, PIDGIN_CONV_TAB_ICON | PIDGIN_CONV_MENU | PIDGIN_CONV_COLORIZE_TITLE); + + if (PURPLE_CONNECTION_IS_CONNECTED(gc) && + conv->type == PURPLE_CONV_TYPE_CHAT && + conv->account == gc->account && + purple_conversation_get_data(conv, "want-to-rejoin")) { + GHashTable *comps = NULL; + PurpleChat *chat = purple_blist_find_chat(conv->account, conv->name); + if (chat == NULL) { + if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) + comps = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, conv->name); + } else { + comps = chat->components; + } + serv_join_chat(gc, comps); + if (chat == NULL && comps != NULL) + g_hash_table_destroy(comps); + } } } @@ -7344,9 +7430,15 @@ PidginConversation *gtkconv = data; int count = 0; int timer = gtkconv->attach.timer; + time_t when = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gtkconv->entry), "attach-start-time")); + gtkconv->attach.timer = 0; while (gtkconv->attach.current && count < 100) { /* XXX: 100 is a random value here */ PurpleConvMessage *msg = gtkconv->attach.current->data; + if (when && when < msg->when) { + gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "

", 0); + g_object_set_data(G_OBJECT(gtkconv->entry), "attach-start-time", NULL); + } pidgin_conv_write_conv(gtkconv->active_conv, msg->who, msg->who, msg->what, msg->flags, msg->when); gtkconv->attach.current = gtkconv->attach.current->prev; count++; @@ -7355,6 +7447,7 @@ if (gtkconv->attach.current) return TRUE; + g_object_set_data(G_OBJECT(gtkconv->entry), "attach-start-time", NULL); purple_signal_emit(pidgin_conversations_get_handle(), "conversation-displayed", gtkconv); g_source_remove(gtkconv->attach.timer); @@ -7366,18 +7459,22 @@ { GList *list; PidginConversation *gtkconv; + int timer; if (PIDGIN_IS_PIDGIN_CONVERSATION(conv)) return FALSE; + purple_conversation_set_data(conv, "unseen-count", NULL); + purple_conversation_set_data(conv, "unseen-state", NULL); purple_conversation_set_ui_ops(conv, pidgin_conversations_get_conv_ui_ops()); private_gtkconv_new(conv, FALSE); gtkconv = PIDGIN_CONVERSATION(conv); list = purple_conversation_get_message_history(conv); if (list) { - list = g_list_last(list); - gtkconv->attach.current = list; + g_object_set_data(G_OBJECT(gtkconv->entry), "attach-start-time", + GINT_TO_POINTER(((PurpleConvMessage*)(list->data))->when)); + gtkconv->attach.current = g_list_last(list); gtkconv->attach.timer = g_idle_add(add_message_history_to_gtkconv, gtkconv); } else { purple_signal_emit(pidgin_conversations_get_handle(), @@ -7389,6 +7486,9 @@ pidgin_conv_chat_add_users(conv, PURPLE_CONV_CHAT(conv)->in_room, TRUE); } + timer = GPOINTER_TO_INT(purple_conversation_get_data(conv, "close-timer")); + if (timer) + purple_timeout_remove(timer); return TRUE; } @@ -7454,6 +7554,7 @@ purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", TRUE); purple_prefs_add_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new", "never"); + purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/im/close_immediately", FALSE); #ifdef _WIN32 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/win32/minimize_new_convs", FALSE); @@ -7617,9 +7718,6 @@ purple_conversations_set_ui_ops(&conversation_ui_ops); - hidden_convwin = pidgin_conv_window_new(); - window_list = g_list_remove(window_list, hidden_convwin); - purple_signal_connect(purple_accounts_get_handle(), "account-status-changed", handle, PURPLE_CALLBACK(account_status_changed_cb), NULL); @@ -7655,6 +7753,10 @@ purple_signal_connect_priority(purple_conversations_get_handle(), "conversation-updated", handle, PURPLE_CALLBACK(pidgin_conv_updated), NULL, PURPLE_SIGNAL_PRIORITY_LOWEST); + purple_signal_connect(purple_conversations_get_handle(), "wrote-im-msg", handle, + PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL); + purple_signal_connect(purple_conversations_get_handle(), "wrote-chat-msg", handle, + PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL); } void @@ -7663,8 +7765,6 @@ purple_prefs_disconnect_by_handle(pidgin_conversations_get_handle()); purple_signals_disconnect_by_handle(pidgin_conversations_get_handle()); purple_signals_unregister_by_instance(pidgin_conversations_get_handle()); - pidgin_conv_window_destroy(hidden_convwin); - hidden_convwin=NULL; } @@ -7835,6 +7935,38 @@ } static void +conv_set_unseen(PurpleConversation *conv, PidginUnseenState state) +{ + int unseen_count = 0; + PidginUnseenState unseen_state = PIDGIN_UNSEEN_NONE; + + if(purple_conversation_get_data(conv, "unseen-count")) + unseen_count = GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count")); + + if(purple_conversation_get_data(conv, "unseen-state")) + unseen_state = GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-state")); + + if (state == PIDGIN_UNSEEN_NONE) + { + unseen_count = 0; + unseen_state = PIDGIN_UNSEEN_NONE; + } + else + { + if (state >= PIDGIN_UNSEEN_TEXT) + unseen_count++; + + if (state > unseen_state) + unseen_state = state; + } + + purple_conversation_set_data(conv, "unseen-count", GINT_TO_POINTER(unseen_count)); + purple_conversation_set_data(conv, "unseen-state", GINT_TO_POINTER(unseen_state)); + + purple_conversation_update(conv, PURPLE_CONV_UPDATE_UNSEEN); +} + +static void gtkconv_set_unseen(PidginConversation *gtkconv, PidginUnseenState state) { if (state == PIDGIN_UNSEEN_NONE) @@ -8046,7 +8178,7 @@ sub = gtk_menu_item_get_submenu(GTK_MENU_ITEM(gtkconv->win->menu.send_to)); if (sub && GTK_WIDGET_IS_SENSITIVE(gtkconv->win->menu.send_to)) { - GtkWidget *item = gtk_menu_item_new_with_mnemonic(_("_Send To")); + GtkWidget *item = gtk_menu_item_new_with_mnemonic(_("S_end To")); if (populated) pidgin_separator(menu); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); @@ -8796,15 +8928,10 @@ if (win->gtkconvs) { while (win->gtkconvs) { - GList *nextgtk = win->gtkconvs->next; - PidginConversation *gtkconv = win->gtkconvs->data; - GList *nextcore = gtkconv->convs->next; - PurpleConversation *conv = gtkconv->convs->data; - purple_conversation_destroy(conv); - if (!nextgtk && !nextcore) - /* we'll end up invoking ourselves when we destroy our last child */ - /* so don't destroy ourselves right now */ - return; + gboolean last = (win->gtkconvs->next == NULL); + close_conv_cb(NULL, NULL, win->gtkconvs->data); + if (last) + break; } return; } @@ -9083,7 +9210,7 @@ if (win->gtkconvs && win->gtkconvs->next == NULL) pidgin_conv_tab_pack(win, win->gtkconvs->data); - if (!win->gtkconvs && win != hidden_convwin) + if (!win->gtkconvs) pidgin_conv_window_destroy(win); } @@ -9622,9 +9749,7 @@ gboolean pidgin_conv_is_hidden(PidginConversation *gtkconv) { - g_return_val_if_fail(gtkconv != NULL, FALSE); - - return (gtkconv->win == hidden_convwin); + return (gtkconv == NULL); } @@ -9725,3 +9850,4 @@ return colors; } + diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkconv.h --- a/pidgin/gtkconv.h Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkconv.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file gtkconv.h GTK+ Conversation API * @ingroup pidgin + * @see @ref gtkconv-signals */ /* pidgin @@ -252,6 +253,8 @@ * @param conv The conversation. * * @return Wheter Pidgin UI was successfully attached. + * + * @since 2.2.0 */ gboolean pidgin_conv_attach_to_conversation(PurpleConversation *conv); diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkdocklet.c --- a/pidgin/gtkdocklet.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkdocklet.c Tue Oct 23 17:41:06 2007 +0000 @@ -145,15 +145,22 @@ if (ui_ops->set_tooltip) { GString *tooltip_text = g_string_new(""); for (l = convs, count = 0 ; l != NULL ; l = l->next, count++) { - if (PIDGIN_IS_PIDGIN_CONVERSATION(l->data)) { - PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data); - if (count == DOCKLET_TOOLTIP_LINE_LIMIT - 1) - g_string_append(tooltip_text, _("Right-click for more unread messages...\n")); - else - g_string_append_printf(tooltip_text, - ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count), - gtkconv->unseen_count, - gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); + PurpleConversation *conv = (PurpleConversation *)l->data; + PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); + + if (count == DOCKLET_TOOLTIP_LINE_LIMIT - 1) { + g_string_append(tooltip_text, _("Right-click for more unread messages...\n")); + } else if(gtkconv) { + g_string_append_printf(tooltip_text, + ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count), + gtkconv->unseen_count, + purple_conversation_get_title(conv)); + } else { + g_string_append_printf(tooltip_text, + ngettext("%d unread message from %s\n", "%d unread messages from %s\n", + GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count"))), + GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count")), + purple_conversation_get_title(conv)); } } @@ -578,6 +585,87 @@ return menuitem; } + + +static void +plugin_act(GtkObject *obj, PurplePluginAction *pam) +{ + if (pam && pam->callback) + pam->callback(pam); +} + +static void +build_plugin_actions(GtkWidget *menu, PurplePlugin *plugin, + gpointer context) +{ + GtkWidget *menuitem; + PurplePluginAction *action = NULL; + GList *actions, *l; + + actions = PURPLE_PLUGIN_ACTIONS(plugin, context); + + for (l = actions; l != NULL; l = l->next) + { + if (l->data) + { + action = (PurplePluginAction *) l->data; + action->plugin = plugin; + action->context = context; + + menuitem = gtk_menu_item_new_with_label(action->label); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); + + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(plugin_act), action); + g_object_set_data_full(G_OBJECT(menuitem), "plugin_action", + action, + (GDestroyNotify)purple_plugin_action_free); + gtk_widget_show(menuitem); + } + else + pidgin_separator(menu); + } + + g_list_free(actions); +} + + +static void +docklet_plugin_actions(GtkWidget *menu) +{ + GtkWidget *menuitem, *submenu; + PurplePlugin *plugin = NULL; + GList *l; + int c = 0; + + g_return_if_fail(menu != NULL); + + /* Add a submenu for each plugin with custom actions */ + for (l = purple_plugins_get_loaded(); l; l = l->next) { + plugin = (PurplePlugin *) l->data; + + if (PURPLE_IS_PROTOCOL_PLUGIN(plugin)) + continue; + + if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin)) + continue; + + menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name)); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); + gtk_widget_show(menuitem); + + submenu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); + gtk_widget_show(submenu); + + build_plugin_actions(submenu, plugin, NULL); + + c++; + } + if(c>0) + pidgin_separator(menu); +} + static void docklet_menu() { static GtkWidget *menu = NULL; @@ -637,13 +725,16 @@ g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); - menuitem = gtk_check_menu_item_new_with_label(_("Blink on new message")); + menuitem = gtk_check_menu_item_new_with_label(_("Blink on New Message")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink")); g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blink), NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); pidgin_separator(menu); + /* add plugin actions */ + docklet_plugin_actions(menu); + pidgin_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(purple_core_quit), NULL, 0, 0, NULL); #ifdef _WIN32 @@ -674,7 +765,7 @@ if (pending) { GList *l = get_pending_list(1); if (l != NULL) { - purple_conversation_present((PurpleConversation *)l->data); + pidgin_conv_present_conversation((PurpleConversation *)l->data); g_list_free(l); } } else { diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkimhtml.c --- a/pidgin/gtkimhtml.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkimhtml.c Tue Oct 23 17:41:06 2007 +0000 @@ -3132,9 +3132,10 @@ gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &i, sd->mark); if (gtk_text_iter_in_range(&i, start, end)) { - GtkIMHtmlScalable *scale = sd->scalable; + GtkIMHtmlScalable *scale = GTK_IMHTML_SCALABLE(sd->scalable); scale->free(scale); - imhtml->scalables = g_list_remove_link(imhtml->scalables, l); + g_free(sd); + imhtml->scalables = g_list_delete_link(imhtml->scalables, l); } l = next; } diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkimhtml.h --- a/pidgin/gtkimhtml.h Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkimhtml.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file gtkimhtml.h GTK+ IM/HTML rendering component * @ingroup pidgin + * @see @ref gtkimhtml-signals */ /* Pidgin is the legal property of its developers, whose names are too numerous @@ -440,6 +441,8 @@ * @param id The id to associate with the image. * * @return A new IM/HTML Scalable object with an image. + * + * @since 2.1.0 */ /* * TODO: All this animation code could be combined much better with @@ -836,6 +839,8 @@ * * @param imhtml The GTK+ IM/HTML. * @param flags The connection flag which describes the allowed types of formatting. + * + * @since 2.1.0 */ void gtk_imhtml_setup_entry(GtkIMHtml *imhtml, PurpleConnectionFlags flags); diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkimhtmltoolbar.c --- a/pidgin/gtkimhtmltoolbar.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkimhtmltoolbar.c Tue Oct 23 17:41:06 2007 +0000 @@ -1166,6 +1166,7 @@ GtkWidget *label; GtkWidget *insert_button; GtkWidget *font_button; + GtkWidget *smiley_button; GtkWidget *font_menu; GtkWidget *insert_menu; GtkWidget *menuitem; @@ -1267,12 +1268,6 @@ insert_menu = gtk_menu_new(); g_object_set_data(G_OBJECT(toolbar), "insert_menu", insert_menu); - menuitem = gtk_menu_item_new_with_mnemonic(_("_Smiley")); - g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->smiley); - gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem); - g_signal_connect(G_OBJECT(toolbar->smiley), "notify::sensitive", - G_CALLBACK(button_sensitiveness_changed), menuitem); - menuitem = gtk_menu_item_new_with_mnemonic(_("_Image")); g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->image); gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem); @@ -1294,6 +1289,24 @@ 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); + gtk_widget_show_all(sep); + + /* Smiley */ + smiley_button = gtk_button_new(); + gtk_button_set_relief(GTK_BUTTON(smiley_button), GTK_RELIEF_NONE); + bbox = gtk_hbox_new(FALSE, 3); + gtk_container_add(GTK_CONTAINER(smiley_button), bbox); + image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); + gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); + label = gtk_label_new_with_mnemonic(_("_Smile!")); + gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0); + g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->smiley); + gtk_widget_show_all(smiley_button); gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, FALSE, 0); g_object_set_data(G_OBJECT(hbox), "lean-view", box); diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtklog.h --- a/pidgin/gtklog.h Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtklog.h Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ /** * @file gtklog.h GTK+ Log viewer * @ingroup pidgin + * @see @ref gtklog-signals */ /* pidgin diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkmain.c --- a/pidgin/gtkmain.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkmain.c Tue Oct 23 17:41:06 2007 +0000 @@ -394,6 +394,9 @@ " -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" +#ifndef WIN32 + " --display=DISPLAY X display to use\n" +#endif " -v, --version display the current version and exit\n"), PIDGIN_NAME, VERSION, name); } @@ -481,6 +484,7 @@ {"nologin", no_argument, NULL, 'n'}, {"session", required_argument, NULL, 's'}, {"version", no_argument, NULL, 'v'}, + {"display", required_argument, NULL, 'D'}, {0, 0, 0, 0} }; @@ -509,7 +513,7 @@ #ifndef DEBUG /* We translate this here in case the crash breaks gettext. */ segfault_message_tmp = g_strdup_printf(_( - "%s has segfaulted and attempted to dump a core file.\n" + "%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" @@ -523,7 +527,7 @@ "LSchiere (via AIM). Contact information for Sean and Luke \n" "on other protocols is at\n" "%swiki/DeveloperPages\n"), - PIDGIN_NAME, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE + PIDGIN_NAME, VERSION, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE ); /* we have to convert the message (UTF-8 to console @@ -626,6 +630,9 @@ case 'm': /* do not ensure single instance. */ opt_si = FALSE; break; + case 'D': /* --display */ + /* handled by gtk_init_check below */ + break; case '?': /* show terse help */ default: show_usage(argv[0], TRUE); diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtknotify.c --- a/pidgin/gtknotify.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtknotify.c Tue Oct 23 17:41:06 2007 +0000 @@ -566,8 +566,8 @@ if (!GTK_WIDGET_VISIBLE(dialog)) { GdkPixbuf *pixbuf = gtk_widget_render_icon(dialog, PIDGIN_STOCK_DIALOG_MAIL, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), NULL); - char *label_text = g_strdup_printf(ngettext("You have %d new e-mail.", - "You have %d new e-mails.", + char *label_text = g_strdup_printf(ngettext("%d new e-mail.", + "%d new e-mails.", mail_dialog->total_count), mail_dialog->total_count); mail_dialog->in_use = TRUE; /* So that _set_headline doesn't accidentally remove the notifications when replacing an @@ -697,30 +697,30 @@ GtkTreeIter iter; GdkPixbuf *pixbuf; guint col_num; - guint i; - guint j; + GList *row, *column; + guint n; gtk_list_store_clear(data->model); pixbuf = pidgin_create_prpl_icon(purple_connection_get_account(gc), 0.5); /* +1 is for the automagically created Status column. */ - col_num = purple_notify_searchresults_get_columns_count(results) + 1; + col_num = g_list_length(results->columns) + 1; - for (i = 0; i < purple_notify_searchresults_get_rows_count(results); i++) { - GList *row = purple_notify_searchresults_row_get(results, i); + for (row = results->rows; row != NULL; row = row->next) { gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, 0, pixbuf, -1); - for (j = 1; j < col_num; j++) { + n = 1; + for (column = row->data; column != NULL; column = column->next) { GValue v; - char *data = g_list_nth_data(row, j - 1); v.g_type = 0; g_value_init(&v, G_TYPE_STRING); - g_value_set_string(&v, data); - gtk_list_store_set_value(model, &iter, j, &v); + g_value_set_string(&v, column->data); + gtk_list_store_set_value(model, &iter, n, &v); + n++; } } @@ -740,6 +740,7 @@ GtkListStore *model; GtkCellRenderer *renderer; guint col_num; + GList *columniter; guint i; GtkWidget *vbox; @@ -787,7 +788,7 @@ g_free(label_text); /* +1 is for the automagically created Status column. */ - col_num = purple_notify_searchresults_get_columns_count(results) + 1; + col_num = g_list_length(results->columns) + 1; /* Setup the list model */ col_types = g_new0(GType, col_num); @@ -822,12 +823,14 @@ gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, "", renderer, "pixbuf", 0, NULL); - for (i = 1; i < col_num; i++) { + i = 1; + for (columniter = results->columns; columniter != NULL; columniter = columniter->next) { + PurpleNotifySearchColumn *column = columniter->data; renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, - purple_notify_searchresults_column_get_title(results, i-1), - renderer, "text", i, NULL); + column->title, renderer, "text", i, NULL); + i++; } for (i = 0; i < g_list_length(results->buttons); i++) { diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkprefs.c Tue Oct 23 17:41:06 2007 +0000 @@ -994,6 +994,8 @@ pidgin_prefs_checkbox(_("Show _formatting on incoming messages"), PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting", vbox); + pidgin_prefs_checkbox(_("Close IMs immediately when the tab is closed"), + PIDGIN_PREFS_ROOT "/conversations/im/close_immediately", vbox); iconpref1 = pidgin_prefs_checkbox(_("Show _detailed information"), PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", vbox); diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtksession.c --- a/pidgin/gtksession.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtksession.c Tue Oct 23 17:41:06 2007 +0000 @@ -36,6 +36,7 @@ #include #include #include +#include #define ERROR_LENGTH 512 @@ -141,7 +142,7 @@ /* my magic utility function */ static gchar **session_make_command(gchar *client_id, gchar *config_dir) { - gint i = 2; + gint i = 4; gint j = 0; gchar **ret; @@ -161,6 +162,9 @@ ret[j++] = g_strdup(config_dir); } + ret[j++] = g_strdup("--display"); + ret[j++] = g_strdup((gchar *)gdk_display_get_name(gdk_display_get_default())); + ret[j++] = NULL; return ret; diff -r 7697f6872380 -r f7e4a558a439 pidgin/gtkutils.h --- a/pidgin/gtkutils.h Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/gtkutils.h Tue Oct 23 17:41:06 2007 +0000 @@ -376,6 +376,8 @@ * * @param conn The connection to get information from. * @param name The user to get information about. + * + * @since 2.1.0 */ void pidgin_retrieve_user_info(PurpleConnection *conn, const char *name); @@ -385,6 +387,8 @@ * @param conn The connection to get information from. * @param name The user to get information about. * @param chatid The chat id. + * + * @since 2.1.0 */ void pidgin_retrieve_user_info_in_chat(PurpleConnection *conn, const char *name, int chatid); @@ -423,6 +427,8 @@ * * @param w The widget that we want to label. * @param l A GtkLabel that we want to use as the label for the widget. + * + * @since 2.2.0 */ void pidgin_set_accessible_relations(GtkWidget *w, GtkWidget *l); @@ -437,6 +443,8 @@ * where the menu shall be drawn. This is an output parameter. * @param push_in This is an output parameter? * @param data Not used by this particular position function. + * + * @since 2.1.0 */ void pidgin_menu_position_func_helper(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data); @@ -671,6 +679,8 @@ * * @return A newly created text GtkComboBox containing a GtkEntry * child. + * + * @since 2.2.0 */ GtkWidget *pidgin_text_combo_box_entry_new(const char *default_item, GList *items); @@ -680,6 +690,8 @@ * @param widget The simple text GtkComboBoxEntry equivalent widget * * @return The text in the widget's entry. It must not be freed + * + * @since 2.2.0 */ const char *pidgin_text_combo_box_entry_get_text(GtkWidget *widget); @@ -688,6 +700,8 @@ * * @param widget The simple text GtkComboBoxEntry equivalent widget * @param text The text to set + * + * @since 2.2.0 */ void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text); diff -r 7697f6872380 -r f7e4a558a439 pidgin/pidginstock.c --- a/pidgin/pidginstock.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pidginstock.c Tue Oct 23 17:41:06 2007 +0000 @@ -114,11 +114,11 @@ { 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", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, - { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, + { 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", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, + { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, { 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 }, diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/cool.png Binary file pidgin/pixmaps/dialogs/64/cool.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/error.png Binary file pidgin/pixmaps/dialogs/64/error.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/info.png Binary file pidgin/pixmaps/dialogs/64/info.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/mail.png Binary file pidgin/pixmaps/dialogs/64/mail.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/question.png Binary file pidgin/pixmaps/dialogs/64/question.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/scalable/cool.svg --- a/pidgin/pixmaps/dialogs/64/scalable/cool.svg Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/dialogs/64/scalable/cool.svg Tue Oct 23 17:41:06 2007 +0000 @@ -7,101 +7,25 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" + width="48" + height="48" id="svg2" sodipodi:version="0.32" - inkscape:version="0.43" + inkscape:version="0.45" version="1.0" - sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/dialogs" + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs" sodipodi:docname="dialog-cool.svg" - inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/dialogs/dialog-cool.png" + inkscape:export-filename="/home/hbons/Desktop/newstyle.png" inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-ydpi="90" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fill="#fce94f" + inkscape:window-width="1440" + inkscape:window-height="847" + inkscape:window-x="3" + inkscape:window-y="25" + width="48px" + height="48px" /> @@ -167,25 +458,25 @@ inkscape:groupmode="layer" id="layer1"> + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)" + id="path3140" + sodipodi:cx="10.748654" + sodipodi:cy="10.457643" + sodipodi:rx="6.6449099" + sodipodi:ry="2.3675451" + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z" + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" /> + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" /> + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" /> + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" /> + + + + + + + + + + + + transform="matrix(1.712345,0,0,2.754643,-71.507978,-24.75469)" /> + transform="matrix(1.712345,0,0,2.754643,-63.507982,-24.75469)" /> - + d="M 44.125,10.5 C 35.308909,10.855387 28.5,16.639515 28.5,23.40625 C 28.5,27.397567 30.147439,31.550115 33.625,33.875 C 33.835747,34.023343 33.981239,34.247178 34.03125,34.5 C 34.490803,36.524599 34.051533,38.324325 33.46875,39.65625 C 33.930328,39.493414 34.045022,39.492531 34.5625,39.28125 C 36.305088,38.56977 38.200088,37.553862 39.0625,36.59375 C 39.244281,36.384758 39.504456,36.260327 39.78125,36.25 C 42.026592,36.154804 43.292249,36.3125 45,36.3125 C 54.22098,36.312499 61.500002,30.39071 61.5,23.40625 C 61.5,16.421791 54.220979,10.5 45,10.5 C 44.671757,10.5 44.368389,10.490188 44.125,10.5 z " + transform="translate(-72.994465,-39.55632)" /> + d="M 44.125,10.5 C 35.31263,10.855237 28.5,16.645389 28.5,23.40625 C 28.5,27.395135 30.150413,31.552103 33.625,33.875 C 33.846858,34.018204 34.003884,34.242526 34.0625,34.5 C 34.519684,36.514161 34.077673,38.294264 33.5,39.625 C 33.948389,39.466107 34.062909,39.485228 34.5625,39.28125 C 36.304559,38.569986 38.202041,37.520438 39.0625,36.5625 C 39.25032,36.365929 39.509394,36.253288 39.78125,36.25 C 42.027154,36.154781 43.29277,36.3125 45,36.3125 C 54.217148,36.312499 61.500002,30.384642 61.5,23.40625 C 61.5,16.427859 54.217147,10.5 45,10.5 C 44.671521,10.5 44.367905,10.490207 44.125,10.5 z " + transform="translate(-72.994465,-39.55632)" /> + transform="matrix(0.856174,0,0,0.688661,-39.751235,-16.60591)" /> + transform="matrix(0.856172,0,0,0.688662,-35.751215,-16.60592)" /> + transform="matrix(0.856173,0,0,0.688662,-31.751225,-16.60593)" /> + + diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/scalable/error.svg --- a/pidgin/pixmaps/dialogs/64/scalable/error.svg Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/dialogs/64/scalable/error.svg Tue Oct 23 17:41:06 2007 +0000 @@ -7,101 +7,25 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" + width="48" + height="48" id="svg2" sodipodi:version="0.32" - inkscape:version="0.43" + inkscape:version="0.45" version="1.0" - sodipodi:docbase="/home/hbons/Desktop" - sodipodi:docname="dialog-error.svg" - inkscape:export-filename="/home/hbons/Desktop/dialog-warning.png" + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs" + sodipodi:docname="dialog--error.svg" + inkscape:export-filename="/home/hbons/Desktop/newstyle.png" inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-ydpi="90" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + r="9.975256" + fy="14.186539" + fx="8.3343515" + cy="14.186539" + cx="8.3343515" + id="radialGradient3444" + xlink:href="#linearGradient3104" + inkscape:collect="always" /> + + + + + + + + + + + + + fill="#fce94f" + inkscape:window-width="1440" + inkscape:window-height="847" + inkscape:window-x="3" + inkscape:window-y="25" + width="48px" + height="48px" /> @@ -167,25 +540,25 @@ inkscape:groupmode="layer" id="layer1"> + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)" + id="path3140" + sodipodi:cx="10.748654" + sodipodi:cy="10.457643" + sodipodi:rx="6.6449099" + sodipodi:ry="2.3675451" + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z" + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" /> + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" /> + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" /> - - - + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" /> + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2259" + sodipodi:cx="8.3258924" + sodipodi:cy="9.2232141" + sodipodi:rx="1.2276785" + sodipodi:ry="1.7410715" + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499" + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)" + sodipodi:start="3.5782199" + sodipodi:end="5.6135639" + sodipodi:open="true" /> + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2261" + sodipodi:cx="8.3258924" + sodipodi:cy="9.2232141" + sodipodi:rx="1.2276785" + sodipodi:ry="1.7410715" + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499" + transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)" + sodipodi:start="3.5782199" + sodipodi:end="5.6135639" + sodipodi:open="true" /> - + d="M 17,21 L 17,22 L 18,22 L 18,21 L 17,21 z M 18,22 L 18,23 L 19,23 L 19,22 L 18,22 z M 19,23 L 19,24 L 20,24 L 20,23 L 19,23 z M 20,23 L 21,23 L 21,22 L 20,22 L 20,23 z M 21,22 L 22,22 L 22,21 L 21,21 L 21,22 z M 20,24 L 20,25 L 21,25 L 21,24 L 20,24 z M 21,25 L 21,26 L 22,26 L 22,25 L 21,25 z M 19,24 L 18,24 L 18,25 L 19,25 L 19,24 z M 18,25 L 17,25 L 17,26 L 18,26 L 18,25 z " + id="rect3307" /> + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 27,21 L 27,22 L 28,22 L 28,21 L 27,21 z M 28,22 L 28,23 L 29,23 L 29,22 L 28,22 z M 29,23 L 29,24 L 30,24 L 30,23 L 29,23 z M 30,23 L 31,23 L 31,22 L 30,22 L 30,23 z M 31,22 L 32,22 L 32,21 L 31,21 L 31,22 z M 30,24 L 30,25 L 31,25 L 31,24 L 30,24 z M 31,25 L 31,26 L 32,26 L 32,25 L 31,25 z M 29,24 L 28,24 L 28,25 L 29,25 L 29,24 z M 28,25 L 27,25 L 27,26 L 28,26 L 28,25 z " + id="path3326" /> - + style="fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 34,39 C 32.885686,35.003412 29.067255,32 24.5,32 C 19.932746,32 16.114315,35.003412 15,39 C 17.00212,36.412082 20.518441,33.850868 24.5,33.850868 C 28.481556,33.850866 31.99788,36.412082 34,39 z " + id="path3492" + sodipodi:nodetypes="cscsc" /> diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/scalable/info.svg --- a/pidgin/pixmaps/dialogs/64/scalable/info.svg Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/dialogs/64/scalable/info.svg Tue Oct 23 17:41:06 2007 +0000 @@ -7,147 +7,25 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" + width="48" + height="48" id="svg2" sodipodi:version="0.32" - inkscape:version="0.43" + inkscape:version="0.45" version="1.0" sodipodi:docbase="/home/hbons/Desktop" - sodipodi:docname="dialog-info.svg" - inkscape:export-filename="/home/hbons/Desktop/dialog-info.png" + sodipodi:docname="dialog.svg" + inkscape:export-filename="/home/hbons/Desktop/newstyle.png" inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-ydpi="90" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + id="radialGradient2259" + xlink:href="#linearGradient2382" + inkscape:collect="always" /> + + + + + + + + + + + + + + + + + + + + fill="#fce94f" + inkscape:window-width="1440" + inkscape:window-height="845" + inkscape:window-x="3" + inkscape:window-y="25" + width="48px" + height="48px" /> @@ -213,25 +337,25 @@ inkscape:groupmode="layer" id="layer1"> + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)" + id="path3140" + sodipodi:cx="10.748654" + sodipodi:cy="10.457643" + sodipodi:rx="6.6449099" + sodipodi:ry="2.3675451" + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z" + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" /> + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" /> + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" /> + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" /> + + + + + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2259" + sodipodi:cx="8.3258924" + sodipodi:cy="9.2232141" + sodipodi:rx="1.2276785" + sodipodi:ry="1.7410715" + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499" + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)" + sodipodi:start="3.5782199" + sodipodi:end="5.6135639" + sodipodi:open="true" /> - - - - - - - - - - - - - - - + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2261" + sodipodi:cx="8.3258924" + sodipodi:cy="9.2232141" + sodipodi:rx="1.2276785" + sodipodi:ry="1.7410715" + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499" + transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)" + sodipodi:start="3.5782199" + sodipodi:end="5.6135639" + sodipodi:open="true" /> diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/scalable/question.svg --- a/pidgin/pixmaps/dialogs/64/scalable/question.svg Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/dialogs/64/scalable/question.svg Tue Oct 23 17:41:06 2007 +0000 @@ -7,57 +7,25 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" + width="48" + height="48" id="svg2" sodipodi:version="0.32" - inkscape:version="0.43" + inkscape:version="0.45" version="1.0" - sodipodi:docbase="/home/hbons/Desktop" + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs/scalable" sodipodi:docname="dialog-question.svg" - inkscape:export-filename="/home/hbons/Desktop/dialog-question.png" + inkscape:export-filename="/home/hbons/Desktop/newstyle.png" inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-ydpi="90" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + id="radialGradient2259" + xlink:href="#linearGradient2382" + inkscape:collect="always" /> + + + + + + + + + + + + + + + + + + + + fill="#fce94f" + inkscape:window-width="1440" + inkscape:window-height="847" + inkscape:window-x="3" + inkscape:window-y="25" + width="48px" + height="48px" /> @@ -123,25 +337,25 @@ inkscape:groupmode="layer" id="layer1"> + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)" + id="path3140" + sodipodi:cx="10.748654" + sodipodi:cy="10.457643" + sodipodi:rx="6.6449099" + sodipodi:ry="2.3675451" + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z" + transform="matrix(2.2723916,0,0,1.6905173,-4.1758193,23.510748)" /> + transform="matrix(1.8043406,0,0,1.8043406,-0.8023303,7.6828845)" /> + transform="matrix(1.6958412,0,0,1.6958412,0.3182737,9.0348911)" /> + transform="matrix(1.7042169,0,0,1.7042169,0.3797456,8.7825452)" /> + + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2172" + sodipodi:cx="9.7069349" + sodipodi:cy="9.6526775" + sodipodi:rx="1.0259361" + sodipodi:ry="1.9413869" + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z" + transform="matrix(1.9494387,0,0,1.2877392,-1.9230749,13.069869)" /> + + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path3148" + sodipodi:cx="9.7069349" + sodipodi:cy="9.6526775" + sodipodi:rx="1.0259361" + sodipodi:ry="1.9413869" + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z" + transform="matrix(1.9494393,0,0,1.2877392,9.0769201,13.069869)" /> - + style="opacity:1;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 30,32 C 28.885686,35.996588 25.067255,39 20.5,39 C 15.932746,39 12.114315,35.996588 11,32 C 16.460075,38.82871 24.447577,38.177252 30,32 z " + id="path2186" + sodipodi:nodetypes="cscc" /> - ? + sodipodi:type="arc" + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2259" + sodipodi:cx="8.3258924" + sodipodi:cy="9.2232141" + sodipodi:rx="1.2276785" + sodipodi:ry="1.7410715" + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499" + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,3.2901886,-4.1630499)" + sodipodi:start="3.5782199" + sodipodi:end="5.6135639" + sodipodi:open="true" /> + + + diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/scalable/warning.svg --- a/pidgin/pixmaps/dialogs/64/scalable/warning.svg Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/dialogs/64/scalable/warning.svg Tue Oct 23 17:41:06 2007 +0000 @@ -7,55 +7,35 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="64" - height="64" + width="48" + height="48" id="svg2" sodipodi:version="0.32" - inkscape:version="0.43" + inkscape:version="0.45" version="1.0" - sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/dialogs" + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs" sodipodi:docname="dialog-warning.svg" - inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/dialogs/dialog-warning.png" + inkscape:export-filename="/home/hbons/Desktop/newstyle.png" inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-ydpi="90" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> - + id="linearGradient3179"> - - - + id="stop3181" /> + id="stop3183" /> - @@ -79,15 +59,268 @@ r="9.975256" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" /> + + + + + + + + + + + + + + + + + + + + + id="radialGradient2259" + xlink:href="#linearGradient2382" + inkscape:collect="always" /> + + + + + + + + + + + + + + + + + + + + + fill="#fce94f" + inkscape:window-width="1440" + inkscape:window-height="845" + inkscape:window-x="3" + inkscape:window-y="25" + width="48px" + height="48px" /> @@ -123,25 +358,25 @@ inkscape:groupmode="layer" id="layer1"> + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)" + id="path3140" + sodipodi:cx="10.748654" + sodipodi:cy="10.457643" + sodipodi:rx="6.6449099" + sodipodi:ry="2.3675451" + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z" + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" /> + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" /> + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" /> + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" /> + style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 23.500001,23.5 C 23.500001,26.26 21.260002,28.500001 18.500001,28.500001 C 15.740001,28.500001 13.5,26.26 13.5,23.5 C 13.5,20.74 15.740001,18.5 18.500001,18.5 C 21.260002,18.5 23.500001,20.74 23.500001,23.5 z " + id="path3154" /> + sodipodi:type="arc" + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2172" + sodipodi:cx="9.7069349" + sodipodi:cy="9.6526775" + sodipodi:rx="1.0259361" + sodipodi:ry="1.9413869" + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z" + transform="matrix(1.9494387,0,0,1.2877392,1.0769249,12.069869)" /> + - ! + + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2259" + sodipodi:cx="8.3258924" + sodipodi:cy="9.2232141" + sodipodi:rx="1.2276785" + sodipodi:ry="1.7410715" + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499" + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)" + sodipodi:start="3.5782199" + sodipodi:end="5.6135639" + sodipodi:open="true" /> + + id="path3228" + sodipodi:cx="21.5625" + sodipodi:cy="33.892857" + sodipodi:rx="2.4553571" + sodipodi:ry="1.9642857" + d="M 24.017857 33.892857 A 2.4553571 1.9642857 0 1 1 19.107143,33.892857 A 2.4553571 1.9642857 0 1 1 24.017857 33.892857 z" + transform="matrix(3.0545454,0,0,2.2909093,-41.363636,-42.145461)" /> + style="opacity:1;fill:url(#linearGradient3185);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path2206" + sodipodi:cx="21.5625" + sodipodi:cy="33.892857" + sodipodi:rx="2.4553571" + sodipodi:ry="1.9642857" + d="M 24.017857 33.892857 A 2.4553571 1.9642857 0 1 1 19.107143,33.892857 A 2.4553571 1.9642857 0 1 1 24.017857 33.892857 z" + transform="matrix(-3.0545454,0,0,2.2909093,90.363634,-42.145461)" /> diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/dialogs/64/warning.png Binary file pidgin/pixmaps/dialogs/64/warning.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/emblems/16/Makefile.am --- a/pidgin/pixmaps/emblems/16/Makefile.am Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/emblems/16/Makefile.am Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,7 @@ SUBDIRS = scalable EXTRA_DIST = aol-client.png \ + birthday.png \ blocked.png \ bot.png \ external.png \ @@ -12,6 +13,7 @@ hiptop.png \ male.png \ mobile.png \ + music.png \ not-authorized.png \ operator.png \ qq-member.png \ diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/emblems/16/birthday.png Binary file pidgin/pixmaps/emblems/16/birthday.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/emblems/16/music.png Binary file pidgin/pixmaps/emblems/16/music.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/emblems/16/scalable/Makefile.am --- a/pidgin/pixmaps/emblems/16/scalable/Makefile.am Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/emblems/16/scalable/Makefile.am Tue Oct 23 17:41:06 2007 +0000 @@ -7,6 +7,7 @@ game.svg \ male.svg \ mobile.svg \ + music.svg \ not-authorized.svg \ qq-member.svg \ secure.svg \ diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/emblems/16/scalable/music.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/emblems/16/scalable/music.svg Tue Oct 23 17:41:06 2007 +0000 @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/protocols/16/myspace.png Binary file pidgin/pixmaps/protocols/16/myspace.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/protocols/48/myspace.png Binary file pidgin/pixmaps/protocols/48/myspace.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/11/Makefile.am --- a/pidgin/pixmaps/status/11/Makefile.am Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/status/11/Makefile.am Tue Oct 23 17:41:06 2007 +0000 @@ -6,6 +6,8 @@ chat.png \ extended-away.png \ invisible.png \ + log-in.png \ + log-out.png \ offline.png \ person.png diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/11/log-in.png Binary file pidgin/pixmaps/status/11/log-in.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/11/log-out.png Binary file pidgin/pixmaps/status/11/log-out.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/16/available.png Binary file pidgin/pixmaps/status/16/available.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/16/away.png Binary file pidgin/pixmaps/status/16/away.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/16/busy.png Binary file pidgin/pixmaps/status/16/busy.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/16/extended-away.png Binary file pidgin/pixmaps/status/16/extended-away.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/16/offline.png Binary file pidgin/pixmaps/status/16/offline.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/16/rtl/extended-away.png Binary file pidgin/pixmaps/status/16/rtl/extended-away.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/status/16/scalable/available.svg --- a/pidgin/pixmaps/status/16/scalable/available.svg Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/status/16/scalable/available.svg Tue Oct 23 17:41:06 2007 +0000 @@ -13,13 +13,15 @@ height="16" id="svg2" sodipodi:version="0.32" - inkscape:version="0.44.1" + inkscape:version="0.45" version="1.0" inkscape:export-filename="/home/hbons/GUI/Tango/Gaim Refresh/status/16/available.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" - sodipodi:docbase="/home/hbons/Desktop/experiment/status/16/scalable" - sodipodi:docname="available.svg"> + sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable" + sodipodi:docname="available.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> + inkscape:window-y="25" /> @@ -263,16 +265,6 @@ inkscape:groupmode="layer" id="layer1"> - + sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable" + sodipodi:docname="away.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> - + sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable" + sodipodi:docname="busy.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> + inkscape:window-x="3" + inkscape:window-y="25" /> @@ -210,16 +212,6 @@ inkscape:groupmode="layer" id="layer1"> - + inkscape:export-ydpi="90" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> + inkscape:window-width="1440" + inkscape:window-height="847" + inkscape:window-x="0" + inkscape:window-y="22" /> @@ -79,27 +81,17 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + sodipodi:nodetypes="ccccccc" + transform="matrix(-1.708738,0,0,1.647118,-1.878642,-0.867731)" /> + sodipodi:nodetypes="cccccc" + transform="matrix(-1.398059,0,0,1.342047,-8.253506e-2,0.574281)" /> + sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable" + sodipodi:docname="offline.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + sodipodi:modified="true"> + inkscape:window-x="3" + inkscape:window-y="25" /> @@ -186,16 +188,6 @@ inkscape:groupmode="layer" id="layer1"> - diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/toolbar/11/message-new.png Binary file pidgin/pixmaps/toolbar/11/message-new.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/toolbar/16/emote-select.png Binary file pidgin/pixmaps/toolbar/16/emote-select.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/toolbar/16/insert.png Binary file pidgin/pixmaps/toolbar/16/insert.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/toolbar/16/send-file.png Binary file pidgin/pixmaps/toolbar/16/send-file.png has changed diff -r 7697f6872380 -r f7e4a558a439 pidgin/pixmaps/toolbar/Makefile.am --- a/pidgin/pixmaps/toolbar/Makefile.am Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/pixmaps/toolbar/Makefile.am Tue Oct 23 17:41:06 2007 +0000 @@ -1,6 +1,11 @@ SUBDIRS = 16 22 +TINY_ICONS = 11/message-new.png EXTRA_DIST = \ Makefile.mingw \ 16/Makefile.mingw \ - 22/Makefile.mingw + 22/Makefile.mingw \ + $(TINY_ICONS) + +pidgintinytoolbarpixdir = $(datadir)/pixmaps/pidgin/toolbar/11 +pidgintinytoolbarpix_DATA = $(TINY_ICONS) diff -r 7697f6872380 -r f7e4a558a439 pidgin/plugins/gestures/stroke-draw.c --- a/pidgin/plugins/gestures/stroke-draw.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/plugins/gestures/stroke-draw.c Tue Oct 23 17:41:06 2007 +0000 @@ -13,7 +13,6 @@ #include #include -#include #include "gstroke.h" #include "gstroke-internal.h" diff -r 7697f6872380 -r f7e4a558a439 pidgin/plugins/history.c --- a/pidgin/plugins/history.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/plugins/history.c Tue Oct 23 17:41:06 2007 +0000 @@ -46,6 +46,9 @@ convtype = purple_conversation_get_type(c); gtkconv = PIDGIN_CONVERSATION(c); + if (gtkconv == NULL) + return; + if (convtype == PURPLE_CONV_TYPE_IM && g_list_length(gtkconv->convs) < 2) { GSList *buddies; @@ -166,6 +169,7 @@ purple_signal_connect(purple_conversations_get_handle(), "conversation-created", plugin, PURPLE_CALLBACK(historize), NULL); + /* XXX: Do we want to listen to pidgin's "conversation-displayed" signal? */ purple_prefs_connect_callback(plugin, "/purple/logging/log_ims", history_prefs_cb, plugin); diff -r 7697f6872380 -r f7e4a558a439 pidgin/plugins/pidginrc.c --- a/pidgin/plugins/pidginrc.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/plugins/pidginrc.c Tue Oct 23 17:41:06 2007 +0000 @@ -57,22 +57,16 @@ static const gchar *font_prefs[] = { "/plugins/gtk/purplerc/font/*pidgin_conv_entry", - "/plugins/gtk/purplerc/font/*pidgin_conv_imhtml", - "/plugins/gtk/purplerc/font/*pidgin_log_imhtml", "/plugins/gtk/purplerc/font/*pidgin_request_imhtml", "/plugins/gtk/purplerc/font/*pidgin_notify_imhtml", }; static const gchar *font_prefs_set[] = { "/plugins/gtk/purplerc/set/font/*pidgin_conv_entry", - "/plugins/gtk/purplerc/set/font/*pidgin_conv_imhtml", - "/plugins/gtk/purplerc/set/font/*pidgin_log_imhtml", "/plugins/gtk/purplerc/set/font/*pidgin_request_imhtml", "/plugins/gtk/purplerc/set/font/*pidgin_notify_imhtml", }; static const gchar *font_names[] = { N_("Conversation Entry"), - N_("Conversation History"), - N_("Log Viewer"), N_("Request Dialog"), N_("Notify Dialog") }; diff -r 7697f6872380 -r f7e4a558a439 pidgin/plugins/win32/winprefs/gtkappbar.c --- a/pidgin/plugins/win32/winprefs/gtkappbar.c Tue Oct 23 17:40:56 2007 +0000 +++ b/pidgin/plugins/win32/winprefs/gtkappbar.c Tue Oct 23 17:41:06 2007 +0000 @@ -352,17 +352,37 @@ } return GDK_FILTER_CONTINUE; } + +static void show_hide(GtkAppBar *ab, gboolean hide) { + purple_debug_info("gtkappbar", "show_hide(%d)\n", hide); + + if (hide) { + purple_debug_info("gtkappbar", "hidden\n"); + gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window)); + ab->docked = TRUE; + ab->iconized = TRUE; + } else { + ab->iconized = FALSE; + purple_debug_info("gtkappbar", "shown\n"); + ab->docked = FALSE; + gtk_appbar_do_dock(ab, ab->side); + } + +} + /** Notify the system that the appbar's position has changed */ static GdkFilterReturn wnd_poschanged(GtkAppBar *ab, GdkXEvent *xevent) { if (ab->registered) { APPBARDATA abd; MSG *msg = (MSG*)xevent; + purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n"); abd.hWnd = msg->hwnd; abd.cbSize = sizeof(APPBARDATA); SHAppBarMessage(ABM_WINDOWPOSCHANGED, &abd); + } return GDK_FILTER_CONTINUE; } @@ -382,6 +402,14 @@ set_toolbar(msg->hwnd, FALSE); /*return GDK_FILTER_REMOVE;*/ } + + if (ab->docked) { + if (ab->iconized && wpos->flags & SWP_SHOWWINDOW) + show_hide(ab, FALSE); + else if (!ab->iconized && wpos->flags & SWP_HIDEWINDOW) + show_hide(ab, TRUE); + } + return GDK_FILTER_CONTINUE; } @@ -409,23 +437,17 @@ } static GdkFilterReturn wnd_showwindow(GtkAppBar *ab, GdkXEvent *xevent) { - MSG *msg = (MSG*)xevent; + MSG *msg = (MSG*)xevent; - purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_showwindow\n"); - if(msg->wParam && ab->docked) { - ab->iconized = FALSE; - purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "shown\n"); - ab->docked = FALSE; - gtk_appbar_do_dock(ab, ab->side); - } - else if(!msg->wParam && ab->docked) { - purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "hidden\n"); - gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window)); - ab->docked = TRUE; - ab->iconized = TRUE; - } - return GDK_FILTER_CONTINUE; + purple_debug_info("gtkappbar", "wnd_showwindow\n"); + if(msg->wParam && ab->docked) { + show_hide(ab, FALSE); + } else if(!msg->wParam && ab->docked) { + show_hide(ab, TRUE); + } + return GDK_FILTER_CONTINUE; } + /** The window's size has changed */ static GdkFilterReturn wnd_size(GtkAppBar *ab, GdkXEvent *xevent) { MSG *msg = (MSG*)xevent; diff -r 7697f6872380 -r f7e4a558a439 pidgin/win32/nsis/pixmaps/pidgin-intro.bmp Binary file pidgin/win32/nsis/pixmaps/pidgin-intro.bmp has changed diff -r 7697f6872380 -r f7e4a558a439 po/POTFILES.in --- a/po/POTFILES.in Tue Oct 23 17:40:56 2007 +0000 +++ b/po/POTFILES.in Tue Oct 23 17:41:06 2007 +0000 @@ -91,11 +91,13 @@ libpurple/protocols/jabber/usermood.c libpurple/protocols/jabber/usernick.c libpurple/protocols/jabber/xdata.c +libpurple/protocols/msn/contact.c libpurple/protocols/msn/dialog.c libpurple/protocols/msn/error.c libpurple/protocols/msn/msn.c libpurple/protocols/msn/nexus.c libpurple/protocols/msn/notification.c +libpurple/protocols/msn/oim.c libpurple/protocols/msn/servconn.c libpurple/protocols/msn/session.c libpurple/protocols/msn/state.c diff -r 7697f6872380 -r f7e4a558a439 po/nb.po --- a/po/nb.po Tue Oct 23 17:40:56 2007 +0000 +++ b/po/nb.po Tue Oct 23 17:41:06 2007 +0000 @@ -1,9 +1,10 @@ # translation of nb.po to Norsk bokmål -# Gaim Norwegian translation +# Pidgin Norwegian Bokmål translation # Copyright (C) 2003, Petter Johan Olsen # Copyright (C) 2005, Kyrre Ness Sjøbæk +# Copyright (C), Hallvard Glad # -# This file is distributed under the same license as the Gaim package. +# This file is distributed under the same license as the Pidgin package. # # Contributors: # Petter Johan Olsen initial translation for 0.62 @@ -17,26 +18,26 @@ msgstr "" "Project-Id-Version: nb\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-09-28 15:32-0500\n" -"PO-Revision-Date: 2005-06-08 15:51+0200\n" -"Last-Translator: Hallvard Glad \n" +"POT-Creation-Date: 2007-09-26 09:23-0400\n" +"PO-Revision-Date: 2007-09-26 13:48+0100\n" +"Last-Translator: Espen Stefansen \n" "Language-Team: Norsk bokmål \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" -"X-Generator: KBabel 1.3.1\n" - -#: ../finch/finch.c:64 ../finch/finch.c:301 ../finch/finch.c:330 + +#: ../finch/finch.c:64 +#: ../finch/finch.c:301 +#: ../finch/finch.c:330 #: ../finch/finch.c:418 -#, fuzzy msgid "Finch" -msgstr "Fransk" +msgstr "Finch" #: ../finch/finch.c:206 -#, fuzzy, c-format +#, c-format msgid "%s. Try `%s -h' for more information.\n" -msgstr "Gaim %s. Prøv '%s -h' for mer informasjon.\n" +msgstr "%s. Prøv '%s -h' for mer informasjon.\n" #: ../finch/finch.c:208 #, c-format @@ -51,42 +52,47 @@ " -v, --version display the current version and exit\n" msgstr "" -#: ../finch/finch.c:328 ../pidgin/gtkmain.c:711 -#, 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 "" - -#: ../finch/gntaccount.c:124 ../finch/gntaccount.c:484 ../finch/gntblist.c:300 -#: ../finch/gntblist.c:433 ../finch/gntblist.c:446 ../finch/gntplugin.c:186 -#: ../finch/gntplugin.c:234 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310 -#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121 +#: ../finch/finch.c:328 +#: ../pidgin/gtkmain.c:718 +#, 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 "" + +#: ../finch/gntaccount.c:124 +#: ../finch/gntaccount.c:484 +#: ../finch/gntblist.c:300 +#: ../finch/gntblist.c:433 +#: ../finch/gntblist.c:446 +#: ../finch/gntplugin.c:186 +#: ../finch/gntplugin.c:234 +#: ../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:2029 +#: ../libpurple/protocols/jabber/buddy.c:2032 #: ../libpurple/protocols/jabber/chat.c:677 #: ../libpurple/protocols/jabber/chat.c:688 #: ../libpurple/protocols/jabber/jabber.c:1515 #: ../libpurple/protocols/qq/group_join.c:328 -#: ../libpurple/protocols/qq/im.c:576 ../libpurple/protocols/silc/ops.c:57 +#: ../libpurple/protocols/qq/im.c:576 +#: ../libpurple/protocols/silc/ops.c:57 #: ../libpurple/protocols/silc/ops.c:1456 #: ../libpurple/protocols/silc10/ops.c:1451 msgid "Error" msgstr "Feil" #: ../finch/gntaccount.c:124 -#, fuzzy msgid "Account was not added" -msgstr "Kontoen har blitt deaktivert" +msgstr "Kontoen ble ikke lagt til" #: ../finch/gntaccount.c:125 msgid "Screenname of an account must be non-empty." -msgstr "" +msgstr "Skjermnavnet for en konto kan ikke være tomt." #: ../finch/gntaccount.c:437 msgid "New mail notifications" -msgstr "Varsling om ny e-post" +msgstr "Varsling om nye e-poster" #: ../finch/gntaccount.c:447 msgid "Remember password" @@ -94,30 +100,31 @@ #: ../finch/gntaccount.c:485 msgid "There's no protocol plugins installed." -msgstr "" +msgstr "Det er ingen protokolltillegg installert." #: ../finch/gntaccount.c:486 msgid "(You probably forgot to 'make install'.)" -msgstr "" - -#: ../finch/gntaccount.c:496 ../finch/gntconn.c:136 -#: ../pidgin/gtkaccount.c:1473 ../pidgin/gtkblist.c:4040 +msgstr "(Du har sikkert glemt 'make install'.)" + +#: ../finch/gntaccount.c:496 +#: ../finch/gntconn.c:137 +#: ../pidgin/gtkaccount.c:1473 +#: ../pidgin/gtkblist.c:4322 msgid "Modify Account" msgstr "Endre konto" # #: ../finch/gntaccount.c:496 -#, fuzzy msgid "New Account" -msgstr "Konto" - -#: ../finch/gntaccount.c:521 ../pidgin/gtkft.c:696 +msgstr "Ny konto" + +#: ../finch/gntaccount.c:521 +#: ../pidgin/gtkft.c:696 msgid "Protocol:" msgstr "Protokoll:" #: ../finch/gntaccount.c:529 #: ../pidgin/plugins/gevolution/new_person_dialog.c:290 -#, fuzzy msgid "Screen name:" msgstr "Skjermnavn:" @@ -131,21 +138,37 @@ #. Cancel button #. Cancel -#: ../finch/gntaccount.c:575 ../finch/gntaccount.c:638 -#: ../finch/gntaccount.c:889 ../finch/gntblist.c:344 ../finch/gntblist.c:421 -#: ../finch/gntblist.c:456 ../finch/gntblist.c:803 ../finch/gntblist.c:1005 -#: ../finch/gntblist.c:1101 ../finch/gntblist.c:2222 ../finch/gntcertmgr.c:91 -#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:459 ../finch/gntpounce.c:667 -#: ../finch/gntprefs.c:265 ../finch/gntsound.c:1058 ../finch/gntstatus.c:145 -#: ../finch/gntstatus.c:485 ../finch/gntstatus.c:610 -#: ../libpurple/account.c:1013 ../libpurple/account.c:1263 -#: ../libpurple/account.c:1298 ../libpurple/conversation.c:1215 -#: ../libpurple/plugins/buddynote.c:51 ../libpurple/protocols/gg/gg.c:507 -#: ../libpurple/protocols/gg/gg.c:666 ../libpurple/protocols/gg/gg.c:803 +#: ../finch/gntaccount.c:575 +#: ../finch/gntaccount.c:638 +#: ../finch/gntaccount.c:889 +#: ../finch/gntblist.c:344 +#: ../finch/gntblist.c:421 +#: ../finch/gntblist.c:456 +#: ../finch/gntblist.c:803 +#: ../finch/gntblist.c:1005 +#: ../finch/gntblist.c:1101 +#: ../finch/gntblist.c:2224 +#: ../finch/gntcertmgr.c:91 +#: ../finch/gntplugin.c:379 +#: ../finch/gntpounce.c:459 +#: ../finch/gntpounce.c:667 +#: ../finch/gntprefs.c:265 +#: ../finch/gntsound.c:1058 +#: ../finch/gntstatus.c:145 +#: ../finch/gntstatus.c:485 +#: ../finch/gntstatus.c:610 +#: ../libpurple/account.c:1013 +#: ../libpurple/account.c:1263 +#: ../libpurple/account.c:1298 +#: ../libpurple/conversation.c:1215 +#: ../libpurple/plugins/buddynote.c:51 +#: ../libpurple/protocols/gg/gg.c:507 +#: ../libpurple/protocols/gg/gg.c:666 +#: ../libpurple/protocols/gg/gg.c:803 #: ../libpurple/protocols/gg/gg.c:884 #: ../libpurple/protocols/jabber/buddy.c:728 -#: ../libpurple/protocols/jabber/buddy.c:2413 -#: ../libpurple/protocols/jabber/buddy.c:2449 +#: ../libpurple/protocols/jabber/buddy.c:2416 +#: ../libpurple/protocols/jabber/buddy.c:2452 #: ../libpurple/protocols/jabber/chat.c:786 #: ../libpurple/protocols/jabber/jabber.c:1008 #: ../libpurple/protocols/jabber/jabber.c:1017 @@ -154,10 +177,12 @@ #: ../libpurple/protocols/jabber/usermood.c:184 #: ../libpurple/protocols/jabber/usernick.c:78 #: ../libpurple/protocols/jabber/xdata.c:400 -#: ../libpurple/protocols/msn/msn.c:287 ../libpurple/protocols/msn/msn.c:304 -#: ../libpurple/protocols/msn/msn.c:321 ../libpurple/protocols/msn/msn.c:338 -#: ../libpurple/protocols/msn/msn.c:359 -#: ../libpurple/protocols/oscar/oscar.c:6094 +#: ../libpurple/protocols/msn/msn.c:290 +#: ../libpurple/protocols/msn/msn.c:307 +#: ../libpurple/protocols/msn/msn.c:324 +#: ../libpurple/protocols/msn/msn.c:341 +#: ../libpurple/protocols/msn/msn.c:362 +#: ../libpurple/protocols/oscar/oscar.c:6092 #: ../libpurple/protocols/oscar/peer.c:1046 #: ../libpurple/protocols/qq/buddy_info.c:484 #: ../libpurple/protocols/qq/buddy_opt.c:214 @@ -192,176 +217,231 @@ #: ../libpurple/protocols/silc10/ops.c:1904 #: ../libpurple/protocols/silc10/silc.c:736 #: ../libpurple/protocols/silc10/silc.c:942 -#: ../libpurple/protocols/yahoo/yahoo.c:1032 -#: ../libpurple/protocols/yahoo/yahoo.c:3498 -#: ../libpurple/protocols/yahoo/yahoo.c:3509 ../pidgin/gtkaccount.c:1908 -#: ../pidgin/gtkaccount.c:2495 ../pidgin/gtkblist.c:5967 -#: ../pidgin/gtkcertmgr.c:197 ../pidgin/gtkdialogs.c:773 -#: ../pidgin/gtkdialogs.c:912 ../pidgin/gtkdialogs.c:1004 -#: ../pidgin/gtkdialogs.c:1024 ../pidgin/gtkdialogs.c:1048 -#: ../pidgin/gtkdialogs.c:1070 ../pidgin/gtkdialogs.c:1118 -#: ../pidgin/gtkdialogs.c:1159 ../pidgin/gtkdialogs.c:1215 -#: ../pidgin/gtkdialogs.c:1254 ../pidgin/gtkdialogs.c:1281 -#: ../pidgin/gtkimhtmltoolbar.c:435 ../pidgin/gtklog.c:328 -#: ../pidgin/gtkplugin.c:289 ../pidgin/gtkpounce.c:1101 -#: ../pidgin/gtkprivacy.c:563 ../pidgin/gtkprivacy.c:579 -#: ../pidgin/gtkprivacy.c:604 ../pidgin/gtkprivacy.c:618 -#: ../pidgin/gtkrequest.c:271 ../pidgin/gtksavedstatuses.c:345 +#: ../libpurple/protocols/yahoo/yahoo.c:1031 +#: ../libpurple/protocols/yahoo/yahoo.c:3497 +#: ../libpurple/protocols/yahoo/yahoo.c:3508 +#: ../pidgin/gtkaccount.c:1908 +#: ../pidgin/gtkaccount.c:2495 +#: ../pidgin/gtkblist.c:6267 +#: ../pidgin/gtkcertmgr.c:197 +#: ../pidgin/gtkdialogs.c:769 +#: ../pidgin/gtkdialogs.c:908 +#: ../pidgin/gtkdialogs.c:1000 +#: ../pidgin/gtkdialogs.c:1020 +#: ../pidgin/gtkdialogs.c:1044 +#: ../pidgin/gtkdialogs.c:1066 +#: ../pidgin/gtkdialogs.c:1114 +#: ../pidgin/gtkdialogs.c:1155 +#: ../pidgin/gtkdialogs.c:1211 +#: ../pidgin/gtkdialogs.c:1250 +#: ../pidgin/gtkdialogs.c:1277 +#: ../pidgin/gtkimhtmltoolbar.c:435 +#: ../pidgin/gtklog.c:328 +#: ../pidgin/gtkplugin.c:289 +#: ../pidgin/gtkpounce.c:1101 +#: ../pidgin/gtkprivacy.c:563 +#: ../pidgin/gtkprivacy.c:579 +#: ../pidgin/gtkprivacy.c:604 +#: ../pidgin/gtkprivacy.c:618 +#: ../pidgin/gtkrequest.c:271 +#: ../pidgin/gtksavedstatuses.c:345 #: ../pidgin/gtkstatusbox.c:1574 msgid "Cancel" -msgstr "_Avbryt" +msgstr "Avbryt" #. Save button #. Save -#: ../finch/gntaccount.c:579 ../finch/gntcertmgr.c:311 -#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:465 ../finch/gntprefs.c:265 -#: ../finch/gntsound.c:1055 ../finch/gntstatus.c:488 ../finch/gntstatus.c:598 -#: ../libpurple/account.c:1297 ../libpurple/plugins/buddynote.c:50 -#: ../libpurple/protocols/jabber/buddy.c:727 ../pidgin/gtkdebug.c:749 +#: ../finch/gntaccount.c:579 +#: ../finch/gntcertmgr.c:311 +#: ../finch/gntplugin.c:379 +#: ../finch/gntpounce.c:465 +#: ../finch/gntprefs.c:265 +#: ../finch/gntsound.c:1055 +#: ../finch/gntstatus.c:488 +#: ../finch/gntstatus.c:598 +#: ../libpurple/account.c:1297 +#: ../libpurple/plugins/buddynote.c:50 +#: ../libpurple/protocols/jabber/buddy.c:727 +#: ../pidgin/gtkdebug.c:749 #: ../pidgin/gtkrequest.c:277 msgid "Save" msgstr "Lagre" -#: ../finch/gntaccount.c:632 ../pidgin/gtkaccount.c:1900 -#: ../pidgin/gtksavedstatuses.c:333 ../pidgin/gtkstatusbox.c:1568 +#: ../finch/gntaccount.c:632 +#: ../pidgin/gtkaccount.c:1900 +#: ../pidgin/gtksavedstatuses.c:333 +#: ../pidgin/gtkstatusbox.c:1568 #, c-format msgid "Are you sure you want to delete %s?" msgstr "Er du sikker på at du vil slette %s?" -# #: ../finch/gntaccount.c:635 -#, fuzzy msgid "Delete Account" -msgstr "Konto" +msgstr "Slett konto" #. Delete button -#: ../finch/gntaccount.c:637 ../finch/gntaccount.c:707 -#: ../finch/gntcertmgr.c:319 ../finch/gntpounce.c:666 ../finch/gntpounce.c:729 -#: ../finch/gntstatus.c:144 ../finch/gntstatus.c:210 -#: ../pidgin/gtkaccount.c:1907 ../pidgin/gtklog.c:327 -#: ../pidgin/gtkpounce.c:1100 ../pidgin/gtkrequest.c:274 -#: ../pidgin/gtksavedstatuses.c:344 ../pidgin/gtkstatusbox.c:1573 +#: ../finch/gntaccount.c:637 +#: ../finch/gntaccount.c:707 +#: ../finch/gntcertmgr.c:319 +#: ../finch/gntpounce.c:666 +#: ../finch/gntpounce.c:729 +#: ../finch/gntstatus.c:144 +#: ../finch/gntstatus.c:210 +#: ../pidgin/gtkaccount.c:1907 +#: ../pidgin/gtklog.c:327 +#: ../pidgin/gtkpounce.c:1100 +#: ../pidgin/gtkrequest.c:274 +#: ../pidgin/gtksavedstatuses.c:344 +#: ../pidgin/gtkstatusbox.c:1573 msgid "Delete" msgstr "Slett" -#: ../finch/gntaccount.c:669 ../finch/gntblist.c:2119 ../finch/gntui.c:82 -#: ../pidgin/gtkaccount.c:2325 ../pidgin/gtkdocklet.c:522 +#: ../finch/gntaccount.c:669 +#: ../finch/gntblist.c:2121 +#: ../finch/gntui.c:82 +#: ../pidgin/gtkaccount.c:2325 +#: ../pidgin/gtkdocklet.c:522 msgid "Accounts" msgstr "Kontoer" #: ../finch/gntaccount.c:675 -#, fuzzy msgid "You can enable/disable accounts from the following list." -msgstr "Du venter på godkjenning fra disse kontaktene" +msgstr "Du kan aktivere/deaktivere kontoer fra følgende liste." #. Add button -#: ../finch/gntaccount.c:698 ../finch/gntaccount.c:888 ../finch/gntblist.c:343 -#: ../finch/gntblist.c:421 ../finch/gntblist.c:456 ../finch/gntcertmgr.c:306 -#: ../finch/gntnotify.c:380 ../finch/gntpounce.c:713 ../finch/gntstatus.c:199 -#: ../libpurple/protocols/gg/gg.c:883 ../libpurple/protocols/qq/sys_msg.c:114 +#: ../finch/gntaccount.c:698 +#: ../finch/gntaccount.c:888 +#: ../finch/gntblist.c:343 +#: ../finch/gntblist.c:421 +#: ../finch/gntblist.c:456 +#: ../finch/gntblist.c:2305 +#: ../finch/gntcertmgr.c:306 +#: ../finch/gntnotify.c:383 +#: ../finch/gntpounce.c:713 +#: ../finch/gntstatus.c:199 +#: ../libpurple/protocols/gg/gg.c:883 +#: ../libpurple/protocols/qq/sys_msg.c:114 #: ../libpurple/protocols/qq/sys_msg.c:173 #: ../libpurple/protocols/qq/sys_msg.c:267 #: ../libpurple/protocols/sametime/sametime.c:5486 #: ../libpurple/protocols/silc/chat.c:615 -#: ../libpurple/protocols/silc10/chat.c:599 ../pidgin/gtkaccount.c:2494 -#: ../pidgin/gtkblist.c:5966 ../pidgin/gtkconv.c:1659 +#: ../libpurple/protocols/silc10/chat.c:599 +#: ../pidgin/gtkaccount.c:2494 +#: ../pidgin/gtkblist.c:6266 +#: ../pidgin/gtkconv.c:1712 #: ../pidgin/gtkrequest.c:275 msgid "Add" msgstr "Legg til" #. Modify button -#: ../finch/gntaccount.c:703 ../finch/gntpounce.c:721 -#, fuzzy +#: ../finch/gntaccount.c:703 +#: ../finch/gntpounce.c:721 msgid "Modify" -msgstr "_Endre" - -#: ../finch/gntaccount.c:811 ../pidgin/gtkaccount.c:2441 -#, fuzzy, c-format +msgstr "Endre" + +#: ../finch/gntaccount.c:811 +#: ../pidgin/gtkaccount.c:2441 +#, c-format msgid "%s%s%s%s has made %s his or her buddy%s%s" -msgstr "%s%s%s%s har lagt %s til i sin kontaktliste%s%s%s" - -#: ../finch/gntaccount.c:884 ../pidgin/gtkaccount.c:2493 +msgstr "%s%s%s%s har lagt til %s i sin kontaktliste%s%s" + +#: ../finch/gntaccount.c:884 +#: ../pidgin/gtkaccount.c:2493 msgid "Add buddy to your list?" msgstr "Legg til kontakten i listen din?" -#: ../finch/gntaccount.c:944 ../pidgin/gtkaccount.c:2551 -#, fuzzy, c-format +#: ../finch/gntaccount.c:944 +#: ../pidgin/gtkaccount.c:2551 +#, c-format msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s" -msgstr "Brukeren %s ønsker å legge til %s i kontaktlisten sin." - -#: ../finch/gntaccount.c:969 ../finch/gntaccount.c:972 -#: ../finch/gntaccount.c:999 ../pidgin/gtkaccount.c:2574 +msgstr "%s%s%s%s ønsker å legge til %s i sin kontaktliste%s%s." + +#: ../finch/gntaccount.c:969 +#: ../finch/gntaccount.c:972 +#: ../finch/gntaccount.c:999 +#: ../pidgin/gtkaccount.c:2574 #: ../pidgin/gtkaccount.c:2580 -#, fuzzy msgid "Authorize buddy?" -msgstr "Godkjenn" - -#: ../finch/gntaccount.c:976 ../finch/gntaccount.c:1003 -#: ../pidgin/gtkaccount.c:2575 ../pidgin/gtkaccount.c:2581 +msgstr "Godkjenn kontakt?" + +#: ../finch/gntaccount.c:976 +#: ../finch/gntaccount.c:1003 +#: ../pidgin/gtkaccount.c:2575 +#: ../pidgin/gtkaccount.c:2581 msgid "Authorize" msgstr "Godkjenn" -#: ../finch/gntaccount.c:977 ../finch/gntaccount.c:1004 -#: ../pidgin/gtkaccount.c:2576 ../pidgin/gtkaccount.c:2582 +#: ../finch/gntaccount.c:977 +#: ../finch/gntaccount.c:1004 +#: ../pidgin/gtkaccount.c:2576 +#: ../pidgin/gtkaccount.c:2582 msgid "Deny" msgstr "Nekt" #: ../finch/gntblist.c:289 msgid "You must provide a screename for the buddy." -msgstr "" +msgstr "Du må oppgi et skjermnavn for kontakten." #: ../finch/gntblist.c:291 msgid "You must provide a group." -msgstr "" +msgstr "Du må oppgi en gruppe." #: ../finch/gntblist.c:293 -#, fuzzy msgid "You must select an account." -msgstr "Du må angi et kallenavn" +msgstr "Du må velge en konto." #: ../finch/gntblist.c:295 msgid "The selected account is not online." msgstr "" #: ../finch/gntblist.c:300 -#, fuzzy msgid "Error adding buddy" -msgstr "" -"Klarte ikke lese %s:\n" -"%s\n" - -#: ../finch/gntblist.c:325 ../libpurple/protocols/oscar/oscar.c:2888 -#: ../pidgin/gtkaccount.c:1981 ../pidgin/gtksavedstatuses.c:980 +msgstr "Feil ved å legge til kontakt" + +#: ../finch/gntblist.c:325 +#: ../libpurple/protocols/oscar/oscar.c:2884 +#: ../pidgin/gtkaccount.c:1981 +#: ../pidgin/gtksavedstatuses.c:980 msgid "Screen Name" msgstr "Skjermnavn" -#: ../finch/gntblist.c:328 ../finch/gntblist.c:410 ../finch/gntblist.c:1250 -#: ../libpurple/protocols/msn/msn.c:1395 +#: ../finch/gntblist.c:328 +#: ../finch/gntblist.c:410 +#: ../finch/gntblist.c:1250 +#: ../libpurple/protocols/msn/msn.c:1507 #: ../libpurple/protocols/silc/chat.c:606 #: ../libpurple/protocols/silc10/chat.c:590 #: ../libpurple/protocols/yahoo/yahoo_profile.c:704 #: ../libpurple/protocols/zephyr/zephyr.c:788 -#: ../libpurple/protocols/zephyr/zephyr.c:1207 ../pidgin/gtkdialogs.c:1023 -#: ../pidgin/gtkdialogs.c:1047 ../pidgin/gtkdialogs.c:1069 +#: ../libpurple/protocols/zephyr/zephyr.c:1207 +#: ../pidgin/gtkdialogs.c:1019 +#: ../pidgin/gtkdialogs.c:1043 +#: ../pidgin/gtkdialogs.c:1065 #: ../pidgin/gtkrequest.c:278 msgid "Alias" msgstr "Alias" -#: ../finch/gntblist.c:331 ../finch/gntblist.c:413 -#, fuzzy +#: ../finch/gntblist.c:331 +#: ../finch/gntblist.c:413 msgid "Group" -msgstr "Gruppe:" - -# -#: ../finch/gntblist.c:335 ../finch/gntblist.c:401 ../finch/gntblist.c:1305 -#: ../finch/gntnotify.c:174 ../finch/gntstatus.c:576 -#: ../libpurple/plugins/idle.c:153 ../libpurple/plugins/idle.c:190 -#: ../pidgin/gtkblist.c:3008 ../pidgin/gtknotify.c:506 -#: ../pidgin/gtkpounce.c:1268 ../pidgin/plugins/gevolution/gevolution.c:445 +msgstr "Gruppe" + +#: ../finch/gntblist.c:335 +#: ../finch/gntblist.c:401 +#: ../finch/gntblist.c:1305 +#: ../finch/gntnotify.c:174 +#: ../finch/gntstatus.c:576 +#: ../libpurple/plugins/idle.c:153 +#: ../libpurple/plugins/idle.c:190 +#: ../pidgin/gtkblist.c:3206 +#: ../pidgin/gtknotify.c:503 +#: ../pidgin/gtkpounce.c:1268 +#: ../pidgin/plugins/gevolution/gevolution.c:445 msgid "Account" msgstr "Konto" -#: ../finch/gntblist.c:341 ../finch/gntblist.c:852 +#: ../finch/gntblist.c:341 +#: ../finch/gntblist.c:852 #: ../libpurple/protocols/silc/buddy.c:725 #: ../libpurple/protocols/silc/buddy.c:1027 #: ../libpurple/protocols/silc/buddy.c:1072 @@ -370,38 +450,44 @@ #: ../libpurple/protocols/silc10/buddy.c:1033 #: ../libpurple/protocols/silc10/buddy.c:1080 #: ../libpurple/protocols/silc10/buddy.c:1180 -#: ../libpurple/protocols/yahoo/yahoo.c:3343 ../pidgin/gtkblist.c:5483 +#: ../libpurple/protocols/yahoo/yahoo.c:3342 +#: ../pidgin/gtkblist.c:5772 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:445 msgid "Add Buddy" msgstr "Legg til kontakt" #: ../finch/gntblist.c:341 -#, fuzzy msgid "Please enter buddy information." -msgstr "Navnet på kontakten du vil varsle." - -#: ../finch/gntblist.c:370 ../libpurple/blist.c:1209 +msgstr "Vennligst skriv inn kontakteninformasjon." + +#: ../finch/gntblist.c:370 +#: ../libpurple/blist.c:1210 msgid "Chats" msgstr "Samtaler" #. Extract their Name and put it in -#: ../finch/gntblist.c:407 ../libpurple/protocols/jabber/jabber.c:924 +#: ../finch/gntblist.c:407 +#: ../libpurple/protocols/jabber/jabber.c:924 #: ../libpurple/protocols/jabber/jabber.c:927 -#: ../libpurple/protocols/msn/msn.c:1584 ../libpurple/protocols/msn/msn.c:1649 -#: ../libpurple/protocols/msn/msn.c:1676 -#: ../libpurple/protocols/qq/buddy_info.c:44 ../pidgin/gtkplugin.c:582 +#: ../libpurple/protocols/msn/msn.c:1694 +#: ../libpurple/protocols/msn/msn.c:1759 +#: ../libpurple/protocols/msn/msn.c:1786 +#: ../libpurple/protocols/qq/buddy_info.c:44 +#: ../pidgin/gtkplugin.c:582 #: ../pidgin/gtkroomlist.c:618 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:132 #: ../pidgin/plugins/gevolution/assoc-buddy.c:123 msgid "Name" msgstr "Navn" -#: ../finch/gntblist.c:416 ../finch/gntblist.c:819 -#, fuzzy +#: ../finch/gntblist.c:416 +#: ../finch/gntblist.c:819 msgid "Auto-join" msgstr "Automatisk pålogging" -#: ../finch/gntblist.c:419 ../finch/gntblist.c:854 ../pidgin/gtkblist.c:5859 +#: ../finch/gntblist.c:419 +#: ../finch/gntblist.c:854 +#: ../pidgin/gtkblist.c:6154 msgid "Add Chat" msgstr "Legg til samtale" @@ -409,100 +495,96 @@ msgid "You can edit more information from the context menu later." msgstr "" -#: ../finch/gntblist.c:433 ../finch/gntblist.c:446 -#, fuzzy +#: ../finch/gntblist.c:433 +#: ../finch/gntblist.c:446 msgid "Error adding group" -msgstr "" -"Klarte ikke lese %s:\n" -"%s\n" +msgstr "Feil ved å legge til gruppe" #: ../finch/gntblist.c:434 -#, fuzzy msgid "You must give a name for the group to add." -msgstr "Vennligst skriv inn navnet på gruppen som skal legges til." +msgstr "Du må angi et navn til gruppen som skal legges til." #: ../finch/gntblist.c:447 -#, fuzzy msgid "A group with the name already exists." -msgstr "En mappe med dette navnet eksisterer allerede" - -#: ../finch/gntblist.c:454 ../finch/gntblist.c:856 +msgstr "En gruppe med dette navnet eksisterer allerede" + +#: ../finch/gntblist.c:454 +#: ../finch/gntblist.c:856 #: ../libpurple/protocols/sametime/sametime.c:5396 -#: ../libpurple/protocols/sametime/sametime.c:5484 ../pidgin/gtkblist.c:5963 +#: ../libpurple/protocols/sametime/sametime.c:5484 +#: ../pidgin/gtkblist.c:6263 msgid "Add Group" msgstr "Legg til gruppe" #: ../finch/gntblist.c:454 -#, fuzzy msgid "Enter the name of the group" -msgstr "Vennligst skriv inn navnet på gruppen som skal legges til." +msgstr "Vennligst skriv inn navnet på gruppen" #: ../finch/gntblist.c:802 -#, fuzzy msgid "Edit Chat" -msgstr "Legg til samtale" +msgstr "Rediger samtale" #: ../finch/gntblist.c:802 msgid "Please Update the necessary fields." -msgstr "" - -#: ../finch/gntblist.c:803 ../finch/gntstatus.c:205 -#, fuzzy +msgstr "Vennligst oppdater de nødvendige feltene." + +#: ../finch/gntblist.c:803 +#: ../finch/gntstatus.c:205 msgid "Edit" msgstr "Rediger" #: ../finch/gntblist.c:828 -#, fuzzy msgid "Edit Settings" -msgstr "Skjulte Innstillinger" - -#: ../finch/gntblist.c:864 ../pidgin/gtkutils.c:931 +msgstr "Rediger innstillinger" + +#: ../finch/gntblist.c:864 +#: ../pidgin/gtkutils.c:931 msgid "Information" msgstr "Informasjon" -#: ../finch/gntblist.c:864 ../pidgin/gtkutils.c:931 -#, fuzzy +#: ../finch/gntblist.c:864 +#: ../pidgin/gtkutils.c:931 msgid "Retrieving..." -msgstr "Kobler til..." - -#: ../finch/gntblist.c:904 ../finch/gntconv.c:507 +msgstr "Mottar..." + +#: ../finch/gntblist.c:904 +#: ../finch/gntconv.c:534 #: ../libpurple/protocols/silc/chat.c:899 #: ../libpurple/protocols/silc10/chat.c:883 msgid "Get Info" msgstr "Hent informasjon" #: ../finch/gntblist.c:908 -#, fuzzy msgid "Add Buddy Pounce" -msgstr "Legg til kompisvarsling" +msgstr "Legg til kontaktvarsling" #. if (q_bud && is_online(q_bud->status)) { -#: ../finch/gntblist.c:915 ../finch/gntconv.c:519 +#: ../finch/gntblist.c:915 +#: ../finch/gntconv.c:546 #: ../libpurple/protocols/jabber/si.c:874 -#: ../libpurple/protocols/oscar/oscar.c:654 ../libpurple/protocols/qq/qq.c:587 -#: ../pidgin/gtkconv.c:1607 +#: ../libpurple/protocols/oscar/oscar.c:654 +#: ../libpurple/protocols/qq/qq.c:587 +#: ../pidgin/gtkconv.c:1660 msgid "Send File" msgstr "Send fil" #: ../finch/gntblist.c:919 -#, fuzzy msgid "View Log" -msgstr "Vis _logg" +msgstr "Vis logg" #: ../finch/gntblist.c:1000 -#, fuzzy, c-format +#, c-format msgid "Please enter the new name for %s" -msgstr "Vennligst skriv inn nytt navn for gruppen." - -#: ../finch/gntblist.c:1002 ../finch/gntblist.c:1250 -#, fuzzy -msgid "Rename" -msgstr "End_re navn" +msgstr "Vennligst skriv inn det nye navnet for %s" #: ../finch/gntblist.c:1002 -#, fuzzy +#: ../finch/gntblist.c:1250 +msgid "Rename" +msgstr "Endre navn" + +#: ../finch/gntblist.c:1002 msgid "Set Alias" -msgstr "Alias" +msgstr "Angi alias" #: ../finch/gntblist.c:1003 msgid "Enter empty string to reset the name." @@ -517,25 +599,31 @@ msgstr "" #: ../finch/gntblist.c:1092 -#, fuzzy, c-format +#, c-format msgid "Are you sure you want to remove %s?" msgstr "Er du sikker på at du vil slette %s?" #. XXX: anything to do with the returned ui-handle? #: ../finch/gntblist.c:1095 -#, fuzzy msgid "Confirm Remove" -msgstr "Bekrefte konto" - -#: ../finch/gntblist.c:1100 ../finch/gntblist.c:1252 ../finch/gntft.c:227 -#: ../pidgin/gtkconv.c:1656 ../pidgin/gtkrequest.c:276 +msgstr "Bekreft fjerning" + +#: ../finch/gntblist.c:1100 +#: ../finch/gntblist.c:1252 +#: ../finch/gntft.c:227 +#: ../pidgin/gtkconv.c:1709 +#: ../pidgin/gtkrequest.c:276 #: ../pidgin/gtkstatusbox.c:264 msgid "Remove" msgstr "Fjern" #. Buddy List -#: ../finch/gntblist.c:1226 ../finch/gntblist.c:2307 ../finch/gntprefs.c:258 -#: ../finch/gntui.c:83 ../pidgin/gtkblist.c:2688 ../pidgin/gtkblist.c:4284 +#: ../finch/gntblist.c:1226 +#: ../finch/gntblist.c:2355 +#: ../finch/gntprefs.c:258 +#: ../finch/gntui.c:83 +#: ../pidgin/gtkblist.c:2886 +#: ../pidgin/gtkblist.c:4566 #: ../pidgin/plugins/win32/winprefs/winprefs.c:326 msgid "Buddy List" msgstr "Kontaktliste" @@ -549,20 +637,23 @@ msgstr "" #. General -#: ../finch/gntblist.c:1298 ../libpurple/protocols/gg/gg.c:637 -#: ../libpurple/protocols/gg/gg.c:1050 ../libpurple/protocols/gg/gg.c:1123 +#: ../finch/gntblist.c:1298 +#: ../libpurple/protocols/gg/gg.c:637 +#: ../libpurple/protocols/gg/gg.c:1050 +#: ../libpurple/protocols/gg/gg.c:1123 #: ../libpurple/protocols/gg/gg.c:2207 #: ../libpurple/protocols/jabber/buddy.c:286 #: ../libpurple/protocols/jabber/buddy.c:1247 -#: ../libpurple/protocols/jabber/buddy.c:2214 -#: ../libpurple/protocols/jabber/buddy.c:2396 +#: ../libpurple/protocols/jabber/buddy.c:2217 +#: ../libpurple/protocols/jabber/buddy.c:2399 #: ../libpurple/protocols/jabber/jabber.c:937 #: ../libpurple/protocols/jabber/jabber.c:1544 #: ../libpurple/protocols/jabber/jabber.c:1567 #: ../libpurple/protocols/jabber/jabber.c:1590 #: ../libpurple/protocols/jabber/jabber.c:1613 #: ../libpurple/protocols/jabber/jabber.c:1636 -#: ../libpurple/protocols/msn/msn.c:1403 ../libpurple/protocols/msn/msn.c:1587 +#: ../libpurple/protocols/msn/msn.c:1515 +#: ../libpurple/protocols/msn/msn.c:1697 #: ../libpurple/protocols/qq/buddy_info.c:43 #: ../libpurple/protocols/silc/buddy.c:1535 #: ../libpurple/protocols/silc/ops.c:1002 @@ -572,28 +663,31 @@ #: ../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:3032 +#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 +#: ../pidgin/gtkblist.c:3230 msgid "Nickname" msgstr "Kallenavn" #. Idle stuff -#: ../finch/gntblist.c:1320 ../finch/gntprefs.c:261 +#: ../finch/gntblist.c:1320 +#: ../finch/gntprefs.c:261 #: ../libpurple/protocols/bonjour/bonjour.c:340 #: ../libpurple/protocols/jabber/buddy.c:787 #: ../libpurple/protocols/jabber/buddy.c:951 -#: ../libpurple/protocols/msn/msn.c:544 ../libpurple/protocols/msn/state.c:32 -#: ../libpurple/protocols/novell/novell.c:2825 -#: ../libpurple/protocols/oscar/oscar.c:2912 -#: ../libpurple/protocols/yahoo/yahoo.c:3097 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3060 -#: ../pidgin/gtkblist.c:3460 ../pidgin/gtkprefs.c:1925 +#: ../libpurple/protocols/msn/state.c:32 +#: ../libpurple/protocols/novell/novell.c:2830 +#: ../libpurple/protocols/oscar/oscar.c:2908 +#: ../libpurple/protocols/yahoo/yahoo.c:3096 +#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 +#: ../pidgin/gtkblist.c:3258 +#: ../pidgin/gtkblist.c:3664 +#: ../pidgin/gtkprefs.c:1927 msgid "Idle" msgstr "Inaktiv" #: ../finch/gntblist.c:1334 -#, fuzzy msgid "On Mobile" -msgstr "Send til mobil" +msgstr "På mobil" #: ../finch/gntblist.c:1415 #, c-format @@ -603,70 +697,82 @@ msgstr "" #: ../finch/gntblist.c:1424 -#, fuzzy, c-format +#, c-format msgid "Account: %s (%s)" -msgstr "%s på %s (%s)" +msgstr "Konto: %s (%s)" #: ../finch/gntblist.c:1436 -#, fuzzy, c-format +#, c-format msgid "" "\n" "Last Seen: %s ago" msgstr "" "\n" -"%s: %s" - -#: ../finch/gntblist.c:1702 ../pidgin/gtkdocklet.c:470 +"Sist sett: %s siden" + +#: ../finch/gntblist.c:1704 +#: ../pidgin/gtkdocklet.c:470 #: ../pidgin/gtkstatusbox.c:1072 msgid "New..." msgstr "Ny..." -#: ../finch/gntblist.c:1709 ../pidgin/gtkdocklet.c:471 +#: ../finch/gntblist.c:1711 +#: ../pidgin/gtkdocklet.c:471 #: ../pidgin/gtkstatusbox.c:1073 -#, fuzzy msgid "Saved..." -msgstr "Lagre fil..." - -#: ../finch/gntblist.c:2087 ../finch/gntplugin.c:255 ../finch/gntui.c:88 -#: ../pidgin/gtkdocklet.c:523 ../pidgin/gtkplugin.c:531 +msgstr "Lagret..." + +#: ../finch/gntblist.c:2089 +#: ../finch/gntplugin.c:255 +#: ../finch/gntui.c:88 +#: ../pidgin/gtkdocklet.c:523 +#: ../pidgin/gtkplugin.c:531 msgid "Plugins" msgstr "Tillegg" -#: ../finch/gntblist.c:2203 ../pidgin/gtkdialogs.c:754 -#: ../pidgin/gtkdialogs.c:893 ../pidgin/gtkdialogs.c:974 -#, fuzzy +#: ../finch/gntblist.c:2205 +#: ../pidgin/gtkdialogs.c:750 +#: ../pidgin/gtkdialogs.c:889 +#: ../pidgin/gtkdialogs.c:970 msgid "_Name" -msgstr "Navn" - -#: ../finch/gntblist.c:2208 ../pidgin/gtkdialogs.c:759 -#: ../pidgin/gtkdialogs.c:898 ../pidgin/gtkdialogs.c:979 +msgstr "_Navn" + +#: ../finch/gntblist.c:2210 +#: ../pidgin/gtkdialogs.c:755 +#: ../pidgin/gtkdialogs.c:894 +#: ../pidgin/gtkdialogs.c:975 msgid "_Account" msgstr "Konto:" -#: ../finch/gntblist.c:2216 ../pidgin/gtkdialogs.c:767 +#: ../finch/gntblist.c:2218 +#: ../pidgin/gtkdialogs.c:763 msgid "New Instant Message" msgstr "Ny direktemelding" -#: ../finch/gntblist.c:2218 ../pidgin/gtkdialogs.c:769 -#, fuzzy -msgid "" -"Please enter the screen name or alias of the person you would like to IM." -msgstr "" -"Vennligst skriv inn skjermnavnet på den personen du vil sende direktemelding " -"til." +#: ../finch/gntblist.c:2220 +#: ../pidgin/gtkdialogs.c:765 +msgid "Please enter the screen name or alias of the person you would like to IM." +msgstr "Vennligst skriv inn skjermnavnet eller aliaset på den personen du vil sende direktemelding til." #. Not multiline #. Not masked? #. No hints? -#: ../finch/gntblist.c:2221 ../finch/gntcertmgr.c:90 ../finch/gntconn.c:135 -#: ../finch/gntnotify.c:80 ../libpurple/account.c:1012 -#: ../libpurple/account.c:1262 ../libpurple/protocols/gg/gg.c:506 -#: ../libpurple/protocols/gg/gg.c:665 ../libpurple/protocols/gg/gg.c:802 +#: ../finch/gntblist.c:2223 +#: ../finch/gntcertmgr.c:90 +#: ../finch/gntconn.c:136 +#: ../finch/gntnotify.c:80 +#: ../libpurple/account.c:1012 +#: ../libpurple/account.c:1262 +#: ../libpurple/protocols/gg/gg.c:506 +#: ../libpurple/protocols/gg/gg.c:665 +#: ../libpurple/protocols/gg/gg.c:802 #: ../libpurple/protocols/jabber/jabber.c:1736 #: ../libpurple/protocols/jabber/xdata.c:399 -#: ../libpurple/protocols/msn/msn.c:286 ../libpurple/protocols/msn/msn.c:303 -#: ../libpurple/protocols/msn/msn.c:320 ../libpurple/protocols/msn/msn.c:337 -#: ../libpurple/protocols/oscar/oscar.c:6093 +#: ../libpurple/protocols/msn/msn.c:289 +#: ../libpurple/protocols/msn/msn.c:306 +#: ../libpurple/protocols/msn/msn.c:323 +#: ../libpurple/protocols/msn/msn.c:340 +#: ../libpurple/protocols/oscar/oscar.c:6091 #: ../libpurple/protocols/silc/buddy.c:454 #: ../libpurple/protocols/silc/buddy.c:1190 #: ../libpurple/protocols/silc/chat.c:447 @@ -683,107 +789,131 @@ #: ../libpurple/protocols/silc10/ops.c:1297 #: ../libpurple/protocols/silc10/ops.c:1903 #: ../libpurple/protocols/silc10/silc.c:735 -#: ../libpurple/protocols/yahoo/yahoo.c:1031 -#: ../libpurple/protocols/yahoo/yahoo.c:3497 -#: ../libpurple/protocols/yahoo/yahoo.c:3508 ../pidgin/gtkblist.c:4039 -#: ../pidgin/gtkcertmgr.c:195 ../pidgin/gtkdialogs.c:772 -#: ../pidgin/gtkdialogs.c:911 ../pidgin/gtkdialogs.c:1003 +#: ../libpurple/protocols/yahoo/yahoo.c:1030 +#: ../libpurple/protocols/yahoo/yahoo.c:3496 +#: ../libpurple/protocols/yahoo/yahoo.c:3507 +#: ../pidgin/gtkblist.c:4321 +#: ../pidgin/gtkcertmgr.c:195 +#: ../pidgin/gtkdialogs.c:768 +#: ../pidgin/gtkdialogs.c:907 +#: ../pidgin/gtkdialogs.c:999 #: ../pidgin/gtkrequest.c:270 msgid "OK" -msgstr "_OK" +msgstr "OK" #. Create the "Options" frame. -#: ../finch/gntblist.c:2241 ../finch/gntpounce.c:447 ../pidgin/gtkpounce.c:790 -#, fuzzy +#: ../finch/gntblist.c:2261 +#: ../finch/gntpounce.c:447 +#: ../pidgin/gtkpounce.c:790 msgid "Options" -msgstr "/_Brukervalg" - -#: ../finch/gntblist.c:2247 -#, fuzzy -msgid "Send IM..." -msgstr "Lagre fil..." - -#: ../finch/gntblist.c:2251 -#, fuzzy -msgid "Show empty groups" -msgstr "Etter gruppe" - -#: ../finch/gntblist.c:2257 -#, fuzzy -msgid "Show offline buddies" -msgstr "/Kontakter/Vis _avloggede kontakter" - -#: ../finch/gntblist.c:2263 -#, fuzzy -msgid "Sort by status" -msgstr "Status" +msgstr "Brukervalg" #: ../finch/gntblist.c:2267 -#, fuzzy -msgid "Sort alphabetically" -msgstr "Alfabetisk" +msgid "Send IM..." +msgstr "Send direktemelding..." #: ../finch/gntblist.c:2271 #, fuzzy -msgid "Sort by log size" +msgid "Show" +msgstr "Vis alle" + +#: ../finch/gntblist.c:2276 +#, fuzzy +msgid "Empty groups" +msgstr "Vis tomme grupper" + +#: ../finch/gntblist.c:2282 +#, fuzzy +msgid "Offline buddies" +msgstr "Vis avloggede kontakter" + +#: ../finch/gntblist.c:2288 +#, fuzzy +msgid "Sort" +msgstr "Port" + +#: ../finch/gntblist.c:2293 +#, fuzzy +msgid "By Status" +msgstr "Etter status" + +#: ../finch/gntblist.c:2297 +#: ../pidgin/gtkblist.c:4106 +msgid "Alphabetically" +msgstr "Alfabetisk" + +#: ../finch/gntblist.c:2301 +#, fuzzy +msgid "By Log Size" msgstr "Etter loggstørrelse" -#: ../finch/gntcertmgr.c:86 ../pidgin/gtkcertmgr.c:188 -#, fuzzy +#: ../finch/gntcertmgr.c:86 +#: ../pidgin/gtkcertmgr.c:188 msgid "Certificate Import" -msgstr "Koble til" - -#: ../finch/gntcertmgr.c:87 ../pidgin/gtkcertmgr.c:189 +msgstr "Importering av sertifikat" + +#: ../finch/gntcertmgr.c:87 +#: ../pidgin/gtkcertmgr.c:189 msgid "Specify a hostname" -msgstr "" - -#: ../finch/gntcertmgr.c:88 ../pidgin/gtkcertmgr.c:190 +msgstr "Spesifiser et vertsnavn" + +#: ../finch/gntcertmgr.c:88 +#: ../pidgin/gtkcertmgr.c:190 msgid "Type the host name this certificate is for." -msgstr "" - -#: ../finch/gntcertmgr.c:97 ../pidgin/gtkcertmgr.c:210 +msgstr "Skriv inn vertsnavnet som dette sertifikatet er for." + +#: ../finch/gntcertmgr.c:97 +#: ../pidgin/gtkcertmgr.c:210 #, c-format msgid "" "File %s could not be imported.\n" "Make sure that the file is readable and in PEM format.\n" msgstr "" - -#: ../finch/gntcertmgr.c:99 ../pidgin/gtkcertmgr.c:212 +"Filen %s kunne ikke bli importert.\n" +"Pass på at filen er lesbar og i PEM-format.\n" + +#: ../finch/gntcertmgr.c:99 +#: ../pidgin/gtkcertmgr.c:212 msgid "Certificate Import Error" msgstr "" -#: ../finch/gntcertmgr.c:100 ../pidgin/gtkcertmgr.c:213 +#: ../finch/gntcertmgr.c:100 +#: ../pidgin/gtkcertmgr.c:213 msgid "X.509 certificate import failed" msgstr "" -#: ../finch/gntcertmgr.c:110 ../pidgin/gtkcertmgr.c:224 -#, fuzzy +#: ../finch/gntcertmgr.c:110 +#: ../pidgin/gtkcertmgr.c:224 msgid "Select a PEM certificate" -msgstr "Velg fil" - -#: ../finch/gntcertmgr.c:127 ../pidgin/gtkcertmgr.c:245 +msgstr "Velg et PEM-sertifikat" + +#: ../finch/gntcertmgr.c:127 +#: ../pidgin/gtkcertmgr.c:245 #, c-format msgid "" "Export to file %s failed.\n" "Check that you have write permission to the target path\n" msgstr "" -#: ../finch/gntcertmgr.c:129 ../pidgin/gtkcertmgr.c:247 +#: ../finch/gntcertmgr.c:129 +#: ../pidgin/gtkcertmgr.c:247 msgid "Certificate Export Error" msgstr "" -#: ../finch/gntcertmgr.c:130 ../pidgin/gtkcertmgr.c:248 +#: ../finch/gntcertmgr.c:130 +#: ../pidgin/gtkcertmgr.c:248 msgid "X.509 certificate export failed" msgstr "" -#: ../finch/gntcertmgr.c:159 ../pidgin/gtkcertmgr.c:299 +#: ../finch/gntcertmgr.c:159 +#: ../pidgin/gtkcertmgr.c:299 msgid "PEM X.509 Certificate Export" msgstr "" #: ../finch/gntcertmgr.c:188 #, c-format msgid "Certificate for %s" -msgstr "" +msgstr "Sertifikat for %s" #: ../finch/gntcertmgr.c:195 #, c-format @@ -798,183 +928,193 @@ msgid "SSL Host Certificate" msgstr "" -#: ../finch/gntcertmgr.c:233 ../pidgin/gtkcertmgr.c:372 +#: ../finch/gntcertmgr.c:233 +#: ../pidgin/gtkcertmgr.c:372 #, c-format msgid "Really delete certificate for %s?" -msgstr "" - -#: ../finch/gntcertmgr.c:236 ../pidgin/gtkcertmgr.c:374 +msgstr "Virkelig slett sertifikat for %s?" + +#: ../finch/gntcertmgr.c:236 +#: ../pidgin/gtkcertmgr.c:374 msgid "Confirm certificate delete" -msgstr "" - -#: ../finch/gntcertmgr.c:293 ../pidgin/gtkcertmgr.c:602 +msgstr "Bekreft sletting av sertifikat" + +#: ../finch/gntcertmgr.c:293 +#: ../pidgin/gtkcertmgr.c:602 msgid "Certificate Manager" -msgstr "" +msgstr "Sertifikatshåndterer" #. Creating the user splits -#: ../finch/gntcertmgr.c:298 ../libpurple/protocols/bonjour/bonjour.c:652 +#: ../finch/gntcertmgr.c:298 +#: ../libpurple/protocols/bonjour/bonjour.c:652 #: ../libpurple/protocols/silc/silc.c:1007 #: ../libpurple/protocols/silc10/silc.c:918 -#, fuzzy msgid "Hostname" -msgstr "Etternavn:" - -#: ../finch/gntcertmgr.c:315 ../finch/gntnotify.c:383 ../pidgin/gtkconv.c:1635 +msgstr "Vertsnavn" + +#: ../finch/gntcertmgr.c:315 +#: ../finch/gntnotify.c:386 +#: ../pidgin/gtkconv.c:1688 #: ../pidgin/gtkdebug.c:835 msgid "Info" msgstr "Info" #. Close button -#: ../finch/gntcertmgr.c:324 ../finch/gntft.c:237 ../finch/gntnotify.c:182 -#: ../finch/gntplugin.c:210 ../finch/gntplugin.c:310 ../finch/gntpounce.c:738 -#: ../finch/gntstatus.c:216 ../libpurple/protocols/msn/msn.c:403 +#: ../finch/gntcertmgr.c:324 +#: ../finch/gntft.c:237 +#: ../finch/gntnotify.c:182 +#: ../finch/gntplugin.c:210 +#: ../finch/gntplugin.c:310 +#: ../finch/gntpounce.c:738 +#: ../finch/gntstatus.c:216 +#: ../libpurple/protocols/msn/msn.c:406 #: ../libpurple/protocols/silc/util.c:382 -#: ../libpurple/protocols/silc10/util.c:377 ../pidgin/gtkaccount.c:2468 +#: ../libpurple/protocols/silc10/util.c:377 +#: ../pidgin/gtkaccount.c:2468 #: ../pidgin/gtkrequest.c:273 msgid "Close" -msgstr "L_ukk" - -#: ../finch/gntconn.c:124 -#, fuzzy, c-format +msgstr "Lukk" + +#: ../finch/gntconn.c:125 +#, c-format msgid "%s (%s)" -msgstr "%s på %s (%s)" - -#: ../finch/gntconn.c:127 -#, fuzzy, c-format -msgid "%s disconnected." -msgstr "Frakoblet." +msgstr "%s (%s)" #: ../finch/gntconn.c:128 +#, c-format +msgid "%s disconnected." +msgstr "%s koblet fra." + +#: ../finch/gntconn.c:129 #, fuzzy, 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 ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen " -"og slå på kontoen for å tilkoble." - -#: ../finch/gntconn.c:137 ../pidgin/gtkblist.c:4041 -#, fuzzy +"Finch will not attempt to reconnect the account until you correct the error and re-enable the account." +msgstr "%s ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen og slå på kontoen for å tilkoble." + +#: ../finch/gntconn.c:138 +#: ../pidgin/gtkblist.c:4323 msgid "Re-enable Account" -msgstr "Registrere ny jabber-konto" +msgstr "Reaktiver konto" #: ../finch/gntconv.c:139 msgid "No such command." msgstr "Ingen slik kommando" -#: ../finch/gntconv.c:143 ../pidgin/gtkconv.c:489 +#: ../finch/gntconv.c:143 +#: ../pidgin/gtkconv.c:530 msgid "Syntax Error: You typed the wrong number of arguments to that command." msgstr "Syntaksfeil: Du skrev inn feil antall argumenter til den kommandoen" -#: ../finch/gntconv.c:148 ../pidgin/gtkconv.c:495 +#: ../finch/gntconv.c:148 +#: ../pidgin/gtkconv.c:536 msgid "Your command failed for an unknown reason." msgstr "Din kommando feilet av ukjent årsak." -#: ../finch/gntconv.c:153 ../pidgin/gtkconv.c:502 -#, fuzzy +#: ../finch/gntconv.c:153 +#: ../pidgin/gtkconv.c:543 msgid "That command only works in chats, not IMs." -msgstr "Den kommandoen virker bare i samtalegrupper, ikke i direktemeldinger" - -#: ../finch/gntconv.c:156 ../pidgin/gtkconv.c:505 -#, fuzzy +msgstr "Den kommandoen virker bare i samtalegrupper, ikke i direktemeldinger." + +#: ../finch/gntconv.c:156 +#: ../pidgin/gtkconv.c:546 msgid "That command only works in IMs, not chats." msgstr "Den kommandoen virker bare i direktemeldinger, ikke samtalegrupper" -#: ../finch/gntconv.c:160 ../pidgin/gtkconv.c:510 +#: ../finch/gntconv.c:160 +#: ../pidgin/gtkconv.c:551 msgid "That command doesn't work on this protocol." msgstr "Denne kommandoen virker ikke på denne protokollen" #: ../finch/gntconv.c:168 -#, fuzzy msgid "Message was not sent, because you are not signed on." -msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:" +msgstr "Meldingen kunne ikke bli sendt, fordi du ikke er koblet til." #: ../finch/gntconv.c:251 -#, fuzzy, c-format +#, c-format msgid "%s (%s -- %s)" -msgstr "%s på %s (%s)" +msgstr "%s (%s -- %s)" #: ../finch/gntconv.c:274 #, c-format msgid "%s [%s]" -msgstr "" - -#: ../finch/gntconv.c:279 ../finch/gntconv.c:773 -#, fuzzy, c-format +msgstr "%s [%s]" + +#: ../finch/gntconv.c:279 +#: ../finch/gntconv.c:801 +#, c-format msgid "" "\n" "%s is typing..." -msgstr "Brukeren skriver en melding..." +msgstr "" +"\n" +"%s skriver..." #: ../finch/gntconv.c:298 -#, fuzzy msgid "You have left this chat." -msgstr "Du snakker i samtalen" - -#: ../finch/gntconv.c:387 ../pidgin/gtkconv.c:1362 +msgstr "Du har forlatt denne samtalen" + +#: ../finch/gntconv.c:414 +#: ../pidgin/gtkconv.c:1415 msgid "Logging started. Future messages in this conversation will be logged." msgstr "" -#: ../finch/gntconv.c:393 ../pidgin/gtkconv.c:1370 -msgid "" -"Logging stopped. Future messages in this conversation will not be logged." -msgstr "" -"Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget." - -#: ../finch/gntconv.c:442 -#, fuzzy +#: ../finch/gntconv.c:420 +#: ../pidgin/gtkconv.c:1423 +msgid "Logging stopped. Future messages in this conversation will not be logged." +msgstr "Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget." + +#: ../finch/gntconv.c:469 msgid "Send To" -msgstr "Send som" - -#: ../finch/gntconv.c:486 -#, fuzzy +msgstr "Send til" + +#: ../finch/gntconv.c:513 msgid "Conversation" -msgstr "Samtaler" - -#: ../finch/gntconv.c:492 +msgstr "Samtale" + +#: ../finch/gntconv.c:519 msgid "Clear Scrollback" msgstr "" -#: ../finch/gntconv.c:496 ../finch/gntprefs.c:191 -#, fuzzy +#: ../finch/gntconv.c:523 +#: ../finch/gntprefs.c:191 msgid "Show Timestamps" -msgstr "Tidsstempler" - -#: ../finch/gntconv.c:512 -#, fuzzy +msgstr "Vis tidsstempler" + +#: ../finch/gntconv.c:539 msgid "Add Buddy Pounce..." -msgstr "Legg til kompisvarsling" - -#: ../finch/gntconv.c:527 -#, fuzzy +msgstr "Legg til kontaktvarsling..." + +#: ../finch/gntconv.c:554 msgid "Enable Logging" -msgstr "/Brukervalg/Slå på logging" - -#: ../finch/gntconv.c:533 -#, fuzzy +msgstr "Aktiver logging" + +#: ../finch/gntconv.c:560 msgid "Enable Sounds" -msgstr "/Brukervalg/Slå på lyder" - -#: ../finch/gntconv.c:739 +msgstr "Aktiver lyder" + +#: ../finch/gntconv.c:766 msgid " " msgstr "" #. Print the list of users in the room -#: ../finch/gntconv.c:861 +#: ../finch/gntconv.c:889 msgid "List of users:\n" msgstr "" -#: ../finch/gntconv.c:1023 ../pidgin/gtkconv.c:331 +#: ../finch/gntconv.c:1051 +#: ../pidgin/gtkconv.c:370 msgid "Supported debug options are: version" msgstr "Støttede avlusningsmuligheter er: version" -#: ../finch/gntconv.c:1059 ../pidgin/gtkconv.c:381 +#: ../finch/gntconv.c:1087 +#: ../pidgin/gtkconv.c:422 msgid "No such command (in this context)." msgstr "Ingen slik kommando (i denne sammenheng)." -#: ../finch/gntconv.c:1062 ../pidgin/gtkconv.c:384 +#: ../finch/gntconv.c:1090 +#: ../pidgin/gtkconv.c:425 msgid "" "Use \"/help <command>\" for help on a specific command.\n" "The following commands are available in this context:\n" @@ -982,65 +1122,63 @@ "Bruk \"/help <command>\" for hjelp på en spesifikk kommando.\n" "De følgende kommandoer er tilgjengelige i denne sammenhengen:\n" -#: ../finch/gntconv.c:1120 ../pidgin/gtkconv.c:7560 -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." - -#: ../finch/gntconv.c:1123 ../pidgin/gtkconv.c:7563 +#: ../finch/gntconv.c:1148 +#: ../pidgin/gtkconv.c:7642 +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." + +#: ../finch/gntconv.c:1151 +#: ../pidgin/gtkconv.c:7645 msgid "me <action>: Send an IRC style action to a buddy or chat." -msgstr "" -"me <action>: Send en IRC stil handling til en kompis eller samtale." - -#: ../finch/gntconv.c:1126 ../pidgin/gtkconv.c:7566 -msgid "" -"debug <option>: Send various debug information to the current " -"conversation." -msgstr "" -"debug <option>: Send diverse debug informasjon til den pågående " -"samtalen." - -#: ../finch/gntconv.c:1129 ../pidgin/gtkconv.c:7569 +msgstr "me <action>: Send en IRC stil handling til en kompis eller samtale." + +#: ../finch/gntconv.c:1154 +#: ../pidgin/gtkconv.c:7648 +msgid "debug <option>: Send various debug information to the current conversation." +msgstr "debug <option>: Send diverse debug informasjon til den pågående samtalen." + +#: ../finch/gntconv.c:1157 +#: ../pidgin/gtkconv.c:7651 #, fuzzy msgid "clear: Clears the conversation scrollback." msgstr "%s har lukket samtalevinduet." -#: ../finch/gntconv.c:1132 ../pidgin/gtkconv.c:7575 +#: ../finch/gntconv.c:1160 +#: ../pidgin/gtkconv.c:7657 msgid "help <command>: Help on a specific command." msgstr "" -#: ../finch/gntconv.c:1135 +#: ../finch/gntconv.c:1163 msgid "users: Show the list of users in the chat." msgstr "" -#: ../finch/gntconv.c:1140 +#: ../finch/gntconv.c:1168 msgid "plugins: Show the plugins window." msgstr "" -#: ../finch/gntconv.c:1143 +#: ../finch/gntconv.c:1171 msgid "buddylist: Show the buddylist." msgstr "" -#: ../finch/gntconv.c:1146 +#: ../finch/gntconv.c:1174 msgid "accounts: Show the accounts window." msgstr "" -#: ../finch/gntconv.c:1149 +#: ../finch/gntconv.c:1177 msgid "debugwin: Show the debug window." msgstr "" -#: ../finch/gntconv.c:1152 +#: ../finch/gntconv.c:1180 msgid "prefs: Show the preference window." msgstr "" -#: ../finch/gntconv.c:1155 +#: ../finch/gntconv.c:1183 msgid "statuses: Show the savedstatuses window." msgstr "" -#: ../finch/gntdebug.c:235 ../finch/gntui.c:86 ../pidgin/gtkdebug.c:695 +#: ../finch/gntdebug.c:235 +#: ../finch/gntui.c:86 +#: ../pidgin/gtkdebug.c:695 msgid "Debug Window" msgstr "Avlusningsvindu" @@ -1048,73 +1186,88 @@ #. * 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:256 ../pidgin/gtkdebug.c:754 +#: ../finch/gntdebug.c:256 +#: ../pidgin/gtkdebug.c:754 #, fuzzy msgid "Clear" msgstr "L_ukk" #: ../finch/gntdebug.c:262 -#, fuzzy msgid "Filter: " -msgstr "Feilet." - -#: ../finch/gntdebug.c:266 ../pidgin/gtkdebug.c:763 +msgstr "Filter:" + +#: ../finch/gntdebug.c:266 +#: ../pidgin/gtkdebug.c:763 msgid "Pause" msgstr "Pause" -#: ../finch/gntft.c:118 ../pidgin/gtkft.c:229 -#, fuzzy, c-format +#: ../finch/gntft.c:118 +#: ../pidgin/gtkft.c:229 +#, c-format msgid "File Transfers - %d%% of %d files" -msgstr "Filoverføring til %s avbrutt.\n" +msgstr "Filoverføringer - %d%% av %d filer" #. Create the window. -#: ../finch/gntft.c:123 ../finch/gntft.c:196 ../finch/gntui.c:87 -#: ../pidgin/gtkft.c:234 ../pidgin/gtkft.c:762 +#: ../finch/gntft.c:123 +#: ../finch/gntft.c:196 +#: ../finch/gntui.c:87 +#: ../pidgin/gtkft.c:234 +#: ../pidgin/gtkft.c:762 msgid "File Transfers" msgstr "Filoverføringer" -#: ../finch/gntft.c:201 ../pidgin/gtkft.c:645 +#: ../finch/gntft.c:201 +#: ../pidgin/gtkft.c:645 msgid "Progress" msgstr "Framdrift" -#: ../finch/gntft.c:201 ../pidgin/gtkft.c:652 +#: ../finch/gntft.c:201 +#: ../pidgin/gtkft.c:652 msgid "Filename" msgstr "Filnavn" -#: ../finch/gntft.c:201 ../pidgin/gtkft.c:659 +#: ../finch/gntft.c:201 +#: ../pidgin/gtkft.c:659 msgid "Size" msgstr "Størrelse" #: ../finch/gntft.c:201 -#, fuzzy msgid "Speed" -msgstr "Hastighet:" - -#: ../finch/gntft.c:201 ../pidgin/gtkft.c:666 +msgstr "Hastighet" + +#: ../finch/gntft.c:201 +#: ../pidgin/gtkft.c:666 msgid "Remaining" msgstr "Gjenstår" #. XXX: Use of ggp_str_to_uin() is an ugly hack! -#: ../finch/gntft.c:201 ../finch/gntstatus.c:547 ../finch/gntstatus.c:576 +#: ../finch/gntft.c:201 +#: ../finch/gntstatus.c:547 +#: ../finch/gntstatus.c:576 #: ../libpurple/protocols/bonjour/bonjour.c:344 -#: ../libpurple/protocols/gg/gg.c:1039 ../libpurple/protocols/gg/gg.c:1576 +#: ../libpurple/protocols/gg/gg.c:1039 +#: ../libpurple/protocols/gg/gg.c:1576 #: ../libpurple/protocols/gg/gg.c:1584 #: ../libpurple/protocols/jabber/buddy.c:778 #: ../libpurple/protocols/jabber/buddy.c:782 #: ../libpurple/protocols/jabber/buddy.c:941 #: ../libpurple/protocols/jabber/jabber.c:1500 -#: ../libpurple/protocols/msn/msn.c:543 -#: ../libpurple/protocols/novell/novell.c:2835 +#: ../libpurple/protocols/msn/msn.c:596 +#: ../libpurple/protocols/msn/msn.c:603 +#: ../libpurple/protocols/novell/novell.c:2840 #: ../libpurple/protocols/oscar/oscar.c:821 #: ../libpurple/protocols/oscar/oscar.c:826 #: ../libpurple/protocols/oscar/oscar.c:828 -#: ../libpurple/protocols/oscar/oscar.c:2700 -#: ../libpurple/protocols/oscar/oscar.c:3780 +#: ../libpurple/protocols/oscar/oscar.c:2696 +#: ../libpurple/protocols/oscar/oscar.c:3776 #: ../libpurple/protocols/sametime/sametime.c:3263 #: ../libpurple/protocols/sametime/sametime.c:4150 -#: ../libpurple/protocols/yahoo/yahoo.c:3248 ../pidgin/gtkblist.c:3104 -#: ../pidgin/gtkblist.c:3118 ../pidgin/gtkblist.c:3120 -#: ../pidgin/gtksavedstatuses.c:999 ../pidgin/gtksavedstatuses.c:1144 +#: ../libpurple/protocols/yahoo/yahoo.c:3247 +#: ../pidgin/gtkblist.c:3302 +#: ../pidgin/gtkblist.c:3316 +#: ../pidgin/gtkblist.c:3318 +#: ../pidgin/gtksavedstatuses.c:999 +#: ../pidgin/gtksavedstatuses.c:1144 msgid "Status" msgstr "Status" @@ -1123,113 +1276,124 @@ msgstr "" #: ../finch/gntft.c:218 -#, fuzzy msgid "Clear finished transfers" msgstr "Fjern fullførte overføringer" #: ../finch/gntft.c:232 -#, fuzzy msgid "Stop" -msgstr "Hiptop" - -#: ../finch/gntft.c:305 ../pidgin/gtkft.c:169 ../pidgin/gtkft.c:973 +msgstr "Stopp" + +#: ../finch/gntft.c:305 +#: ../pidgin/gtkft.c:169 +#: ../pidgin/gtkft.c:973 msgid "Waiting for transfer to begin" msgstr "Venter på at overføringen skal starte" -#: ../finch/gntft.c:372 ../pidgin/gtkft.c:166 ../pidgin/gtkft.c:1054 +#: ../finch/gntft.c:372 +#: ../pidgin/gtkft.c:166 +#: ../pidgin/gtkft.c:1054 msgid "Canceled" msgstr "Avbrutt" -#: ../finch/gntft.c:374 ../pidgin/gtkft.c:1056 +#: ../finch/gntft.c:374 +#: ../pidgin/gtkft.c:1056 msgid "Failed" -msgstr "Feilet." - -#: ../finch/gntft.c:420 ../pidgin/gtkft.c:134 -#, fuzzy, c-format +msgstr "Feilet" + +#: ../finch/gntft.c:420 +#: ../pidgin/gtkft.c:134 +#, c-format msgid "%.2f KiB/s" -msgstr "%.2f KB/s" +msgstr "%.2f KiB/s" #: ../finch/gntft.c:431 #, c-format msgid "The file was saved as %s." -msgstr "" - -# -#: ../finch/gntft.c:432 ../finch/gntft.c:433 ../pidgin/gtkft.c:163 +msgstr "Filen ble lagret som %s." + +#: ../finch/gntft.c:432 +#: ../finch/gntft.c:433 +#: ../pidgin/gtkft.c:163 #: ../pidgin/gtkft.c:1116 msgid "Finished" -msgstr "Ferdig" - -#: ../finch/gntft.c:437 ../libpurple/protocols/msn/session.c:347 +msgstr "Fullført" + +#: ../finch/gntft.c:437 +#: ../libpurple/protocols/msn/session.c:386 msgid "Transferring" msgstr "Overfører" #: ../finch/gntnotify.c:165 -#, fuzzy msgid "Emails" -msgstr "E-post" - -#: ../finch/gntnotify.c:171 ../finch/gntnotify.c:225 +msgstr "E-poster" + +#: ../finch/gntnotify.c:171 +#: ../finch/gntnotify.c:225 msgid "You have mail!" -msgstr "" - -#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:513 -#, fuzzy +msgstr "Du har e-post!" + +#: ../finch/gntnotify.c:174 +#: ../pidgin/gtknotify.c:510 msgid "Sender" -msgstr "Kjønn" - -#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:520 +msgstr "Avsender" + +#: ../finch/gntnotify.c:174 +#: ../pidgin/gtknotify.c:517 msgid "Subject" -msgstr "" +msgstr "Tittel" #: ../finch/gntnotify.c:201 -#, fuzzy, c-format +#, c-format msgid "%s (%s) has %d new message." msgid_plural "%s (%s) has %d new messages." -msgstr[0] "%s har %d ny beskjed." -msgstr[1] "%s har %d nye beskjeder." - -#: ../finch/gntnotify.c:225 ../pidgin/gtknotify.c:341 -#, fuzzy +msgstr[0] "%s (%s) har %d ny beskjed." +msgstr[1] "%s (%s) har %d nye beskjeder." + +#: ../finch/gntnotify.c:225 +#: ../pidgin/gtknotify.c:341 msgid "New Mail" -msgstr "E-post" - -#: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940 +msgstr "Ny e-post" + +#: ../finch/gntnotify.c:290 +#: ../pidgin/gtknotify.c:940 #, c-format msgid "Info for %s" msgstr "Info for %s" -#: ../finch/gntnotify.c:291 ../libpurple/protocols/toc/toc.c:476 +#: ../finch/gntnotify.c:291 +#: ../libpurple/protocols/toc/toc.c:476 #: ../pidgin/gtknotify.c:941 msgid "Buddy Information" msgstr "Kontaktinformasjon" -#: ../finch/gntnotify.c:377 ../libpurple/protocols/qq/group_join.c:367 -#, fuzzy +#: ../finch/gntnotify.c:380 +#: ../libpurple/protocols/qq/group_join.c:367 msgid "Continue" -msgstr "Kobler til" - -#: ../finch/gntnotify.c:386 ../pidgin/gtkconv.c:1596 -msgid "IM" -msgstr "Direktemelding" +msgstr "Fortsett" #: ../finch/gntnotify.c:389 -#, fuzzy +#: ../pidgin/gtkconv.c:1649 +msgid "IM" +msgstr "Direktemelding" + +#: ../finch/gntnotify.c:392 msgid "Join" -msgstr "_Bli med i samtalegruppe" - -#: ../finch/gntnotify.c:392 ../libpurple/protocols/sametime/sametime.c:3473 +msgstr "Bli med" + +#: ../finch/gntnotify.c:395 +#: ../libpurple/protocols/sametime/sametime.c:3473 msgid "Invite" msgstr "Inviter" -#: ../finch/gntnotify.c:395 +#: ../finch/gntnotify.c:398 #, fuzzy msgid "(none)" msgstr "(uten navn)" -#: ../finch/gntplugin.c:75 ../finch/gntplugin.c:84 +#: ../finch/gntplugin.c:75 +#: ../finch/gntplugin.c:84 msgid "ERROR" -msgstr "" +msgstr "FEIL" #: ../finch/gntplugin.c:75 #, fuzzy @@ -1250,6 +1414,12 @@ "Website: %s\n" "Filename: %s\n" msgstr "" +"Navn: %s\n" +"Versjon: %s\n" +"Beskrivelse: %s\n" +"Forfatter: %s\n" +"Hjemmeside: %s\n" +"Filnavn: %s\n" #: ../finch/gntplugin.c:187 msgid "Plugin need to be loaded before you can configure it." @@ -1274,52 +1444,57 @@ #. (that should have been "effect," right?) #. Back to instant-apply! I win! BU-HAHAHA! #. Create the window -#: ../finch/gntplugin.c:371 ../finch/gntplugin.c:378 ../finch/gntprefs.c:264 -#: ../finch/gntui.c:90 ../pidgin/gtkdocklet.c:524 ../pidgin/gtkprefs.c:2067 +#: ../finch/gntplugin.c:371 +#: ../finch/gntplugin.c:378 +#: ../finch/gntprefs.c:264 +#: ../finch/gntui.c:90 +#: ../pidgin/gtkdocklet.c:524 +#: ../pidgin/gtkprefs.c:2069 msgid "Preferences" msgstr "Innstillinger" -#: ../finch/gntpounce.c:183 ../pidgin/gtkpounce.c:256 +#: ../finch/gntpounce.c:183 +#: ../pidgin/gtkpounce.c:256 msgid "Please enter a buddy to pounce." msgstr "Navnet på kontakten du vil varsle." -#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517 +#: ../finch/gntpounce.c:328 +#: ../pidgin/gtkpounce.c:517 msgid "New Buddy Pounce" -msgstr "Legg til kompisvarsling" - -#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517 +msgstr "Legg til kontaktvarsling" + +#: ../finch/gntpounce.c:328 +#: ../pidgin/gtkpounce.c:517 msgid "Edit Buddy Pounce" -msgstr "Rediger kompisvarsling" +msgstr "Rediger kontaktvarsling" #: ../finch/gntpounce.c:333 msgid "Pounce Who" -msgstr "Varsling for" +msgstr "Varsle hvem" #. Account: -#: ../finch/gntpounce.c:336 ../finch/gntstatus.c:456 +#: ../finch/gntpounce.c:336 +#: ../finch/gntstatus.c:456 msgid "Account:" msgstr "Konto:" #: ../finch/gntpounce.c:358 -#, fuzzy msgid "Buddy name:" msgstr "Kontaktnavn:" #. Create the "Pounce When Buddy..." frame. -#: ../finch/gntpounce.c:374 ../pidgin/gtkpounce.c:585 -#, fuzzy +#: ../finch/gntpounce.c:374 +#: ../pidgin/gtkpounce.c:585 msgid "Pounce When Buddy..." -msgstr "Varsle når" +msgstr "Varsle når kontakt..." #: ../finch/gntpounce.c:376 -#, fuzzy msgid "Signs on" -msgstr "Pålo_gging" +msgstr "Logger på" #: ../finch/gntpounce.c:377 -#, fuzzy msgid "Signs off" -msgstr "Logg _av" +msgstr "Logger av" #: ../finch/gntpounce.c:378 #, fuzzy @@ -1327,24 +1502,20 @@ msgstr "Når fraværende" #: ../finch/gntpounce.c:379 -#, fuzzy msgid "Returns from away" -msgstr "_Returnere fra fravær" +msgstr "Returnerer fra fravær" #: ../finch/gntpounce.c:380 -#, fuzzy msgid "Becomes idle" -msgstr "%s har blitt inaktiv" +msgstr "Blir inaktiv" #: ../finch/gntpounce.c:381 -#, fuzzy msgid "Is no longer idle" -msgstr "%s er ikke lenger inaktiv" +msgstr "Er ikke lenger inaktiv" #: ../finch/gntpounce.c:382 -#, fuzzy msgid "Starts typing" -msgstr "Venn s_tarter å skrive" +msgstr "Starter å skrive" #: ../finch/gntpounce.c:383 #, fuzzy @@ -1352,17 +1523,16 @@ msgstr "Brukeren skriver en melding..." #: ../finch/gntpounce.c:384 -#, fuzzy msgid "Stops typing" -msgstr "Venn slutter å skrive til deg" +msgstr "Stopper å skrive" #: ../finch/gntpounce.c:385 -#, fuzzy msgid "Sends a message" -msgstr "Send _beskjed" +msgstr "Sender en beskjed" #. Create the "Action" frame. -#: ../finch/gntpounce.c:414 ../pidgin/gtkpounce.c:646 +#: ../finch/gntpounce.c:414 +#: ../pidgin/gtkpounce.c:646 #, fuzzy msgid "Action" msgstr "Sted" @@ -1378,17 +1548,14 @@ msgstr "Varslingsvindu spretter o_pp" #: ../finch/gntpounce.c:418 -#, fuzzy msgid "Send a message" -msgstr "Send _beskjed" +msgstr "Send en beskjed" #: ../finch/gntpounce.c:419 -#, fuzzy msgid "Execute a command" msgstr "Kjør en kommando" #: ../finch/gntpounce.c:420 -#, fuzzy msgid "Play a sound" msgstr "Spill av en lyd" @@ -1396,85 +1563,97 @@ msgid "Pounce only when my status is not available" msgstr "" -#: ../finch/gntpounce.c:450 ../pidgin/gtkpounce.c:1281 +#: ../finch/gntpounce.c:450 +#: ../pidgin/gtkpounce.c:1281 msgid "Recurring" msgstr "" #: ../finch/gntpounce.c:618 -#, fuzzy msgid "Cannot create pounce" -msgstr "Kan ikke endre kallenavn" +msgstr "Kan ikke opprette varsling" #: ../finch/gntpounce.c:619 msgid "You do not have any accounts." -msgstr "" +msgstr "Du har ingen kontoer." #: ../finch/gntpounce.c:620 msgid "You must create an account first before you can create a pounce." -msgstr "" - -#: ../finch/gntpounce.c:662 ../pidgin/gtkpounce.c:1096 +msgstr "Du må opprette en konto før du kan opprette en varsling." + +#: ../finch/gntpounce.c:662 +#: ../pidgin/gtkpounce.c:1096 #, fuzzy, c-format msgid "Are you sure you want to delete the pounce on %s for %s?" msgstr "Er du sikker på at du vil slette %s?" -#: ../finch/gntpounce.c:696 ../finch/gntui.c:84 ../pidgin/gtkpounce.c:1325 -#, fuzzy +#: ../finch/gntpounce.c:696 +#: ../finch/gntui.c:84 +#: ../pidgin/gtkpounce.c:1325 msgid "Buddy Pounces" -msgstr "Legg til kompisvarsling" - -#: ../finch/gntpounce.c:810 ../pidgin/gtkpounce.c:1452 +msgstr "Kontaktvarsling" + +#: ../finch/gntpounce.c:810 +#: ../pidgin/gtkpounce.c:1452 #, c-format msgid "%s has started typing to you (%s)" msgstr "%s har begynt å skrive til deg (%s)" -#: ../finch/gntpounce.c:812 ../pidgin/gtkpounce.c:1454 -#, fuzzy, c-format +#: ../finch/gntpounce.c:812 +#: ../pidgin/gtkpounce.c:1454 +#, c-format msgid "%s has paused while typing to you (%s)" -msgstr "%s har begynt å skrive til deg (%s)" - -#: ../finch/gntpounce.c:814 ../pidgin/gtkpounce.c:1456 +msgstr "%s har pauset under skriving til deg (%s)" + +#: ../finch/gntpounce.c:814 +#: ../pidgin/gtkpounce.c:1456 #, c-format msgid "%s has signed on (%s)" msgstr "%s har logget på (%s)" -#: ../finch/gntpounce.c:816 ../pidgin/gtkpounce.c:1458 +#: ../finch/gntpounce.c:816 +#: ../pidgin/gtkpounce.c:1458 #, c-format msgid "%s has returned from being idle (%s)" msgstr "%s har blitt aktiv igjen (%s)" -#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1460 +#: ../finch/gntpounce.c:818 +#: ../pidgin/gtkpounce.c:1460 #, c-format msgid "%s has returned from being away (%s)" msgstr "%s har kommet tilbake (%s)" -#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1462 +#: ../finch/gntpounce.c:820 +#: ../pidgin/gtkpounce.c:1462 #, c-format msgid "%s has stopped typing to you (%s)" msgstr "%s har sluttet å skrive til deg (%s)" -#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1464 +#: ../finch/gntpounce.c:822 +#: ../pidgin/gtkpounce.c:1464 #, c-format msgid "%s has signed off (%s)" msgstr "%s har logget av (%s)" -#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1466 +#: ../finch/gntpounce.c:824 +#: ../pidgin/gtkpounce.c:1466 #, c-format msgid "%s has become idle (%s)" msgstr "%s har blitt inaktiv (%s)" -#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1468 +#: ../finch/gntpounce.c:826 +#: ../pidgin/gtkpounce.c:1468 #, c-format msgid "%s has gone away. (%s)" msgstr "%s er borte. (%s)" -#: ../finch/gntpounce.c:828 ../pidgin/gtkpounce.c:1470 -#, fuzzy, c-format +#: ../finch/gntpounce.c:828 +#: ../pidgin/gtkpounce.c:1470 +#, c-format msgid "%s has sent you a message. (%s)" -msgstr "%s ønsker å sende deg %s (%s)" - -#: ../finch/gntpounce.c:829 ../pidgin/gtkpounce.c:1471 -#, c-format +msgstr "%s har sendt deg en beskjed. (%s)" + +#: ../finch/gntpounce.c:829 +#: ../pidgin/gtkpounce.c:1471 msgid "Unknown pounce event. Please report this!" msgstr "Ukjent varslingshendelse. Vennligst rapporter dette!" @@ -1482,43 +1661,41 @@ msgid "Based on keyboard use" msgstr "" -#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:1930 -#, fuzzy +#: ../finch/gntprefs.c:94 +#: ../pidgin/gtkprefs.c:1932 msgid "From last sent message" -msgstr "CTRL-Enter sender beskjeden" - -#: ../finch/gntprefs.c:96 ../pidgin/gtkprefs.c:898 ../pidgin/gtkprefs.c:907 -#: ../pidgin/gtkprefs.c:1929 ../pidgin/gtkprefs.c:1943 +msgstr "Fra sist sendte beskjed" + +#: ../finch/gntprefs.c:96 +#: ../pidgin/gtkprefs.c:898 +#: ../pidgin/gtkprefs.c:907 +#: ../pidgin/gtkprefs.c:1931 +#: ../pidgin/gtkprefs.c:1945 #: ../pidgin/plugins/win32/winprefs/winprefs.c:333 msgid "Never" msgstr "Aldri" #: ../finch/gntprefs.c:184 -#, fuzzy msgid "Show Idle Time" -msgstr "Sett fraværstid for konto" +msgstr "Vis inaktivtid" #: ../finch/gntprefs.c:185 -#, fuzzy msgid "Show Offline Buddies" -msgstr "/Kontakter/Vis _avloggede kontakter" +msgstr "Vis avloggede kontakter" #: ../finch/gntprefs.c:192 -#, fuzzy msgid "Notify buddies when you are typing" msgstr "Varsle kontakter når skriver til dem" #: ../finch/gntprefs.c:198 -#, fuzzy msgid "Log format" -msgstr "Logg_format:" +msgstr "Logg-format" #: ../finch/gntprefs.c:199 msgid "Log IMs" msgstr "" #: ../finch/gntprefs.c:200 -#, fuzzy msgid "Log chats" msgstr "Logg alle samtaler" @@ -1543,224 +1720,244 @@ msgstr "Antall minutter før fraværsmarkert:" #: ../finch/gntprefs.c:210 -#, fuzzy msgid "Change status to" -msgstr "Endre adresse til:" +msgstr "Endre status til" #. Conversations -#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:993 ../pidgin/gtkprefs.c:2033 +#: ../finch/gntprefs.c:259 +#: ../pidgin/gtkprefs.c:993 +#: ../pidgin/gtkprefs.c:2035 #: ../pidgin/plugins/win32/winprefs/winprefs.c:340 msgid "Conversations" msgstr "Samtaler" -#: ../finch/gntprefs.c:260 ../pidgin/gtkprefs.c:1467 ../pidgin/gtkprefs.c:2044 +#: ../finch/gntprefs.c:260 +#: ../pidgin/gtkprefs.c:1469 +#: ../pidgin/gtkprefs.c:2046 msgid "Logging" msgstr "Logging" #: ../finch/gntrequest.c:583 -#, fuzzy msgid "Not implemented yet." -msgstr "Funksjonen er ikke implementert" - -#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1555 +msgstr "Ikke implementert enda" + +#: ../finch/gntrequest.c:659 +#: ../pidgin/gtkrequest.c:1555 #: ../pidgin/gtkrequest.c:1601 msgid "Save File..." msgstr "Lagre fil..." -#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1556 +#: ../finch/gntrequest.c:659 +#: ../pidgin/gtkrequest.c:1556 #: ../pidgin/gtkrequest.c:1602 msgid "Open File..." msgstr "Åpne fil..." -#: ../finch/gntsound.c:97 ../pidgin/gtksound.c:64 +#: ../finch/gntsound.c:97 +#: ../pidgin/gtksound.c:64 msgid "Buddy logs in" msgstr "Kontakt logger inn" -#: ../finch/gntsound.c:98 ../pidgin/gtksound.c:65 +#: ../finch/gntsound.c:98 +#: ../pidgin/gtksound.c:65 msgid "Buddy logs out" msgstr "Kontakt logger ut" -#: ../finch/gntsound.c:99 ../pidgin/gtksound.c:66 +#: ../finch/gntsound.c:99 +#: ../pidgin/gtksound.c:66 msgid "Message received" msgstr "Beskjed mottatt" -#: ../finch/gntsound.c:100 ../pidgin/gtksound.c:67 +#: ../finch/gntsound.c:100 +#: ../pidgin/gtksound.c:67 msgid "Message received begins conversation" msgstr "Beskjed mottas og samtale starter" -#: ../finch/gntsound.c:101 ../pidgin/gtksound.c:68 +#: ../finch/gntsound.c:101 +#: ../pidgin/gtksound.c:68 msgid "Message sent" msgstr "Beskjed sendt" -#: ../finch/gntsound.c:102 ../pidgin/gtksound.c:69 +#: ../finch/gntsound.c:102 +#: ../pidgin/gtksound.c:69 msgid "Person enters chat" msgstr "Person blir med i samtalen" -#: ../finch/gntsound.c:103 ../pidgin/gtksound.c:70 +#: ../finch/gntsound.c:103 +#: ../pidgin/gtksound.c:70 msgid "Person leaves chat" msgstr "Person forlater samtalen" -#: ../finch/gntsound.c:104 ../pidgin/gtksound.c:71 +#: ../finch/gntsound.c:104 +#: ../pidgin/gtksound.c:71 msgid "You talk in chat" msgstr "Du snakker i samtalen" -#: ../finch/gntsound.c:105 ../pidgin/gtksound.c:72 +#: ../finch/gntsound.c:105 +#: ../pidgin/gtksound.c:72 msgid "Others talk in chat" msgstr "Andre snakker i samtalen" -#: ../finch/gntsound.c:107 ../pidgin/gtksound.c:75 -#, fuzzy +#: ../finch/gntsound.c:107 +#: ../pidgin/gtksound.c:75 msgid "Someone says your screen name in chat" -msgstr "Noen sier navnet ditt i en samtale" - -#: ../finch/gntsound.c:361 ../pidgin/gtksound.c:311 +msgstr "Noen roper skjermnavnet ditt i en samtale" + +#: ../finch/gntsound.c:361 +#: ../pidgin/gtksound.c:311 msgid "GStreamer Failure" -msgstr "" - -#: ../finch/gntsound.c:362 ../pidgin/gtksound.c:312 +msgstr "Feil i GStreamer" + +#: ../finch/gntsound.c:362 +#: ../pidgin/gtksound.c:312 msgid "GStreamer failed to initialize." msgstr "" -#: ../finch/gntsound.c:716 ../finch/gntsound.c:802 ../pidgin/gtkprefs.c:1587 -#: ../pidgin/gtkprefs.c:1676 ../pidgin/gtkprefs.c:1872 -#, fuzzy +#: ../finch/gntsound.c:716 +#: ../finch/gntsound.c:802 +#: ../pidgin/gtkprefs.c:1589 +#: ../pidgin/gtkprefs.c:1678 +#: ../pidgin/gtkprefs.c:1874 msgid "(default)" -msgstr "Gnome-standard" +msgstr "(forvalgt)" #: ../finch/gntsound.c:729 -#, fuzzy msgid "Select Sound File ..." -msgstr "Velg fil" +msgstr "Velg lydfil ..." #: ../finch/gntsound.c:904 -#, fuzzy msgid "Sound Preferences" -msgstr "Innstillinger" +msgstr "Lydinnstillinger" #: ../finch/gntsound.c:915 -#, fuzzy msgid "Profiles" -msgstr "Profil" - -#: ../finch/gntsound.c:954 ../pidgin/gtkprefs.c:1717 +msgstr "Profiler" + +#: ../finch/gntsound.c:954 +#: ../pidgin/gtkprefs.c:1719 msgid "Automatic" msgstr "Automatisk" #: ../finch/gntsound.c:957 -#, fuzzy msgid "Console Beep" msgstr "Konsollpip" -#: ../finch/gntsound.c:958 ../pidgin/gtkprefs.c:1721 +#: ../finch/gntsound.c:958 +#: ../pidgin/gtkprefs.c:1723 msgid "Command" msgstr "Kommando" #: ../finch/gntsound.c:959 -#, fuzzy msgid "No Sound" -msgstr "Lyder" - -#: ../finch/gntsound.c:961 ../pidgin/gtkprefs.c:1712 +msgstr "Ingen lyd" + +#: ../finch/gntsound.c:961 +#: ../pidgin/gtkprefs.c:1714 msgid "Sound Method" msgstr "Lydtype" #: ../finch/gntsound.c:966 -#, fuzzy msgid "Method: " -msgstr "_Metode:" +msgstr "Metode: " #: ../finch/gntsound.c:973 -#, fuzzy, c-format +#, c-format msgid "" "Sound Command\n" "(%s for filename)" msgstr "" -"_Program for lydavspilling\n" +"Lydkommando\n" "(%s for filnavn)" #. Sound options -#: ../finch/gntsound.c:981 ../pidgin/gtkprefs.c:1756 +#: ../finch/gntsound.c:981 +#: ../pidgin/gtkprefs.c:1758 msgid "Sound Options" msgstr "Lydinnstillinger" -# #: ../finch/gntsound.c:982 -#, fuzzy msgid "Sounds when conversation has focus" -msgstr "Lyder når samtalevinduet har _fokus" - -#: ../finch/gntsound.c:990 ../pidgin/gtkprefs.c:897 ../pidgin/gtkprefs.c:909 -#: ../pidgin/gtkprefs.c:1763 ../pidgin/plugins/timestamp_format.c:42 +msgstr "Lyder når samtalen har fokus" + +#: ../finch/gntsound.c:990 +#: ../pidgin/gtkprefs.c:897 +#: ../pidgin/gtkprefs.c:909 +#: ../pidgin/gtkprefs.c:1765 +#: ../pidgin/plugins/timestamp_format.c:42 #: ../pidgin/plugins/timestamp_format.c:51 #: ../pidgin/plugins/win32/winprefs/winprefs.c:334 -#, fuzzy msgid "Always" -msgstr "Borte" - -#: ../finch/gntsound.c:991 ../pidgin/gtkprefs.c:1761 -#, fuzzy +msgstr "Alltid" + +#: ../finch/gntsound.c:991 +#: ../pidgin/gtkprefs.c:1763 msgid "Only when available" -msgstr "Ikke tilgjengelig" - -#: ../finch/gntsound.c:992 ../pidgin/gtkprefs.c:1762 -#, fuzzy +msgstr "Bare hvis tilgjengelig" + +#: ../finch/gntsound.c:992 +#: ../pidgin/gtkprefs.c:1764 msgid "Only when not available" -msgstr "Snakkerom i %s er ikke tilgjengelig." +msgstr "Bare hvis ikke tilgjengelig." #: ../finch/gntsound.c:999 msgid "Volume(0-100):" -msgstr "" +msgstr "Volum(0-100):" #. Sound events -#: ../finch/gntsound.c:1018 ../pidgin/gtkprefs.c:1798 +#: ../finch/gntsound.c:1018 +#: ../pidgin/gtkprefs.c:1800 msgid "Sound Events" msgstr "Lydhendelser" -#: ../finch/gntsound.c:1020 ../pidgin/gtkprefs.c:1857 +#: ../finch/gntsound.c:1020 +#: ../pidgin/gtkprefs.c:1859 msgid "Event" msgstr "Hendelse" #: ../finch/gntsound.c:1020 -#, fuzzy msgid "File" -msgstr "Feilet." - -#: ../finch/gntsound.c:1039 ../pidgin/gtkprefs.c:1876 +msgstr "Fil" + +#: ../finch/gntsound.c:1039 +#: ../pidgin/gtkprefs.c:1878 msgid "Test" msgstr "Test" -#: ../finch/gntsound.c:1042 ../pidgin/gtkprefs.c:1880 +#: ../finch/gntsound.c:1042 +#: ../pidgin/gtkprefs.c:1882 msgid "Reset" msgstr "Nullstill" -#: ../finch/gntsound.c:1045 ../pidgin/gtkprefs.c:1884 +#: ../finch/gntsound.c:1045 +#: ../pidgin/gtkprefs.c:1886 msgid "Choose..." msgstr "Bla gjennom..." #: ../finch/gntstatus.c:138 -#, fuzzy, c-format +#, c-format msgid "Are you sure you want to delete \"%s\"" -msgstr "Er du sikker på at du vil slette %s?" +msgstr "Er du sikker på at du vil slette '%s'?" #: ../finch/gntstatus.c:141 -#, fuzzy msgid "Delete Status" -msgstr "Påloggningsstatus" - -#: ../finch/gntstatus.c:176 ../pidgin/gtksavedstatuses.c:597 -#, fuzzy +msgstr "Slett status" + +#: ../finch/gntstatus.c:176 +#: ../pidgin/gtksavedstatuses.c:597 msgid "Saved Statuses" -msgstr "Tjenerstatistikk" - -#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:539 +msgstr "Lagrede statuser" + +#: ../finch/gntstatus.c:183 +#: ../finch/gntstatus.c:539 #: ../libpurple/protocols/jabber/buddy.c:298 #: ../libpurple/protocols/jabber/buddy.c:1359 -#: ../libpurple/protocols/novell/novell.c:1484 +#: ../libpurple/protocols/novell/novell.c:1486 #: ../pidgin/gtksavedstatuses.c:500 msgid "Title" msgstr "Tittel" -#: ../finch/gntstatus.c:183 ../pidgin/gtksavedstatuses.c:515 +#: ../finch/gntstatus.c:183 +#: ../pidgin/gtksavedstatuses.c:515 msgid "Type" msgstr "Type" @@ -1772,31 +1969,43 @@ #. user_settable #. not independent #. Attributes - each status can have a message. -#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:564 ../finch/gntstatus.c:576 +#: ../finch/gntstatus.c:183 +#: ../finch/gntstatus.c:564 +#: ../finch/gntstatus.c:576 #: ../libpurple/protocols/bonjour/bonjour.c:256 #: ../libpurple/protocols/bonjour/bonjour.c:263 #: ../libpurple/protocols/bonjour/bonjour.c:346 -#: ../libpurple/protocols/gg/gg.c:1077 ../libpurple/protocols/gg/gg.c:1579 -#: ../libpurple/protocols/gg/gg.c:1597 ../libpurple/protocols/gg/gg.c:1607 -#: ../libpurple/protocols/gg/gg.c:1613 ../libpurple/protocols/gg/gg.c:1622 -#: ../libpurple/protocols/gg/gg.c:1627 ../libpurple/protocols/irc/irc.c:234 +#: ../libpurple/protocols/gg/gg.c:1077 +#: ../libpurple/protocols/gg/gg.c:1579 +#: ../libpurple/protocols/gg/gg.c:1597 +#: ../libpurple/protocols/gg/gg.c:1607 +#: ../libpurple/protocols/gg/gg.c:1613 +#: ../libpurple/protocols/gg/gg.c:1622 +#: ../libpurple/protocols/gg/gg.c:1627 +#: ../libpurple/protocols/irc/irc.c:234 #: ../libpurple/protocols/jabber/jabber.c:1532 #: ../libpurple/protocols/jabber/jabber.c:1555 #: ../libpurple/protocols/jabber/jabber.c:1578 #: ../libpurple/protocols/jabber/jabber.c:1601 #: ../libpurple/protocols/jabber/jabber.c:1624 #: ../libpurple/protocols/jabber/jabber.c:1649 +#: ../libpurple/protocols/msn/msn.c:634 +#: ../libpurple/protocols/msn/msn.c:641 +#: ../libpurple/protocols/msn/msn.c:648 +#: ../libpurple/protocols/msn/msn.c:655 +#: ../libpurple/protocols/msn/msn.c:661 +#: ../libpurple/protocols/msn/msn.c:667 #: ../libpurple/protocols/myspace/myspace.c:148 -#: ../libpurple/protocols/novell/novell.c:2838 -#: ../libpurple/protocols/novell/novell.c:2941 -#: ../libpurple/protocols/novell/novell.c:2947 -#: ../libpurple/protocols/novell/novell.c:2953 -#: ../libpurple/protocols/oscar/oscar.c:5554 -#: ../libpurple/protocols/oscar/oscar.c:5772 -#: ../libpurple/protocols/oscar/oscar.c:5786 -#: ../libpurple/protocols/oscar/oscar.c:5802 -#: ../libpurple/protocols/oscar/oscar.c:5809 -#: ../libpurple/protocols/oscar/oscar.c:5816 +#: ../libpurple/protocols/novell/novell.c:2843 +#: ../libpurple/protocols/novell/novell.c:2946 +#: ../libpurple/protocols/novell/novell.c:2952 +#: ../libpurple/protocols/novell/novell.c:2958 +#: ../libpurple/protocols/oscar/oscar.c:5552 +#: ../libpurple/protocols/oscar/oscar.c:5770 +#: ../libpurple/protocols/oscar/oscar.c:5784 +#: ../libpurple/protocols/oscar/oscar.c:5800 +#: ../libpurple/protocols/oscar/oscar.c:5807 +#: ../libpurple/protocols/oscar/oscar.c:5814 #: ../libpurple/protocols/sametime/sametime.c:3286 #: ../libpurple/protocols/sametime/sametime.c:3292 #: ../libpurple/protocols/sametime/sametime.c:3298 @@ -1804,28 +2013,27 @@ #: ../libpurple/protocols/silc/buddy.c:1551 #: ../libpurple/protocols/silc10/buddy.c:1551 #: ../libpurple/protocols/simple/simple.c:246 -#: ../libpurple/protocols/yahoo/yahoo.c:3751 -#: ../libpurple/protocols/yahoo/yahoo.c:3757 +#: ../libpurple/protocols/yahoo/yahoo.c:3750 +#: ../libpurple/protocols/yahoo/yahoo.c:3756 #: ../libpurple/protocols/zephyr/zephyr.c:2337 -#: ../pidgin/gtksavedstatuses.c:526 ../pidgin/gtksavedstatuses.c:1010 +#: ../pidgin/gtksavedstatuses.c:526 +#: ../pidgin/gtksavedstatuses.c:1010 msgid "Message" -msgstr "Beskjed:" +msgstr "Beskjed" #. Use -#: ../finch/gntstatus.c:194 ../finch/gntstatus.c:593 -#, fuzzy +#: ../finch/gntstatus.c:194 +#: ../finch/gntstatus.c:593 msgid "Use" msgstr "Bruk" #: ../finch/gntstatus.c:301 -#, fuzzy msgid "Invalid title" -msgstr "Ugyldig authzid" +msgstr "Ugyldig tittel" #: ../finch/gntstatus.c:302 -#, fuzzy msgid "Please enter a non-empty title for the status." -msgstr "Vennligst skriv inn nytt navn for gruppen." +msgstr "Vennligst ikke angi et tom tittel til statusen." #: ../finch/gntstatus.c:310 #, fuzzy @@ -1833,54 +2041,51 @@ msgstr "Dupliserings Korrigering" #: ../finch/gntstatus.c:311 -#, fuzzy msgid "Please enter a different title for the status." -msgstr "Vennligst skriv inn nytt navn for gruppen." +msgstr "Vennligst skriv inn en annen tittel til statusen." #: ../finch/gntstatus.c:452 #, fuzzy msgid "Substatus" msgstr "Status" -#: ../finch/gntstatus.c:464 ../pidgin/gtkft.c:699 +#: ../finch/gntstatus.c:464 +#: ../pidgin/gtkft.c:699 msgid "Status:" msgstr "Status:" #: ../finch/gntstatus.c:479 -#, fuzzy msgid "Message:" msgstr "Beskjed:" #: ../finch/gntstatus.c:528 -#, fuzzy msgid "Edit Status" -msgstr "Sivilstatus" +msgstr "Endre status" #: ../finch/gntstatus.c:570 -#, fuzzy msgid "Use different status for following accounts" -msgstr "Bruk en annen status for noen kontoer" +msgstr "Bruk en annen status for følgende kontoer" #. Save & Use #: ../finch/gntstatus.c:604 -#, fuzzy msgid "Save & Use" -msgstr "Lagre & bruk" +msgstr "Lagre og bruk" #: ../finch/gntui.c:85 msgid "Certificates" -msgstr "" - -#: ../finch/gntui.c:89 ../pidgin/gtkprefs.c:2035 +msgstr "Sertifikater" + +#: ../finch/gntui.c:89 +#: ../pidgin/gtkprefs.c:2037 msgid "Sounds" msgstr "Lyder" #: ../finch/gntui.c:91 -#, fuzzy msgid "Statuses" -msgstr "Status" - -#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121 +msgstr "Statuser" + +#: ../finch/plugins/gntclipboard.c:115 +#: ../finch/plugins/gntclipboard.c:121 #: ../finch/plugins/gntclipboard.c:128 #, fuzzy msgid "Error loading the plugin." @@ -1892,9 +2097,8 @@ msgstr "Kan ikke sende fil" #: ../finch/plugins/gntclipboard.c:122 -#, fuzzy msgid "Couldn't find window" -msgstr "Kan ikke sende fil" +msgstr "Kan ikke finne vindu" #: ../finch/plugins/gntclipboard.c:129 msgid "This plugin cannot be loaded because it was not built with X11 support." @@ -1902,32 +2106,30 @@ #: ../finch/plugins/gntclipboard.c:158 msgid "GntClipboard" -msgstr "" +msgstr "GntClipboard" #: ../finch/plugins/gntclipboard.c:160 msgid "Clipboard plugin" msgstr "" #: ../finch/plugins/gntclipboard.c:161 -msgid "" -"When the gnt clipboard contents change, the contents are made available to " -"X, if possible." +msgid "When the gnt clipboard contents change, the contents are made available to X, if possible." msgstr "" #: ../finch/plugins/gntgf.c:231 -#, fuzzy, c-format +#, c-format msgid "%s just signed on" -msgstr "%s har logget på" +msgstr "%s logget akkurat på" #: ../finch/plugins/gntgf.c:238 -#, fuzzy, c-format +#, c-format msgid "%s just signed off" -msgstr "%s logget av" +msgstr "%s logget akkurat av" #: ../finch/plugins/gntgf.c:246 -#, fuzzy, c-format +#, c-format msgid "%s sent you a message" -msgstr "%s ønsker å sende deg en fil." +msgstr "%s har sendt deg en beskjed" #: ../finch/plugins/gntgf.c:265 #, c-format @@ -1935,28 +2137,25 @@ msgstr "" #: ../finch/plugins/gntgf.c:267 -#, fuzzy, c-format +#, c-format msgid "%s sent a message in %s" -msgstr "Send _beskjed" +msgstr "%s sendte en beskjed i %s" #: ../finch/plugins/gntgf.c:305 -#, fuzzy msgid "Buddy signs on/off" -msgstr "Kontakt er avlogget:" +msgstr "Kontakt logget på/av" #: ../finch/plugins/gntgf.c:306 msgid "You receive an IM" msgstr "" #: ../finch/plugins/gntgf.c:307 -#, fuzzy msgid "Someone speaks in a chat" -msgstr "Noen sier navnet ditt i en samtale" +msgstr "Noen snakker i en samtale" #: ../finch/plugins/gntgf.c:308 -#, fuzzy msgid "Someone says your name in a chat" -msgstr "Noen sier navnet ditt i en samtale" +msgstr "Noen sa navnet ditt i en samtale" #: ../finch/plugins/gntgf.c:336 msgid "Notify with a toaster when" @@ -1972,74 +2171,73 @@ #: ../finch/plugins/gntgf.c:377 msgid "GntGf" -msgstr "" - -#: ../finch/plugins/gntgf.c:379 ../finch/plugins/gntgf.c:380 +msgstr "GntGf" + +#: ../finch/plugins/gntgf.c:379 +#: ../finch/plugins/gntgf.c:380 msgid "Toaster plugin" msgstr "" -#: ../finch/plugins/gnthistory.c:116 ../pidgin/plugins/history.c:120 -#, fuzzy, c-format +#: ../finch/plugins/gnthistory.c:116 +#: ../pidgin/plugins/history.c:123 +#, c-format msgid "Conversation with %s on %s:
" -msgstr "Samtaler med %s" - -#: ../finch/plugins/gnthistory.c:138 ../pidgin/plugins/history.c:147 +msgstr "Samtaler med %s på %s:
" + +#: ../finch/plugins/gnthistory.c:138 +#: ../pidgin/plugins/history.c:150 msgid "History Plugin Requires Logging" msgstr "Historie Tillegg Krever Logging" -#: ../finch/plugins/gnthistory.c:139 ../pidgin/plugins/history.c:148 +#: ../finch/plugins/gnthistory.c:139 +#: ../pidgin/plugins/history.c:151 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." #: ../finch/plugins/gnthistory.c:179 #, fuzzy msgid "GntHistory" -msgstr "Historikk" - -#: ../finch/plugins/gnthistory.c:181 ../pidgin/plugins/history.c:190 +msgstr "GntHistorikk" + +#: ../finch/plugins/gnthistory.c:181 +#: ../pidgin/plugins/history.c:194 msgid "Shows recently logged conversations in new conversations." msgstr "Viser tidligere loggede samtaler i nye samtaler." -#: ../finch/plugins/gnthistory.c:182 ../pidgin/plugins/history.c:191 -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." +#: ../finch/plugins/gnthistory.c:182 +#: ../pidgin/plugins/history.c:195 +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." #: ../finch/plugins/lastlog.c:69 msgid "Lastlog" msgstr "" -#. Translator Note: The "backlog" is the conversation buffer/history. -#: ../finch/plugins/lastlog.c:100 +#: ../finch/plugins/lastlog.c:99 msgid "lastlog: Searches for a substring in the backlog." msgstr "" -#: ../finch/plugins/lastlog.c:122 +#: ../finch/plugins/lastlog.c:121 msgid "GntLastlog" msgstr "" -#: ../finch/plugins/lastlog.c:124 ../finch/plugins/lastlog.c:125 +#: ../finch/plugins/lastlog.c:123 +#: ../finch/plugins/lastlog.c:124 msgid "Lastlog plugin." msgstr "" #: ../libpurple/account.c:791 -#, fuzzy msgid "accounts" -msgstr "Kontoer" - -#: ../libpurple/account.c:958 ../libpurple/protocols/jabber/auth.c:195 -#, fuzzy +msgstr "kontoer" + +#: ../libpurple/account.c:958 +#: ../libpurple/protocols/jabber/auth.c:195 msgid "Password is required to sign on." msgstr "Passord kreves for å logge på." @@ -2049,28 +2247,29 @@ msgstr "Oppgi passord for %s (%s)" #: ../libpurple/account.c:999 -#, fuzzy msgid "Enter Password" -msgstr "Oppgi passord" +msgstr "Oppgi passord" # #: ../libpurple/account.c:1004 -#, fuzzy msgid "Save password" msgstr "Lagre passord" -#: ../libpurple/account.c:1039 ../libpurple/connection.c:105 +#: ../libpurple/account.c:1039 +#: ../libpurple/connection.c:105 #: ../libpurple/connection.c:178 #, c-format msgid "Missing protocol plugin for %s" msgstr "Mangler protokolltillegg for %s" -#: ../libpurple/account.c:1041 ../libpurple/connection.c:108 -#: ../pidgin/gtkblist.c:4036 +#: ../libpurple/account.c:1041 +#: ../libpurple/connection.c:108 +#: ../pidgin/gtkblist.c:4318 msgid "Connection Error" msgstr "Feil ved tilkobling" -#: ../libpurple/account.c:1199 ../libpurple/protocols/gg/gg.c:707 +#: ../libpurple/account.c:1199 +#: ../libpurple/protocols/gg/gg.c:707 #: ../libpurple/protocols/jabber/jabber.c:1687 msgid "New passwords do not match." msgstr "De nye passordene stemmer ikke overens." @@ -2079,17 +2278,14 @@ msgid "Fill out all fields completely." msgstr "Fyll ut alle feltene fullstendig." -# #: ../libpurple/account.c:1231 msgid "Original password" msgstr "Opprinnelig passord" -# #: ../libpurple/account.c:1238 msgid "New password" msgstr "Nytt passord" -# #: ../libpurple/account.c:1245 msgid "New password (again)" msgstr "Nytt passord (igjen)" @@ -2099,7 +2295,6 @@ msgid "Change password for %s" msgstr "Endre passord for %s:" -# #: ../libpurple/account.c:1259 msgid "Please enter your current password and your new password." msgstr "Skriv inn ditt nåværende passord og ditt nye passord." @@ -2109,31 +2304,36 @@ msgid "Change user information for %s" msgstr "Endre brukerinformasjon for %s" -#: ../libpurple/account.c:1293 ../libpurple/protocols/toc/toc.c:1670 +#: ../libpurple/account.c:1293 +#: ../libpurple/protocols/toc/toc.c:1670 msgid "Set User Info" msgstr "Sett brukerinfo" -#: ../libpurple/account.c:1764 ../libpurple/protocols/gg/gg.c:1017 +#: ../libpurple/account.c:1764 +#: ../libpurple/protocols/gg/gg.c:1017 #: ../libpurple/protocols/jabber/buddy.c:782 -#: ../libpurple/protocols/jabber/buddy.c:2027 -#: ../libpurple/protocols/jabber/buddy.c:2044 -#: ../libpurple/protocols/novell/novell.c:2831 -#: ../libpurple/protocols/qq/qq.c:232 ../pidgin/gtkft.c:160 +#: ../libpurple/protocols/jabber/buddy.c:2030 +#: ../libpurple/protocols/jabber/buddy.c:2047 +#: ../libpurple/protocols/novell/novell.c:2836 +#: ../libpurple/protocols/qq/qq.c:232 +#: ../pidgin/gtkft.c:160 msgid "Unknown" msgstr "Ukjent" -#: ../libpurple/blist.c:521 ../libpurple/blist.c:1320 -#: ../libpurple/blist.c:1552 ../libpurple/protocols/jabber/roster.c:69 -#: ../libpurple/protocols/myspace/myspace.c:3244 ../pidgin/gtkblist.c:5373 +#: ../libpurple/blist.c:521 +#: ../libpurple/blist.c:1321 +#: ../libpurple/blist.c:1531 +#: ../libpurple/protocols/jabber/roster.c:69 +#: ../libpurple/protocols/myspace/myspace.c:3242 +#: ../pidgin/gtkblist.c:5662 #: ../pidgin/plugins/gevolution/gevo-util.c:67 #: ../pidgin/plugins/gevolution/gevolution.c:96 msgid "Buddies" msgstr "Kontakter" #: ../libpurple/blist.c:548 -#, fuzzy msgid "buddy list" -msgstr "Kontaktliste" +msgstr "kontaktliste" #: ../libpurple/certificate.c:545 msgid "(DOES NOT MATCH)" @@ -2171,9 +2371,9 @@ #. Make messages #: ../libpurple/certificate.c:1171 -#, fuzzy, c-format +#, c-format msgid "Accept certificate for %s?" -msgstr "Aksepter samtaleinvitasjon?" +msgstr "Aksepter sertifikat for %s?" #. TODO: Find what the handle ought to be #: ../libpurple/certificate.c:1177 @@ -2185,18 +2385,18 @@ msgid "Accept" msgstr "Godta" -#: ../libpurple/certificate.c:1187 ../libpurple/protocols/qq/buddy_opt.c:214 +#: ../libpurple/certificate.c:1187 +#: ../libpurple/protocols/qq/buddy_opt.c:214 #: ../libpurple/protocols/qq/group_im.c:144 #: ../libpurple/protocols/qq/group_opt.c:127 #: ../libpurple/protocols/qq/sys_msg.c:90 #: ../libpurple/protocols/qq/sys_msg.c:246 -#, fuzzy msgid "Reject" -msgstr "Nullstill" +msgstr "Avslå" #: ../libpurple/certificate.c:1188 msgid "_View Certificate..." -msgstr "" +msgstr "_Se på sertfikat..." #. Prompt the user to authenticate the certificate #. TODO: Provide the user with more guidance about why he is @@ -2204,18 +2404,14 @@ #. vrq will be completed by user_auth #: ../libpurple/certificate.c:1288 #, 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." +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 "" #. Prompt the user to authenticate the certificate #. vrq will be completed by user_auth #: ../libpurple/certificate.c:1313 #, c-format -msgid "" -"The certificate presented by \"%s\" is self-signed. It cannot be " -"automatically checked." +msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked." msgstr "" #: ../libpurple/certificate.c:1331 @@ -2228,7 +2424,8 @@ #. stifle it. #. TODO: Probably wrong. #. TODO: Probably wrong -#: ../libpurple/certificate.c:1339 ../libpurple/certificate.c:1416 +#: ../libpurple/certificate.c:1339 +#: ../libpurple/certificate.c:1416 msgid "SSL Certificate Error" msgstr "" @@ -2239,23 +2436,17 @@ #. vrq will be completed by user_auth #: ../libpurple/certificate.c:1360 -msgid "" -"You have no database of root certificates, so this certificate cannot be " -"validated." +msgid "You have no database of root certificates, so this certificate cannot be validated." msgstr "" #. vrq will be completed by user_auth #: ../libpurple/certificate.c:1382 -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 "" #: ../libpurple/certificate.c:1408 #, 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." +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 "" #: ../libpurple/certificate.c:1417 @@ -2263,7 +2454,7 @@ msgstr "" #. Make messages -#: ../libpurple/certificate.c:1881 +#: ../libpurple/certificate.c:1882 #, c-format msgid "" "Common name: %s\n" @@ -2275,54 +2466,52 @@ msgstr "" #. TODO: Find what the handle ought to be -#: ../libpurple/certificate.c:1890 -#, fuzzy +#: ../libpurple/certificate.c:1891 msgid "Certificate Information" -msgstr "Profilinformasjon" - -# +msgstr "Sertifikatinformasjon" + #: ../libpurple/connection.c:107 msgid "Registration Error" msgstr "Registreringsfeil" -# #: ../libpurple/connection.c:180 -#, fuzzy msgid "Unregistration Error" -msgstr "Registreringsfeil" +msgstr "Avregistreringsfeil" #: ../libpurple/connection.c:350 -#, fuzzy, c-format +#, c-format msgid "+++ %s signed on" -msgstr "%s har logget på" +msgstr "+++ %s logget på" #: ../libpurple/connection.c:380 -#, fuzzy, c-format +#, c-format msgid "+++ %s signed off" -msgstr "%s logget av" - -#: ../libpurple/connection.c:497 ../libpurple/plugin.c:282 -#: ../libpurple/protocols/jabber/buddy.c:2337 +msgstr "+++ %s logget av" + +#: ../libpurple/connection.c:497 +#: ../libpurple/plugin.c:282 +#: ../libpurple/protocols/jabber/buddy.c:2340 #: ../libpurple/protocols/msn/servconn.c:141 -#: ../libpurple/protocols/msn/session.c:322 +#: ../libpurple/protocols/msn/session.c:361 msgid "Unknown error" msgstr "Ukjent feil" #: ../libpurple/conversation.c:170 -#, fuzzy msgid "Unable to send message: The message is too large." -msgstr "Kunne ikke sende beskjed. Beskjeden er for stor." - -#: ../libpurple/conversation.c:173 ../libpurple/conversation.c:186 -#, fuzzy, c-format +msgstr "Kunne ikke sende beskjed: Beskjeden er for stor." + +#: ../libpurple/conversation.c:173 +#: ../libpurple/conversation.c:186 +#, c-format msgid "Unable to send message to %s." -msgstr "Kunne ikke sende beskjed til %s." +msgstr "Klarte ikke å sende beskjed til %s." #: ../libpurple/conversation.c:174 msgid "The message is too large." -msgstr "Meldingen er for stor." - -#: ../libpurple/conversation.c:183 ../libpurple/protocols/bonjour/jabber.c:255 +msgstr "Beskjeden er for stor." + +#: ../libpurple/conversation.c:183 +#: ../libpurple/protocols/bonjour/jabber.c:255 #: ../libpurple/protocols/bonjour/jabber.c:298 msgid "Unable to send message." msgstr "Kunne ikke sende beskjed." @@ -2332,9 +2521,8 @@ msgstr "Send beskjed" #: ../libpurple/conversation.c:1214 -#, fuzzy msgid "_Send Message" -msgstr "Send beskjed" +msgstr "_Send beskjed" #: ../libpurple/conversation.c:1620 #, c-format @@ -2385,7 +2573,8 @@ msgid "Purple's D-BUS server is not running for the reason listed below" msgstr "" -#: ../libpurple/desktopitem.c:287 ../libpurple/desktopitem.c:878 +#: ../libpurple/desktopitem.c:287 +#: ../libpurple/desktopitem.c:878 #, fuzzy msgid "No name" msgstr "Etternavn:" @@ -2400,7 +2589,8 @@ msgid "Unable to send request to resolver process\n" msgstr "Kunne ikke sende beskjed til %s." -#: ../libpurple/dnsquery.c:549 ../libpurple/dnsquery.c:697 +#: ../libpurple/dnsquery.c:549 +#: ../libpurple/dnsquery.c:697 #, fuzzy, c-format msgid "" "Error resolving %s:\n" @@ -2409,7 +2599,8 @@ "Klarte ikke lese %s:\n" "%s\n" -#: ../libpurple/dnsquery.c:552 ../libpurple/dnsquery.c:711 +#: ../libpurple/dnsquery.c:552 +#: ../libpurple/dnsquery.c:711 #: ../libpurple/dnsquery.c:831 #, fuzzy, c-format msgid "Error resolving %s: %d" @@ -2425,7 +2616,7 @@ msgstr "Feil under lesing fra socket." #: ../libpurple/dnsquery.c:578 -#, fuzzy, c-format +#, fuzzy msgid "EOF while reading from resolver process" msgstr "Feil under lesing fra socket." @@ -2435,9 +2626,8 @@ msgstr "Autentiseringsfeil" #: ../libpurple/dnsquery.c:762 -#, fuzzy msgid "Unknown reason" -msgstr "Ukjent grunn." +msgstr "Ukjent grunn" #: ../libpurple/ft.c:209 #, c-format @@ -2481,9 +2671,7 @@ #: ../libpurple/ft.c:287 #, c-format msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n" -msgstr "" -"%s er ikke en vanlig fil. Gaim nekter å overskrive den for å ikke risikere å " -"ødelegge noe.\n" +msgstr "%s er ikke en vanlig fil. Gaim nekter å overskrive den for å ikke risikere å ødelegge noe.\n" #: ../libpurple/ft.c:347 #, c-format @@ -2512,9 +2700,9 @@ "Port: %d" #: ../libpurple/ft.c:436 -#, fuzzy, c-format +#, c-format msgid "%s is offering to send file %s" -msgstr "Tilbyr å sende %s til %s" +msgstr "%s tilbyr å sende filen %s" #: ../libpurple/ft.c:488 #, c-format @@ -2527,9 +2715,9 @@ msgstr "Tilbyr å sende %s til %s" #: ../libpurple/ft.c:521 -#, fuzzy, c-format +#, c-format msgid "Starting transfer of %s from %s" -msgstr "Aksepter forespørselen for filoverføring fra %s?" +msgstr "Starter overføring av %s fra %s" #: ../libpurple/ft.c:682 #, c-format @@ -2537,7 +2725,6 @@ msgstr "Overføring av filen %s er ferdig." #: ../libpurple/ft.c:685 -#, c-format msgid "File transfer complete" msgstr "Filoverføring ferdig" @@ -2547,7 +2734,6 @@ msgstr "Du avbrøt overføringen av %s." #: ../libpurple/ft.c:1108 -#, c-format msgid "File transfer cancelled" msgstr "Filoverføring avbrutt." @@ -2562,168 +2748,150 @@ msgstr "%s avbrøt filoverføringen." #: ../libpurple/ft.c:1228 -#, fuzzy, c-format +#, c-format msgid "File transfer to %s failed." -msgstr "Filoverføring til %s avbrutt.\n" +msgstr "Filoverføring til %s feilet." #: ../libpurple/ft.c:1230 -#, fuzzy, c-format +#, c-format msgid "File transfer from %s failed." -msgstr "Filoverføring fra %s avbrutt.\n" +msgstr "Filoverføring fra %s feilet." #: ../libpurple/gconf/purple.schemas.in.h:1 msgid "Run the command in a terminal" -msgstr "" +msgstr "Kjør kommandoen i en terminal" #: ../libpurple/gconf/purple.schemas.in.h:2 msgid "The command used to handle \"aim\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «aim»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:3 msgid "The command used to handle \"gg\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «gg»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:4 msgid "The command used to handle \"icq\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «icq»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:5 msgid "The command used to handle \"irc\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «irc»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:6 msgid "The command used to handle \"msnim\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «msnim»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:7 msgid "The command used to handle \"sip\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «sip»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:8 msgid "The command used to handle \"xmpp\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «xmpp»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:9 msgid "The command used to handle \"ymsgr\" URLs, if enabled." -msgstr "" +msgstr "Kommando for å håndtere «ymsgr»-URLer, hvis aktivert." #: ../libpurple/gconf/purple.schemas.in.h:10 msgid "The handler for \"aim\" URLs" -msgstr "" +msgstr "Håndtereren for «aim»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:11 msgid "The handler for \"gg\" URLs" -msgstr "" +msgstr "Håndtereren for «gg»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:12 msgid "The handler for \"icq\" URLs" -msgstr "" +msgstr "Håndtereren for «icq»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:13 msgid "The handler for \"irc\" URLs" -msgstr "" +msgstr "Håndtereren for «irc»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:14 msgid "The handler for \"msnim\" URLs" -msgstr "" +msgstr "Håndtereren for «msnim»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:15 msgid "The handler for \"sip\" URLs" -msgstr "" +msgstr "Håndtereren for «sip»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:16 msgid "The handler for \"xmpp\" URLs" -msgstr "" +msgstr "Håndtereren for «xmpp»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:17 msgid "The handler for \"ymsgr\" URLs" -msgstr "" +msgstr "Håndtereren for «ymsgr»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:18 -msgid "" -"True if the command specified in the \"command\" key should handle \"aim\" " -"URLs." -msgstr "" +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." #: ../libpurple/gconf/purple.schemas.in.h:19 -msgid "" -"True if the command specified in the \"command\" key should handle \"gg\" " -"URLs." -msgstr "" +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." #: ../libpurple/gconf/purple.schemas.in.h:20 -msgid "" -"True if the command specified in the \"command\" key should handle \"icq\" " -"URLs." -msgstr "" +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." #: ../libpurple/gconf/purple.schemas.in.h:21 -msgid "" -"True if the command specified in the \"command\" key should handle \"irc\" " -"URLs." -msgstr "" +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." #: ../libpurple/gconf/purple.schemas.in.h:22 -msgid "" -"True if the command specified in the \"command\" key should handle \"msnim\" " -"URLs." -msgstr "" +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." #: ../libpurple/gconf/purple.schemas.in.h:23 -msgid "" -"True if the command specified in the \"command\" key should handle \"sip\" " -"URLs." -msgstr "" +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." #: ../libpurple/gconf/purple.schemas.in.h:24 -msgid "" -"True if the command specified in the \"command\" key should handle \"xmpp\" " -"URLs." -msgstr "" +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." #: ../libpurple/gconf/purple.schemas.in.h:25 -msgid "" -"True if the command specified in the \"command\" key should handle \"ymsgr\" " -"URLs." -msgstr "" +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." #: ../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 "" +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." #: ../libpurple/gconf/purple.schemas.in.h:27 msgid "Whether the specified command should handle \"aim\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «aim»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:28 msgid "Whether the specified command should handle \"gg\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «gg»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:29 msgid "Whether the specified command should handle \"icq\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «icq»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:30 msgid "Whether the specified command should handle \"irc\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «irc»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:31 msgid "Whether the specified command should handle \"msnim\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «msnim»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:32 msgid "Whether the specified command should handle \"sip\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «sip»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:33 msgid "Whether the specified command should handle \"xmpp\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «xmpp»-URLer" #: ../libpurple/gconf/purple.schemas.in.h:34 msgid "Whether the specified command should handle \"ymsgr\" URLs" -msgstr "" +msgstr "Om den spesifike kommandoen skal håndtere «ymsgr»-URLer" #: ../libpurple/log.c:183 msgid "The logger has no read function" @@ -2751,27 +2919,21 @@ #: ../libpurple/log.c:1366 #, 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" #: ../libpurple/log.c:1368 #, c-format -msgid "" -"(%s) %s <AUTO-" -"REPLY>: %s
\n" -msgstr "" -"(%s) %s <" -"STANDARDSVAR>: %s
\n" - -#: ../libpurple/log.c:1426 ../libpurple/log.c:1559 +msgid "(%s) %s <AUTO-REPLY>: %s
\n" +msgstr "(%s) %s <STANDARDSVAR>: %s
\n" + +#: ../libpurple/log.c:1426 +#: ../libpurple/log.c:1559 msgid "Unable to find log path!" msgstr "Kunne ikke finne banen til loggen!" -#: ../libpurple/log.c:1438 ../libpurple/log.c:1568 +#: ../libpurple/log.c:1438 +#: ../libpurple/log.c:1568 #, c-format msgid "Could not read file: %s" msgstr "Kunne ikke lese fil: %s" @@ -2784,10 +2946,9 @@ #: ../libpurple/plugin.c:365 #, c-format msgid "You are using %s, but this plugin requires %s." -msgstr "" +msgstr "Du bruker %s, men dette tillegget krever %s." #: ../libpurple/plugin.c:380 -#, c-format msgid "This plugin has not defined an ID." msgstr "" @@ -2807,17 +2968,12 @@ #: ../libpurple/plugin.c:547 #, 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 "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." #: ../libpurple/plugin.c:552 -#, fuzzy msgid "Unable to load the plugin" -msgstr "Gaim klarte ikke å laste tillegget." +msgstr "Klarte ikke å laste tillegget." #: ../libpurple/plugin.c:574 #, c-format @@ -2840,11 +2996,11 @@ msgstr "Lar deg laste perl-tillegg." #: ../libpurple/plugins/autoaccept.c:23 -#, fuzzy msgid "Autoaccept" -msgstr "Godta" - -#: ../libpurple/plugins/autoaccept.c:25 ../libpurple/plugins/autoaccept.c:26 +msgstr "Autoaksepter" + +#: ../libpurple/plugins/autoaccept.c:25 +#: ../libpurple/plugins/autoaccept.c:26 #, fuzzy msgid "Auto-accept file transfer requests from selected users." msgstr "Aksepter forespørselen for filoverføring fra %s?" @@ -2870,24 +3026,28 @@ #: ../libpurple/plugins/autoaccept.c:164 msgid "_Save" -msgstr "Lagre" - -#: ../libpurple/plugins/autoaccept.c:165 ../libpurple/plugins/idle.c:170 -#: ../libpurple/plugins/idle.c:204 ../libpurple/plugins/idle.c:230 +msgstr "_Lagre" + +#: ../libpurple/plugins/autoaccept.c:165 +#: ../libpurple/plugins/idle.c:170 +#: ../libpurple/plugins/idle.c:204 +#: ../libpurple/plugins/idle.c:230 #: ../libpurple/protocols/oscar/oscar.c:1453 -#: ../libpurple/protocols/oscar/oscar.c:2233 -#: ../libpurple/protocols/oscar/oscar.c:2282 -#: ../libpurple/protocols/oscar/oscar.c:5886 -#: ../libpurple/protocols/oscar/oscar.c:5941 -#: ../libpurple/protocols/oscar/oscar.c:6167 -#: ../libpurple/protocols/oscar/oscar.c:6237 ../libpurple/request.h:1388 +#: ../libpurple/protocols/oscar/oscar.c:2229 +#: ../libpurple/protocols/oscar/oscar.c:2278 +#: ../libpurple/protocols/oscar/oscar.c:5884 +#: ../libpurple/protocols/oscar/oscar.c:5939 +#: ../libpurple/protocols/oscar/oscar.c:6165 +#: ../libpurple/protocols/oscar/oscar.c:6235 +#: ../libpurple/request.h:1388 #: ../libpurple/request.h:1398 +#: ../pidgin/gtkblist.c:527 msgid "_Cancel" msgstr "_Avbryt" #: ../libpurple/plugins/autoaccept.c:168 msgid "Ask" -msgstr "" +msgstr "Spør" #: ../libpurple/plugins/autoaccept.c:169 #, fuzzy @@ -2922,19 +3082,19 @@ "(only when there's no conversation with the sender)" msgstr "" -#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:1660 -#: ../libpurple/protocols/msn/msn.c:1690 -#, fuzzy +#: ../libpurple/plugins/buddynote.c:46 +#: ../libpurple/protocols/msn/msn.c:1770 +#: ../libpurple/protocols/msn/msn.c:1800 msgid "Notes" -msgstr "Merknad" +msgstr "Merknader" #: ../libpurple/plugins/buddynote.c:47 msgid "Enter your notes below..." -msgstr "" +msgstr "Skriv inn merknadene dine under..." #: ../libpurple/plugins/buddynote.c:65 msgid "Edit Notes..." -msgstr "" +msgstr "Rediger merknader..." #. *< major version #. *< minor version @@ -2944,19 +3104,21 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/buddynote.c:90 ../pidgin/plugins/gtkbuddynote.c:74 -#, fuzzy +#: ../libpurple/plugins/buddynote.c:90 +#: ../pidgin/plugins/gtkbuddynote.c:74 msgid "Buddy Notes" -msgstr "Kontakter" +msgstr "Kontaktmerknader" #. *< name #. *< version -#: ../libpurple/plugins/buddynote.c:92 ../pidgin/plugins/gtkbuddynote.c:76 +#: ../libpurple/plugins/buddynote.c:92 +#: ../pidgin/plugins/gtkbuddynote.c:76 msgid "Store notes on particular buddies." msgstr "" #. *< summary -#: ../libpurple/plugins/buddynote.c:93 ../pidgin/plugins/gtkbuddynote.c:77 +#: ../libpurple/plugins/buddynote.c:93 +#: ../pidgin/plugins/gtkbuddynote.c:77 #, fuzzy msgid "Adds the option to store notes for buddies on your buddy list." msgstr "Legg til brukeren i kontaktlisten din" @@ -2975,7 +3137,8 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ciphertest.c:267 ../libpurple/plugins/ciphertest.c:269 +#: ../libpurple/plugins/ciphertest.c:267 +#: ../libpurple/plugins/ciphertest.c:269 msgid "Tests the ciphers that ship with libpurple." msgstr "" @@ -2987,7 +3150,7 @@ #. *< id #: ../libpurple/plugins/dbus-example.c:155 msgid "DBus Example" -msgstr "" +msgstr "DBus-eksempel" #. *< name #. *< version @@ -3005,36 +3168,41 @@ #. *< priority #. *< id #: ../libpurple/plugins/filectl.c:248 -#, fuzzy msgid "File Control" -msgstr "Styre Gaim fra kontrollfil" +msgstr "Filkontroll" #. *< name #. *< version #. * summary #. * description -#: ../libpurple/plugins/filectl.c:251 ../libpurple/plugins/filectl.c:253 +#: ../libpurple/plugins/filectl.c:251 +#: ../libpurple/plugins/filectl.c:253 #, fuzzy msgid "Allows control by entering commands in a file." msgstr "Lar deg kontrollere Gaim ved å skrive inn kommandoer i en fil." -#: ../libpurple/plugins/idle.c:158 ../libpurple/plugins/idle.c:218 +#: ../libpurple/plugins/idle.c:158 +#: ../libpurple/plugins/idle.c:218 msgid "Minutes" msgstr "Minutter" #. 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 +#: ../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 "I'dle Mak'er" -#: ../libpurple/plugins/idle.c:166 ../libpurple/plugins/idle.c:258 +#: ../libpurple/plugins/idle.c:166 +#: ../libpurple/plugins/idle.c:258 #, fuzzy msgid "Set Account Idle Time" msgstr "Sett fraværstid for konto" -#: ../libpurple/plugins/idle.c:169 ../libpurple/plugins/idle.c:229 +#: ../libpurple/plugins/idle.c:169 +#: ../libpurple/plugins/idle.c:229 msgid "_Set" msgstr "_Sett" @@ -3042,7 +3210,8 @@ msgid "None of your accounts are idle." msgstr "" -#: ../libpurple/plugins/idle.c:200 ../libpurple/plugins/idle.c:262 +#: ../libpurple/plugins/idle.c:200 +#: ../libpurple/plugins/idle.c:262 #, fuzzy msgid "Unset Account Idle Time" msgstr "Sett fraværstid for konto" @@ -3052,7 +3221,8 @@ msgid "_Unset" msgstr "Bruk" -#: ../libpurple/plugins/idle.c:226 ../libpurple/plugins/idle.c:266 +#: ../libpurple/plugins/idle.c:226 +#: ../libpurple/plugins/idle.c:266 #, fuzzy msgid "Set Idle Time for All Accounts" msgstr "Frigi Borte-tid For Alle Idle Kontoer" @@ -3062,7 +3232,8 @@ msgid "Unset Idle Time for All Idled Accounts" msgstr "Frigi Borte-tid For Alle Idle Kontoer" -#: ../libpurple/plugins/idle.c:320 ../libpurple/plugins/idle.c:321 +#: ../libpurple/plugins/idle.c:320 +#: ../libpurple/plugins/idle.c:321 #, fuzzy msgid "Allows you to hand-configure how long you've been idle" msgstr "Lar deg manuelt sette hvor lenge du har vært borte." @@ -3086,12 +3257,8 @@ #. * 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." -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 @@ -3114,8 +3281,7 @@ #. * description #: ../libpurple/plugins/ipc-test-server.c:79 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." #: ../libpurple/plugins/joinpart.c:229 #, fuzzy @@ -3149,9 +3315,7 @@ #. * description #: ../libpurple/plugins/joinpart.c:275 -msgid "" -"This plugin hides join/part messages in large rooms, except for those users " -"actively taking part in a conversation." +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 @@ -3160,10 +3324,9 @@ #. * not a real timezone. #: ../libpurple/plugins/log_reader.c:493 msgid "(UTC)" -msgstr "" +msgstr "(UTC)" #: ../libpurple/plugins/log_reader.c:1577 -#, fuzzy msgid "User is offline." msgstr "Brukeren er avlogget" @@ -3175,9 +3338,9 @@ #: ../libpurple/plugins/log_reader.c:1593 #: ../libpurple/plugins/log_reader.c:1596 #: ../libpurple/plugins/statenotify.c:80 -#, fuzzy, c-format +#, c-format msgid "%s has signed off." -msgstr "%s har logget av (%s)" +msgstr "%s har logget av." #: ../libpurple/plugins/log_reader.c:1610 msgid "One or more messages may have been undeliverable." @@ -3188,9 +3351,7 @@ msgstr "Du har blitt koblet fra tjeneren." #: ../libpurple/plugins/log_reader.c:1628 -msgid "" -"You are currently disconnected. Messages will not be received unless you are " -"logged in." +msgid "You are currently disconnected. Messages will not be received unless you are logged in." msgstr "" #: ../libpurple/plugins/log_reader.c:1643 @@ -3199,9 +3360,8 @@ msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:" #: ../libpurple/plugins/log_reader.c:1648 -#, fuzzy msgid "Message could not be sent." -msgstr "Din Yahoo!-beskjed ble ikke sendt." +msgstr "Beskjeden kunne ikke bli sendt." #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators @@ -3209,25 +3369,23 @@ #: ../libpurple/plugins/log_reader.c:2349 #: ../libpurple/plugins/log_reader.c:2472 msgid "Adium" -msgstr "" +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. #: ../libpurple/plugins/log_reader.c:2362 #: ../libpurple/plugins/log_reader.c:2477 -#, fuzzy msgid "Fire" -msgstr "Firefox" +msgstr "Fire" #. 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:2374 #: ../libpurple/plugins/log_reader.c:2481 -#, fuzzy msgid "Messenger Plus!" -msgstr "Melding fra %s" +msgstr "Messenger Plus!" #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators @@ -3235,16 +3393,15 @@ #: ../libpurple/plugins/log_reader.c:2388 #: ../libpurple/plugins/log_reader.c:2486 msgid "QIP" -msgstr "" +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:2400 #: ../libpurple/plugins/log_reader.c:2490 -#, fuzzy msgid "MSN Messenger" -msgstr "Lynmeldingsklient" +msgstr "MSN Messenger" #. The names of IM clients are marked for translation at the request of #. translators who wanted to transliterate them. Many translators @@ -3252,7 +3409,7 @@ #: ../libpurple/plugins/log_reader.c:2412 #: ../libpurple/plugins/log_reader.c:2494 msgid "Trillian" -msgstr "" +msgstr "Trillian" #. Add general preferences. #: ../libpurple/plugins/log_reader.c:2454 @@ -3296,11 +3453,9 @@ #. * description #: ../libpurple/plugins/log_reader.c:2531 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!" +"WARNING: This plugin is still alpha code and may crash frequently. Use it at your own risk!" msgstr "" # @@ -3324,9 +3479,8 @@ #. *< priority #. *< id #: ../libpurple/plugins/newline.c:68 -#, fuzzy msgid "New Line" -msgstr "Nytt vindu" +msgstr "Ny linje" #. *< name #. *< version @@ -3337,30 +3491,25 @@ #. *< summary #: ../libpurple/plugins/newline.c:71 -msgid "" -"Prepends a newline to messages so that the rest of the message appears below " -"the screen name in the conversation window." +msgid "Prepends a newline to messages so that the rest of the message appears below the screen name in the conversation window." msgstr "" #: ../libpurple/plugins/offlinemsg.c:23 msgid "Offline Message Emulation" msgstr "" -#: ../libpurple/plugins/offlinemsg.c:25 ../libpurple/plugins/offlinemsg.c:26 +#: ../libpurple/plugins/offlinemsg.c:25 +#: ../libpurple/plugins/offlinemsg.c:26 msgid "Save messages sent to an offline user as pounce." msgstr "" #: ../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." +msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog." msgstr "" #: ../libpurple/plugins/offlinemsg.c:156 #, 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?" +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 "" #: ../libpurple/plugins/offlinemsg.c:160 @@ -3373,26 +3522,30 @@ msgstr "" #: ../libpurple/plugins/offlinemsg.c:165 -#: ../libpurple/protocols/msn/dialog.c:133 -#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560 -#: ../libpurple/protocols/novell/novell.c:1917 +#: ../libpurple/protocols/msn/dialog.c:141 +#: ../libpurple/protocols/msn/msn.c:622 +#: ../libpurple/protocols/novell/novell.c:1919 #: ../libpurple/protocols/silc/buddy.c:317 -#: ../libpurple/protocols/silc/pk.c:113 ../libpurple/protocols/silc/wb.c:304 +#: ../libpurple/protocols/silc/pk.c:113 +#: ../libpurple/protocols/silc/wb.c:304 #: ../libpurple/protocols/silc10/buddy.c:314 #: ../libpurple/protocols/silc10/pk.c:119 -#: ../libpurple/protocols/silc10/wb.c:304 ../pidgin/gtkrequest.c:268 +#: ../libpurple/protocols/silc10/wb.c:304 +#: ../pidgin/gtkrequest.c:268 msgid "Yes" msgstr "Ja" #: ../libpurple/plugins/offlinemsg.c:166 -#: ../libpurple/protocols/msn/dialog.c:134 -#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560 -#: ../libpurple/protocols/novell/novell.c:1918 +#: ../libpurple/protocols/msn/dialog.c:142 +#: ../libpurple/protocols/msn/msn.c:622 +#: ../libpurple/protocols/novell/novell.c:1920 #: ../libpurple/protocols/silc/buddy.c:318 -#: ../libpurple/protocols/silc/pk.c:114 ../libpurple/protocols/silc/wb.c:305 +#: ../libpurple/protocols/silc/pk.c:114 +#: ../libpurple/protocols/silc/wb.c:305 #: ../libpurple/protocols/silc10/buddy.c:315 #: ../libpurple/protocols/silc10/pk.c:120 -#: ../libpurple/protocols/silc10/wb.c:305 ../pidgin/gtkrequest.c:269 +#: ../libpurple/protocols/silc10/wb.c:305 +#: ../pidgin/gtkrequest.c:269 msgid "No" msgstr "Nei" @@ -3417,7 +3570,8 @@ #. *< name #. *< version #. *< summary -#: ../libpurple/plugins/perl/perl.c:603 ../libpurple/plugins/perl/perl.c:604 +#: ../libpurple/plugins/perl/perl.c:603 +#: ../libpurple/plugins/perl/perl.c:604 msgid "Provides support for loading perl plugins." msgstr "Lar deg laste perl-tillegg." @@ -3430,9 +3584,7 @@ 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!" +msgid "Causes conversation windows to appear as other users begin to message you. This works for AIM, ICQ, XMPP, Sametime, and Yahoo!" msgstr "" #: ../libpurple/plugins/psychic.c:72 @@ -3492,15 +3644,16 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/simple.c:40 ../libpurple/plugins/simple.c:42 +#: ../libpurple/plugins/simple.c:40 +#: ../libpurple/plugins/simple.c:42 msgid "Tests to see that most things are working." msgstr "Test for å se at mesteparten fungerer." #. Scheme name -#: ../libpurple/plugins/ssl/ssl-gnutls.c:902 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:903 #: ../libpurple/plugins/ssl/ssl-nss.c:725 msgid "X.509 Certificates" -msgstr "" +msgstr "X.509-sertifikater" #. *< type #. *< ui_requirement @@ -3508,7 +3661,7 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ssl/ssl-gnutls.c:986 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:987 msgid "GNUTLS" msgstr "GNUTLS" @@ -3516,8 +3669,8 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ssl/ssl-gnutls.c:989 -#: ../libpurple/plugins/ssl/ssl-gnutls.c:991 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:990 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:992 msgid "Provides SSL support through GNUTLS." msgstr "Tilbyr SSL-støtte gjennom GNUTLS." @@ -3554,7 +3707,8 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ssl/ssl.c:97 ../libpurple/plugins/ssl/ssl.c:99 +#: ../libpurple/plugins/ssl/ssl.c:97 +#: ../libpurple/plugins/ssl/ssl.c:99 msgid "Provides a wrapper around SSL support libraries." msgstr "Tilbyr ett felles grensesnitt for SSL-biblioteker." @@ -3579,9 +3733,9 @@ msgstr "%s er ikke lenger inaktiv" #: ../libpurple/plugins/statenotify.c:73 -#, fuzzy, c-format +#, c-format msgid "%s has signed on." -msgstr "%s har logget på (%s)" +msgstr "%s har logget på." #: ../libpurple/plugins/statenotify.c:91 msgid "Notify When" @@ -3616,27 +3770,22 @@ #. * description #: ../libpurple/plugins/statenotify.c:151 #: ../libpurple/plugins/statenotify.c:154 -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." # -#: ../libpurple/plugins/tcl/tcl.c:421 +#: ../libpurple/plugins/tcl/tcl.c:423 msgid "Tcl Plugin Loader" msgstr "Tcl-tilleggslaster" # -#: ../libpurple/plugins/tcl/tcl.c:423 ../libpurple/plugins/tcl/tcl.c:424 +#: ../libpurple/plugins/tcl/tcl.c:425 +#: ../libpurple/plugins/tcl/tcl.c:426 msgid "Provides support for loading Tcl plugins" msgstr "Lar deg laste Tcl-tillegg." -#: ../libpurple/plugins/tcl/tcl.c:507 -msgid "" -"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, " -"install ActiveTCL from http://www.activestate.com\n" +#: ../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" msgstr "" #. Send a message about the connection error @@ -3646,8 +3795,7 @@ msgstr "Kunne ikke lage ny tilkobling." #: ../libpurple/protocols/bonjour/bonjour.c:137 -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 "" #. Creating the options for the protocol @@ -3655,23 +3803,21 @@ #: ../libpurple/protocols/bonjour/bonjour.c:656 #: ../libpurple/protocols/gg/gg.c:632 #: ../libpurple/protocols/jabber/jabber.c:942 -#, fuzzy msgid "First name" -msgstr "Fornavn:" +msgstr "Fornavn" #: ../libpurple/protocols/bonjour/bonjour.c:353 #: ../libpurple/protocols/bonjour/bonjour.c:659 #: ../libpurple/protocols/gg/gg.c:627 #: ../libpurple/protocols/jabber/jabber.c:947 -#, fuzzy msgid "Last name" -msgstr "Etternavn:" +msgstr "Etternavn" #: ../libpurple/protocols/bonjour/bonjour.c:357 #: ../libpurple/protocols/jabber/buddy.c:295 #: ../libpurple/protocols/jabber/buddy.c:1325 #: ../libpurple/protocols/jabber/buddy.c:1335 -#: ../libpurple/protocols/jabber/buddy.c:2216 +#: ../libpurple/protocols/jabber/buddy.c:2219 #: ../libpurple/protocols/silc/ops.c:1041 #: ../libpurple/protocols/silc/util.c:555 #: ../libpurple/protocols/silc10/ops.c:1075 @@ -3682,16 +3828,14 @@ #: ../libpurple/protocols/bonjour/bonjour.c:360 #: ../libpurple/protocols/bonjour/bonjour.c:665 -#, fuzzy msgid "AIM Account" -msgstr "Legg til konto" +msgstr "AIM-konto" # #: ../libpurple/protocols/bonjour/bonjour.c:363 #: ../libpurple/protocols/bonjour/bonjour.c:668 -#, fuzzy msgid "XMPP Account" -msgstr "Konto" +msgstr "XMPP-konto" #. *< type #. *< ui_requirement @@ -3721,18 +3865,17 @@ #: ../libpurple/protocols/silc/silc.c:1011 #: ../libpurple/protocols/silc10/silc.c:681 #: ../libpurple/protocols/silc10/silc.c:922 -#, fuzzy msgid "E-mail" -msgstr "E-post:" +msgstr "E-post" #: ../libpurple/protocols/bonjour/bonjour.h:33 msgid "Bonjour" -msgstr "" +msgstr "Bonjour" #: ../libpurple/protocols/bonjour/jabber.c:380 -#, fuzzy, c-format +#, c-format msgid "%s has closed the conversation." -msgstr "%s har blitt invitert til denne samtalen." +msgstr "%s har lukket samtalen." #: ../libpurple/protocols/bonjour/jabber.c:437 #: ../libpurple/protocols/bonjour/jabber.c:660 @@ -3761,56 +3904,58 @@ msgid "Could not listen on socket" msgstr "Kunne ikke opprette socket" -#: ../libpurple/protocols/gg/gg.c:76 ../libpurple/proxy.c:1829 +#: ../libpurple/protocols/gg/gg.c:76 +#: ../libpurple/proxy.c:1829 msgid "Invalid proxy settings" msgstr "Ugyldige proxyinnstilinger" -#: ../libpurple/protocols/gg/gg.c:77 ../libpurple/proxy.c:1829 -msgid "" -"Either the host name or port number specified for your given proxy type is " -"invalid." +#: ../libpurple/protocols/gg/gg.c:77 +#: ../libpurple/proxy.c:1829 +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." -#: ../libpurple/protocols/gg/gg.c:115 ../libpurple/protocols/gg/gg.c:137 +#: ../libpurple/protocols/gg/gg.c:115 +#: ../libpurple/protocols/gg/gg.c:137 #: ../libpurple/protocols/gg/gg.c:180 #, fuzzy msgid "Token Error" msgstr "Ukjent feil" -#: ../libpurple/protocols/gg/gg.c:116 ../libpurple/protocols/gg/gg.c:138 +#: ../libpurple/protocols/gg/gg.c:116 +#: ../libpurple/protocols/gg/gg.c:138 #: ../libpurple/protocols/gg/gg.c:181 #, fuzzy msgid "Unable to fetch the token.\n" msgstr "Klarte ikke hente ned romliste." -#: ../libpurple/protocols/gg/gg.c:269 ../libpurple/protocols/gg/gg.c:288 -#, fuzzy +#: ../libpurple/protocols/gg/gg.c:269 +#: ../libpurple/protocols/gg/gg.c:288 msgid "Save Buddylist..." -msgstr "Sende kontaktliste" +msgstr "Lagre kontaktliste..." #: ../libpurple/protocols/gg/gg.c:270 msgid "Your buddylist is empty, nothing was written to the file." msgstr "Kompislisten din er tom, ingenting ble skrevet til filen." -#: ../libpurple/protocols/gg/gg.c:276 ../libpurple/protocols/gg/gg.c:278 -#, fuzzy +#: ../libpurple/protocols/gg/gg.c:276 +#: ../libpurple/protocols/gg/gg.c:278 msgid "Couldn't open file" -msgstr "Kan ikke sende fil" +msgstr "Kunne ikke åpne filen" #: ../libpurple/protocols/gg/gg.c:289 #, fuzzy msgid "Buddylist saved successfully!" msgstr "Passordet er endret" -#: ../libpurple/protocols/gg/gg.c:307 ../libpurple/protocols/gg/gg.c:308 -#, fuzzy +#: ../libpurple/protocols/gg/gg.c:307 +#: ../libpurple/protocols/gg/gg.c:308 msgid "Couldn't load buddylist" -msgstr "Kunne ikke eksportere kontaktliste" +msgstr "Kunne ikke laste kontaktliste" #: ../libpurple/protocols/gg/gg.c:324 #, fuzzy msgid "Load Buddylist..." -msgstr "_Alias for kontakt..." +msgstr "Last kontaktliste..." #: ../libpurple/protocols/gg/gg.c:325 #, fuzzy @@ -3818,18 +3963,16 @@ msgstr "Passordet er endret" #: ../libpurple/protocols/gg/gg.c:336 -#, fuzzy msgid "Save buddylist..." -msgstr "Sende kontaktliste" +msgstr "Lagre kontaktliste" #: ../libpurple/protocols/gg/gg.c:384 msgid "Fill in the registration fields." msgstr "Fyll inn registrerings feltene." #: ../libpurple/protocols/gg/gg.c:389 -#, fuzzy msgid "Passwords do not match." -msgstr "De nye passordene stemmer ikke overens." +msgstr "Passordene stemmer ikke overens." #: ../libpurple/protocols/gg/gg.c:398 #, fuzzy @@ -3845,29 +3988,34 @@ msgid "Registration completed successfully!" msgstr "Registreringen var vellykket!" -#: ../libpurple/protocols/gg/gg.c:482 ../libpurple/protocols/gg/gg.c:775 +#: ../libpurple/protocols/gg/gg.c:482 +#: ../libpurple/protocols/gg/gg.c:775 #: ../libpurple/protocols/jabber/jabber.c:913 #: ../libpurple/protocols/jabber/jabber.c:916 #: ../libpurple/protocols/jabber/jabber.c:1722 msgid "Password" msgstr "Passord" -#: ../libpurple/protocols/gg/gg.c:487 ../libpurple/protocols/gg/gg.c:780 +#: ../libpurple/protocols/gg/gg.c:487 +#: ../libpurple/protocols/gg/gg.c:780 #, fuzzy msgid "Password (retype)" msgstr "Passord sendt" -#: ../libpurple/protocols/gg/gg.c:492 ../libpurple/protocols/gg/gg.c:785 +#: ../libpurple/protocols/gg/gg.c:492 +#: ../libpurple/protocols/gg/gg.c:785 #, fuzzy msgid "Enter current token" msgstr "%s er ikke pålogget." -#: ../libpurple/protocols/gg/gg.c:498 ../libpurple/protocols/gg/gg.c:791 +#: ../libpurple/protocols/gg/gg.c:498 +#: ../libpurple/protocols/gg/gg.c:791 #, fuzzy msgid "Current token" msgstr "Pålogget på" -#: ../libpurple/protocols/gg/gg.c:502 ../libpurple/protocols/gg/gg.c:503 +#: ../libpurple/protocols/gg/gg.c:502 +#: ../libpurple/protocols/gg/gg.c:503 #, fuzzy msgid "Register New Gadu-Gadu Account" msgstr "Registrere ny jabber-konto" @@ -3876,42 +4024,46 @@ msgid "Please, fill in the following fields" msgstr "Vennligst fyll ut de følgende felt." -#: ../libpurple/protocols/gg/gg.c:642 ../libpurple/protocols/gg/gg.c:1054 +#: ../libpurple/protocols/gg/gg.c:642 +#: ../libpurple/protocols/gg/gg.c:1054 #: ../libpurple/protocols/gg/gg.c:1126 #: ../libpurple/protocols/jabber/jabber.c:957 -#: ../libpurple/protocols/oscar/oscar.c:3789 -#: ../libpurple/protocols/oscar/oscar.c:3802 +#: ../libpurple/protocols/oscar/oscar.c:3785 +#: ../libpurple/protocols/oscar/oscar.c:3798 #: ../libpurple/protocols/qq/buddy_info.c:49 msgid "City" msgstr "By" #: ../libpurple/protocols/gg/gg.c:647 msgid "Year of birth" -msgstr "Fødselsdato" - -#: ../libpurple/protocols/gg/gg.c:650 ../libpurple/protocols/msn/msn.c:1589 +msgstr "Fødselsår" + +#: ../libpurple/protocols/gg/gg.c:650 +#: ../libpurple/protocols/msn/msn.c:1699 #: ../libpurple/protocols/myspace/user.c:115 -#: ../libpurple/protocols/oscar/oscar.c:3732 +#: ../libpurple/protocols/oscar/oscar.c:3728 #: ../libpurple/protocols/qq/buddy_info.c:46 -#: ../libpurple/protocols/qq/qq.c:226 ../libpurple/protocols/qq/qq.c:229 -#: ../libpurple/protocols/qq/qq.c:232 ../libpurple/protocols/qq/qq.c:236 +#: ../libpurple/protocols/qq/qq.c:226 +#: ../libpurple/protocols/qq/qq.c:229 +#: ../libpurple/protocols/qq/qq.c:232 +#: ../libpurple/protocols/qq/qq.c:236 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1091 msgid "Gender" msgstr "Kjønn" #: ../libpurple/protocols/gg/gg.c:651 msgid "Male or female" -msgstr "" +msgstr "Hankjønn eller hunkjønn" #: ../libpurple/protocols/gg/gg.c:652 -#: ../libpurple/protocols/oscar/oscar.c:3732 +#: ../libpurple/protocols/oscar/oscar.c:3728 #: ../libpurple/protocols/qq/buddy_info.c:83 #: ../libpurple/protocols/qq/qq.c:226 msgid "Male" msgstr "Hankjønn" #: ../libpurple/protocols/gg/gg.c:653 -#: ../libpurple/protocols/oscar/oscar.c:3732 +#: ../libpurple/protocols/oscar/oscar.c:3728 #: ../libpurple/protocols/qq/buddy_info.c:84 #: ../libpurple/protocols/qq/qq.c:229 msgid "Female" @@ -3922,10 +4074,10 @@ msgid "Only online" msgstr "Pålogget" -#: ../libpurple/protocols/gg/gg.c:661 ../libpurple/protocols/gg/gg.c:662 -#, fuzzy +#: ../libpurple/protocols/gg/gg.c:661 +#: ../libpurple/protocols/gg/gg.c:662 msgid "Find buddies" -msgstr "Dimme ned inaktive kontakter" +msgstr "Finn kontakter" #: ../libpurple/protocols/gg/gg.c:663 #, fuzzy @@ -3956,9 +4108,8 @@ msgstr "Passordet er endret" #: ../libpurple/protocols/gg/gg.c:770 -#, fuzzy msgid "Current password" -msgstr "Feil passord." +msgstr "Nåværende passord" # #: ../libpurple/protocols/gg/gg.c:795 @@ -3966,87 +4117,103 @@ msgid "Please, enter your current password and your new password for UIN: " msgstr "Skriv inn ditt nåværende passord og ditt nye passord." -#: ../libpurple/protocols/gg/gg.c:799 ../libpurple/protocols/gg/gg.c:800 -#, fuzzy +#: ../libpurple/protocols/gg/gg.c:799 +#: ../libpurple/protocols/gg/gg.c:800 msgid "Change Gadu-Gadu Password" -msgstr "Kunne ikke bytte Gadu-Gadu-passord" +msgstr "Endre Gadu-Gadu-passord" #: ../libpurple/protocols/gg/gg.c:876 -#, fuzzy, c-format +#, c-format msgid "Select a chat for buddy: %s" -msgstr "Fjern samtalen fra kontaktlisten din" - -#: ../libpurple/protocols/gg/gg.c:879 ../libpurple/protocols/gg/gg.c:880 +msgstr "Velg en samtale for kontakt: %s" + +#: ../libpurple/protocols/gg/gg.c:879 +#: ../libpurple/protocols/gg/gg.c:880 #, fuzzy msgid "Add to chat..." msgstr "Legg til samtalegruppe" #: ../libpurple/protocols/gg/gg.c:1008 -#: ../libpurple/protocols/jabber/buddy.c:2031 -#: ../libpurple/protocols/novell/novell.c:2828 +#: ../libpurple/protocols/jabber/buddy.c:2034 +#: ../libpurple/protocols/novell/novell.c:2833 #: ../libpurple/protocols/oscar/oscar.c:828 -#: ../libpurple/protocols/oscar/oscar.c:5604 -#: ../libpurple/protocols/qq/qq.c:170 ../libpurple/protocols/qq/qq.c:177 +#: ../libpurple/protocols/oscar/oscar.c:5602 +#: ../libpurple/protocols/qq/qq.c:170 +#: ../libpurple/protocols/qq/qq.c:177 #: ../libpurple/protocols/qq/qq.c:292 -#: ../libpurple/protocols/yahoo/yahoo.c:3099 ../libpurple/status.c:154 -#: ../pidgin/gtkblist.c:3104 ../pidgin/gtkblist.c:3436 -#: ../pidgin/gtkdocklet.c:450 ../pidgin/gtkstatusbox.c:1061 +#: ../libpurple/protocols/yahoo/yahoo.c:3098 +#: ../libpurple/status.c:154 +#: ../pidgin/gtkblist.c:3302 +#: ../pidgin/gtkblist.c:3640 +#: ../pidgin/gtkdocklet.c:450 +#: ../pidgin/gtkstatusbox.c:1061 msgid "Offline" msgstr "Avlogget" #: ../libpurple/protocols/gg/gg.c:1011 -#: ../libpurple/protocols/jabber/buddy.c:2033 -#: ../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/novell/novell.c:2816 +#: ../libpurple/protocols/jabber/buddy.c:2036 +#: ../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/novell/novell.c:2821 #: ../libpurple/protocols/qq/qq.c:280 -#: ../libpurple/protocols/yahoo/yahoo.c:3101 ../libpurple/status.c:155 -#: ../pidgin/gtkdocklet.c:438 ../pidgin/gtkstatusbox.c:1057 +#: ../libpurple/protocols/yahoo/yahoo.c:3100 +#: ../libpurple/status.c:155 +#: ../pidgin/gtkdocklet.c:438 +#: ../pidgin/gtkstatusbox.c:1057 msgid "Available" msgstr "Tilgjengelig" #. 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:1014 ../libpurple/protocols/irc/irc.c:528 +#: ../libpurple/protocols/gg/gg.c:1014 +#: ../libpurple/protocols/irc/irc.c:528 #: ../libpurple/protocols/irc/msgs.c:310 -#: ../libpurple/protocols/jabber/buddy.c:2037 -#: ../libpurple/protocols/novell/novell.c:2819 +#: ../libpurple/protocols/jabber/buddy.c:2040 +#: ../libpurple/protocols/novell/novell.c:2824 #: ../libpurple/protocols/oscar/oscar.c:733 -#: ../libpurple/protocols/oscar/oscar.c:4547 -#: ../libpurple/protocols/oscar/oscar.c:5632 -#: ../libpurple/protocols/qq/qq.c:180 ../libpurple/protocols/qq/qq.c:284 +#: ../libpurple/protocols/oscar/oscar.c:4543 +#: ../libpurple/protocols/oscar/oscar.c:5630 +#: ../libpurple/protocols/qq/qq.c:180 +#: ../libpurple/protocols/qq/qq.c:284 #: ../libpurple/protocols/silc/buddy.c:1476 #: ../libpurple/protocols/silc10/buddy.c:1476 -#: ../libpurple/protocols/yahoo/yahoo.c:3653 -#: ../libpurple/protocols/yahoo/yahoo.c:3727 ../libpurple/status.c:158 -#: ../pidgin/gtkdocklet.c:442 ../pidgin/gtkprefs.c:1939 +#: ../libpurple/protocols/yahoo/yahoo.c:3652 +#: ../libpurple/protocols/yahoo/yahoo.c:3726 +#: ../libpurple/status.c:158 +#: ../pidgin/gtkdocklet.c:442 +#: ../pidgin/gtkprefs.c:1941 #: ../pidgin/gtkstatusbox.c:1058 -#, c-format msgid "Away" msgstr "Borte" -#: ../libpurple/protocols/gg/gg.c:1043 ../libpurple/protocols/gg/gg.c:1117 -#: ../libpurple/protocols/oscar/oscar.c:2699 -#: ../libpurple/protocols/oscar/oscar.c:3699 +#: ../libpurple/protocols/gg/gg.c:1043 +#: ../libpurple/protocols/gg/gg.c:1117 +#: ../libpurple/protocols/oscar/oscar.c:2695 +#: ../libpurple/protocols/oscar/oscar.c:3695 msgid "UIN" msgstr "UIN" -#: ../libpurple/protocols/gg/gg.c:1046 ../libpurple/protocols/gg/gg.c:1120 -#: ../libpurple/protocols/jabber/buddy.c:2210 -#: ../libpurple/protocols/jabber/buddy.c:2386 -#: ../libpurple/protocols/oscar/oscar.c:3710 +#: ../libpurple/protocols/gg/gg.c:1046 +#: ../libpurple/protocols/gg/gg.c:1120 +#: ../libpurple/protocols/jabber/buddy.c:2213 +#: ../libpurple/protocols/jabber/buddy.c:2389 +#: ../libpurple/protocols/oscar/oscar.c:3706 #: ../libpurple/protocols/silc/ops.c:990 #: ../libpurple/protocols/silc10/ops.c:1024 msgid "First Name" msgstr "Fornavn" -#: ../libpurple/protocols/gg/gg.c:1059 ../libpurple/protocols/gg/gg.c:1129 +#: ../libpurple/protocols/gg/gg.c:1059 +#: ../libpurple/protocols/gg/gg.c:1129 msgid "Birth Year" msgstr "Fødselsår" -#: ../libpurple/protocols/gg/gg.c:1111 ../libpurple/protocols/gg/gg.c:1180 -#: ../libpurple/protocols/oscar/oscar.c:3911 +#: ../libpurple/protocols/gg/gg.c:1111 +#: ../libpurple/protocols/gg/gg.c:1180 +#: ../libpurple/protocols/oscar/oscar.c:3907 #, fuzzy msgid "Unable to display the search results." msgstr "Kunne ikke invitere bruker (%s)." @@ -4056,7 +4223,6 @@ msgstr "" #: ../libpurple/protocols/gg/gg.c:1172 -#, fuzzy msgid "Search results" msgstr "Søkeresultater" @@ -4070,7 +4236,8 @@ msgid "There are no users matching your search criteria." msgstr "Skriv inn ditt nye passord" -#: ../libpurple/protocols/gg/gg.c:1310 ../libpurple/protocols/gg/gg.c:1463 +#: ../libpurple/protocols/gg/gg.c:1310 +#: ../libpurple/protocols/gg/gg.c:1463 msgid "Unable to read socket" msgstr "Kunne ikke lese socket" @@ -4094,12 +4261,14 @@ msgid "Your buddy list was stored on the server." msgstr "Det er ingen kontaktliste på Gadu-Gadu-tjeneren." -#: ../libpurple/protocols/gg/gg.c:1509 ../libpurple/protocols/gg/gg.c:1715 +#: ../libpurple/protocols/gg/gg.c:1509 +#: ../libpurple/protocols/gg/gg.c:1715 #, fuzzy msgid "Connection failed." msgstr "Tilkopling feilet" -#: ../libpurple/protocols/gg/gg.c:1621 ../libpurple/protocols/msn/msn.c:559 +#: ../libpurple/protocols/gg/gg.c:1621 +#: ../libpurple/protocols/msn/msn.c:621 msgid "Blocked" msgstr "Blokkert" @@ -4138,14 +4307,12 @@ msgstr "Du har blitt koblet fra tjeneren." #: ../libpurple/protocols/gg/gg.c:2021 -#, fuzzy msgid "Find buddies..." -msgstr "Dimme ned inaktive kontakter" +msgstr "Finn kontakter..." #: ../libpurple/protocols/gg/gg.c:2027 -#, fuzzy msgid "Change password..." -msgstr "Bytt passord..." +msgstr "Endre passord..." #: ../libpurple/protocols/gg/gg.c:2033 #, fuzzy @@ -4224,9 +4391,8 @@ #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:269 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:278 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:287 -#, fuzzy msgid "File Transfer Failed" -msgstr "Filoverføring avbrutt." +msgstr "Filoverføring feilet" #: ../libpurple/protocols/irc/dcc_send.c:297 #: ../libpurple/protocols/irc/dcc_send.c:338 @@ -4251,9 +4417,11 @@ msgid "MOTD for %s" msgstr "MOTD for %s" -#: ../libpurple/protocols/irc/irc.c:127 ../libpurple/protocols/irc/irc.c:165 -#: ../libpurple/protocols/irc/irc.c:612 ../libpurple/protocols/irc/irc.c:637 -#: ../libpurple/protocols/myspace/myspace.c:2356 +#: ../libpurple/protocols/irc/irc.c:127 +#: ../libpurple/protocols/irc/irc.c:165 +#: ../libpurple/protocols/irc/irc.c:612 +#: ../libpurple/protocols/irc/irc.c:637 +#: ../libpurple/protocols/myspace/myspace.c:2354 msgid "Server has disconnected" msgstr "Tjeneren har koplet fra" @@ -4261,13 +4429,15 @@ msgid "View MOTD" msgstr "Vis MOTD" -#: ../libpurple/protocols/irc/irc.c:261 ../libpurple/protocols/silc/chat.c:33 +#: ../libpurple/protocols/irc/irc.c:261 +#: ../libpurple/protocols/silc/chat.c:33 #: ../libpurple/protocols/silc10/chat.c:33 msgid "_Channel:" msgstr "_Kanal:" #: ../libpurple/protocols/irc/irc.c:267 -#: ../libpurple/protocols/jabber/chat.c:59 ../pidgin/gtkaccount.c:524 +#: ../libpurple/protocols/jabber/chat.c:59 +#: ../pidgin/gtkaccount.c:524 msgid "_Password:" msgstr "_Passord" @@ -4279,15 +4449,16 @@ #. connect to the server #: ../libpurple/protocols/irc/irc.c:319 #: ../libpurple/protocols/jabber/jabber.c:1280 -#: ../libpurple/protocols/msn/session.c:345 -#: ../libpurple/protocols/myspace/myspace.c:301 -#: ../libpurple/protocols/novell/novell.c:2182 +#: ../libpurple/protocols/msn/session.c:384 +#: ../libpurple/protocols/myspace/myspace.c:302 +#: ../libpurple/protocols/novell/novell.c:2187 #: ../libpurple/protocols/oscar/oscar.c:1287 #: ../libpurple/protocols/qq/qq.c:136 #: ../libpurple/protocols/sametime/sametime.c:3723 -#: ../libpurple/protocols/simple/simple.c:1716 -#: ../libpurple/protocols/yahoo/yahoo.c:2939 -#: ../libpurple/protocols/zephyr/zephyr.c:1621 ../pidgin/gtkstatusbox.c:662 +#: ../libpurple/protocols/simple/simple.c:1718 +#: ../libpurple/protocols/yahoo/yahoo.c:2938 +#: ../libpurple/protocols/zephyr/zephyr.c:1621 +#: ../pidgin/gtkstatusbox.c:662 msgid "Connecting" msgstr "Kobler til" @@ -4300,20 +4471,21 @@ #. TODO: try other ports if in auto mode, then save #. * working port and try that first next time. #: ../libpurple/protocols/irc/irc.c:338 -#: ../libpurple/protocols/myspace/myspace.c:317 +#: ../libpurple/protocols/myspace/myspace.c:318 #: ../libpurple/protocols/simple/simple.c:464 -#: ../libpurple/protocols/simple/simple.c:1631 +#: ../libpurple/protocols/simple/simple.c:1633 msgid "Couldn't create socket" msgstr "Kunne ikke opprette socket" #: ../libpurple/protocols/irc/irc.c:421 -#: ../libpurple/protocols/myspace/myspace.c:2469 +#: ../libpurple/protocols/myspace/myspace.c:2467 #: ../libpurple/protocols/oscar/oscar.c:1283 msgid "Couldn't connect to host" msgstr "Kunne ikke koble til" -#: ../libpurple/protocols/irc/irc.c:609 ../libpurple/protocols/irc/irc.c:634 -#: ../libpurple/protocols/myspace/myspace.c:2352 +#: ../libpurple/protocols/irc/irc.c:609 +#: ../libpurple/protocols/irc/irc.c:634 +#: ../libpurple/protocols/myspace/myspace.c:2350 msgid "Read error" msgstr "Lesefeil" @@ -4352,23 +4524,25 @@ msgstr "IRC-protokolltillegg" #. host to connect to -#: ../libpurple/protocols/irc/irc.c:940 ../libpurple/protocols/irc/msgs.c:323 -#: ../libpurple/protocols/msn/msn.c:2185 -#: ../libpurple/protocols/oscar/oscar.c:6671 +#: ../libpurple/protocols/irc/irc.c:940 +#: ../libpurple/protocols/irc/msgs.c:323 +#: ../libpurple/protocols/msn/msn.c:2297 +#: ../libpurple/protocols/oscar/oscar.c:6669 #: ../libpurple/protocols/qq/qq.c:755 #: ../libpurple/protocols/sametime/sametime.c:5727 #: ../libpurple/protocols/silc/ops.c:1249 #: ../libpurple/protocols/silc/ops.c:1341 #: ../libpurple/protocols/silc10/ops.c:1244 #: ../libpurple/protocols/silc10/ops.c:1347 -#: ../libpurple/protocols/simple/simple.c:1896 +#: ../libpurple/protocols/simple/simple.c:1898 #: ../libpurple/protocols/toc/toc.c:2327 msgid "Server" msgstr "Tjener" #. port to connect to -#: ../libpurple/protocols/irc/irc.c:943 ../libpurple/protocols/msn/msn.c:2190 -#: ../libpurple/protocols/oscar/oscar.c:6674 +#: ../libpurple/protocols/irc/irc.c:943 +#: ../libpurple/protocols/msn/msn.c:2302 +#: ../libpurple/protocols/oscar/oscar.c:6672 #: ../libpurple/protocols/qq/qq.c:758 #: ../libpurple/protocols/sametime/sametime.c:5732 #: ../libpurple/protocols/silc/silc.c:1918 @@ -4381,7 +4555,8 @@ msgid "Encodings" msgstr "Tegnkodinger:" -#: ../libpurple/protocols/irc/irc.c:949 ../libpurple/protocols/irc/msgs.c:316 +#: ../libpurple/protocols/irc/irc.c:949 +#: ../libpurple/protocols/irc/msgs.c:316 #: ../libpurple/protocols/jabber/jabber.c:904 #: ../libpurple/protocols/jabber/jabber.c:907 #: ../libpurple/protocols/silc/buddy.c:1539 @@ -4399,7 +4574,8 @@ msgid "Username" msgstr "Brukernavn" -#: ../libpurple/protocols/irc/irc.c:952 ../libpurple/protocols/irc/msgs.c:317 +#: ../libpurple/protocols/irc/irc.c:952 +#: ../libpurple/protocols/irc/msgs.c:317 #: ../libpurple/protocols/silc/silc.c:1009 #: ../libpurple/protocols/silc10/silc.c:920 msgid "Real name" @@ -4410,9 +4586,8 @@ #. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); #. #: ../libpurple/protocols/irc/irc.c:960 -#, fuzzy msgid "Use SSL" -msgstr "SSL" +msgstr "Bruk SSL" #: ../libpurple/protocols/irc/msgs.c:187 msgid "Bad mode" @@ -4441,7 +4616,7 @@ msgstr " (registrert)" #: ../libpurple/protocols/irc/msgs.c:303 -#: ../libpurple/protocols/oscar/oscar.c:3700 +#: ../libpurple/protocols/oscar/oscar.c:3696 #: ../libpurple/protocols/silc/ops.c:1418 #: ../libpurple/protocols/silc10/ops.c:1414 msgid "Nick" @@ -4454,9 +4629,8 @@ msgstr "Pålogget på" #: ../libpurple/protocols/irc/msgs.c:334 -#, fuzzy msgid "Idle for" -msgstr "Inaktiv" +msgstr "Inaktiv for" #: ../libpurple/protocols/irc/msgs.c:337 msgid "Online since" @@ -4474,17 +4648,17 @@ #: ../libpurple/protocols/irc/msgs.c:420 #, c-format msgid "%s has changed the topic to: %s" -msgstr "%s har endret kanaltema til: %s" +msgstr "%s har endret temaet til: %s" #: ../libpurple/protocols/irc/msgs.c:422 #, fuzzy, c-format msgid "%s has cleared the topic." -msgstr "%s har endret kanaltema til: %s" +msgstr "%s har endret tema til: %s" #: ../libpurple/protocols/irc/msgs.c:430 #, c-format msgid "The topic for %s is: %s" -msgstr "Kanaltema for %s er %s" +msgstr "Temaet for %s er: %s" #: ../libpurple/protocols/irc/msgs.c:448 #, c-format @@ -4551,7 +4725,8 @@ msgstr "Du har blitt sparket ut fra %s: %s" #. Remove user from channel -#: ../libpurple/protocols/irc/msgs.c:800 ../libpurple/protocols/silc/ops.c:699 +#: ../libpurple/protocols/irc/msgs.c:800 +#: ../libpurple/protocols/silc/ops.c:699 #: ../libpurple/protocols/silc10/ops.c:720 #, c-format msgid "Kicked by %s (%s)" @@ -4562,26 +4737,19 @@ msgid "mode (%s %s) by %s" msgstr "mode (%s %s) av %s" -#: ../libpurple/protocols/irc/msgs.c:908 ../libpurple/protocols/irc/msgs.c:909 +#: ../libpurple/protocols/irc/msgs.c:908 +#: ../libpurple/protocols/irc/msgs.c:909 msgid "Invalid nickname" msgstr "Ugyldig brukernavn" #: ../libpurple/protocols/irc/msgs.c:910 #, fuzzy -msgid "" -"Your selected nickname 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 kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn." #: ../libpurple/protocols/irc/msgs.c:915 -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 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." #: ../libpurple/protocols/irc/msgs.c:954 msgid "Cannot change nick" @@ -4632,12 +4800,8 @@ #: ../libpurple/protocols/irc/parse.c:123 #, fuzzy -msgid "" -"away [message]: Set an away message, or use no message to return from being " -"away." -msgstr "" -"fraværende [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 "fraværende [melding]: Sett en melding som skal vises når du er fraværende, eller ikke sett noen for å returnere." #: ../libpurple/protocols/irc/parse.c:124 #, fuzzy @@ -4645,62 +4809,32 @@ msgstr "quote [...]: Send en rå kommando til serveren." #: ../libpurple/protocols/irc/parse.c:125 -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 "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." #: ../libpurple/protocols/irc/parse.c:126 -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 "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." #: ../libpurple/protocols/irc/parse.c:127 -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 "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." #: ../libpurple/protocols/irc/parse.c:128 -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 "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." #: ../libpurple/protocols/irc/parse.c:129 -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 "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." #: ../libpurple/protocols/irc/parse.c:130 -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 "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." #: ../libpurple/protocols/irc/parse.c:131 -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å et nettverk.Advarsel, noen servere " -"kan disconnecte om du gjør 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å et nettverk.Advarsel, noen servere kan disconnecte om du gjør dette." #: ../libpurple/protocols/irc/parse.c:132 msgid "me <action to perform>: Perform an action." @@ -4712,26 +4846,19 @@ msgstr "quote [...]: Send en rå kommando til serveren." #: ../libpurple/protocols/irc/parse.c:134 -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 "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." #: ../libpurple/protocols/irc/parse.c:135 -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 "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." #: ../libpurple/protocols/irc/parse.c:136 msgid "names [channel]: List the users currently in a channel." msgstr "names [channel]: Vis brukere i denne kanalen." #: ../libpurple/protocols/irc/parse.c:137 -#: ../libpurple/protocols/jabber/jabber.c:2261 +#: ../libpurple/protocols/jabber/jabber.c:2299 msgid "nick <new nickname>: Change your nickname." msgstr "nick <new nickname>: Skift nick." @@ -4741,20 +4868,12 @@ msgstr "quote [...]: Send en rå kommando til serveren." #: ../libpurple/protocols/irc/parse.c:139 -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 "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." #: ../libpurple/protocols/irc/parse.c:140 -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 "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." #: ../libpurple/protocols/irc/parse.c:141 #, fuzzy @@ -4762,26 +4881,16 @@ msgstr "quote [...]: Send en rå kommando til serveren." #: ../libpurple/protocols/irc/parse.c:142 -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 "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." #: ../libpurple/protocols/irc/parse.c:143 -msgid "" -"ping [nick]: Asks how much lag a user (or the server if no user specified) " -"has." +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." #: ../libpurple/protocols/irc/parse.c:144 -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)." #: ../libpurple/protocols/irc/parse.c:145 msgid "quit [message]: Disconnect from the server, with an optional message." @@ -4792,12 +4901,8 @@ msgstr "quote [...]: Send en rå kommando til serveren." #: ../libpurple/protocols/irc/parse.c:147 -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." #: ../libpurple/protocols/irc/parse.c:148 msgid "time: Displays the current local time at the IRC server." @@ -4816,20 +4921,12 @@ msgstr "" #: ../libpurple/protocols/irc/parse.c:152 -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 "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." #: ../libpurple/protocols/irc/parse.c:153 -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 "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." #: ../libpurple/protocols/irc/parse.c:154 msgid "whois [server] <nick>: Get information on a user." @@ -4854,8 +4951,10 @@ msgstr "CTCP PING-svar" #: ../libpurple/protocols/irc/parse.c:577 -#: ../libpurple/protocols/irc/parse.c:581 ../libpurple/protocols/toc/toc.c:191 -#: ../libpurple/protocols/toc/toc.c:694 ../libpurple/protocols/toc/toc.c:710 +#: ../libpurple/protocols/irc/parse.c:581 +#: ../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 "Frakoblet." @@ -4873,32 +4972,24 @@ msgid "Ad-Hoc Command Failed" msgstr "Kommando deaktivert" -#: ../libpurple/protocols/jabber/adhoccommands.c:173 +#: ../libpurple/protocols/jabber/adhoccommands.c:176 #, fuzzy msgid "execute" msgstr "Uventet" #: ../libpurple/protocols/jabber/auth.c:53 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." #: ../libpurple/protocols/jabber/auth.c:116 msgid "Server requires plaintext authentication over an unencrypted stream" -msgstr "" -"Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert " -"forbindelse" +msgstr "Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert forbindelse" #: ../libpurple/protocols/jabber/auth.c:319 #: ../libpurple/protocols/jabber/auth.c:508 #, fuzzy, c-format -msgid "" -"%s requires plaintext authentication over an unencrypted connection. Allow " -"this and continue authentication?" -msgstr "" -"Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert " -"forbindelse. Tillat dette og fortsett identitetsbekreftelse?" +msgid "%s requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?" +msgstr "Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert forbindelse. Tillat dette og fortsett identitetsbekreftelse?" #: ../libpurple/protocols/jabber/auth.c:321 #: ../libpurple/protocols/jabber/auth.c:322 @@ -4927,12 +5018,8 @@ msgstr "Ugyldig svar fra tjener." #: ../libpurple/protocols/jabber/auth.c:600 -msgid "" -"This server requires plaintext authentication over an unencrypted " -"connection. Allow this and continue authentication?" -msgstr "" -"Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert " -"forbindelse. Tillat dette og fortsett identitetsbekreftelse?" +msgid "This server requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?" +msgstr "Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert forbindelse. Tillat dette og fortsett identitetsbekreftelse?" #: ../libpurple/protocols/jabber/auth.c:797 #: ../libpurple/protocols/jabber/auth.c:820 @@ -5024,15 +5111,16 @@ #: ../libpurple/protocols/jabber/buddy.c:300 #: ../libpurple/protocols/jabber/buddy.c:1250 -#: ../libpurple/protocols/msn/msn.c:1658 -#: ../libpurple/protocols/oscar/oscar.c:3749 +#: ../libpurple/protocols/msn/msn.c:1768 +#: ../libpurple/protocols/oscar/oscar.c:3745 msgid "Birthday" msgstr "Fødselsdag" #: ../libpurple/protocols/jabber/buddy.c:301 #: ../libpurple/protocols/jabber/buddy.c:1365 #: ../libpurple/protocols/jabber/chat.c:775 -#: ../libpurple/protocols/jabber/usermood.c:175 ../pidgin/gtkblist.c:3116 +#: ../libpurple/protocols/jabber/usermood.c:175 +#: ../pidgin/gtkblist.c:3314 #: ../pidgin/gtkprefs.c:739 msgid "Description" msgstr "Beskrivelse" @@ -5044,24 +5132,18 @@ msgstr "Rediger vCard for Jabber" #: ../libpurple/protocols/jabber/buddy.c:724 -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" #: ../libpurple/protocols/jabber/buddy.c:795 #: ../libpurple/protocols/jabber/buddy.c:960 -#, fuzzy msgid "Client" -msgstr "By" +msgstr "Klient" #: ../libpurple/protocols/jabber/buddy.c:799 #: ../libpurple/protocols/jabber/buddy.c:964 -#, fuzzy msgid "Operating System" -msgstr "Skjul operativsystem" +msgstr "Operativsystem" #: ../libpurple/protocols/jabber/buddy.c:815 #: ../libpurple/protocols/jabber/buddy.c:975 @@ -5351,7 +5433,7 @@ #: ../libpurple/protocols/jabber/buddy.c:921 #: ../libpurple/protocols/jabber/buddy.c:1081 -#: ../libpurple/protocols/oscar/oscar.c:2906 +#: ../libpurple/protocols/oscar/oscar.c:2902 msgid "Capabilities" msgstr "Evner" @@ -5367,9 +5449,8 @@ #: ../libpurple/protocols/jabber/jabber.c:1577 #: ../libpurple/protocols/jabber/jabber.c:1600 #: ../libpurple/protocols/jabber/jabber.c:1623 -#, fuzzy msgid "Priority" -msgstr "Port" +msgstr "Prioritet" #: ../libpurple/protocols/jabber/buddy.c:1237 #: ../libpurple/protocols/silc/ops.c:994 @@ -5379,8 +5460,8 @@ #: ../libpurple/protocols/jabber/buddy.c:1270 #: ../libpurple/protocols/jabber/jabber.c:952 -#: ../libpurple/protocols/oscar/oscar.c:3788 -#: ../libpurple/protocols/oscar/oscar.c:3801 +#: ../libpurple/protocols/oscar/oscar.c:3784 +#: ../libpurple/protocols/oscar/oscar.c:3797 #: ../libpurple/protocols/qq/buddy_info.c:56 #: ../libpurple/protocols/silc/ops.c:1030 #: ../libpurple/protocols/silc10/ops.c:1064 @@ -5399,118 +5480,111 @@ msgid "Logo" msgstr "Logo" -#: ../libpurple/protocols/jabber/buddy.c:1942 +#: ../libpurple/protocols/jabber/buddy.c:1945 msgid "Un-hide From" msgstr "Fjern fraværsmarkering for" -#: ../libpurple/protocols/jabber/buddy.c:1946 +#: ../libpurple/protocols/jabber/buddy.c:1949 msgid "Temporarily Hide From" msgstr "Midlertidig borte for" #. && NOT ME -#: ../libpurple/protocols/jabber/buddy.c:1954 +#: ../libpurple/protocols/jabber/buddy.c:1957 msgid "Cancel Presence Notification" msgstr "Avbryt varsling av tilstedeværelse" -#: ../libpurple/protocols/jabber/buddy.c:1961 +#: ../libpurple/protocols/jabber/buddy.c:1964 msgid "(Re-)Request authorization" msgstr "Spør på nytt om godkjenning" #. if(NOT ME) #. shouldn't this just happen automatically when the buddy is #. removed? -#: ../libpurple/protocols/jabber/buddy.c:1970 +#: ../libpurple/protocols/jabber/buddy.c:1973 msgid "Unsubscribe" msgstr "Fjern abonnement" -#: ../libpurple/protocols/jabber/buddy.c:1985 -#, fuzzy +#: ../libpurple/protocols/jabber/buddy.c:1988 msgid "Log In" -msgstr "Innlogging" - -#: ../libpurple/protocols/jabber/buddy.c:1989 -#, fuzzy +msgstr "Logg inn" + +#: ../libpurple/protocols/jabber/buddy.c:1992 msgid "Log Out" -msgstr "Logget ut" - -#: ../libpurple/protocols/jabber/buddy.c:2035 +msgstr "Logg ut" + +#: ../libpurple/protocols/jabber/buddy.c:2038 #: ../libpurple/protocols/jabber/jabber.c:1553 msgid "Chatty" msgstr "Pratsom" -#: ../libpurple/protocols/jabber/buddy.c:2039 +#: ../libpurple/protocols/jabber/buddy.c:2042 msgid "Extended Away" msgstr "Utvidet borte" -#: ../libpurple/protocols/jabber/buddy.c:2041 +#: ../libpurple/protocols/jabber/buddy.c:2044 #: ../libpurple/protocols/jabber/jabber.c:1622 #: ../libpurple/protocols/oscar/oscar.c:727 -#: ../libpurple/protocols/oscar/oscar.c:5808 +#: ../libpurple/protocols/oscar/oscar.c:5806 #: ../libpurple/protocols/sametime/sametime.c:3297 -#, c-format msgid "Do Not Disturb" msgstr "Ikke forstyrr" -#: ../libpurple/protocols/jabber/buddy.c:2208 +#: ../libpurple/protocols/jabber/buddy.c:2211 msgid "JID" msgstr "" -#: ../libpurple/protocols/jabber/buddy.c:2212 -#: ../libpurple/protocols/jabber/buddy.c:2391 -#: ../libpurple/protocols/oscar/oscar.c:3711 +#: ../libpurple/protocols/jabber/buddy.c:2215 +#: ../libpurple/protocols/jabber/buddy.c:2394 +#: ../libpurple/protocols/oscar/oscar.c:3707 msgid "Last Name" msgstr "Etternavn" -#: ../libpurple/protocols/jabber/buddy.c:2244 +#: ../libpurple/protocols/jabber/buddy.c:2247 msgid "The following are the results of your search" msgstr "Følgende resultat fra ditt søk" #. current comment from Jabber User Directory users.jabber.org -#: ../libpurple/protocols/jabber/buddy.c:2319 -msgid "" -"Find a contact by entering the search criteria in the given fields. Note: " -"Each field supports wild card searches (%)" -msgstr "" - -#: ../libpurple/protocols/jabber/buddy.c:2339 +#: ../libpurple/protocols/jabber/buddy.c:2322 +msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)" +msgstr "" + +#: ../libpurple/protocols/jabber/buddy.c:2342 #, fuzzy msgid "Directory Query Failed" msgstr "Direktekopling feilet" -#: ../libpurple/protocols/jabber/buddy.c:2340 +#: ../libpurple/protocols/jabber/buddy.c:2343 #, fuzzy msgid "Could not query the directory server." msgstr "Kunne ikke starte filoverføring" #. Try to translate the message (see static message #. list in jabber_user_dir_comments[]) -#: ../libpurple/protocols/jabber/buddy.c:2374 +#: ../libpurple/protocols/jabber/buddy.c:2377 #, fuzzy, c-format msgid "Server Instructions: %s" msgstr "Tjenerinformasjon" -#: ../libpurple/protocols/jabber/buddy.c:2381 +#: ../libpurple/protocols/jabber/buddy.c:2384 #, fuzzy msgid "Fill in one or more fields to search for any matching XMPP users." -msgstr "" -"Fyll inn ett eller flere felt for å søke etter matchende Jabber brukere." - -#: ../libpurple/protocols/jabber/buddy.c:2401 -#: ../libpurple/protocols/novell/novell.c:1488 -#: ../libpurple/protocols/oscar/oscar.c:3714 -#: ../libpurple/protocols/oscar/oscar.c:3723 +msgstr "Fyll inn ett eller flere felt for å søke etter matchende Jabber brukere." + +#: ../libpurple/protocols/jabber/buddy.c:2404 +#: ../libpurple/protocols/novell/novell.c:1490 +#: ../libpurple/protocols/oscar/oscar.c:3710 +#: ../libpurple/protocols/oscar/oscar.c:3719 msgid "E-Mail Address" msgstr "E-postadresse" # -#: ../libpurple/protocols/jabber/buddy.c:2410 -#: ../libpurple/protocols/jabber/buddy.c:2411 -#, fuzzy +#: ../libpurple/protocols/jabber/buddy.c:2413 +#: ../libpurple/protocols/jabber/buddy.c:2414 msgid "Search for XMPP users" -msgstr "_Søk etter:" +msgstr "Søk etter XMPP-brukere" #. "Search" -#: ../libpurple/protocols/jabber/buddy.c:2412 +#: ../libpurple/protocols/jabber/buddy.c:2415 #: ../libpurple/protocols/qq/group.c:123 #: ../libpurple/protocols/qq/group_im.c:147 #: ../libpurple/protocols/qq/sys_msg.c:174 @@ -5522,29 +5596,29 @@ msgid "Search" msgstr "Søk" -#: ../libpurple/protocols/jabber/buddy.c:2427 +#: ../libpurple/protocols/jabber/buddy.c:2430 #, fuzzy msgid "Invalid Directory" msgstr "Ugyldig feil" -#: ../libpurple/protocols/jabber/buddy.c:2444 +#: ../libpurple/protocols/jabber/buddy.c:2447 #, fuzzy msgid "Enter a User Directory" msgstr "Kan ikke sende en katalog." -#: ../libpurple/protocols/jabber/buddy.c:2445 +#: ../libpurple/protocols/jabber/buddy.c:2448 #, fuzzy msgid "Select a user directory to search" msgstr "Velg en konferanseserver å spørre" # -#: ../libpurple/protocols/jabber/buddy.c:2448 +#: ../libpurple/protocols/jabber/buddy.c:2451 #, fuzzy msgid "Search Directory" msgstr "_Søk etter:" #: ../libpurple/protocols/jabber/chat.c:41 -#: ../libpurple/protocols/oscar/oscar.c:5294 +#: ../libpurple/protocols/oscar/oscar.c:5290 #: ../libpurple/protocols/yahoo/yahoochat.c:1048 msgid "_Room:" msgstr "_Rom:" @@ -5660,9 +5734,9 @@ msgstr "Lesefeil" #: ../libpurple/protocols/jabber/jabber.c:482 -#: ../libpurple/protocols/oscar/flap_connection.c:394 -#: ../libpurple/protocols/yahoo/yahoo.c:2558 -#: ../libpurple/protocols/yahoo/yahoo.c:2590 +#: ../libpurple/protocols/oscar/flap_connection.c:396 +#: ../libpurple/protocols/yahoo/yahoo.c:2557 +#: ../libpurple/protocols/yahoo/yahoo.c:2589 #, c-format msgid "" "Could not establish a connection with the server:\n" @@ -5726,13 +5800,12 @@ msgstr "Du er allerede registrert" #: ../libpurple/protocols/jabber/jabber.c:962 -#: ../libpurple/protocols/oscar/oscar.c:3790 -#: ../libpurple/protocols/oscar/oscar.c:3803 +#: ../libpurple/protocols/oscar/oscar.c:3786 +#: ../libpurple/protocols/oscar/oscar.c:3799 msgid "State" msgstr "Fylke/stat" #: ../libpurple/protocols/jabber/jabber.c:967 -#, fuzzy msgid "Postal code" msgstr "Postnummer" @@ -5757,8 +5830,7 @@ #: ../libpurple/protocols/jabber/jabber.c:994 #, fuzzy -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 å registrere den nye kontoen din." #: ../libpurple/protocols/jabber/jabber.c:997 @@ -5813,7 +5885,7 @@ msgstr "Nullstiller datastrøm" #: ../libpurple/protocols/jabber/jabber.c:1293 -#: ../libpurple/protocols/msn/session.c:351 +#: ../libpurple/protocols/msn/session.c:390 msgid "Authenticating" msgstr "Autentiserer" @@ -5826,7 +5898,7 @@ #: ../libpurple/protocols/jabber/jabber.c:1909 #: ../libpurple/protocols/jabber/jabber.c:1945 #: ../libpurple/protocols/oscar/oscar.c:826 -#: ../libpurple/protocols/oscar/oscar.c:5602 +#: ../libpurple/protocols/oscar/oscar.c:5600 msgid "Not Authorized" msgstr "Ikke godkjent" @@ -5991,16 +6063,15 @@ #: ../libpurple/protocols/jabber/jabber.c:1734 #: ../libpurple/protocols/jabber/jabber.c:1735 -#, fuzzy msgid "Change XMPP Password" -msgstr "Bytt passord" +msgstr "Endre XMPP-passord" #: ../libpurple/protocols/jabber/jabber.c:1735 msgid "Please enter your new password" msgstr "Skriv inn ditt nye passord" #: ../libpurple/protocols/jabber/jabber.c:1749 -#: ../libpurple/protocols/oscar/oscar.c:6388 +#: ../libpurple/protocols/oscar/oscar.c:6386 #: ../libpurple/protocols/silc/silc.c:1093 #: ../libpurple/protocols/silc10/silc.c:1004 msgid "Set User Info..." @@ -6008,7 +6079,7 @@ #. if (js->protocol_options & CHANGE_PASSWORD) { #: ../libpurple/protocols/jabber/jabber.c:1754 -#: ../libpurple/protocols/oscar/oscar.c:6399 +#: ../libpurple/protocols/oscar/oscar.c:6397 #: ../libpurple/protocols/silc/silc.c:1089 #: ../libpurple/protocols/silc10/silc.c:1000 msgid "Change Password..." @@ -6017,9 +6088,8 @@ # #. } #: ../libpurple/protocols/jabber/jabber.c:1759 -#, fuzzy msgid "Search for Users..." -msgstr "_Søk etter:" +msgstr "Søk etter brukere..." #: ../libpurple/protocols/jabber/jabber.c:1845 msgid "Bad Request" @@ -6273,69 +6343,80 @@ msgid "Unable to buzz, because the user %s does not support it." msgstr "Kunne ikke spille av lyd fordi lydfilen (%s) ikke eksisterer." -#: ../libpurple/protocols/jabber/jabber.c:2253 +#: ../libpurple/protocols/jabber/jabber.c:2250 +#: ../libpurple/protocols/yahoo/yahoo.c:4118 +#, fuzzy +msgid "Buzz" +msgstr "Buzz!!" + +#: ../libpurple/protocols/jabber/jabber.c:2251 +#: ../libpurple/protocols/jabber/message.c:307 +#: ../libpurple/protocols/yahoo/yahoo.c:4119 +#, fuzzy, c-format +msgid "%s has buzzed you!" +msgstr "Brukeren har blokkert deg" + +#: ../libpurple/protocols/jabber/jabber.c:2252 +#: ../libpurple/protocols/yahoo/yahoo.c:4120 +#, c-format +msgid "Buzzing %s..." +msgstr "" + +#: ../libpurple/protocols/jabber/jabber.c:2291 msgid "config: Configure a chat room." msgstr "config: Endre innstillingene for et samtalerom" -#: ../libpurple/protocols/jabber/jabber.c:2257 +#: ../libpurple/protocols/jabber/jabber.c:2295 msgid "configure: Configure a chat room." msgstr "configure: Endre innstillingene for et samtalerom" -#: ../libpurple/protocols/jabber/jabber.c:2266 +#: ../libpurple/protocols/jabber/jabber.c:2304 msgid "part [room]: Leave the room." msgstr "part [rom]: Forlat rommet" -#: ../libpurple/protocols/jabber/jabber.c:2271 +#: ../libpurple/protocols/jabber/jabber.c:2309 msgid "register: Register with a chat room." msgstr "register: Registrer med et gruppesamtalerom." -#: ../libpurple/protocols/jabber/jabber.c:2277 +#: ../libpurple/protocols/jabber/jabber.c:2315 msgid "topic [new topic]: View or change the topic." msgstr "topic [nytt emne]: Vis eller endre emnet" -#: ../libpurple/protocols/jabber/jabber.c:2283 +#: ../libpurple/protocols/jabber/jabber.c:2321 msgid "ban <user> [room]: Ban a user from the room." msgstr "ban <bruker> [rom]: Forby en bruker fra rommet" -#: ../libpurple/protocols/jabber/jabber.c:2289 -msgid "" -"affiliate <user> <owner|admin|member|outcast|none>: Set a user's " -"affiliation with the room." -msgstr "" - -#: ../libpurple/protocols/jabber/jabber.c:2295 -msgid "" -"role <user> <moderator|participant|visitor|none>: Set a user's " -"role in the room." -msgstr "" - -#: ../libpurple/protocols/jabber/jabber.c:2301 +#: ../libpurple/protocols/jabber/jabber.c:2327 +msgid "affiliate <user> <owner|admin|member|outcast|none>: Set a user's affiliation with the room." +msgstr "" + +#: ../libpurple/protocols/jabber/jabber.c:2333 +msgid "role <user> <moderator|participant|visitor|none>: Set a user's role in the room." +msgstr "" + +#: ../libpurple/protocols/jabber/jabber.c:2339 #, fuzzy msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <bruker> [rom]: Inviter en bruker til rommet" -#: ../libpurple/protocols/jabber/jabber.c:2307 +#: ../libpurple/protocols/jabber/jabber.c:2345 msgid "join: <room> [server]: Join a chat on this server." -msgstr "" -"join: <rom> [vert]: Bli med i en gruppesamtale på denne serveren" - -#: ../libpurple/protocols/jabber/jabber.c:2313 +msgstr "join: <rom> [vert]: Bli med i en gruppesamtale på denne serveren" + +#: ../libpurple/protocols/jabber/jabber.c:2351 msgid "kick <user> [room]: Kick a user from the room." msgstr "kick <bruker> [rom]: Spark en bruker ut av rommet" -#: ../libpurple/protocols/jabber/jabber.c:2318 -msgid "" -"msg <user> <message>: Send a private message to another user." -msgstr "" -"msg <bruker> <melding>: Send en privatmelding til en annen " -"bruker" - -#: ../libpurple/protocols/jabber/jabber.c:2324 +#: ../libpurple/protocols/jabber/jabber.c:2356 +msgid "msg <user> <message>: Send a private message to another user." +msgstr "msg <bruker> <melding>: Send en privatmelding til en annen bruker" + +#: ../libpurple/protocols/jabber/jabber.c:2362 msgid "ping <jid>:\tPing a user/component/server." msgstr "" -#: ../libpurple/protocols/jabber/jabber.c:2329 -#: ../libpurple/protocols/yahoo/yahoo.c:4145 +#: ../libpurple/protocols/jabber/jabber.c:2367 +#: ../libpurple/protocols/yahoo/yahoo.c:4144 #, fuzzy msgid "buzz: Buzz a user to get their attention" msgstr "buzz: Buzz en kontakt for å få deres oppmerksomhet" @@ -6358,15 +6439,14 @@ # #. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im -#: ../libpurple/protocols/jabber/libxmpp.c:202 ../pidgin/gtkaccount.c:506 -#, fuzzy +#: ../libpurple/protocols/jabber/libxmpp.c:202 +#: ../pidgin/gtkaccount.c:506 msgid "Domain" -msgstr "Rumensk" +msgstr "Domene" #: ../libpurple/protocols/jabber/libxmpp.c:210 -#, fuzzy msgid "Require SSL/TLS" -msgstr "Krev TLS" +msgstr "Krever SSL/TLS" #: ../libpurple/protocols/jabber/libxmpp.c:214 #, fuzzy @@ -6378,8 +6458,8 @@ msgstr "Tillat identitetsbekreftelse i ren tekst over ukrypterte forbindelser" #: ../libpurple/protocols/jabber/libxmpp.c:224 -#: ../libpurple/protocols/myspace/myspace.c:3277 -#: ../libpurple/protocols/simple/simple.c:1902 +#: ../libpurple/protocols/myspace/myspace.c:3275 +#: ../libpurple/protocols/simple/simple.c:1904 #, fuzzy msgid "Connect port" msgstr "Koble til" @@ -6388,9 +6468,10 @@ #. * able to set the first port to try (like LastConnectedPort in Windows client). #. Account options #: ../libpurple/protocols/jabber/libxmpp.c:228 -#: ../libpurple/protocols/myspace/myspace.c:3274 +#: ../libpurple/protocols/myspace/myspace.c:3272 #: ../libpurple/protocols/silc/silc.c:1914 -#: ../libpurple/protocols/silc10/silc.c:1857 ../pidgin/gtkaccount.c:837 +#: ../libpurple/protocols/silc10/silc.c:1857 +#: ../pidgin/gtkaccount.c:837 msgid "Connect server" msgstr "Koble til tjener" @@ -6424,12 +6505,6 @@ msgid "XMPP Message Error" msgstr "Jabber beskjedfeil" -#: ../libpurple/protocols/jabber/message.c:307 -#: ../libpurple/protocols/yahoo/yahoo.c:4120 -#, fuzzy, c-format -msgid "%s has buzzed you!" -msgstr "Brukeren har blokkert deg" - #: ../libpurple/protocols/jabber/message.c:407 #, c-format msgid " (Code %s)" @@ -6439,39 +6514,34 @@ msgid "XML Parse error" msgstr "XML-parsefeil" -#: ../libpurple/protocols/jabber/presence.c:427 +#: ../libpurple/protocols/jabber/presence.c:422 msgid "Unknown Error in presence" msgstr "Ukjent feil i tilstedeværelse" -#: ../libpurple/protocols/jabber/presence.c:508 -#: ../libpurple/protocols/jabber/presence.c:509 +#: ../libpurple/protocols/jabber/presence.c:503 +#: ../libpurple/protocols/jabber/presence.c:504 msgid "Create New Room" msgstr "Skap nytt samtalerom" -#: ../libpurple/protocols/jabber/presence.c:510 -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?" - -#: ../libpurple/protocols/jabber/presence.c:516 -#, fuzzy +#: ../libpurple/protocols/jabber/presence.c:505 +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?" + +#: ../libpurple/protocols/jabber/presence.c:511 msgid "_Configure Room" -msgstr "Konfigurer rom" - -#: ../libpurple/protocols/jabber/presence.c:517 +msgstr "_Konfigurer rom" + +#: ../libpurple/protocols/jabber/presence.c:512 #, fuzzy msgid "_Accept Defaults" msgstr "Aksepter standardinstillinger" -#: ../libpurple/protocols/jabber/presence.c:559 +#: ../libpurple/protocols/jabber/presence.c:554 #, c-format msgid "Error in chat %s" msgstr "Feil i gruppesamtale %s" -#: ../libpurple/protocols/jabber/presence.c:563 +#: ../libpurple/protocols/jabber/presence.c:558 #, c-format msgid "Error joining chat %s" msgstr "Klarte ikke bli med i gruppesamtale %s" @@ -6524,9 +6594,8 @@ #: ../libpurple/protocols/jabber/usermood.c:183 #: ../libpurple/protocols/jabber/usernick.c:78 -#, fuzzy msgid "Set" -msgstr "_Sett" +msgstr "Sett" #: ../libpurple/protocols/jabber/usermood.c:191 #, fuzzy @@ -6544,12 +6613,10 @@ msgstr "Vennligst skriv inn nytt navn for gruppen." #: ../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:99 +msgid "This information is visible to all contacts on your contact list, so choose something appropriate." +msgstr "" + +#: ../libpurple/protocols/jabber/usernick.c:100 #, fuzzy msgid "Set Nickname..." msgstr "Kallenavn" @@ -6564,265 +6631,229 @@ msgid "Select an action" msgstr "Velg fil" -#: ../libpurple/protocols/msn/dialog.c:110 +#: ../libpurple/protocols/msn/contact.c:207 +#, fuzzy +msgid "Unable to connect to contact server" +msgstr "Kan ikke koble til tjener." + +#: ../libpurple/protocols/msn/contact.c:954 +#, fuzzy +msgid "Unable to retrieve MSN Address Book" +msgstr "Legg til i adresseboka" + +#: ../libpurple/protocols/msn/dialog.c:118 #, c-format msgid "Buddy list synchronization issue in %s (%s)" msgstr "Synkronisasjonsproblem med vennelista i %s (%s)" -#: ../libpurple/protocols/msn/dialog.c:116 -#, 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?" - #: ../libpurple/protocols/msn/dialog.c:124 #, 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?" + +#: ../libpurple/protocols/msn/dialog.c:132 +#, 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?" #: ../libpurple/protocols/msn/error.c:36 -#, c-format msgid "Unable to parse message" msgstr "Kunne ikke tolke beskjed." #: ../libpurple/protocols/msn/error.c:41 -#, fuzzy, c-format +#, fuzzy msgid "Syntax Error (probably a client bug)" msgstr "Syntaksfeil (sannsynligvis en Gaim-bug)" #: ../libpurple/protocols/msn/error.c:46 -#, c-format msgid "Invalid e-mail address" msgstr "Ugyldig epostadresse" #: ../libpurple/protocols/msn/error.c:49 -#, c-format msgid "User does not exist" msgstr "Brukeren eksisterer ikke" #: ../libpurple/protocols/msn/error.c:53 -#, fuzzy, c-format +#, fuzzy msgid "Fully qualified domain name missing" msgstr "Fullstending domenenavn mangler" #: ../libpurple/protocols/msn/error.c:56 -#, fuzzy, c-format msgid "Already logged in" msgstr "Allerede logget inn" #: ../libpurple/protocols/msn/error.c:59 -#, fuzzy, c-format +#, fuzzy msgid "Invalid screen name" msgstr "Ugyldig brukernavn" #: ../libpurple/protocols/msn/error.c:62 -#, fuzzy, c-format +#, fuzzy msgid "Invalid friendly name" msgstr "Ugyldig kallenavn" #: ../libpurple/protocols/msn/error.c:65 -#, fuzzy, c-format +#, fuzzy msgid "List full" msgstr "Listen er full" #: ../libpurple/protocols/msn/error.c:68 -#, c-format msgid "Already there" msgstr "Du er allerede der" #: ../libpurple/protocols/msn/error.c:72 -#, c-format msgid "Not on list" msgstr "Ikke på listen" #: ../libpurple/protocols/msn/error.c:75 #: ../libpurple/protocols/zephyr/zephyr.c:756 -#, c-format msgid "User is offline" msgstr "Brukeren er avlogget" #: ../libpurple/protocols/msn/error.c:78 -#, c-format msgid "Already in the mode" msgstr "Du er allerede i modusen" #: ../libpurple/protocols/msn/error.c:82 -#, c-format msgid "Already in opposite list" msgstr "Du er allerede i den andre listen" #: ../libpurple/protocols/msn/error.c:86 -#, c-format msgid "Too many groups" msgstr "For mange grupper" #: ../libpurple/protocols/msn/error.c:89 -#, c-format msgid "Invalid group" msgstr "Ugyldig gruppe" #: ../libpurple/protocols/msn/error.c:92 -#, c-format msgid "User not in group" msgstr "Brukeren er ikke i gruppen" #: ../libpurple/protocols/msn/error.c:95 -#, c-format msgid "Group name too long" msgstr "Gruppenavnet er for langt" #: ../libpurple/protocols/msn/error.c:98 -#, c-format msgid "Cannot remove group zero" msgstr "Kan ikke fjerne gruppe null" #: ../libpurple/protocols/msn/error.c:103 -#, fuzzy, c-format +#, fuzzy msgid "Tried to add a user to a group that doesn't exist" msgstr "Prøvde å legge en kontakt til i en ikke-eksisterende gruppe" #: ../libpurple/protocols/msn/error.c:107 -#, c-format msgid "Switchboard failed" msgstr "Feil med switchboard-tjenesten" #: ../libpurple/protocols/msn/error.c:111 -#, fuzzy, c-format +#, fuzzy msgid "Notify transfer failed" msgstr "Overføring av varsling feilet" #: ../libpurple/protocols/msn/error.c:116 -#, c-format msgid "Required fields missing" msgstr "Du har ikke fylt inn alle nødvendige felt" #: ../libpurple/protocols/msn/error.c:120 -#, c-format msgid "Too many hits to a FND" msgstr "For mange treff på en FND" #: ../libpurple/protocols/msn/error.c:124 #: ../libpurple/protocols/oscar/oscar.c:120 -#, c-format msgid "Not logged in" msgstr "Ikke pålogget" #: ../libpurple/protocols/msn/error.c:128 -#, fuzzy, c-format +#, fuzzy msgid "Service temporarily unavailable" msgstr "Tjenesten midlertidig uttilgjengelig" #: ../libpurple/protocols/msn/error.c:131 -#, c-format msgid "Database server error" msgstr "Feil på databasetjeneren" #: ../libpurple/protocols/msn/error.c:135 -#, c-format msgid "Command disabled" msgstr "Kommando deaktivert" #: ../libpurple/protocols/msn/error.c:139 -#, c-format msgid "File operation error" msgstr "Filoperasjonsfeil" #: ../libpurple/protocols/msn/error.c:143 -#, c-format msgid "Memory allocation error" msgstr "Feil ved minneallokering" #: ../libpurple/protocols/msn/error.c:147 -#, c-format msgid "Wrong CHL value sent to server" msgstr "Feil CHL-verdi sendt til tjener" #: ../libpurple/protocols/msn/error.c:152 -#, c-format msgid "Server busy" msgstr "Tjeneren er opptatt" #: ../libpurple/protocols/msn/error.c:155 #: ../libpurple/protocols/msn/error.c:170 #: ../libpurple/protocols/msn/error.c:230 -#, c-format msgid "Server unavailable" msgstr "Tjeneren er ikke tilgjengelig" #: ../libpurple/protocols/msn/error.c:158 -#, fuzzy, c-format +#, fuzzy msgid "Peer notification server down" msgstr "Varslingstjeneren er ikke tilgjengelig" #: ../libpurple/protocols/msn/error.c:162 -#, c-format msgid "Database connect error" msgstr "Kunne ikke koble til databasen" #: ../libpurple/protocols/msn/error.c:167 -#, c-format msgid "Server is going down (abandon ship)" msgstr "Tjeneren er på vei nei (redde seg den som kan)" #: ../libpurple/protocols/msn/error.c:174 -#, c-format msgid "Error creating connection" msgstr "Feil: kunne ikke koble til" #: ../libpurple/protocols/msn/error.c:179 -#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "CVR-parametre er enten ukjent eller ikke tillatt" #: ../libpurple/protocols/msn/error.c:183 -#, c-format msgid "Unable to write" msgstr "Kunne ikke skrive" #: ../libpurple/protocols/msn/error.c:186 -#, c-format msgid "Session overload" msgstr "Sesjonsoverlast" #: ../libpurple/protocols/msn/error.c:190 -#, c-format msgid "User is too active" msgstr "Brukeren er for aktiv" #: ../libpurple/protocols/msn/error.c:193 -#, c-format msgid "Too many sessions" msgstr "For mange sesjoner" #: ../libpurple/protocols/msn/error.c:196 -#, c-format msgid "Passport not verified" msgstr "Passport-konto er ikke blitt verifisert" #: ../libpurple/protocols/msn/error.c:199 -#, c-format msgid "Bad friend file" msgstr "Ugyldig 'friend'-fil" #: ../libpurple/protocols/msn/error.c:203 -#, c-format msgid "Not expected" msgstr "Uventet" #: ../libpurple/protocols/msn/error.c:209 -#, c-format msgid "Friendly name changes too rapidly" msgstr "Visningsnavnet endres for raskt" #: ../libpurple/protocols/msn/error.c:218 -#, c-format msgid "Server too busy" msgstr "Tjeneren er for opptatt" @@ -6830,33 +6861,28 @@ #: ../libpurple/protocols/oscar/oscar.c:1380 #: ../libpurple/protocols/silc/silc.c:233 #: ../libpurple/protocols/silc10/ops.c:1709 -#: ../libpurple/protocols/toc/toc.c:728 ../libpurple/proxy.c:1380 -#, c-format +#: ../libpurple/protocols/toc/toc.c:728 +#: ../libpurple/proxy.c:1380 msgid "Authentication failed" msgstr "Autentisering feilet" #: ../libpurple/protocols/msn/error.c:225 -#, c-format msgid "Not allowed when offline" msgstr "Ikke tillatt når avlogget" #: ../libpurple/protocols/msn/error.c:233 -#, c-format msgid "Not accepting new users" msgstr "Nye brukere vil ikke bli godtatt" #: ../libpurple/protocols/msn/error.c:237 -#, c-format msgid "Kids Passport without parental consent" msgstr "Passport for barn, men har ikke foreldregodkjenning" #: ../libpurple/protocols/msn/error.c:241 -#, c-format msgid "Passport account not yet verified" msgstr "Passport-konto er ikke blitt verifisert enda" #: ../libpurple/protocols/msn/error.c:244 -#, c-format msgid "Bad ticket" msgstr "Bad ticket" @@ -6888,401 +6914,395 @@ msgid "Your new MSN friendly name is too long." msgstr "Det nye MSN-kallenavnet er for langt." -#: ../libpurple/protocols/msn/msn.c:282 +#: ../libpurple/protocols/msn/msn.c:285 msgid "Set your friendly name." msgstr "Sett kallenavn." -#: ../libpurple/protocols/msn/msn.c:283 +#: ../libpurple/protocols/msn/msn.c:286 msgid "This is the name that other MSN buddies will see you as." msgstr "Dette er navnet som andre MSN-kompiser vil se deg som." -#: ../libpurple/protocols/msn/msn.c:301 +#: ../libpurple/protocols/msn/msn.c:304 msgid "Set your home phone number." msgstr "Sett telefonnummer (hjemme)." -#: ../libpurple/protocols/msn/msn.c:318 +#: ../libpurple/protocols/msn/msn.c:321 msgid "Set your work phone number." msgstr "Sett telefonnummer (arbeid)." -#: ../libpurple/protocols/msn/msn.c:335 +#: ../libpurple/protocols/msn/msn.c:338 msgid "Set your mobile phone number." msgstr "Sett mobiltelefonnummer" -#: ../libpurple/protocols/msn/msn.c:350 +#: ../libpurple/protocols/msn/msn.c:353 msgid "Allow MSN Mobile pages?" msgstr "Tillat tekstmeldinger via MSN" -#: ../libpurple/protocols/msn/msn.c:351 -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?" - -#: ../libpurple/protocols/msn/msn.c:357 +#: ../libpurple/protocols/msn/msn.c:354 +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?" + +#: ../libpurple/protocols/msn/msn.c:360 msgid "Allow" msgstr "Tillat" -#: ../libpurple/protocols/msn/msn.c:358 +#: ../libpurple/protocols/msn/msn.c:361 msgid "Disallow" msgstr "Forby" -#: ../libpurple/protocols/msn/msn.c:374 +#: ../libpurple/protocols/msn/msn.c:377 msgid "This Hotmail account may not be active." msgstr "Det kan hende denne Hotmail kontoen ikke er aktiv." -#: ../libpurple/protocols/msn/msn.c:400 +#: ../libpurple/protocols/msn/msn.c:403 msgid "Send a mobile message." msgstr "Send tekstmelding" -#: ../libpurple/protocols/msn/msn.c:402 +#: ../libpurple/protocols/msn/msn.c:405 msgid "Page" msgstr "Send" -#: ../libpurple/protocols/msn/msn.c:549 -#, fuzzy -msgid "Has you" -msgstr "Har deg" - -#: ../libpurple/protocols/msn/msn.c:579 ../libpurple/protocols/msn/state.c:33 -#: ../libpurple/protocols/yahoo/yahoo.c:3077 -#: ../libpurple/protocols/yahoo/yahoo.c:3761 +#: ../libpurple/protocols/msn/msn.c:610 +#: ../libpurple/protocols/msn/msn.c:635 +#: ../libpurple/protocols/msn/msn.c:642 +#: ../libpurple/protocols/msn/msn.c:649 +#: ../libpurple/protocols/msn/msn.c:656 +#: ../libpurple/protocols/msn/msn.c:662 +#: ../libpurple/protocols/msn/msn.c:668 +#, fuzzy +msgid "Current media" +msgstr "Pålogget på" + +#: ../libpurple/protocols/msn/msn.c:647 +#: ../libpurple/protocols/msn/state.c:33 +#: ../libpurple/protocols/yahoo/yahoo.c:3076 +#: ../libpurple/protocols/yahoo/yahoo.c:3760 msgid "Be Right Back" msgstr "Straks tilbake" -#: ../libpurple/protocols/msn/msn.c:583 ../libpurple/protocols/msn/state.c:31 -#: ../libpurple/protocols/novell/novell.c:2822 -#: ../libpurple/protocols/novell/novell.c:2952 +#: ../libpurple/protocols/msn/msn.c:654 +#: ../libpurple/protocols/msn/state.c:31 +#: ../libpurple/protocols/novell/novell.c:2827 +#: ../libpurple/protocols/novell/novell.c:2957 #: ../libpurple/protocols/silc/buddy.c:1480 #: ../libpurple/protocols/silc/silc.c:56 #: ../libpurple/protocols/silc10/buddy.c:1480 #: ../libpurple/protocols/silc10/silc.c:47 -#: ../libpurple/protocols/yahoo/yahoo.c:3079 -#: ../libpurple/protocols/yahoo/yahoo.c:3764 +#: ../libpurple/protocols/yahoo/yahoo.c:3078 +#: ../libpurple/protocols/yahoo/yahoo.c:3763 msgid "Busy" msgstr "Opptatt" -#: ../libpurple/protocols/msn/msn.c:587 -#: ../libpurple/protocols/yahoo/yahoo.c:3087 -#: ../libpurple/protocols/yahoo/yahoo.c:3776 -#, fuzzy +#: ../libpurple/protocols/msn/msn.c:660 +#: ../libpurple/protocols/yahoo/yahoo.c:3086 +#: ../libpurple/protocols/yahoo/yahoo.c:3775 msgid "On the Phone" msgstr "I telefonen" -#: ../libpurple/protocols/msn/msn.c:591 -#: ../libpurple/protocols/yahoo/yahoo.c:3091 -#: ../libpurple/protocols/yahoo/yahoo.c:3782 -#, fuzzy +#: ../libpurple/protocols/msn/msn.c:666 +#: ../libpurple/protocols/yahoo/yahoo.c:3090 +#: ../libpurple/protocols/yahoo/yahoo.c:3781 msgid "Out to Lunch" msgstr "Ute til lunsj" -#: ../libpurple/protocols/msn/msn.c:619 +#: ../libpurple/protocols/msn/msn.c:697 #, fuzzy msgid "Set Friendly Name..." msgstr "Sett kallenavn" -#: ../libpurple/protocols/msn/msn.c:624 -#, fuzzy +#: ../libpurple/protocols/msn/msn.c:702 msgid "Set Home Phone Number..." -msgstr "Sett telefonnummer (hjemme)" - -#: ../libpurple/protocols/msn/msn.c:628 -#, fuzzy +msgstr "Sett telefonnummer (hjemme)..." + +#: ../libpurple/protocols/msn/msn.c:706 msgid "Set Work Phone Number..." -msgstr "Sett telefonnummer (arbeid)" - -#: ../libpurple/protocols/msn/msn.c:632 -#, fuzzy +msgstr "Sett telefonnummer (arbeid)..." + +#: ../libpurple/protocols/msn/msn.c:710 msgid "Set Mobile Phone Number..." -msgstr "Sett mobiltelefonnummer" - -#: ../libpurple/protocols/msn/msn.c:638 +msgstr "Sett telefonnummer (mobil)..." + +#: ../libpurple/protocols/msn/msn.c:716 #, fuzzy msgid "Enable/Disable Mobile Devices..." msgstr "Bruk/ikke bruk mobile enheter" -#: ../libpurple/protocols/msn/msn.c:643 +#: ../libpurple/protocols/msn/msn.c:721 #, fuzzy msgid "Allow/Disallow Mobile Pages..." msgstr "Tillate/forby tekstmeldinger" -#: ../libpurple/protocols/msn/msn.c:654 +#: ../libpurple/protocols/msn/msn.c:732 msgid "Open Hotmail Inbox" msgstr "Åpne Hotmail Inbox" -#: ../libpurple/protocols/msn/msn.c:678 +#: ../libpurple/protocols/msn/msn.c:756 msgid "Send to Mobile" msgstr "Send til mobil" -#: ../libpurple/protocols/msn/msn.c:688 -#: ../libpurple/protocols/novell/novell.c:3408 +#: ../libpurple/protocols/msn/msn.c:766 +#: ../libpurple/protocols/novell/novell.c:3413 msgid "Initiate _Chat" msgstr "Start gruppesamtale" -#: ../libpurple/protocols/msn/msn.c:726 -#, fuzzy +#: ../libpurple/protocols/msn/msn.c:804 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. Se " -"http://gaim.sf.net/faq-ssl.php for mer informasjon." - -#: ../libpurple/protocols/msn/msn.c:754 +msgstr "SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek." + +#: ../libpurple/protocols/msn/msn.c:832 msgid "Failed to connect to server." msgstr "Klarte ikke koble til tjener." -#: ../libpurple/protocols/msn/msn.c:1510 ../libpurple/protocols/msn/msn.c:1858 +#: ../libpurple/protocols/msn/msn.c:1620 +#: ../libpurple/protocols/msn/msn.c:1968 #: ../libpurple/protocols/yahoo/yahoo_profile.c:808 msgid "Error retrieving profile" msgstr "Klarte ikke hente profil" -#: ../libpurple/protocols/msn/msn.c:1581 ../pidgin/plugins/convcolors.c:309 -#: ../pidgin/plugins/pidginrc.c:366 +#: ../libpurple/protocols/msn/msn.c:1691 +#: ../pidgin/plugins/convcolors.c:309 +#: ../pidgin/plugins/pidginrc.c:360 #, fuzzy msgid "General" msgstr "Kjønn" -#: ../libpurple/protocols/msn/msn.c:1588 +#: ../libpurple/protocols/msn/msn.c:1698 #: ../libpurple/protocols/myspace/user.c:110 -#: ../libpurple/protocols/oscar/oscar.c:3755 +#: ../libpurple/protocols/oscar/oscar.c:3751 #: ../libpurple/protocols/qq/buddy_info.c:45 #: ../libpurple/protocols/qq/qq.c:221 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1081 msgid "Age" msgstr "Alder" -#: ../libpurple/protocols/msn/msn.c:1590 +#: ../libpurple/protocols/msn/msn.c:1700 #: ../libpurple/protocols/qq/buddy_info.c:51 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1096 msgid "Occupation" msgstr "Yrke" -#: ../libpurple/protocols/msn/msn.c:1591 +#: ../libpurple/protocols/msn/msn.c:1701 #: ../libpurple/protocols/myspace/user.c:119 -#: ../libpurple/protocols/novell/novell.c:1478 +#: ../libpurple/protocols/novell/novell.c:1480 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1076 #: ../libpurple/protocols/zephyr/zephyr.c:798 #: ../libpurple/protocols/zephyr/zephyr.c:1215 msgid "Location" msgstr "Sted" -#: ../libpurple/protocols/msn/msn.c:1596 ../libpurple/protocols/msn/msn.c:1788 -#: ../libpurple/protocols/msn/msn.c:1794 ../libpurple/protocols/msn/msn.c:1801 +#: ../libpurple/protocols/msn/msn.c:1706 +#: ../libpurple/protocols/msn/msn.c:1898 +#: ../libpurple/protocols/msn/msn.c:1904 +#: ../libpurple/protocols/msn/msn.c:1911 msgid "Hobbies and Interests" msgstr "Hobbyer og interesser" -#: ../libpurple/protocols/msn/msn.c:1602 ../libpurple/protocols/msn/msn.c:1722 -#: ../libpurple/protocols/msn/msn.c:1728 ../libpurple/protocols/msn/msn.c:1735 -#: ../libpurple/protocols/msn/msn.c:1743 ../libpurple/protocols/msn/msn.c:1750 +#: ../libpurple/protocols/msn/msn.c:1712 +#: ../libpurple/protocols/msn/msn.c:1832 +#: ../libpurple/protocols/msn/msn.c:1838 +#: ../libpurple/protocols/msn/msn.c:1845 +#: ../libpurple/protocols/msn/msn.c:1853 +#: ../libpurple/protocols/msn/msn.c:1860 msgid "A Little About Me" msgstr "Noen ord om meg" -#: ../libpurple/protocols/msn/msn.c:1619 +#: ../libpurple/protocols/msn/msn.c:1729 msgid "Social" msgstr "" -#: ../libpurple/protocols/msn/msn.c:1621 +#: ../libpurple/protocols/msn/msn.c:1731 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1086 msgid "Marital Status" msgstr "Sivilstatus" -#: ../libpurple/protocols/msn/msn.c:1622 -#, fuzzy +#: ../libpurple/protocols/msn/msn.c:1732 msgid "Interests" -msgstr "Sett _inn" - -#: ../libpurple/protocols/msn/msn.c:1623 -#, fuzzy +msgstr "Interesser" + +#: ../libpurple/protocols/msn/msn.c:1733 msgid "Pets" -msgstr "Porter" - -#: ../libpurple/protocols/msn/msn.c:1624 -#, fuzzy +msgstr "Dyr" + +#: ../libpurple/protocols/msn/msn.c:1734 msgid "Hometown" -msgstr "Maskin ukjent" - -#: ../libpurple/protocols/msn/msn.c:1625 +msgstr "Hjemby" + +#: ../libpurple/protocols/msn/msn.c:1735 msgid "Places Lived" msgstr "" -#: ../libpurple/protocols/msn/msn.c:1626 +#: ../libpurple/protocols/msn/msn.c:1736 msgid "Fashion" -msgstr "" - -#: ../libpurple/protocols/msn/msn.c:1627 +msgstr "Mote" + +#: ../libpurple/protocols/msn/msn.c:1737 msgid "Humor" -msgstr "" - -#: ../libpurple/protocols/msn/msn.c:1628 +msgstr "Humor" + +#: ../libpurple/protocols/msn/msn.c:1738 msgid "Music" -msgstr "" - -#: ../libpurple/protocols/msn/msn.c:1629 ../libpurple/protocols/msn/msn.c:1810 -#: ../libpurple/protocols/msn/msn.c:1816 +msgstr "Musikk" + +#: ../libpurple/protocols/msn/msn.c:1739 +#: ../libpurple/protocols/msn/msn.c:1920 +#: ../libpurple/protocols/msn/msn.c:1926 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1138 msgid "Favorite Quote" msgstr "Yndlingssitat" -#: ../libpurple/protocols/msn/msn.c:1646 -#, fuzzy +#: ../libpurple/protocols/msn/msn.c:1756 msgid "Contact Info" -msgstr "Kontoinformasjon" - -#: ../libpurple/protocols/msn/msn.c:1647 +msgstr "Kontaktinformasjon" + +#: ../libpurple/protocols/msn/msn.c:1757 #, fuzzy msgid "Personal" msgstr "Tittel" -#: ../libpurple/protocols/msn/msn.c:1650 +#: ../libpurple/protocols/msn/msn.c:1760 msgid "Significant Other" msgstr "" -#: ../libpurple/protocols/msn/msn.c:1651 +#: ../libpurple/protocols/msn/msn.c:1761 #, fuzzy msgid "Home Phone" msgstr "Hjemmeside" -#: ../libpurple/protocols/msn/msn.c:1652 +#: ../libpurple/protocols/msn/msn.c:1762 #, fuzzy msgid "Home Phone 2" msgstr "Sett telefonnummer (hjemme)" -#: ../libpurple/protocols/msn/msn.c:1653 -#: ../libpurple/protocols/oscar/oscar.c:3793 +#: ../libpurple/protocols/msn/msn.c:1763 +#: ../libpurple/protocols/oscar/oscar.c:3789 msgid "Home Address" msgstr "Hjemstedsadresse" -#: ../libpurple/protocols/msn/msn.c:1654 +#: ../libpurple/protocols/msn/msn.c:1764 #, fuzzy msgid "Personal Mobile" msgstr "Tittel" -#: ../libpurple/protocols/msn/msn.c:1655 +#: ../libpurple/protocols/msn/msn.c:1765 #, fuzzy msgid "Home Fax" msgstr "Hjemmeside" -#: ../libpurple/protocols/msn/msn.c:1656 +#: ../libpurple/protocols/msn/msn.c:1766 #, fuzzy msgid "Personal E-Mail" msgstr "Tittel" -#: ../libpurple/protocols/msn/msn.c:1657 +#: ../libpurple/protocols/msn/msn.c:1767 #, fuzzy msgid "Personal IM" msgstr "Tittel" -#: ../libpurple/protocols/msn/msn.c:1659 +#: ../libpurple/protocols/msn/msn.c:1769 msgid "Anniversary" msgstr "" #. Business -#: ../libpurple/protocols/msn/msn.c:1675 +#: ../libpurple/protocols/msn/msn.c:1785 msgid "Work" msgstr "" -#: ../libpurple/protocols/msn/msn.c:1677 +#: ../libpurple/protocols/msn/msn.c:1787 #: ../libpurple/protocols/silc/ops.c:1010 #: ../libpurple/protocols/silc10/ops.c:1044 msgid "Job Title" msgstr "Tittel" -#: ../libpurple/protocols/msn/msn.c:1678 -#: ../libpurple/protocols/oscar/oscar.c:3814 +#: ../libpurple/protocols/msn/msn.c:1788 +#: ../libpurple/protocols/oscar/oscar.c:3810 msgid "Company" msgstr "Firma" -#: ../libpurple/protocols/msn/msn.c:1679 -#: ../libpurple/protocols/novell/novell.c:1480 +#: ../libpurple/protocols/msn/msn.c:1789 +#: ../libpurple/protocols/novell/novell.c:1482 msgid "Department" msgstr "Avdeling" -#: ../libpurple/protocols/msn/msn.c:1680 +#: ../libpurple/protocols/msn/msn.c:1790 #, fuzzy msgid "Profession" msgstr "Framdrift" -#: ../libpurple/protocols/msn/msn.c:1681 +#: ../libpurple/protocols/msn/msn.c:1791 #, fuzzy msgid "Work Phone" msgstr "Telefon" -#: ../libpurple/protocols/msn/msn.c:1682 +#: ../libpurple/protocols/msn/msn.c:1792 #, fuzzy msgid "Work Phone 2" msgstr "Sett telefonnummer (arbeid)" -#: ../libpurple/protocols/msn/msn.c:1683 -#: ../libpurple/protocols/oscar/oscar.c:3806 +#: ../libpurple/protocols/msn/msn.c:1793 +#: ../libpurple/protocols/oscar/oscar.c:3802 msgid "Work Address" msgstr "Arbeidsadresse" -#: ../libpurple/protocols/msn/msn.c:1684 +#: ../libpurple/protocols/msn/msn.c:1794 #, fuzzy msgid "Work Mobile" msgstr "Send til mobil" -#: ../libpurple/protocols/msn/msn.c:1685 +#: ../libpurple/protocols/msn/msn.c:1795 #, fuzzy msgid "Work Pager" msgstr "Hjemmeside" -#: ../libpurple/protocols/msn/msn.c:1686 +#: ../libpurple/protocols/msn/msn.c:1796 msgid "Work Fax" msgstr "" -#: ../libpurple/protocols/msn/msn.c:1687 +#: ../libpurple/protocols/msn/msn.c:1797 #, fuzzy msgid "Work E-Mail" msgstr "E-post" -#: ../libpurple/protocols/msn/msn.c:1688 +#: ../libpurple/protocols/msn/msn.c:1798 msgid "Work IM" msgstr "" -#: ../libpurple/protocols/msn/msn.c:1689 +#: ../libpurple/protocols/msn/msn.c:1799 #, fuzzy msgid "Start Date" msgstr "Fylke/stat" -#: ../libpurple/protocols/msn/msn.c:1759 ../libpurple/protocols/msn/msn.c:1765 -#: ../libpurple/protocols/msn/msn.c:1772 ../libpurple/protocols/msn/msn.c:1779 +#: ../libpurple/protocols/msn/msn.c:1869 +#: ../libpurple/protocols/msn/msn.c:1875 +#: ../libpurple/protocols/msn/msn.c:1882 +#: ../libpurple/protocols/msn/msn.c:1889 msgid "Favorite Things" msgstr "Favoritt-ting" -#: ../libpurple/protocols/msn/msn.c:1824 +#: ../libpurple/protocols/msn/msn.c:1934 msgid "Last Updated" msgstr "Sist oppdatert" -#: ../libpurple/protocols/msn/msn.c:1835 +#: ../libpurple/protocols/msn/msn.c:1945 #: ../libpurple/protocols/qq/buddy_info.c:60 #: ../libpurple/protocols/silc/ops.c:1026 #: ../libpurple/protocols/silc10/ops.c:1060 msgid "Homepage" msgstr "Hjemmeside" -#: ../libpurple/protocols/msn/msn.c:1859 +#: ../libpurple/protocols/msn/msn.c:1969 msgid "The user has not created a public profile." msgstr "Brukeren har ikke opprettet en offentlig profil" -#: ../libpurple/protocols/msn/msn.c:1860 -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" - -#: ../libpurple/protocols/msn/msn.c:1864 -#, fuzzy -msgid "" -"Could not find any information in the user's profile. The user most likely " -"does not exist." -msgstr "" -"Gaim klarte ikke finne noen informasjon i brukerens profil. Antakelig " -"eksisterer brukeren ikke." - -#: ../libpurple/protocols/msn/msn.c:1872 +#: ../libpurple/protocols/msn/msn.c:1970 +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" + +#: ../libpurple/protocols/msn/msn.c:1974 +#, fuzzy +msgid "Could not find any information in the user's profile. The user most likely does not exist." +msgstr "Gaim klarte ikke finne noen informasjon i brukerens profil. Antakelig eksisterer brukeren ikke." + +#: ../libpurple/protocols/msn/msn.c:1982 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1240 msgid "Profile URL" msgstr "Profil URL" @@ -7297,31 +7317,134 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/msn/msn.c:2158 ../libpurple/protocols/msn/msn.c:2160 -#, fuzzy -msgid "MSN Protocol Plugin" -msgstr "AIM/ICQ-protokolltillegg" - -#: ../libpurple/protocols/msn/msn.c:2194 +#: ../libpurple/protocols/msn/msn.c:2269 +#: ../libpurple/protocols/msn/msn.c:2271 +#, fuzzy +msgid "Windows Live Messenger Protocol Plugin" +msgstr "Novel GroupWise Messenger protolltillegg" + +#: ../libpurple/protocols/msn/msn.c:2306 msgid "Use HTTP Method" msgstr "Bruk HTTP-metode" # -#: ../libpurple/protocols/msn/msn.c:2199 +#: ../libpurple/protocols/msn/msn.c:2311 #, fuzzy msgid "HTTP Method Server" msgstr "IPC testtjener" -#: ../libpurple/protocols/msn/msn.c:2204 +#: ../libpurple/protocols/msn/msn.c:2316 msgid "Show custom smileys" msgstr "" -#: ../libpurple/protocols/msn/msn.c:2212 +#: ../libpurple/protocols/msn/msn.c:2324 #, fuzzy msgid "nudge: nudge a user to get their attention" msgstr "nudge: nudge en kontakt for å få deres oppmerksomhet" -#: ../libpurple/protocols/msn/nexus.c:146 +#: ../libpurple/protocols/msn/nexus.c:137 +msgid "Windows Live ID authentication:Unable to connect" +msgstr "" + +#: ../libpurple/protocols/msn/nexus.c:275 +#, fuzzy +msgid "Windows Live ID authentication Failed" +msgstr "Autentisering feilet" + +#: ../libpurple/protocols/msn/notification.c:191 +#, c-format +msgid "%s is not a valid group." +msgstr "%s er ikke et gyldig navn på en gruppe." + +#: ../libpurple/protocols/msn/notification.c:197 +#: ../libpurple/protocols/msn/notification.c:938 +#: ../libpurple/protocols/msn/session.c:369 +msgid "Unknown error." +msgstr "Ukjent feil." + +#: ../libpurple/protocols/msn/notification.c:200 +#, c-format +msgid "%s on %s (%s)" +msgstr "%s på %s (%s)" + +#: ../libpurple/protocols/msn/notification.c:518 +#, fuzzy, c-format +msgid "%s just sent you a Nudge!" +msgstr "%s har sendt deg en beskjed" + +#: ../libpurple/protocols/msn/notification.c:843 +#, c-format +msgid "Unknown error (%d)" +msgstr "Ukjent feil (%d)" + +#: ../libpurple/protocols/msn/notification.c:844 +#: ../libpurple/protocols/sametime/sametime.c:4425 +#, fuzzy +msgid "Unable to add user" +msgstr "Klarte ikke forby brukeren %s" + +#: ../libpurple/protocols/msn/notification.c:904 +#, c-format +msgid "Unable to add user on %s (%s)" +msgstr "Klarte ikke legge til bruker på %s (%s)" + +#: ../libpurple/protocols/msn/notification.c:908 +#, c-format +msgid "Unable to block user on %s (%s)" +msgstr "Klarte ikke blokkere brukeren på %s (%s)" + +#: ../libpurple/protocols/msn/notification.c:912 +#, c-format +msgid "Unable to permit user on %s (%s)" +msgstr "Klarte ikke tillate bruker på %s (%s)" + +#: ../libpurple/protocols/msn/notification.c:920 +#, 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." + +#: ../libpurple/protocols/msn/notification.c:929 +#, c-format +msgid "%s is not a valid passport account." +msgstr "%s er ikke et gyldig passport-konto" + +#: ../libpurple/protocols/msn/notification.c:934 +#, fuzzy +msgid "Service Temporarily Unavailable." +msgstr "Tjenesten midlertidig uttilgjengelig" + +#: ../libpurple/protocols/msn/notification.c:1272 +msgid "Unable to rename group" +msgstr "Kunne ikke endre navn på gruppe" + +#: ../libpurple/protocols/msn/notification.c:1327 +msgid "Unable to delete group" +msgstr "Kunne ikke slette gruppe" + +#: ../libpurple/protocols/msn/notification.c:1943 +#, 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-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" +"\n" +"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen." + +#: ../libpurple/protocols/msn/oim.c:141 +#, fuzzy +msgid "Unable to connect to OIM server" +msgstr "Kan ikke koble til tjener." + #: ../libpurple/protocols/msn/servconn.c:135 #: ../libpurple/protocols/qq/qq_proxy.c:242 #: ../libpurple/protocols/qq/qq_proxy.c:321 @@ -7341,88 +7464,6 @@ msgid "Unable to connect" msgstr "Kunne ikke koble til" -#: ../libpurple/protocols/msn/notification.c:178 -#, c-format -msgid "%s is not a valid group." -msgstr "%s er ikke et gyldig navn på en gruppe." - -#: ../libpurple/protocols/msn/notification.c:184 -#: ../libpurple/protocols/msn/notification.c:532 -#: ../libpurple/protocols/msn/session.c:330 -msgid "Unknown error." -msgstr "Ukjent feil." - -#: ../libpurple/protocols/msn/notification.c:187 -#, c-format -msgid "%s on %s (%s)" -msgstr "%s på %s (%s)" - -#: ../libpurple/protocols/msn/notification.c:498 -#, c-format -msgid "Unable to add user on %s (%s)" -msgstr "Klarte ikke legge til bruker på %s (%s)" - -#: ../libpurple/protocols/msn/notification.c:502 -#, c-format -msgid "Unable to block user on %s (%s)" -msgstr "Klarte ikke blokkere brukeren på %s (%s)" - -#: ../libpurple/protocols/msn/notification.c:506 -#, c-format -msgid "Unable to permit user on %s (%s)" -msgstr "Klarte ikke tillate bruker på %s (%s)" - -#: ../libpurple/protocols/msn/notification.c:514 -#, 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." - -#: ../libpurple/protocols/msn/notification.c:523 -#, c-format -msgid "%s is not a valid passport account." -msgstr "%s er ikke et gyldig passport-konto" - -#: ../libpurple/protocols/msn/notification.c:528 -#, fuzzy -msgid "Service Temporarily Unavailable." -msgstr "Tjenesten midlertidig uttilgjengelig" - -#: ../libpurple/protocols/msn/notification.c:851 -msgid "Unable to rename group" -msgstr "Kunne ikke endre navn på gruppe" - -#: ../libpurple/protocols/msn/notification.c:906 -msgid "Unable to delete group" -msgstr "Kunne ikke slette gruppe" - -#: ../libpurple/protocols/msn/notification.c:1325 -#, 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-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" -"\n" -"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen." - #: ../libpurple/protocols/msn/servconn.c:137 msgid "Writing error" msgstr "Feil ved skriving" @@ -7440,59 +7481,55 @@ "Tilkoplingsfeil fra %s tjener (%s):\n" "%s" -#: ../libpurple/protocols/msn/session.c:299 +#: ../libpurple/protocols/msn/session.c:336 msgid "Our protocol is not supported by the server." msgstr "Vår protokoll er ikke støttet av tjeneren" -#: ../libpurple/protocols/msn/session.c:303 +#: ../libpurple/protocols/msn/session.c:340 msgid "Error parsing HTTP." msgstr "Feil under tolkning av HTTP." -#: ../libpurple/protocols/msn/session.c:307 +#: ../libpurple/protocols/msn/session.c:344 #: ../libpurple/protocols/oscar/flap_connection.c:384 -#: ../libpurple/protocols/yahoo/yahoo.c:205 +#: ../libpurple/protocols/yahoo/yahoo.c:207 msgid "You have signed on from another location." msgstr "Du ble logget av fordi du har logget på et annet sted." -#: ../libpurple/protocols/msn/session.c:310 +#: ../libpurple/protocols/msn/session.c:349 msgid "The MSN servers are temporarily unavailable. Please wait and try again." -msgstr "" -"MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere." - -#: ../libpurple/protocols/msn/session.c:315 +msgstr "MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere." + +#: ../libpurple/protocols/msn/session.c:354 msgid "The MSN servers are going down temporarily." msgstr "MSN-tjenerne vil bli utilgjengelig en liten stund." -#: ../libpurple/protocols/msn/session.c:320 +#: ../libpurple/protocols/msn/session.c:359 #, c-format msgid "Unable to authenticate: %s" msgstr "Klarte ikke autentisere: %s" -#: ../libpurple/protocols/msn/session.c:325 -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." - -#: ../libpurple/protocols/msn/session.c:346 -#: ../libpurple/protocols/msn/session.c:348 +#: ../libpurple/protocols/msn/session.c:364 +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." + +#: ../libpurple/protocols/msn/session.c:385 +#: ../libpurple/protocols/msn/session.c:387 msgid "Handshaking" msgstr "Håndtrykk" -#: ../libpurple/protocols/msn/session.c:349 +#: ../libpurple/protocols/msn/session.c:388 msgid "Starting authentication" msgstr "Starter godkjenning" -#: ../libpurple/protocols/msn/session.c:350 +#: ../libpurple/protocols/msn/session.c:389 msgid "Getting cookie" msgstr "Henter informasjonskapsel" -#: ../libpurple/protocols/msn/session.c:352 +#: ../libpurple/protocols/msn/session.c:391 msgid "Sending cookie" msgstr "Sender informasjonskapsel" -#: ../libpurple/protocols/msn/session.c:353 +#: ../libpurple/protocols/msn/session.c:392 msgid "Retrieving buddy list" msgstr "Henter kontaktliste" @@ -7514,8 +7551,7 @@ #: ../libpurple/protocols/msn/switchboard.c:408 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:" #: ../libpurple/protocols/msn/switchboard.c:412 msgid "Message could not be sent because the user is offline:" @@ -7531,37 +7567,36 @@ msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:" #: ../libpurple/protocols/msn/switchboard.c:424 -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:" +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 "" #: ../libpurple/protocols/msn/switchboard.c:431 -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 an error with the switchboard occurred:" +msgstr "Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:" #: ../libpurple/protocols/msn/switchboard.c:439 msgid "Message may have not been sent because an unknown error occurred:" msgstr "Meldingen kunne ikke bli sendt på grunn av en ukjent feil:" -#: ../libpurple/protocols/msn/userlist.c:252 -#, fuzzy, c-format +#: ../libpurple/protocols/msn/userlist.c:243 +#, c-format msgid "%s has added you to his or her buddy list." -msgstr "Brukeren %s ønsker å legge til %s i kontaktlisten sin." - -#: ../libpurple/protocols/msn/userlist.c:321 -#, fuzzy, c-format +msgstr "%s har lagt deg til i kontaktlisten sin." + +#: ../libpurple/protocols/msn/userlist.c:312 +#, c-format msgid "%s has removed you from his or her buddy list." msgstr "%s har fjernet deg fra sin kontaktliste." -#: ../libpurple/protocols/msn/userlist.c:643 +#. 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/userlist.c:693 #, fuzzy, c-format msgid "Unable to add \"%s\"." msgstr "Kunne ikke lese fil %s." -#: ../libpurple/protocols/msn/userlist.c:645 +#: ../libpurple/protocols/msn/userlist.c:696 #, fuzzy msgid "The screen name specified is invalid." msgstr "Den inntastede SecurID-nøkkelen er ugyldig." @@ -7575,21 +7610,17 @@ msgstr "" #: ../libpurple/protocols/myspace/myspace.c:113 -msgid "" -"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will " -"not be loaded." +msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded." msgstr "" #: ../libpurple/protocols/myspace/myspace.c:286 #, c-format -msgid "" -"Sorry, passwords over %d characters in length (yours is %d) are not " -"supported by MySpace." +msgid "Sorry, passwords over %d characters in length (yours is %d) are not supported by MySpace." msgstr "" #. Notify an error message also, because this is important! #: ../libpurple/protocols/myspace/myspace.c:292 -#: ../libpurple/protocols/myspace/myspace.c:1801 +#: ../libpurple/protocols/myspace/myspace.c:1798 msgid "MySpaceIM Error" msgstr "" @@ -7608,196 +7639,192 @@ msgid "Logging in" msgstr "Logging" -#: ../libpurple/protocols/myspace/myspace.c:1286 +#: ../libpurple/protocols/myspace/myspace.c:1278 #, c-format msgid "Connection to server lost (no data received within %d seconds)" msgstr "" #. Can't write _()'d strings in array initializers. Workaround. -#: ../libpurple/protocols/myspace/myspace.c:1328 +#: ../libpurple/protocols/myspace/myspace.c:1321 #, fuzzy msgid "New mail messages" msgstr "Ny fraværsbeskjed" -#: ../libpurple/protocols/myspace/myspace.c:1329 +#: ../libpurple/protocols/myspace/myspace.c:1322 msgid "New blog comments" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:1330 +#: ../libpurple/protocols/myspace/myspace.c:1323 msgid "New profile comments" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:1331 +#: ../libpurple/protocols/myspace/myspace.c:1324 msgid "New friend requests!" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:1332 +#: ../libpurple/protocols/myspace/myspace.c:1325 msgid "New picture comments" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:1360 +#: ../libpurple/protocols/myspace/myspace.c:1355 msgid "MySpace" -msgstr "" +msgstr "Myspace" #. 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:1543 +#: ../libpurple/protocols/myspace/myspace.c:1538 #: ../libpurple/protocols/sametime/sametime.c:1544 #, fuzzy msgid "Connected" msgstr "Koble til" -#: ../libpurple/protocols/myspace/myspace.c:1554 -#: ../libpurple/protocols/myspace/myspace.c:1556 +#: ../libpurple/protocols/myspace/myspace.c:1549 +#: ../libpurple/protocols/myspace/myspace.c:1551 #, fuzzy msgid "No username set" msgstr "Skjermnavn ikke oppgitt." -#: ../libpurple/protocols/myspace/myspace.c:1555 -msgid "" -"Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile." -"username and choose a username and try to login again." -msgstr "" - -#: ../libpurple/protocols/myspace/myspace.c:1782 +#: ../libpurple/protocols/myspace/myspace.c:1550 +msgid "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile.username and choose a username and try to login again." +msgstr "" + +#: ../libpurple/protocols/myspace/myspace.c:1777 #, c-format msgid "Protocol error, code %d: %s" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:1972 -#: ../libpurple/protocols/myspace/myspace.c:2006 +#: ../libpurple/protocols/myspace/myspace.c:1970 +#: ../libpurple/protocols/myspace/myspace.c:2004 #, fuzzy msgid "Failed to add buddy" msgstr "Kunne ikke bli med kontakt i samtale" -#: ../libpurple/protocols/myspace/myspace.c:1972 +#: ../libpurple/protocols/myspace/myspace.c:1970 #, fuzzy msgid "'addbuddy' command failed." msgstr "Importer kontaktliste fra tjener" -#: ../libpurple/protocols/myspace/myspace.c:2006 -#: ../libpurple/protocols/myspace/myspace.c:2247 +#: ../libpurple/protocols/myspace/myspace.c:2004 +#: ../libpurple/protocols/myspace/myspace.c:2245 #, fuzzy msgid "persist command failed" msgstr "Feil med switchboard-tjenesten" -#: ../libpurple/protocols/myspace/myspace.c:2115 +#: ../libpurple/protocols/myspace/myspace.c:2113 #, c-format msgid "No such user: %s" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:2116 +#: ../libpurple/protocols/myspace/myspace.c:2114 #, fuzzy msgid "User lookup" msgstr "Brukerrom" -#: ../libpurple/protocols/myspace/myspace.c:2228 -#: ../libpurple/protocols/myspace/myspace.c:2247 -#: ../libpurple/protocols/myspace/myspace.c:2269 +#: ../libpurple/protocols/myspace/myspace.c:2226 +#: ../libpurple/protocols/myspace/myspace.c:2245 +#: ../libpurple/protocols/myspace/myspace.c:2267 #, fuzzy msgid "Failed to remove buddy" msgstr "Kunne ikke bli med kontakt i samtale" -#: ../libpurple/protocols/myspace/myspace.c:2228 +#: ../libpurple/protocols/myspace/myspace.c:2226 msgid "'delbuddy' command failed" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:2269 +#: ../libpurple/protocols/myspace/myspace.c:2267 #, fuzzy msgid "blocklist command failed" msgstr "Feil med switchboard-tjenesten" -#: ../libpurple/protocols/myspace/myspace.c:2315 +#: ../libpurple/protocols/myspace/myspace.c:2313 #, fuzzy msgid "Invalid input condition" msgstr "Fullfører tilkobling" #. TODO: g_realloc like msn, yahoo, irc, jabber? -#: ../libpurple/protocols/myspace/myspace.c:2333 -#: ../libpurple/protocols/myspace/myspace.c:2364 +#: ../libpurple/protocols/myspace/myspace.c:2331 +#: ../libpurple/protocols/myspace/myspace.c:2362 #, fuzzy msgid "Read buffer full" msgstr "Køen er full" -#: ../libpurple/protocols/myspace/myspace.c:2402 +#: ../libpurple/protocols/myspace/myspace.c:2400 #, fuzzy msgid "Unparseable message" msgstr "Kunne ikke tolke beskjed." -#: ../libpurple/protocols/myspace/myspace.c:2471 +#: ../libpurple/protocols/myspace/myspace.c:2469 #, fuzzy, c-format msgid "Couldn't connect to host: %s (%d)" msgstr "Kunne ikke koble til" -#: ../libpurple/protocols/myspace/myspace.c:2642 +#: ../libpurple/protocols/myspace/myspace.c:2640 #, fuzzy msgid "IM Friends" msgstr "Vinduer for direktemeldinger" -#: ../libpurple/protocols/myspace/myspace.c:2741 -#, c-format -msgid "" -"%d buddies were added or updated from the server (including buddies already " -"on the server-side list)" -msgstr "" - -#: ../libpurple/protocols/myspace/myspace.c:2742 +#: ../libpurple/protocols/myspace/myspace.c:2739 +#, c-format +msgid "%d buddies were added or updated from the server (including buddies already on the server-side list)" +msgstr "" + +#: ../libpurple/protocols/myspace/myspace.c:2740 #, fuzzy msgid "Add contacts from server" msgstr "Ugyldig svar fra tjener." -#: ../libpurple/protocols/myspace/myspace.c:2794 -#: ../libpurple/protocols/myspace/myspace.c:2859 +#: ../libpurple/protocols/myspace/myspace.c:2792 +#: ../libpurple/protocols/myspace/myspace.c:2857 msgid "Add friends from MySpace.com" -msgstr "" - -#: ../libpurple/protocols/myspace/myspace.c:2795 +msgstr "Legg til venner fra MySpace.com" + +#: ../libpurple/protocols/myspace/myspace.c:2793 #, fuzzy msgid "Importing friends failed" msgstr "Ugyldig 'friend'-fil" #. TODO: find out how -#: ../libpurple/protocols/myspace/myspace.c:2851 +#: ../libpurple/protocols/myspace/myspace.c:2849 msgid "Find people..." msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:2854 +#: ../libpurple/protocols/myspace/myspace.c:2852 #, fuzzy msgid "Change IM name..." msgstr "Bytt passord..." -#: ../libpurple/protocols/myspace/myspace.c:3156 +#: ../libpurple/protocols/myspace/myspace.c:3154 msgid "myim URL handler" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:3157 +#: ../libpurple/protocols/myspace/myspace.c:3155 msgid "No suitable MySpaceIM account could be found to open this myim URL." msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:3158 +#: ../libpurple/protocols/myspace/myspace.c:3156 msgid "Enable the proper MySpaceIM account and try again." msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:3281 +#: ../libpurple/protocols/myspace/myspace.c:3279 msgid "Show display name in status text" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:3284 +#: ../libpurple/protocols/myspace/myspace.c:3282 #, fuzzy msgid "Show headline in status text" msgstr "Vis aliasnavn i titteltekster" -#: ../libpurple/protocols/myspace/myspace.c:3289 +#: ../libpurple/protocols/myspace/myspace.c:3287 #, fuzzy msgid "Send emoticons" msgstr "Lydinnstillinger" -#: ../libpurple/protocols/myspace/myspace.c:3294 +#: ../libpurple/protocols/myspace/myspace.c:3292 msgid "Screen resolution (dots per inch)" msgstr "" -#: ../libpurple/protocols/myspace/myspace.c:3297 +#: ../libpurple/protocols/myspace/myspace.c:3295 #, fuzzy msgid "Base font size (points)" msgstr "Større skrift" @@ -7805,13 +7832,12 @@ #: ../libpurple/protocols/myspace/user.c:95 #: ../libpurple/protocols/zephyr/zephyr.c:786 #: ../libpurple/protocols/zephyr/zephyr.c:1204 -#, fuzzy msgid "User" -msgstr "Brukere" +msgstr "Bruker" #. TODO: link to username, if available #: ../libpurple/protocols/myspace/user.c:102 -#: ../libpurple/protocols/oscar/oscar.c:2964 +#: ../libpurple/protocols/oscar/oscar.c:2960 msgid "Profile" msgstr "Profil" @@ -7821,13 +7847,12 @@ msgstr "Avslå" #: ../libpurple/protocols/myspace/user.c:129 -#, fuzzy msgid "Song" -msgstr "_Sortering:" +msgstr "Sang" #: ../libpurple/protocols/myspace/user.c:134 msgid "Total Friends" -msgstr "" +msgstr "Antall venner" #: ../libpurple/protocols/myspace/user.c:145 #: ../libpurple/protocols/myspace/user.c:148 @@ -8068,12 +8093,8 @@ #: ../libpurple/protocols/novell/nmuser.c:1928 #, fuzzy -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" #: ../libpurple/protocols/novell/nmuser.c:1931 msgid "You cannot add the same person twice to a conversation" @@ -8101,11 +8122,8 @@ msgstr "Brukeren har blokkert deg" #: ../libpurple/protocols/novell/nmuser.c:1950 -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" #: ../libpurple/protocols/novell/nmuser.c:1953 msgid "The user is either offline or you are blocked" @@ -8121,113 +8139,104 @@ msgid "Login failed (%s)." msgstr "Pålogging feilet (%s)" -#: ../libpurple/protocols/novell/novell.c:247 +#: ../libpurple/protocols/novell/novell.c:249 #, c-format msgid "Unable to send message. Could not get details for user (%s)." msgstr "Kunne ikke sende beskjed. Klarte ikke hente brukerdetaljer (%s)." -#: ../libpurple/protocols/novell/novell.c:396 +#: ../libpurple/protocols/novell/novell.c:398 #, c-format msgid "Unable to add %s to your buddy list (%s)." msgstr "Kunne ikke legge til %s til kontaktlisten din (%s)." #. TODO: Improve this! message to who or for what conference? -#: ../libpurple/protocols/novell/novell.c:422 +#: ../libpurple/protocols/novell/novell.c:424 #, c-format msgid "Unable to send message (%s)." msgstr "Kunne ikke sende beskjed (%s)." -#: ../libpurple/protocols/novell/novell.c:493 -#: ../libpurple/protocols/novell/novell.c:985 +#: ../libpurple/protocols/novell/novell.c:495 +#: ../libpurple/protocols/novell/novell.c:987 #, c-format msgid "Unable to invite user (%s)." msgstr "Kunne ikke invitere bruker (%s)." -#: ../libpurple/protocols/novell/novell.c:532 +#: ../libpurple/protocols/novell/novell.c:534 #, c-format msgid "Unable to send message to %s. Could not create the conference (%s)." -msgstr "" -"Klarte ikke sende beskjed til %s. Kunne ikke sette opp konferansen (%s)." - -#: ../libpurple/protocols/novell/novell.c:537 +msgstr "Klarte ikke sende beskjed til %s. Kunne ikke sette opp konferansen (%s)." + +#: ../libpurple/protocols/novell/novell.c:539 #, c-format msgid "Unable to send message. Could not create the conference (%s)." msgstr "Klarte ikke sende beskjed. Kunne ikke sette opp konferansen (%s)." -#: ../libpurple/protocols/novell/novell.c:584 -#, 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)." - -#: ../libpurple/protocols/novell/novell.c:632 -#, 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)." - -#: ../libpurple/protocols/novell/novell.c:705 +#: ../libpurple/protocols/novell/novell.c:586 +#, 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)." + +#: ../libpurple/protocols/novell/novell.c:634 +#, 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)." + +#: ../libpurple/protocols/novell/novell.c:707 #, c-format msgid "Could not get details for user %s (%s)." msgstr "Kunne ikke hente detaljer for brukeren %s (%s)." -#: ../libpurple/protocols/novell/novell.c:751 -#: ../libpurple/protocols/novell/novell.c:897 +#: ../libpurple/protocols/novell/novell.c:753 +#: ../libpurple/protocols/novell/novell.c:899 #, c-format msgid "Unable to add user to privacy list (%s)." msgstr "Kunne ikke legge til bruker til privatliste (%s)." -#: ../libpurple/protocols/novell/novell.c:798 +#: ../libpurple/protocols/novell/novell.c:800 #, c-format msgid "Unable to add %s to deny list (%s)." msgstr "Kunne ikke legge til %s til nektingsliste (%s)." -#: ../libpurple/protocols/novell/novell.c:851 +#: ../libpurple/protocols/novell/novell.c:853 #, c-format msgid "Unable to add %s to permit list (%s)." msgstr "Kunne ikke legge til %s til tillatelsesliste (%s)." -#: ../libpurple/protocols/novell/novell.c:919 +#: ../libpurple/protocols/novell/novell.c:921 #, c-format msgid "Unable to remove %s from privacy list (%s)." msgstr "Kunne ikke fjerne %s fra privatliste (%s)." -#: ../libpurple/protocols/novell/novell.c:942 -#: ../libpurple/protocols/novell/novell.c:1647 +#: ../libpurple/protocols/novell/novell.c:944 +#: ../libpurple/protocols/novell/novell.c:1649 #, c-format msgid "Unable to change server side privacy settings (%s)." msgstr "Klarte ikke endre personsvernsinstillinger på tjenersiden (%s)." -#: ../libpurple/protocols/novell/novell.c:1012 +#: ../libpurple/protocols/novell/novell.c:1014 #, c-format msgid "Unable to create conference (%s)." msgstr "Klarte ikke opprette konferanse (%s)." -#: ../libpurple/protocols/novell/novell.c:1121 -#: ../libpurple/protocols/novell/novell.c:1692 +#: ../libpurple/protocols/novell/novell.c:1123 +#: ../libpurple/protocols/novell/novell.c:1694 msgid "Error communicating with server. Closing connection." msgstr "Feil i kommunikasjon med tjener, stenger forbindelse." -#: ../libpurple/protocols/novell/novell.c:1476 +#: ../libpurple/protocols/novell/novell.c:1478 msgid "Telephone Number" msgstr "Telefonnummer" -#: ../libpurple/protocols/novell/novell.c:1482 +#: ../libpurple/protocols/novell/novell.c:1484 msgid "Personal Title" msgstr "Tittel" # VAR: E-post -#: ../libpurple/protocols/novell/novell.c:1486 +#: ../libpurple/protocols/novell/novell.c:1488 msgid "Mailstop" msgstr "" -#: ../libpurple/protocols/novell/novell.c:1502 +#: ../libpurple/protocols/novell/novell.c:1504 #: ../libpurple/protocols/sametime/sametime.c:4122 msgid "User ID" msgstr "Brukerid" @@ -8238,41 +8247,41 @@ #. purple_notify_user_info_add_pair(user_info, tag, value); #. } #. -#: ../libpurple/protocols/novell/novell.c:1515 +#: ../libpurple/protocols/novell/novell.c:1517 msgid "Full name" msgstr "Fullt navn" -#: ../libpurple/protocols/novell/novell.c:1637 +#: ../libpurple/protocols/novell/novell.c:1639 #, c-format msgid "GroupWise Conference %d" msgstr "GroupWise-konferanse %d" -#: ../libpurple/protocols/novell/novell.c:1668 +#: ../libpurple/protocols/novell/novell.c:1670 msgid "Unable to make SSL connection to server." msgstr "Klarte ikke opprette SSL-forbindelse med tjeneren." -#: ../libpurple/protocols/novell/novell.c:1720 +#: ../libpurple/protocols/novell/novell.c:1722 msgid "Authenticating..." msgstr "Autentiserer..." -#: ../libpurple/protocols/novell/novell.c:1732 +#: ../libpurple/protocols/novell/novell.c:1734 msgid "Unable to connect to server." msgstr "Kan ikke koble til tjener." -#: ../libpurple/protocols/novell/novell.c:1735 +#: ../libpurple/protocols/novell/novell.c:1737 msgid "Waiting for response..." msgstr "Venter på svar..." -#: ../libpurple/protocols/novell/novell.c:1870 +#: ../libpurple/protocols/novell/novell.c:1872 #, c-format msgid "%s has been invited to this conversation." msgstr "%s har blitt invitert til denne samtalen." -#: ../libpurple/protocols/novell/novell.c:1898 +#: ../libpurple/protocols/novell/novell.c:1900 msgid "Invitation to Conversation" msgstr "Invitasjon til samtale" -#: ../libpurple/protocols/novell/novell.c:1899 +#: ../libpurple/protocols/novell/novell.c:1901 #, c-format msgid "" "Invitation from: %s\n" @@ -8283,43 +8292,34 @@ "\n" "Sent: %s" -#: ../libpurple/protocols/novell/novell.c:1901 +#: ../libpurple/protocols/novell/novell.c:1903 msgid "Would you like to join the conversation?" msgstr "Ønsker du å bli med i samtalen?" -#. we don't want to reconnect in this case -#: ../libpurple/protocols/novell/novell.c:2012 +#: ../libpurple/protocols/novell/novell.c:2017 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." - -#: ../libpurple/protocols/novell/novell.c:2069 -#, 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." + +#: ../libpurple/protocols/novell/novell.c:2074 +#, 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." #. TODO: Would be nice to prompt if not set! #. * purple_request_fields(gc, _("Server Address"),...); #. #. ...but for now just error out with a nice message. -#: ../libpurple/protocols/novell/novell.c:2167 -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." - -#: ../libpurple/protocols/novell/novell.c:2195 +#: ../libpurple/protocols/novell/novell.c:2172 +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." + +#: ../libpurple/protocols/novell/novell.c:2200 msgid "Error. SSL support is not installed." msgstr "Feil: SSL-støtte er ikke installert." -#: ../libpurple/protocols/novell/novell.c:2504 -#, c-format +#: ../libpurple/protocols/novell/novell.c:2509 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 @@ -8331,43 +8331,51 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/novell/novell.c:3518 -#: ../libpurple/protocols/novell/novell.c:3520 +#: ../libpurple/protocols/novell/novell.c:3523 +#: ../libpurple/protocols/novell/novell.c:3525 msgid "Novell GroupWise Messenger Protocol Plugin" msgstr "Novel GroupWise Messenger protolltillegg" -#: ../libpurple/protocols/novell/novell.c:3545 +#: ../libpurple/protocols/novell/novell.c:3550 msgid "Server address" msgstr "Tjeneradresse" -#: ../libpurple/protocols/novell/novell.c:3549 +#: ../libpurple/protocols/novell/novell.c:3554 msgid "Server port" msgstr "Tjenerport" -#: ../libpurple/protocols/oscar/flap_connection.c:387 -#: ../libpurple/protocols/yahoo/yahoo.c:2469 -#: ../libpurple/protocols/yahoo/yahoo.c:2636 -#: ../libpurple/protocols/yahoo/ycht.c:481 ../libpurple/proxy.c:581 -#: ../libpurple/proxy.c:1116 ../libpurple/proxy.c:1225 -#: ../libpurple/proxy.c:1325 ../libpurple/proxy.c:1453 +#: ../libpurple/protocols/oscar/flap_connection.c:389 +#: ../libpurple/protocols/yahoo/yahoo.c:2468 +#: ../libpurple/protocols/yahoo/yahoo.c:2635 +#: ../libpurple/protocols/yahoo/ycht.c:481 +#: ../libpurple/proxy.c:581 +#: ../libpurple/proxy.c:1116 +#: ../libpurple/proxy.c:1225 +#: ../libpurple/proxy.c:1325 +#: ../libpurple/proxy.c:1453 #, fuzzy msgid "Server closed the connection." msgstr "Feil: kunne ikke koble til" -#: ../libpurple/protocols/oscar/flap_connection.c:389 -#: ../libpurple/protocols/yahoo/yahoo.c:2463 -#: ../libpurple/protocols/yahoo/yahoo.c:2630 ../libpurple/proxy.c:593 -#: ../libpurple/proxy.c:1128 ../libpurple/proxy.c:1237 -#: ../libpurple/proxy.c:1337 ../libpurple/proxy.c:1465 +#: ../libpurple/protocols/oscar/flap_connection.c:391 +#: ../libpurple/protocols/yahoo/yahoo.c:2462 +#: ../libpurple/protocols/yahoo/yahoo.c:2629 +#: ../libpurple/proxy.c:593 +#: ../libpurple/proxy.c:1128 +#: ../libpurple/proxy.c:1237 +#: ../libpurple/proxy.c:1337 +#: ../libpurple/proxy.c:1465 #, fuzzy, c-format msgid "" "Lost connection with server:\n" "%s" msgstr "Du har blitt koblet fra tjeneren." -#: ../libpurple/protocols/oscar/flap_connection.c:392 -#: ../libpurple/proxy.c:1145 ../libpurple/proxy.c:1250 -#: ../libpurple/proxy.c:1349 ../libpurple/proxy.c:1421 +#: ../libpurple/protocols/oscar/flap_connection.c:394 +#: ../libpurple/proxy.c:1145 +#: ../libpurple/proxy.c:1250 +#: ../libpurple/proxy.c:1349 +#: ../libpurple/proxy.c:1421 #: ../libpurple/proxy.c:1478 #, fuzzy msgid "Received invalid data on connection with server." @@ -8406,7 +8414,7 @@ msgstr "IRC-protokolltillegg" #: ../libpurple/protocols/oscar/libicq.c:147 -#: ../libpurple/protocols/yahoo/yahoo.c:4410 +#: ../libpurple/protocols/yahoo/yahoo.c:4409 #: ../libpurple/protocols/zephyr/zephyr.c:2997 msgid "Encoding" msgstr "Tegnkoding:" @@ -8541,25 +8549,18 @@ msgstr "Ikke mens du er på AOL" #: ../libpurple/protocols/oscar/oscar.c:348 -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.)" +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 "" # Lusete klient :P #: ../libpurple/protocols/oscar/oscar.c:457 #, fuzzy, 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 oppsto en feil under mottak av denne meldingen. Kontakten du snakker " -"til har sannsynligvis en lusete klient.)" +msgid "(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)" +msgstr "(Det oppsto en feil under mottak av denne meldingen. Kontakten du snakker til har sannsynligvis en lusete klient.)" #. Label -#: ../libpurple/protocols/oscar/oscar.c:639 ../pidgin/gtkutils.c:2387 +#: ../libpurple/protocols/oscar/oscar.c:639 +#: ../pidgin/gtkutils.c:2387 #: ../pidgin/gtkutils.c:2417 #: ../pidgin/plugins/gevolution/new_person_dialog.c:332 msgid "Buddy Icon" @@ -8582,7 +8583,7 @@ msgstr "Samtale" #: ../libpurple/protocols/oscar/oscar.c:651 -#: ../libpurple/protocols/oscar/oscar.c:6010 +#: ../libpurple/protocols/oscar/oscar.c:6008 msgid "Get File" msgstr "Laste ned fil" @@ -8655,49 +8656,48 @@ msgstr "Kamera" #: ../libpurple/protocols/oscar/oscar.c:725 -#: ../libpurple/protocols/oscar/oscar.c:5780 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:5778 msgid "Free For Chat" msgstr "Tilgjengelig for samtale" #: ../libpurple/protocols/oscar/oscar.c:729 -#: ../libpurple/protocols/oscar/oscar.c:5815 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:5813 msgid "Not Available" msgstr "Ikke tilgjengelig" #: ../libpurple/protocols/oscar/oscar.c:731 -#: ../libpurple/protocols/oscar/oscar.c:5801 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:5799 msgid "Occupied" msgstr "Opptatt" #: ../libpurple/protocols/oscar/oscar.c:735 -#, fuzzy, c-format +#, fuzzy msgid "Web Aware" msgstr "Web-oppmerksom" -#: ../libpurple/protocols/oscar/oscar.c:737 ../libpurple/protocols/qq/qq.c:183 +#: ../libpurple/protocols/oscar/oscar.c:737 +#: ../libpurple/protocols/qq/qq.c:183 #: ../libpurple/protocols/qq/qq.c:288 -#: ../libpurple/protocols/yahoo/yahoo.c:3095 ../libpurple/status.c:157 -#: ../pidgin/gtkdocklet.c:446 ../pidgin/gtkstatusbox.c:1060 -#, c-format +#: ../libpurple/protocols/yahoo/yahoo.c:3094 +#: ../libpurple/status.c:157 +#: ../pidgin/gtkdocklet.c:446 +#: ../pidgin/gtkstatusbox.c:1060 msgid "Invisible" msgstr "Usynlig" #: ../libpurple/protocols/oscar/oscar.c:739 -#, c-format msgid "Online" msgstr "Pålogget" #: ../libpurple/protocols/oscar/oscar.c:838 -#: ../libpurple/protocols/oscar/oscar.c:3707 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1126 +#: ../libpurple/protocols/oscar/oscar.c:3703 +#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 +#: ../pidgin/gtkprefs.c:1128 msgid "IP Address" msgstr "IP-adresse" #: ../libpurple/protocols/oscar/oscar.c:845 -#: ../libpurple/protocols/oscar/oscar.c:2891 +#: ../libpurple/protocols/oscar/oscar.c:2887 msgid "Warning Level" msgstr "Advarselsnivåer" @@ -8735,25 +8735,19 @@ #: ../libpurple/protocols/oscar/oscar.c:1260 #, fuzzy, c-format -msgid "" -"Unable to login: Could not sign on as %s because the screen name is " -"invalid. Screen names 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 logge på: Kunne ikke logge på som %s fordi skjermnavnet er " -"ugyldig. Skjermnavn må enten starte med en bokstav og kun inneholde tall, " -"bokstaver, og mellomrom, eller bare inneholde tall." +msgid "Unable to login: Could not sign on as %s because the screen name is invalid. Screen names 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 logge på: Kunne ikke logge på som %s fordi skjermnavnet er ugyldig. Skjermnavn må enten starte med en bokstav og kun inneholde tall, bokstaver, og mellomrom, eller bare inneholde tall." #: ../libpurple/protocols/oscar/oscar.c:1345 -#: ../libpurple/protocols/yahoo/yahoo.c:2105 +#: ../libpurple/protocols/yahoo/yahoo.c:2104 #, fuzzy msgid "Invalid screen name." msgstr "Ugyldig brukernavn," #: ../libpurple/protocols/oscar/oscar.c:1352 -#: ../libpurple/protocols/qq/login_logout.c:483 -#: ../libpurple/protocols/simple/simple.c:1045 -#: ../libpurple/protocols/yahoo/yahoo.c:2126 +#: ../libpurple/protocols/qq/login_logout.c:485 +#: ../libpurple/protocols/simple/simple.c:1047 +#: ../libpurple/protocols/yahoo/yahoo.c:2125 msgid "Incorrect password." msgstr "Feil passord." @@ -8768,18 +8762,13 @@ #: ../libpurple/protocols/oscar/oscar.c:1366 #: ../libpurple/protocols/oscar/oscar.c:1377 -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." #: ../libpurple/protocols/oscar/oscar.c:1371 #, c-format msgid "The client version you are using is too old. Please upgrade at %s" -msgstr "" -"Klientversjonen av programmet er for gammel. Vennligst oppgrader her: %s" +msgstr "Klientversjonen av programmet er for gammel. Vennligst oppgrader her: %s" #: ../libpurple/protocols/oscar/oscar.c:1410 msgid "Could Not Connect" @@ -8805,23 +8794,19 @@ #. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. #. #: ../libpurple/protocols/oscar/oscar.c:1452 -#: ../libpurple/protocols/oscar/oscar.c:2232 -#: ../libpurple/protocols/oscar/oscar.c:2281 -#: ../libpurple/protocols/oscar/oscar.c:5885 -#: ../libpurple/protocols/oscar/oscar.c:6166 ../libpurple/request.h:1388 -#, fuzzy +#: ../libpurple/protocols/oscar/oscar.c:2228 +#: ../libpurple/protocols/oscar/oscar.c:2277 +#: ../libpurple/protocols/oscar/oscar.c:5883 +#: ../libpurple/protocols/oscar/oscar.c:6164 +#: ../libpurple/request.h:1388 msgid "_OK" msgstr "_OK" #: ../libpurple/protocols/oscar/oscar.c:1491 #: ../libpurple/protocols/oscar/oscar.c:1534 #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er " -"ordnet. Sjekk %s for oppdateringer." +msgid "You may be disconnected shortly. You may want to use TOC until this is fixed. Check %s for updates." +msgstr "Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er ordnet. Sjekk %s for oppdateringer." #: ../libpurple/protocols/oscar/oscar.c:1494 #: ../libpurple/protocols/oscar/oscar.c:1537 @@ -8832,9 +8817,7 @@ #: ../libpurple/protocols/oscar/oscar.c:1622 #, fuzzy, c-format msgid "You may be disconnected shortly. Check %s for updates." -msgstr "" -"Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er " -"ordnet. Sjekk %s for oppdateringer." +msgstr "Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er ordnet. Sjekk %s for oppdateringer." #: ../libpurple/protocols/oscar/oscar.c:1625 #, fuzzy @@ -8850,55 +8833,50 @@ msgid "Unable to initialize connection" msgstr "Kunne ikke lage ny tilkobling." -#: ../libpurple/protocols/oscar/oscar.c:2202 +#: ../libpurple/protocols/oscar/oscar.c:2198 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." - -#: ../libpurple/protocols/oscar/oscar.c:2230 +msgstr "Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min." + +#: ../libpurple/protocols/oscar/oscar.c:2226 msgid "Authorization Request Message:" msgstr "Beskjed i godkjenningsforespørsel:" -#: ../libpurple/protocols/oscar/oscar.c:2231 +#: ../libpurple/protocols/oscar/oscar.c:2227 msgid "Please authorize me!" msgstr "Vennligst godkjenn meg!" -#: ../libpurple/protocols/oscar/oscar.c:2272 -#: ../libpurple/protocols/oscar/oscar.c:2280 -#: ../libpurple/protocols/oscar/oscar.c:2407 -#: ../libpurple/protocols/oscar/oscar.c:5263 -#: ../libpurple/protocols/yahoo/yahoo.c:1030 +#: ../libpurple/protocols/oscar/oscar.c:2268 +#: ../libpurple/protocols/oscar/oscar.c:2276 +#: ../libpurple/protocols/oscar/oscar.c:2403 +#: ../libpurple/protocols/oscar/oscar.c:5259 +#: ../libpurple/protocols/yahoo/yahoo.c:1029 msgid "No reason given." msgstr "Ingen grunn spesifisert." -#: ../libpurple/protocols/oscar/oscar.c:2279 +#: ../libpurple/protocols/oscar/oscar.c:2275 msgid "Authorization Denied Message:" msgstr "Godkjenning nektet, grunn:" -#: ../libpurple/protocols/oscar/oscar.c:2407 -#, c-format -msgid "" -"The user %u has denied your request to add them to your buddy list for the " -"following reason:\n" +#: ../libpurple/protocols/oscar/oscar.c:2403 +#, c-format +msgid "" +"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" -#: ../libpurple/protocols/oscar/oscar.c:2408 +#: ../libpurple/protocols/oscar/oscar.c:2404 msgid "ICQ authorization denied." msgstr "ICQ-godkjenning avslått." #. Someone has granted you authorization -#: ../libpurple/protocols/oscar/oscar.c:2415 +#: ../libpurple/protocols/oscar/oscar.c:2411 #, 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." - -#: ../libpurple/protocols/oscar/oscar.c:2423 +msgstr "Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten din." + +#: ../libpurple/protocols/oscar/oscar.c:2419 #, c-format msgid "" "You have received a special message\n" @@ -8911,7 +8889,7 @@ "Fra: %s [%s]\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:2431 +#: ../libpurple/protocols/oscar/oscar.c:2427 #, c-format msgid "" "You have received an ICQ page\n" @@ -8924,7 +8902,7 @@ "Fra: %s [%s]\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:2439 +#: ../libpurple/protocols/oscar/oscar.c:2435 #, c-format msgid "" "You have received an ICQ e-mail from %s [%s]\n" @@ -8937,69 +8915,60 @@ "Beskjed:\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:2460 +#: ../libpurple/protocols/oscar/oscar.c:2456 #, c-format msgid "ICQ user %u has sent you a buddy: %s (%s)" msgstr "ICQ-brukeren %u har sent deg en kontakt: %s (%s)" -#: ../libpurple/protocols/oscar/oscar.c:2466 +#: ../libpurple/protocols/oscar/oscar.c:2462 msgid "Do you want to add this buddy to your buddy list?" msgstr "Ønsker du å legge denne kontakten til i kontaktlisten din?" -#: ../libpurple/protocols/oscar/oscar.c:2471 ../pidgin/gtkroomlist.c:309 -#, fuzzy +#: ../libpurple/protocols/oscar/oscar.c:2467 +#: ../pidgin/gtkroomlist.c:309 msgid "_Add" -msgstr "Legg til" - -#: ../libpurple/protocols/oscar/oscar.c:2472 -#, fuzzy +msgstr "_Legg til" + +#: ../libpurple/protocols/oscar/oscar.c:2468 msgid "_Decline" -msgstr "Avslå" - -#: ../libpurple/protocols/oscar/oscar.c:2596 +msgstr "_Avslå" + +#: ../libpurple/protocols/oscar/oscar.c:2592 #, 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] "Du har gått glipp av %hu beskjed fra %s fordi den var ugyldig." msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi de var ugyldige." -#: ../libpurple/protocols/oscar/oscar.c:2605 +#: ../libpurple/protocols/oscar/oscar.c:2601 #, 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] "Du har gått glipp av %hu beskjed fra %s fordi den var for stor." msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi de var for store." -#: ../libpurple/protocols/oscar/oscar.c:2614 -#, 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." - -#: ../libpurple/protocols/oscar/oscar.c:2623 +#: ../libpurple/protocols/oscar/oscar.c:2610 +#, 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." + +#: ../libpurple/protocols/oscar/oscar.c:2619 #, c-format msgid "You missed %hu message from %s because he/she was too evil." msgid_plural "You missed %hu messages from %s because he/she was too evil." -msgstr[0] "" -"Du har gått glipp av %hu beskjed fra %s fordi vedkommende var for ond." -msgstr[1] "" -"Du har gått glipp av %hu beskjeder fra %s fordi vedkommende var for ond." - -#: ../libpurple/protocols/oscar/oscar.c:2632 +msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi vedkommende var for ond." +msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi vedkommende var for ond." + +#: ../libpurple/protocols/oscar/oscar.c:2628 #, c-format msgid "You missed %hu message from %s because you are too evil." msgid_plural "You missed %hu messages from %s because you are too evil." msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi du er for ond." msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi du er for ond." -#: ../libpurple/protocols/oscar/oscar.c:2641 +#: ../libpurple/protocols/oscar/oscar.c:2637 #, 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." @@ -9007,559 +8976,465 @@ msgstr[1] "Du har gått glipp av %hu beskjeder fra %s, ingen grunn oppgitt." #. Data is assumed to be the destination sn -#: ../libpurple/protocols/oscar/oscar.c:2796 +#: ../libpurple/protocols/oscar/oscar.c:2792 #, c-format msgid "Unable to send message: %s" msgstr "Kunne ikke sende beskjed: %s" -#: ../libpurple/protocols/oscar/oscar.c:2796 -#: ../libpurple/protocols/oscar/oscar.c:2801 -#: ../libpurple/protocols/oscar/oscar.c:2865 +#: ../libpurple/protocols/oscar/oscar.c:2792 +#: ../libpurple/protocols/oscar/oscar.c:2797 +#: ../libpurple/protocols/oscar/oscar.c:2861 msgid "Unknown reason." msgstr "Ukjent grunn." -#: ../libpurple/protocols/oscar/oscar.c:2799 +#: ../libpurple/protocols/oscar/oscar.c:2795 #: ../libpurple/protocols/sametime/sametime.c:2409 #, c-format msgid "Unable to send message to %s:" msgstr "Kunne ikke sende beskjed til %s." -#: ../libpurple/protocols/oscar/oscar.c:2865 +#: ../libpurple/protocols/oscar/oscar.c:2861 #, c-format msgid "User information not available: %s" msgstr "Brukerinformasjon er ikke tilgjengelig: %s" -#: ../libpurple/protocols/oscar/oscar.c:2896 +#: ../libpurple/protocols/oscar/oscar.c:2892 msgid "Online Since" msgstr "Pålogget siden" -#: ../libpurple/protocols/oscar/oscar.c:2901 +#: ../libpurple/protocols/oscar/oscar.c:2897 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1185 msgid "Member Since" msgstr "Medlem siden" -#: ../libpurple/protocols/oscar/oscar.c:2936 +#: ../libpurple/protocols/oscar/oscar.c:2932 #, fuzzy msgid "Available Message" msgstr "Tilstedebeskjed:" -#: ../libpurple/protocols/oscar/oscar.c:3044 +#: ../libpurple/protocols/oscar/oscar.c:3040 msgid "Your AIM connection may be lost." msgstr "AIM-tilkoblingen kan være brutt." #. The conversion failed! -#: ../libpurple/protocols/oscar/oscar.c:3232 -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.]" - -#: ../libpurple/protocols/oscar/oscar.c:3396 -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." - -#: ../libpurple/protocols/oscar/oscar.c:3479 +#: ../libpurple/protocols/oscar/oscar.c:3228 +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.]" + +#: ../libpurple/protocols/oscar/oscar.c:3392 +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." + +#: ../libpurple/protocols/oscar/oscar.c:3475 #: ../libpurple/protocols/toc/toc.c:977 #, c-format msgid "You have been disconnected from chat room %s." msgstr "Du har blitt koblet fra samtalegruppen %s." -#: ../libpurple/protocols/oscar/oscar.c:3729 +#: ../libpurple/protocols/oscar/oscar.c:3725 #: ../libpurple/protocols/silc/util.c:585 #: ../libpurple/protocols/silc10/util.c:581 msgid "Mobile Phone" msgstr "Mobiltelefon" -#: ../libpurple/protocols/oscar/oscar.c:3759 +#: ../libpurple/protocols/oscar/oscar.c:3755 msgid "Personal Web Page" msgstr "Personlig hjemmeside" -#: ../libpurple/protocols/oscar/oscar.c:3783 +#: ../libpurple/protocols/oscar/oscar.c:3779 #: ../libpurple/protocols/qq/buddy_info.c:40 msgid "Additional Information" msgstr "Tilleggsinformasjon" -#: ../libpurple/protocols/oscar/oscar.c:3791 -#: ../libpurple/protocols/oscar/oscar.c:3804 +#: ../libpurple/protocols/oscar/oscar.c:3787 +#: ../libpurple/protocols/oscar/oscar.c:3800 msgid "Zip Code" msgstr "Postnummer" -#: ../libpurple/protocols/oscar/oscar.c:3815 +#: ../libpurple/protocols/oscar/oscar.c:3811 msgid "Division" msgstr "Avdeling" -#: ../libpurple/protocols/oscar/oscar.c:3816 +#: ../libpurple/protocols/oscar/oscar.c:3812 msgid "Position" msgstr "Stilling" -#: ../libpurple/protocols/oscar/oscar.c:3818 +#: ../libpurple/protocols/oscar/oscar.c:3814 msgid "Web Page" msgstr "Hjemmeside" -#: ../libpurple/protocols/oscar/oscar.c:3821 +#: ../libpurple/protocols/oscar/oscar.c:3817 msgid "Work Information" msgstr "Arbeid ekstra info" -#: ../libpurple/protocols/oscar/oscar.c:3877 +#: ../libpurple/protocols/oscar/oscar.c:3873 msgid "Pop-Up Message" msgstr "Varslingsbeskjed" -#: ../libpurple/protocols/oscar/oscar.c:3917 -#, fuzzy, c-format +#: ../libpurple/protocols/oscar/oscar.c:3913 +#, c-format msgid "The following screen name is associated with %s" msgid_plural "The following screen names are associated with %s" -msgstr[0] "De følgende skjermnavnene er assosierte med %s" +msgstr[0] "Det følgende skjermnavnet er assosierte med %s" msgstr[1] "De følgende skjermnavnene er assosierte med %s" -#: ../libpurple/protocols/oscar/oscar.c:3922 -#, fuzzy +#: ../libpurple/protocols/oscar/oscar.c:3918 msgid "Screen name" -msgstr "_Skjermnavn" - -#: ../libpurple/protocols/oscar/oscar.c:3948 +msgstr "Skjermnavn" + +#: ../libpurple/protocols/oscar/oscar.c:3944 #, c-format msgid "No results found for e-mail address %s" msgstr "Ingen resultater funnet for e-postadresse %s" -#: ../libpurple/protocols/oscar/oscar.c:3969 +#: ../libpurple/protocols/oscar/oscar.c:3965 #, c-format msgid "You should receive an e-mail asking to confirm %s." msgstr "Du vil motta en e-post hvor du blir bedt om å bekrefte %s." -#: ../libpurple/protocols/oscar/oscar.c:3971 +#: ../libpurple/protocols/oscar/oscar.c:3967 msgid "Account Confirmation Requested" msgstr "Kontobekreftelse forespurt" -#: ../libpurple/protocols/oscar/oscar.c:4002 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:3998 msgid "Error Changing Account Info" msgstr "Feil ved endring av kontoinformasjon" -#: ../libpurple/protocols/oscar/oscar.c:4005 -#, c-format -msgid "" -"Error 0x%04x: Unable to format screen name because the requested screen name " -"differs from the original." -msgstr "" -"Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte " -"skjermnavnet er forskjellig fra det opprinnelige." - -#: ../libpurple/protocols/oscar/oscar.c:4008 +#: ../libpurple/protocols/oscar/oscar.c:4001 +#, c-format +msgid "Error 0x%04x: Unable to format screen name because the requested screen name differs from the original." +msgstr "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte skjermnavnet er forskjellig fra det opprinnelige." + +#: ../libpurple/protocols/oscar/oscar.c:4004 #, fuzzy, c-format msgid "Error 0x%04x: Unable to format screen name because it is invalid." -msgstr "" -"Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte " -"skjermnavnet er for langt." - -#: ../libpurple/protocols/oscar/oscar.c:4011 -#, c-format -msgid "" -"Error 0x%04x: Unable to format screen name because the requested screen name " -"is too long." -msgstr "" -"Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte " -"skjermnavnet er for langt." - -#: ../libpurple/protocols/oscar/oscar.c:4014 -#, c-format -msgid "" -"Error 0x%04x: Unable to change e-mail address because there is already a " -"request pending for this screen name." -msgstr "" -"Feil 0x%04x: Kunne ikke endre e-postadressen fordi det finnes en utestående " -"forespørsel for dette skjermnavnet." - -#: ../libpurple/protocols/oscar/oscar.c:4017 -#, c-format -msgid "" -"Error 0x%04x: Unable to change e-mail address because the given address has " -"too many screen names associated with it." -msgstr "" -"Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen har " -"for mange skjermnavn assosiert ved seg." - -#: ../libpurple/protocols/oscar/oscar.c:4020 -#, c-format -msgid "" -"Error 0x%04x: Unable to change e-mail address because the given address is " -"invalid." -msgstr "" -"Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen er " -"ugyldig." - -#: ../libpurple/protocols/oscar/oscar.c:4023 +msgstr "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte skjermnavnet er for langt." + +#: ../libpurple/protocols/oscar/oscar.c:4007 +#, c-format +msgid "Error 0x%04x: Unable to format screen name because the requested screen name is too long." +msgstr "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte skjermnavnet er for langt." + +#: ../libpurple/protocols/oscar/oscar.c:4010 +#, c-format +msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name." +msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi det finnes en utestående forespørsel for dette skjermnavnet." + +#: ../libpurple/protocols/oscar/oscar.c:4013 +#, c-format +msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it." +msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen har for mange skjermnavn assosiert ved seg." + +#: ../libpurple/protocols/oscar/oscar.c:4016 +#, c-format +msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid." +msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen er ugyldig." + +#: ../libpurple/protocols/oscar/oscar.c:4019 #, c-format msgid "Error 0x%04x: Unknown error." msgstr "Feil 0x%04x: Ukjent feil." -#: ../libpurple/protocols/oscar/oscar.c:4033 +#: ../libpurple/protocols/oscar/oscar.c:4029 #, c-format msgid "The e-mail address for %s is %s" msgstr "E-postadressen for %s er %s" -#: ../libpurple/protocols/oscar/oscar.c:4035 +#: ../libpurple/protocols/oscar/oscar.c:4031 msgid "Account Info" msgstr "Kontoinformasjon" -#: ../libpurple/protocols/oscar/oscar.c:4218 -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 tilkoplet for å " -"sende direktemeldingsbilder" - -#: ../libpurple/protocols/oscar/oscar.c:4489 +#: ../libpurple/protocols/oscar/oscar.c:4214 +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 tilkoplet for å sende direktemeldingsbilder" + +#: ../libpurple/protocols/oscar/oscar.c:4485 msgid "Unable to set AIM profile." msgstr "Kunne ikke sette AIM-profil." -#: ../libpurple/protocols/oscar/oscar.c:4490 -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." - -#: ../libpurple/protocols/oscar/oscar.c:4504 -#, fuzzy, 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 bytes har blitt overskredet. Gaim har avkortet " -"den før den ble lagret." -msgstr[1] "" -"Maksimum profillengde på %d bytes har blitt overskredet. Gaim har avkortet " -"den før den ble lagret." - -#: ../libpurple/protocols/oscar/oscar.c:4509 +#: ../libpurple/protocols/oscar/oscar.c:4486 +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." + +#: ../libpurple/protocols/oscar/oscar.c:4500 +#, fuzzy, 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. Gaim har avkortet den før den ble lagret." +msgstr[1] "Maksimum profillengde på %d bytes har blitt overskredet. Gaim har avkortet den før den ble lagret." + +#: ../libpurple/protocols/oscar/oscar.c:4505 msgid "Profile too long." msgstr "Profilen er for stor." -#: ../libpurple/protocols/oscar/oscar.c:4554 -#, fuzzy, 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. " -"Gaim har avkortet den." -msgstr[1] "" -"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. " -"Gaim har avkortet den." - -#: ../libpurple/protocols/oscar/oscar.c:4559 +#: ../libpurple/protocols/oscar/oscar.c:4550 +#, fuzzy, 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. Gaim har avkortet den." +msgstr[1] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Gaim har avkortet den." + +#: ../libpurple/protocols/oscar/oscar.c:4555 msgid "Away message too long." msgstr "Fraværsbeskjeden er for lang." -#: ../libpurple/protocols/oscar/oscar.c:4628 -#, fuzzy, c-format -msgid "" -"Could not add the buddy %s because the screen name is invalid. Screen names " -"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 skjermnavnet er ugyldig. Skjernavn " -"må enten starte med en bokstav og inneholde kun bokstaver, tall, og " -"mellomrom, eller bare inneholde nummer." - -#: ../libpurple/protocols/oscar/oscar.c:4630 -#: ../libpurple/protocols/oscar/oscar.c:5060 -#: ../libpurple/protocols/oscar/oscar.c:5075 +#: ../libpurple/protocols/oscar/oscar.c:4624 +#, fuzzy, c-format +msgid "Could not add the buddy %s because the screen name is invalid. Screen names 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 skjermnavnet er ugyldig. Skjernavn må enten starte med en bokstav og inneholde kun bokstaver, tall, og mellomrom, eller bare inneholde nummer." + +#: ../libpurple/protocols/oscar/oscar.c:4626 +#: ../libpurple/protocols/oscar/oscar.c:5056 +#: ../libpurple/protocols/oscar/oscar.c:5071 msgid "Unable To Add" msgstr "Kunne ikke legge til" -#: ../libpurple/protocols/oscar/oscar.c:4739 +#: ../libpurple/protocols/oscar/oscar.c:4735 msgid "Unable To Retrieve Buddy List" msgstr "Kunne ikke hente kontaktliste" -#: ../libpurple/protocols/oscar/oscar.c:4740 -#, fuzzy -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." -msgstr "" -"Gaim klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten " -"er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få timer." - -#: ../libpurple/protocols/oscar/oscar.c:4922 -#: ../libpurple/protocols/oscar/oscar.c:4924 -#: ../libpurple/protocols/oscar/oscar.c:5140 -#: ../libpurple/protocols/oscar/oscar.c:5141 -#: ../libpurple/protocols/oscar/oscar.c:5146 +#: ../libpurple/protocols/oscar/oscar.c:4736 +#, fuzzy +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." +msgstr "Gaim klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få timer." + +#: ../libpurple/protocols/oscar/oscar.c:4918 +#: ../libpurple/protocols/oscar/oscar.c:4920 +#: ../libpurple/protocols/oscar/oscar.c:5136 +#: ../libpurple/protocols/oscar/oscar.c:5137 +#: ../libpurple/protocols/oscar/oscar.c:5142 msgid "Orphans" msgstr "Ugrupperte" -#: ../libpurple/protocols/oscar/oscar.c:5058 -#, 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 legge til kontakten %s fordi du har for mange kontakter i listen. " -"Vennligst fjern en og prøv igjen." - -#: ../libpurple/protocols/oscar/oscar.c:5058 -#: ../libpurple/protocols/oscar/oscar.c:5073 +#: ../libpurple/protocols/oscar/oscar.c:5054 +#, 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 legge til kontakten %s fordi du har for mange kontakter i listen. Vennligst fjern en og prøv igjen." + +#: ../libpurple/protocols/oscar/oscar.c:5054 +#: ../libpurple/protocols/oscar/oscar.c:5069 msgid "(no name)" msgstr "(uten navn)" -#: ../libpurple/protocols/oscar/oscar.c:5072 +#: ../libpurple/protocols/oscar/oscar.c:5068 #, fuzzy, c-format msgid "Could not add the buddy %s for an unknown reason." msgstr "Din kommando feilet av ukjent årsak." -#: ../libpurple/protocols/oscar/oscar.c:5178 -#, c-format -msgid "" -"The user %s has given you permission to add you to their buddy list. Do you " -"want to add them?" -msgstr "" -"Brukeren %s har gitt deg tillatelse til å legge deg til i kontaktlisten sin. " -"Ønsker du å legge til vedkommende?" - -#: ../libpurple/protocols/oscar/oscar.c:5186 +#: ../libpurple/protocols/oscar/oscar.c:5174 +#, c-format +msgid "The user %s has given you permission to add you to their buddy list. Do you want to add them?" +msgstr "Brukeren %s har gitt deg tillatelse til å legge deg til i kontaktlisten sin. Ønsker du å legge til vedkommende?" + +#: ../libpurple/protocols/oscar/oscar.c:5182 msgid "Authorization Given" msgstr "Godkjent" #. Granted -#: ../libpurple/protocols/oscar/oscar.c:5259 +#: ../libpurple/protocols/oscar/oscar.c:5255 #, 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." - -#: ../libpurple/protocols/oscar/oscar.c:5260 +msgstr "Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten din." + +#: ../libpurple/protocols/oscar/oscar.c:5256 msgid "Authorization Granted" msgstr "Godkjent" #. Denied -#: ../libpurple/protocols/oscar/oscar.c:5263 -#, c-format -msgid "" -"The user %s has denied your request to add them to your buddy list for the " -"following reason:\n" +#: ../libpurple/protocols/oscar/oscar.c:5259 +#, c-format +msgid "" +"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" -#: ../libpurple/protocols/oscar/oscar.c:5264 +#: ../libpurple/protocols/oscar/oscar.c:5260 msgid "Authorization Denied" msgstr "Ikke godkjent" -#: ../libpurple/protocols/oscar/oscar.c:5300 +#: ../libpurple/protocols/oscar/oscar.c:5296 #: ../libpurple/protocols/toc/toc.c:1371 msgid "_Exchange:" msgstr "_Utveksling:" -#: ../libpurple/protocols/oscar/oscar.c:5340 +#: ../libpurple/protocols/oscar/oscar.c:5336 msgid "Invalid chat name specified." msgstr "Ugyldig gruppesamtalenavn oppgitt." -#: ../libpurple/protocols/oscar/oscar.c:5409 +#: ../libpurple/protocols/oscar/oscar.c:5405 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." - -#: ../libpurple/protocols/oscar/oscar.c:5569 -#: ../libpurple/protocols/oscar/oscar.c:5574 +msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du kan ikke sende direktemeldingsbilder i AIM-samtalegrupper." + +#: ../libpurple/protocols/oscar/oscar.c:5567 +#: ../libpurple/protocols/oscar/oscar.c:5572 msgid "Away Message" msgstr "Fraværsbeskjed" -#: ../libpurple/protocols/oscar/oscar.c:5574 -#, fuzzy +#: ../libpurple/protocols/oscar/oscar.c:5572 msgid "(retrieving)" -msgstr " (registrert)" - -#: ../libpurple/protocols/oscar/oscar.c:5774 +msgstr "(mottar)" + +#: ../libpurple/protocols/oscar/oscar.c:5772 msgid "iTunes Music Store Link" msgstr "" -#: ../libpurple/protocols/oscar/oscar.c:5882 +#: ../libpurple/protocols/oscar/oscar.c:5880 #, c-format msgid "Buddy Comment for %s" msgstr "Kontaktkommentar for %s" -#: ../libpurple/protocols/oscar/oscar.c:5883 +#: ../libpurple/protocols/oscar/oscar.c:5881 msgid "Buddy Comment:" msgstr "Kontaktkommentar:" -#: ../libpurple/protocols/oscar/oscar.c:5930 +#: ../libpurple/protocols/oscar/oscar.c:5928 #, c-format msgid "You have selected to open a Direct IM connection with %s." msgstr "Du har valgt å åpne en direktemelding til %s." -#: ../libpurple/protocols/oscar/oscar.c:5934 -#, fuzzy -msgid "" -"Because this reveals your IP address, it may be considered a security risk. " -"Do you wish to continue?" -msgstr "" -"Dette vil avsløre din IP-adresse til mottakeren, og medføre en (minimal) " -"sikkerhetsrisiko. Ønsker du å fortsette?" - -#: ../libpurple/protocols/oscar/oscar.c:5940 +#: ../libpurple/protocols/oscar/oscar.c:5932 +#, fuzzy +msgid "Because this reveals your IP address, it may be considered a security risk. Do you wish to continue?" +msgstr "Dette vil avsløre din IP-adresse til mottakeren, og medføre en (minimal) sikkerhetsrisiko. Ønsker du å fortsette?" + +#: ../libpurple/protocols/oscar/oscar.c:5938 #: ../libpurple/protocols/oscar/peer.c:1045 #, fuzzy msgid "C_onnect" msgstr "Koble til" -#: ../libpurple/protocols/oscar/oscar.c:5975 +#: ../libpurple/protocols/oscar/oscar.c:5973 #, fuzzy msgid "Get AIM Info" msgstr "Hent informasjon" -#: ../libpurple/protocols/oscar/oscar.c:5981 +#: ../libpurple/protocols/oscar/oscar.c:5979 msgid "Edit Buddy Comment" msgstr "Rediger kontaktkommentar" -#: ../libpurple/protocols/oscar/oscar.c:5989 +#: ../libpurple/protocols/oscar/oscar.c:5987 msgid "Get Status Msg" msgstr "Hent statusbeskjed" -#: ../libpurple/protocols/oscar/oscar.c:6002 +#: ../libpurple/protocols/oscar/oscar.c:6000 msgid "Direct IM" msgstr "Direkte samtale" -#: ../libpurple/protocols/oscar/oscar.c:6024 +#: ../libpurple/protocols/oscar/oscar.c:6022 msgid "Re-request Authorization" msgstr "Spør på nytt om godkjenning" -#: ../libpurple/protocols/oscar/oscar.c:6083 +#: ../libpurple/protocols/oscar/oscar.c:6081 #, fuzzy msgid "Require authorization" msgstr "Spør om godkjenning" -#: ../libpurple/protocols/oscar/oscar.c:6086 +#: ../libpurple/protocols/oscar/oscar.c:6084 msgid "Web aware (enabling this will cause you to receive SPAM!)" msgstr "" -#: ../libpurple/protocols/oscar/oscar.c:6091 +#: ../libpurple/protocols/oscar/oscar.c:6089 #, fuzzy msgid "ICQ Privacy Options" msgstr "Proxyinnstillinger" -#: ../libpurple/protocols/oscar/oscar.c:6110 +#: ../libpurple/protocols/oscar/oscar.c:6108 msgid "The new formatting is invalid." msgstr "Den nye formateringen er ugyldig." -#: ../libpurple/protocols/oscar/oscar.c:6111 +#: ../libpurple/protocols/oscar/oscar.c:6109 msgid "Screen name formatting can change only capitalization and whitespace." -msgstr "" -"Skjermnavn-formatering kan bare endre på store/små bokstaver og mellomrom." - -#: ../libpurple/protocols/oscar/oscar.c:6164 +msgstr "Skjermnavn-formatering kan bare endre på store/små bokstaver og mellomrom." + +#: ../libpurple/protocols/oscar/oscar.c:6162 msgid "Change Address To:" msgstr "Endre adresse til:" -#: ../libpurple/protocols/oscar/oscar.c:6210 +#: ../libpurple/protocols/oscar/oscar.c:6208 msgid "you are not waiting for authorization" msgstr "du venter ikke på godkjenning" -#: ../libpurple/protocols/oscar/oscar.c:6213 +#: ../libpurple/protocols/oscar/oscar.c:6211 msgid "You are awaiting authorization from the following buddies" msgstr "Du venter på godkjenning fra disse kontaktene" -#: ../libpurple/protocols/oscar/oscar.c:6214 -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\"." - -#: ../libpurple/protocols/oscar/oscar.c:6231 +#: ../libpurple/protocols/oscar/oscar.c:6212 +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\"." + +#: ../libpurple/protocols/oscar/oscar.c:6229 msgid "Find Buddy by E-Mail" msgstr "Finn kontakt etter e-post" -#: ../libpurple/protocols/oscar/oscar.c:6232 +#: ../libpurple/protocols/oscar/oscar.c:6230 msgid "Search for a buddy by e-mail address" -msgstr "Kontaktsøk etter e-postadresse" - -#: ../libpurple/protocols/oscar/oscar.c:6233 +msgstr "Søk etter en kontakt ved hjelp av e-postadresse" + +#: ../libpurple/protocols/oscar/oscar.c:6231 msgid "Type the e-mail address of the buddy you are searching for." msgstr "Skriv inn e-postadressen til den du søker etter." -#: ../libpurple/protocols/oscar/oscar.c:6236 -#, fuzzy +#: ../libpurple/protocols/oscar/oscar.c:6234 msgid "_Search" -msgstr "Søk" - -#: ../libpurple/protocols/oscar/oscar.c:6394 +msgstr "_Søk" + +#: ../libpurple/protocols/oscar/oscar.c:6392 msgid "Set User Info (URL)..." msgstr "Sett brukerinfo (URL)..." -#: ../libpurple/protocols/oscar/oscar.c:6405 +#: ../libpurple/protocols/oscar/oscar.c:6403 msgid "Change Password (URL)" msgstr "Endre passord (URL)" -#: ../libpurple/protocols/oscar/oscar.c:6409 +#: ../libpurple/protocols/oscar/oscar.c:6407 msgid "Configure IM Forwarding (URL)" msgstr "Konfigurer beskjedvideresending (URL)" #. ICQ actions -#: ../libpurple/protocols/oscar/oscar.c:6419 +#: ../libpurple/protocols/oscar/oscar.c:6417 #, fuzzy msgid "Set Privacy Options..." msgstr "Vis flere valg" #. AIM actions -#: ../libpurple/protocols/oscar/oscar.c:6426 +#: ../libpurple/protocols/oscar/oscar.c:6424 msgid "Confirm Account" msgstr "Bekrefte konto" -#: ../libpurple/protocols/oscar/oscar.c:6430 +#: ../libpurple/protocols/oscar/oscar.c:6428 #, fuzzy msgid "Display Currently Registered E-Mail Address" msgstr "Vis nåværende registrert adresse" -#: ../libpurple/protocols/oscar/oscar.c:6434 +#: ../libpurple/protocols/oscar/oscar.c:6432 #, fuzzy msgid "Change Currently Registered E-Mail Address..." msgstr "Endre nåværende registrert adresse" -#: ../libpurple/protocols/oscar/oscar.c:6441 +#: ../libpurple/protocols/oscar/oscar.c:6439 msgid "Show Buddies Awaiting Authorization" msgstr "Vis kontakter som venter på godkjenning" -#: ../libpurple/protocols/oscar/oscar.c:6447 -#, fuzzy +#: ../libpurple/protocols/oscar/oscar.c:6445 msgid "Search for Buddy by E-Mail Address..." -msgstr "Vennesøk etter e-postadresse" - -#: ../libpurple/protocols/oscar/oscar.c:6452 +msgstr "Søk etter kontakter ved hjelp av e-postadresser..." + +#: ../libpurple/protocols/oscar/oscar.c:6450 msgid "Search for Buddy by Information" msgstr "Vennesøk etter informasjon" -#: ../libpurple/protocols/oscar/oscar.c:6520 +#: ../libpurple/protocols/oscar/oscar.c:6518 #, fuzzy msgid "Use recent buddies group" msgstr "Brukeren er ikke i gruppen" -#: ../libpurple/protocols/oscar/oscar.c:6523 -#, fuzzy +#: ../libpurple/protocols/oscar/oscar.c:6521 msgid "Show how long you have been idle" -msgstr "Lar deg manuelt sette hvor lenge du har vært borte." - -#: ../libpurple/protocols/oscar/oscar.c:6678 +msgstr "Vis hvor lenge du har vært inaktiv" + +#: ../libpurple/protocols/oscar/oscar.c:6676 msgid "" "Always use ICQ proxy server for file transfers\n" "(slower, but does not reveal your IP address)" @@ -9571,12 +9446,12 @@ msgstr "Spør %s om å kople til oss på %s:%hu for direktesamtale." #: ../libpurple/protocols/oscar/peer.c:782 -#, fuzzy, c-format +#, c-format msgid "Attempting to connect to %s:%hu." -msgstr "Forsøker å kople til %s på %s:%hu for direktesamtale." +msgstr "Forsøker å kople til %s:%hu." #: ../libpurple/protocols/oscar/peer.c:856 -#, fuzzy, c-format +#, fuzzy msgid "Attempting to connect via proxy server." msgstr "Forsøker å kople til %s på %s:%hu for direktesamtale." @@ -9586,14 +9461,8 @@ msgstr "%s har akkurat spurt om direkte tilkobling til %s" #: ../libpurple/protocols/oscar/peer.c:1037 -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." #: ../libpurple/protocols/qq/buddy_info.c:39 #, fuzzy @@ -9610,186 +9479,163 @@ msgstr "" #: ../libpurple/protocols/qq/buddy_info.c:47 -#, fuzzy msgid "Country/Region" msgstr "Land" #: ../libpurple/protocols/qq/buddy_info.c:48 msgid "Province/State" -msgstr "" +msgstr "Fylke/stat" #: ../libpurple/protocols/qq/buddy_info.c:50 msgid "Horoscope Symbol" -msgstr "" +msgstr "Horoskoptegn" #: ../libpurple/protocols/qq/buddy_info.c:52 msgid "Zodiac Sign" -msgstr "" +msgstr "Stjernetegn" #: ../libpurple/protocols/qq/buddy_info.c:53 msgid "Blood Type" -msgstr "" +msgstr "Blodtype" #: ../libpurple/protocols/qq/buddy_info.c:54 -#, fuzzy msgid "College" -msgstr "_Lukk" +msgstr "Universitet" #: ../libpurple/protocols/qq/buddy_info.c:55 msgid "Email" msgstr "E-post" #: ../libpurple/protocols/qq/buddy_info.c:57 -#, fuzzy msgid "Zipcode" msgstr "Postnummer" #: ../libpurple/protocols/qq/buddy_info.c:58 -#, fuzzy msgid "Cellphone Number" -msgstr "Telefonnummer" +msgstr "Mobilnummer" #: ../libpurple/protocols/qq/buddy_info.c:59 -#, fuzzy msgid "Phone Number" msgstr "Telefonnummer" #: ../libpurple/protocols/qq/buddy_info.c:64 msgid "Aquarius" -msgstr "" +msgstr "Vannmannen" #: ../libpurple/protocols/qq/buddy_info.c:64 -#, fuzzy msgid "Pisces" -msgstr "Bilder" +msgstr "Fiskene" #: ../libpurple/protocols/qq/buddy_info.c:64 -#, fuzzy msgid "Aries" -msgstr "Adresse" +msgstr "Væren" #: ../libpurple/protocols/qq/buddy_info.c:64 -#, fuzzy msgid "Taurus" -msgstr "Tyrkisk" +msgstr "Tyren" #: ../libpurple/protocols/qq/buddy_info.c:65 -#, fuzzy msgid "Gemini" -msgstr "Tysk" +msgstr "Tvillingen" #: ../libpurple/protocols/qq/buddy_info.c:65 -#, fuzzy msgid "Cancer" -msgstr "_Avbryt" +msgstr "Krepsen" #: ../libpurple/protocols/qq/buddy_info.c:65 msgid "Leo" -msgstr "" +msgstr "Løven" #: ../libpurple/protocols/qq/buddy_info.c:65 msgid "Virgo" -msgstr "" +msgstr "Jomfruen" #: ../libpurple/protocols/qq/buddy_info.c:65 msgid "Libra" -msgstr "" +msgstr "Vekten" #: ../libpurple/protocols/qq/buddy_info.c:66 -#, fuzzy msgid "Scorpio" -msgstr "Abonnement" +msgstr "Skorpionen" #: ../libpurple/protocols/qq/buddy_info.c:66 msgid "Sagittarius" -msgstr "" +msgstr "Skytten" #: ../libpurple/protocols/qq/buddy_info.c:66 msgid "Capricorn" -msgstr "" +msgstr "Steinbukken" #: ../libpurple/protocols/qq/buddy_info.c:71 -#, fuzzy + msgid "Rat" -msgstr "Direkte" +msgstr "Rotte" #: ../libpurple/protocols/qq/buddy_info.c:71 msgid "Ox" -msgstr "" +msgstr "Okse" # #: ../libpurple/protocols/qq/buddy_info.c:71 -#, fuzzy msgid "Tiger" -msgstr "Tid" +msgstr "Tiger" #: ../libpurple/protocols/qq/buddy_info.c:71 msgid "Rabbit" -msgstr "" +msgstr "Hare" #: ../libpurple/protocols/qq/buddy_info.c:72 msgid "Dragon" -msgstr "" +msgstr "Drage" #: ../libpurple/protocols/qq/buddy_info.c:72 -#, fuzzy msgid "Snake" -msgstr "Lagre" +msgstr "Slange" #: ../libpurple/protocols/qq/buddy_info.c:72 -#, fuzzy msgid "Horse" -msgstr "Porter" +msgstr "Hest" #: ../libpurple/protocols/qq/buddy_info.c:72 msgid "Goat" -msgstr "" +msgstr "Geit" #: ../libpurple/protocols/qq/buddy_info.c:72 -#, fuzzy msgid "Monkey" -msgstr "Ingen" +msgstr "Ape" #: ../libpurple/protocols/qq/buddy_info.c:73 -#, fuzzy msgid "Rooster" -msgstr "Registrer" +msgstr "Hane" #: ../libpurple/protocols/qq/buddy_info.c:73 msgid "Dog" -msgstr "" +msgstr "Hund" #: ../libpurple/protocols/qq/buddy_info.c:73 -#, fuzzy msgid "Pig" -msgstr "Ping" +msgstr "Gris" #: ../libpurple/protocols/qq/buddy_info.c:78 -#, fuzzy msgid "Other" -msgstr "Opera" +msgstr "Andre" #: ../libpurple/protocols/qq/buddy_info.c:481 #: ../libpurple/protocols/qq/buddy_info.c:482 -#, fuzzy msgid "Modify my information" -msgstr "Kontaktinformasjon" +msgstr "Endre min informasjon" #: ../libpurple/protocols/qq/buddy_info.c:483 -#, fuzzy msgid "Update my information" -msgstr "Brukerinformasjon" +msgstr "Oppdater min informasjon" #: ../libpurple/protocols/qq/buddy_info.c:507 -#, fuzzy msgid "Your information has been updated" -msgstr "Passordet ditt har blitt endret." +msgstr "Din informasjon har blitt oppdatert." #: ../libpurple/protocols/qq/buddy_info.c:560 #, c-format -msgid "" -"Setting custom faces is not currently supported. Please choose an image from " -"%s." +msgid "Setting custom faces is not currently supported. Please choose an image from %s." msgstr "" #: ../libpurple/protocols/qq/buddy_info.c:577 @@ -9809,9 +9655,8 @@ msgstr "" #: ../libpurple/protocols/qq/buddy_opt.c:212 -#, fuzzy msgid "Reject request" -msgstr "Uventet forespørsel" +msgstr "Avslå forespørsel" #. title #: ../libpurple/protocols/qq/buddy_opt.c:213 @@ -9920,9 +9765,9 @@ #: ../libpurple/protocols/qq/group_im.c:127 #: ../libpurple/protocols/qq/group_im.c:181 #: ../libpurple/protocols/qq/sys_msg.c:193 -#, fuzzy, c-format +#, c-format msgid "Reason: %s" -msgstr "Brukere på %s: %s" +msgstr "Grunn: %s" #: ../libpurple/protocols/qq/group_im.c:136 #: ../libpurple/protocols/qq/group_im.c:183 @@ -9994,8 +9839,7 @@ #: ../libpurple/protocols/qq/group_join.c:82 #, fuzzy msgid "This group does not allow others to join" -msgstr "" -"Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere" +msgstr "Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere" #: ../libpurple/protocols/qq/group_join.c:233 msgid "You have successfully left the group" @@ -10027,7 +9871,7 @@ #: ../libpurple/protocols/qq/group_network.c:92 #, c-format msgid "Code [0x%02X]: %s" -msgstr "" +msgstr "Kode [0x%02X]: %s" #: ../libpurple/protocols/qq/group_network.c:93 #, fuzzy @@ -10088,13 +9932,14 @@ msgid "Error requesting login token" msgstr "Feil: kunne ikke koble til" -#: ../libpurple/protocols/qq/login_logout.c:486 +#: ../libpurple/protocols/qq/login_logout.c:488 #, fuzzy msgid "Unable to login, check debug log" msgstr "Kunne ikke logge på AIM" #. we didn't successfully connect. tdt->toc_fd is valid here -#: ../libpurple/protocols/qq/qq.c:139 ../libpurple/protocols/toc/toc.c:173 +#: ../libpurple/protocols/qq/qq.c:139 +#: ../libpurple/protocols/toc/toc.c:173 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:109 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:189 #: ../libpurple/protocols/yahoo/ycht.c:549 @@ -10178,7 +10023,8 @@ msgid "Set My Information" msgstr "Tjenerinformasjon" -#: ../libpurple/protocols/qq/qq.c:536 ../libpurple/protocols/toc/toc.c:1680 +#: ../libpurple/protocols/qq/qq.c:536 +#: ../libpurple/protocols/toc/toc.c:1680 msgid "Change Password" msgstr "Bytt passord" @@ -10192,9 +10038,8 @@ msgstr "" #: ../libpurple/protocols/qq/qq.c:584 -#, fuzzy msgid "Block this buddy" -msgstr "Blokker brukeren" +msgstr "Blokker denne kontakten" #. *< type #. *< ui_requirement @@ -10206,7 +10051,8 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/qq/qq.c:725 ../libpurple/protocols/qq/qq.c:727 +#: ../libpurple/protocols/qq/qq.c:725 +#: ../libpurple/protocols/qq/qq.c:727 #, fuzzy msgid "QQ Protocol\tPlugin" msgstr "IRC-protokolltillegg" @@ -10238,9 +10084,9 @@ msgstr "Filsending feilet" #: ../libpurple/protocols/qq/send_file.c:736 -#, fuzzy, c-format +#, c-format msgid "%d canceled the transfer of %s" -msgstr "%s avbrøt overføringen av %s" +msgstr "%d avbrøt overføringen av %s" #: ../libpurple/protocols/qq/sendqueue.c:123 #, fuzzy @@ -10292,9 +10138,9 @@ msgstr "%s ønsker å sende deg en fil." #: ../libpurple/protocols/qq/sys_msg.c:239 -#, fuzzy, c-format +#, c-format msgid "Message: %s" -msgstr "Beskjed:" +msgstr "Beskjed: %s" #: ../libpurple/protocols/qq/sys_msg.c:261 #, fuzzy, c-format @@ -10317,9 +10163,9 @@ msgstr "Bruker: %s
" #: ../libpurple/protocols/sametime/sametime.c:1293 -#, fuzzy, c-format +#, c-format msgid "Info for Group %s" -msgstr "Info for %s" +msgstr "Info for gruppe %s" #: ../libpurple/protocols/sametime/sametime.c:1295 #, fuzzy @@ -10375,8 +10221,7 @@ #: ../libpurple/protocols/sametime/sametime.c:1645 #, 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 "" #: ../libpurple/protocols/sametime/sametime.c:1650 @@ -10422,23 +10267,21 @@ #: ../libpurple/protocols/sametime/sametime.c:3229 msgid "Microphone" -msgstr "" +msgstr "Mikrofon" #: ../libpurple/protocols/sametime/sametime.c:3230 msgid "Speakers" -msgstr "" +msgstr "Høytalere" #: ../libpurple/protocols/sametime/sametime.c:3231 -#, fuzzy msgid "Video Camera" -msgstr "Videosamtale" +msgstr "Videokamera" # #: ../libpurple/protocols/sametime/sametime.c:3269 #: ../libpurple/protocols/sametime/sametime.c:4145 -#, fuzzy msgid "Supports" -msgstr "støtte" +msgstr "Støtter" #: ../libpurple/protocols/sametime/sametime.c:3274 #: ../libpurple/protocols/sametime/sametime.c:4119 @@ -10453,9 +10296,7 @@ #: ../libpurple/protocols/sametime/sametime.c:3381 #, c-format -msgid "" -"Please enter a topic for the new conference, and an invitation message to be " -"sent to %s" +msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s" msgstr "" #: ../libpurple/protocols/sametime/sametime.c:3385 @@ -10485,10 +10326,7 @@ #: ../libpurple/protocols/sametime/sametime.c:3466 #, 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." +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 "" #: ../libpurple/protocols/sametime/sametime.c:3471 @@ -10505,7 +10343,8 @@ msgid "Send TEST Announcement" msgstr "" -#: ../libpurple/protocols/sametime/sametime.c:3586 ../pidgin/gtkconv.c:4354 +#: ../libpurple/protocols/sametime/sametime.c:3586 +#: ../pidgin/gtkconv.c:4417 msgid "Topic:" msgstr "Tema:" @@ -10516,9 +10355,7 @@ #: ../libpurple/protocols/sametime/sametime.c:3636 #, c-format -msgid "" -"No host or IP address has been configured for the Meanwhile account %s. " -"Please enter one below to continue logging in." +msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in." msgstr "" #: ../libpurple/protocols/sametime/sametime.c:3641 @@ -10531,14 +10368,15 @@ msgid "No Sametime Community Server Specified" msgstr "Kobler til SILC-tjener" -#: ../libpurple/protocols/sametime/sametime.c:3644 ../pidgin/gtkblist.c:4041 +#: ../libpurple/protocols/sametime/sametime.c:3644 +#: ../pidgin/gtkblist.c:4323 msgid "Connect" msgstr "Koble til" #: ../libpurple/protocols/sametime/sametime.c:4135 #, c-format msgid "Unknown (0x%04x)
" -msgstr "" +msgstr "Ukjent (0x%04x)
" #: ../libpurple/protocols/sametime/sametime.c:4137 #, fuzzy @@ -10547,7 +10385,6 @@ #: ../libpurple/protocols/sametime/sametime.c:4301 #: ../libpurple/protocols/sametime/sametime.c:5506 -#, fuzzy msgid "User Name" msgstr "Brukernavn" @@ -10562,12 +10399,8 @@ #: ../libpurple/protocols/sametime/sametime.c:4329 #, fuzzy, 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. 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. Velg den korrekte brukeren fra lista for å legge til kontaktlista." #: ../libpurple/protocols/sametime/sametime.c:4334 #, fuzzy @@ -10581,15 +10414,8 @@ #: ../libpurple/protocols/sametime/sametime.c:4420 #, 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 "" - -#: ../libpurple/protocols/sametime/sametime.c:4425 -#, fuzzy -msgid "Unable to add user" -msgstr "Klarte ikke forby brukeren %s" +msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list." +msgstr "" #: ../libpurple/protocols/sametime/sametime.c:5011 #, fuzzy, c-format @@ -10665,10 +10491,7 @@ #: ../libpurple/protocols/sametime/sametime.c:5389 #, 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." +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 "" #: ../libpurple/protocols/sametime/sametime.c:5394 @@ -10683,9 +10506,7 @@ #: ../libpurple/protocols/sametime/sametime.c:5439 #, c-format -msgid "" -"The identifier '%s' did not match any Notes Address Book groups in your " -"Sametime community." +msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community." msgstr "" #: ../libpurple/protocols/sametime/sametime.c:5480 @@ -10694,9 +10515,7 @@ msgstr "Legg til i adresseboka" #: ../libpurple/protocols/sametime/sametime.c:5481 -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." +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 "" #: ../libpurple/protocols/sametime/sametime.c:5530 @@ -10706,18 +10525,15 @@ #: ../libpurple/protocols/sametime/sametime.c:5531 #, 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 "" - -#: ../libpurple/protocols/sametime/sametime.c:5538 ../pidgin/gtknotify.c:756 +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 "" + +#: ../libpurple/protocols/sametime/sametime.c:5538 +#: ../pidgin/gtknotify.c:755 msgid "Search Results" msgstr "Søkeresultater" #: ../libpurple/protocols/sametime/sametime.c:5563 -#, fuzzy msgid "No matches" msgstr "Ingen treff" @@ -10727,20 +10543,16 @@ msgstr "" #: ../libpurple/protocols/sametime/sametime.c:5568 -#, fuzzy msgid "No Matches" msgstr "Ingen treff" # #: ../libpurple/protocols/sametime/sametime.c:5605 -#, fuzzy msgid "Search for a user" -msgstr "_Søk etter:" +msgstr "Søk etter en bruker" #: ../libpurple/protocols/sametime/sametime.c:5606 -msgid "" -"Enter a name or partial ID in the field below to search for matching users " -"in your Sametime community." +msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community." msgstr "" #: ../libpurple/protocols/sametime/sametime.c:5609 @@ -10856,11 +10668,8 @@ #: ../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 "" -"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?" #: ../libpurple/protocols/silc/buddy.c:302 #: ../libpurple/protocols/silc10/buddy.c:299 @@ -10967,13 +10776,8 @@ #: ../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." -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. #: ../libpurple/protocols/silc/buddy.c:1059 @@ -10989,18 +10793,13 @@ #: ../libpurple/protocols/silc/buddy.c:1073 #: ../libpurple/protocols/silc10/buddy.c:1081 -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." #: ../libpurple/protocols/silc/buddy.c:1077 #: ../libpurple/protocols/silc10/buddy.c:1085 -#, fuzzy msgid "_Import..." -msgstr "Importer..." +msgstr "_Importer..." #: ../libpurple/protocols/silc/buddy.c:1183 #: ../libpurple/protocols/silc10/buddy.c:1181 @@ -11009,21 +10808,13 @@ #: ../libpurple/protocols/silc/buddy.c:1185 #: ../libpurple/protocols/silc10/buddy.c:1183 -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 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." #: ../libpurple/protocols/silc/buddy.c:1187 #: ../libpurple/protocols/silc10/buddy.c:1185 -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 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." #: ../libpurple/protocols/silc/buddy.c:1474 #: ../libpurple/protocols/silc10/buddy.c:1474 @@ -11303,7 +11094,7 @@ # Urk... moduser? #: ../libpurple/protocols/silc/chat.c:153 #: ../libpurple/protocols/silc10/chat.c:152 -#, fuzzy, c-format +#, fuzzy msgid "
Channel Modes: " msgstr "
Kanalmoduser: " @@ -11345,19 +11136,8 @@ #: ../libpurple/protocols/silc/chat.c:435 #: ../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 " -"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 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." #: ../libpurple/protocols/silc/chat.c:444 #: ../libpurple/protocols/silc/chat.c:445 @@ -11413,8 +11193,7 @@ #: ../libpurple/protocols/silc/chat.c:743 #: ../libpurple/protocols/silc10/chat.c:727 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." #: ../libpurple/protocols/silc/chat.c:907 #: ../libpurple/protocols/silc10/chat.c:891 @@ -11479,8 +11258,7 @@ #: ../libpurple/protocols/silc/chat.c:1045 #: ../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" +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" #: ../libpurple/protocols/silc/chat.c:1047 @@ -11516,13 +11294,20 @@ msgid "Unknown command" msgstr "Ukjent kommando:" -#: ../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/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 @@ -11534,11 +11319,16 @@ msgid "Secure File Transfer" msgstr "Sikret filoverføring" -#: ../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/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" @@ -11549,11 +11339,13 @@ msgid "Remote disconnected" msgstr "Frakoblet." -#: ../libpurple/protocols/silc/ft.c:106 ../libpurple/protocols/silc10/ft.c:94 +#: ../libpurple/protocols/silc/ft.c:106 +#: ../libpurple/protocols/silc10/ft.c:94 msgid "Permission denied" msgstr "Tilgang nektet" -#: ../libpurple/protocols/silc/ft.c:110 ../libpurple/protocols/silc10/ft.c:98 +#: ../libpurple/protocols/silc/ft.c:110 +#: ../libpurple/protocols/silc10/ft.c:98 msgid "Key agreement failed" msgstr "Nøkkelavtale feilet" @@ -11567,28 +11359,34 @@ msgid "Creating connection failed" msgstr "Tilkopling feilet" -#: ../libpurple/protocols/silc/ft.c:122 ../libpurple/protocols/silc10/ft.c:102 +#: ../libpurple/protocols/silc/ft.c:122 +#: ../libpurple/protocols/silc10/ft.c:102 #, fuzzy msgid "File transfer session does not exist" msgstr "Filoverføringsøkt eksisterer ikke" -#: ../libpurple/protocols/silc/ft.c:273 ../libpurple/protocols/silc10/ft.c:206 +#: ../libpurple/protocols/silc/ft.c:273 +#: ../libpurple/protocols/silc10/ft.c:206 msgid "No file transfer session active" msgstr "Ingen filoverføringsøkt aktiv" -#: ../libpurple/protocols/silc/ft.c:278 ../libpurple/protocols/silc10/ft.c:211 +#: ../libpurple/protocols/silc/ft.c:278 +#: ../libpurple/protocols/silc10/ft.c:211 msgid "File transfer already started" msgstr "Filoverføring allerede avbrutt" -#: ../libpurple/protocols/silc/ft.c:283 ../libpurple/protocols/silc10/ft.c:216 +#: ../libpurple/protocols/silc/ft.c:283 +#: ../libpurple/protocols/silc10/ft.c:216 msgid "Could not perform key agreement for file transfer" msgstr "Kunne ikke gjennomføre nøkkelavtale for filoverføring" -#: ../libpurple/protocols/silc/ft.c:289 ../libpurple/protocols/silc10/ft.c:222 +#: ../libpurple/protocols/silc/ft.c:289 +#: ../libpurple/protocols/silc10/ft.c:222 msgid "Could not start the file transfer" msgstr "Kunne ikke starte filoverføring" -#: ../libpurple/protocols/silc/ft.c:426 ../libpurple/protocols/silc10/ft.c:341 +#: ../libpurple/protocols/silc/ft.c:426 +#: ../libpurple/protocols/silc10/ft.c:341 msgid "Cannot send file" msgstr "Kan ikke sende fil" @@ -11596,7 +11394,8 @@ msgid "Error occurred" msgstr "" -#: ../libpurple/protocols/silc/ops.c:533 ../libpurple/protocols/silc/ops.c:542 +#: ../libpurple/protocols/silc/ops.c:533 +#: ../libpurple/protocols/silc/ops.c:542 #: ../libpurple/protocols/silc/ops.c:551 #: ../libpurple/protocols/silc10/ops.c:554 #: ../libpurple/protocols/silc10/ops.c:563 @@ -11635,7 +11434,8 @@ msgid "You have been kicked off %s by %s (%s)" msgstr "Du har blitt sparket av %s av %s (%s)" -#: ../libpurple/protocols/silc/ops.c:718 ../libpurple/protocols/silc/ops.c:723 +#: ../libpurple/protocols/silc/ops.c:718 +#: ../libpurple/protocols/silc/ops.c:723 #: ../libpurple/protocols/silc/ops.c:728 #: ../libpurple/protocols/silc10/ops.c:742 #: ../libpurple/protocols/silc10/ops.c:747 @@ -11644,7 +11444,8 @@ msgid "You have been killed by %s (%s)" msgstr "Du har blitt drept av %s (%s)" -#: ../libpurple/protocols/silc/ops.c:749 ../libpurple/protocols/silc/ops.c:754 +#: ../libpurple/protocols/silc/ops.c:749 +#: ../libpurple/protocols/silc/ops.c:754 #: ../libpurple/protocols/silc/ops.c:759 #: ../libpurple/protocols/silc10/ops.c:773 #: ../libpurple/protocols/silc10/ops.c:778 @@ -11740,9 +11541,8 @@ #: ../libpurple/protocols/silc/ops.c:1292 #: ../libpurple/protocols/silc10/ops.c:1298 -#, fuzzy msgid "_More..." -msgstr "Mer..." +msgstr "_Mer..." #: ../libpurple/protocols/silc/ops.c:1369 #: ../libpurple/protocols/silc/silc.c:1077 @@ -11901,21 +11701,20 @@ msgid "Passphrase required" msgstr "Nøkkelsetning kreves" -#: ../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 " -"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?" - -#: ../libpurple/protocols/silc/pk.c:103 ../libpurple/protocols/silc10/pk.c:109 +#: ../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 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?" + +#: ../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 "Mottok %s's offentlige nøkkel. Ønsker du å akseptere denne nøkkelen?" -#: ../libpurple/protocols/silc/pk.c:107 ../libpurple/protocols/silc10/pk.c:113 +#: ../libpurple/protocols/silc/pk.c:107 +#: ../libpurple/protocols/silc10/pk.c:113 #, c-format msgid "" "Fingerprint and babbleprint for the %s key are:\n" @@ -11924,18 +11723,21 @@ "%s\n" msgstr "" -#: ../libpurple/protocols/silc/pk.c:110 ../libpurple/protocols/silc/pk.c:139 +#: ../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 "Bekreft offentlig nøkkel" -#: ../libpurple/protocols/silc/pk.c:115 ../libpurple/protocols/silc10/pk.c:121 +#: ../libpurple/protocols/silc/pk.c:115 +#: ../libpurple/protocols/silc10/pk.c:121 #, fuzzy msgid "_View..." msgstr "Vis..." -#: ../libpurple/protocols/silc/pk.c:140 ../libpurple/protocols/silc10/pk.c:143 +#: ../libpurple/protocols/silc/pk.c:140 +#: ../libpurple/protocols/silc10/pk.c:143 msgid "Unsupported public key type" msgstr "Ustøttet offentlig nøkkeltype" @@ -11958,11 +11760,8 @@ #: ../libpurple/protocols/silc/silc.c:238 #: ../libpurple/protocols/silc10/ops.c:1714 #, fuzzy -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" #: ../libpurple/protocols/silc/silc.c:265 #: ../libpurple/protocols/silc/silc.c:311 @@ -11982,7 +11781,7 @@ msgstr "Kobler til SILC-tjener" #: ../libpurple/protocols/silc/silc.c:352 -#, fuzzy, c-format +#, fuzzy msgid "Could not load SILC key pair" msgstr "Kunne ikke laste den offentlige nøkkelen" @@ -12014,14 +11813,13 @@ msgstr "Dit nåværende humør" #: ../libpurple/protocols/silc/silc.c:741 -#: ../libpurple/protocols/silc10/silc.c:652 ../pidgin/gtkprefs.c:1641 -#, c-format +#: ../libpurple/protocols/silc10/silc.c:652 +#: ../pidgin/gtkprefs.c:1643 msgid "Normal" msgstr "Normal" #: ../libpurple/protocols/silc/silc.c:755 #: ../libpurple/protocols/silc10/silc.c:666 -#, fuzzy msgid "In love" msgstr "Forelsket" @@ -12086,9 +11884,8 @@ # #: ../libpurple/protocols/silc/silc.c:812 -#, fuzzy msgid "Timezone (UTC)" -msgstr "Tidssone" +msgstr "Tidssone (UTC)" #: ../libpurple/protocols/silc/silc.c:816 #: ../libpurple/protocols/silc/silc.c:817 @@ -12099,14 +11896,8 @@ #: ../libpurple/protocols/silc/silc.c:818 #: ../libpurple/protocols/silc10/silc.c:731 -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." #: ../libpurple/protocols/silc/silc.c:859 #: ../libpurple/protocols/silc/silc.c:865 @@ -12158,9 +11949,8 @@ #: ../libpurple/protocols/silc/silc.c:996 #: ../libpurple/protocols/silc10/silc.c:907 -#, fuzzy msgid "Key length" -msgstr "Nøkkellengde: \t%d biter\n" +msgstr "Nøkkellengde" #: ../libpurple/protocols/silc/silc.c:998 #: ../libpurple/protocols/silc10/silc.c:909 @@ -12267,8 +12057,7 @@ #: ../libpurple/protocols/silc/silc.c:1666 #: ../libpurple/protocols/silc10/silc.c:1595 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" #: ../libpurple/protocols/silc/silc.c:1670 #: ../libpurple/protocols/silc10/silc.c:1599 @@ -12284,14 +12073,12 @@ #: ../libpurple/protocols/silc10/silc.c:1607 #: ../libpurple/protocols/zephyr/zephyr.c:2685 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" #: ../libpurple/protocols/silc/silc.c:1682 #: ../libpurple/protocols/silc10/silc.c:1611 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" #: ../libpurple/protocols/silc/silc.c:1686 #: ../libpurple/protocols/silc10/silc.c:1615 @@ -12330,21 +12117,13 @@ #: ../libpurple/protocols/silc/silc.c:1716 #: ../libpurple/protocols/silc10/silc.c:1645 -msgid "" -"cmode <channel> [+|-<modes>] [arguments]: Change or display " -"channel modes" -msgstr "" -"cmode <channel> [+|-<modes>] [arguments]: Forandre eller vis " -"kanal modus" +msgid "cmode <channel> [+|-<modes>] [arguments]: Change or display channel modes" +msgstr "cmode <channel> [+|-<modes>] [arguments]: Forandre eller vis kanal modus" #: ../libpurple/protocols/silc/silc.c:1720 #: ../libpurple/protocols/silc10/silc.c:1649 -msgid "" -"cumode <channel> +|-<modes> <nick>: Change nick's modes " -"on channel" -msgstr "" -"cumode <channel> +|-<modes> <nick>: Forandre nick modus " -"på kanal" +msgid "cumode <channel> +|-<modes> <nick>: Change nick's modes on channel" +msgstr "cumode <channel> +|-<modes> <nick>: Forandre nick modus på kanal" #: ../libpurple/protocols/silc/silc.c:1724 #: ../libpurple/protocols/silc10/silc.c:1653 @@ -12358,12 +12137,8 @@ #: ../libpurple/protocols/silc/silc.c:1732 #: ../libpurple/protocols/silc10/silc.c:1661 -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" #: ../libpurple/protocols/silc/silc.c:1736 #: ../libpurple/protocols/silc10/silc.c:1665 @@ -12383,8 +12158,7 @@ #: ../libpurple/protocols/silc/silc.c:1748 #: ../libpurple/protocols/silc10/silc.c:1677 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" #: ../libpurple/protocols/silc/silc.c:1752 #: ../libpurple/protocols/silc10/silc.c:1681 @@ -12403,12 +12177,8 @@ #: ../libpurple/protocols/silc/silc.c:1765 #: ../libpurple/protocols/silc10/silc.c:1694 -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 @@ -12431,7 +12201,8 @@ msgstr "Secure Internet Live Conferencing (SILC) Protokoll" #: ../libpurple/protocols/silc/silc.c:1910 -#: ../libpurple/protocols/silc10/silc.c:1853 ../pidgin/gtkprefs.c:2036 +#: ../libpurple/protocols/silc10/silc.c:1853 +#: ../pidgin/gtkprefs.c:2038 msgid "Network" msgstr "Nettverk" @@ -12519,7 +12290,7 @@ #: ../libpurple/protocols/silc/util.c:362 #: ../libpurple/protocols/silc10/util.c:359 -#, fuzzy, c-format +#, c-format msgid "E-Mail: \t\t%s\n" msgstr "E-post: \t\t%s\n" @@ -12554,9 +12325,9 @@ msgstr "Nøkkellengde: \t%d biter\n" #: ../libpurple/protocols/silc/util.c:372 -#, fuzzy, c-format +#, c-format msgid "Version: \t%s\n" -msgstr "Organisasjon: \t%s\n" +msgstr "Versjon: \t%s\n" #: ../libpurple/protocols/silc/util.c:374 #: ../libpurple/protocols/silc10/util.c:369 @@ -12610,19 +12381,20 @@ msgid "Terminal" msgstr "Terminal" -#: ../libpurple/protocols/silc/wb.c:284 ../libpurple/protocols/silc10/wb.c:284 +#: ../libpurple/protocols/silc/wb.c:284 +#: ../libpurple/protocols/silc10/wb.c:284 #, c-format msgid "%s sent message to whiteboard. Would you like to open the whiteboard?" msgstr "" -#: ../libpurple/protocols/silc/wb.c:288 ../libpurple/protocols/silc10/wb.c:288 -#, c-format -msgid "" -"%s sent message to whiteboard on %s channel. Would you like to open the " -"whiteboard?" -msgstr "" - -#: ../libpurple/protocols/silc/wb.c:302 ../libpurple/protocols/silc10/wb.c:302 +#: ../libpurple/protocols/silc/wb.c:288 +#: ../libpurple/protocols/silc10/wb.c:288 +#, c-format +msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?" +msgstr "" + +#: ../libpurple/protocols/silc/wb.c:302 +#: ../libpurple/protocols/silc10/wb.c:302 msgid "Whiteboard" msgstr "" @@ -12631,53 +12403,46 @@ msgstr "Ingen tjenerstatistikk tilgjengelig" #: ../libpurple/protocols/silc10/ops.c:1931 -#, fuzzy, c-format +#, fuzzy msgid "Failure: Version mismatch, upgrade your client" msgstr "Feil versjon, vennligst oppgrader din klient" #: ../libpurple/protocols/silc10/ops.c:1934 -#, 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" #: ../libpurple/protocols/silc10/ops.c:1937 -#, fuzzy, c-format +#, fuzzy msgid "Failure: Remote does not support proposed KE group" msgstr "Fjerntliggende part støtter ikke foreslått KE-gruppe" #: ../libpurple/protocols/silc10/ops.c:1940 -#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "Fjerntliggende part støtter ikke foreslått krypteringsmetode" #: ../libpurple/protocols/silc10/ops.c:1943 -#, fuzzy, c-format +#, fuzzy msgid "Failure: Remote does not support proposed PKCS" msgstr "Fjerntliggende part støtter ikke foreslått PKCS" #: ../libpurple/protocols/silc10/ops.c:1946 -#, fuzzy, c-format +#, fuzzy msgid "Failure: Remote does not support proposed hash function" msgstr "Fjerntliggende part støtter ikke foreslått nøkkelfunksjon" #: ../libpurple/protocols/silc10/ops.c:1949 -#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "Fjerntliggende part støtter ikke foreslått HMAC" #: ../libpurple/protocols/silc10/ops.c:1951 -#, c-format msgid "Failure: Incorrect signature" msgstr "Ugyldig signatur" #: ../libpurple/protocols/silc10/ops.c:1953 -#, c-format msgid "Failure: Invalid cookie" msgstr "Ugyldig informasjonskapsel" #: ../libpurple/protocols/silc10/ops.c:1964 -#, c-format msgid "Failure: Authentication failed" msgstr "Autentisering feilet" @@ -12702,39 +12467,38 @@ #. TODO: do we really want to disconnect on a failure to write? #: ../libpurple/protocols/simple/simple.c:416 -#, fuzzy msgid "Could not write" -msgstr "Kunne ikke sende" +msgstr "Kunne ikke skrive" #: ../libpurple/protocols/simple/simple.c:438 -#: ../libpurple/protocols/simple/simple.c:1529 +#: ../libpurple/protocols/simple/simple.c:1531 msgid "Could not connect" msgstr "Kunne ikke koble til" -#: ../libpurple/protocols/simple/simple.c:1059 +#: ../libpurple/protocols/simple/simple.c:1061 #, fuzzy msgid "Unknown server response." msgstr "Ukjent feil." -#: ../libpurple/protocols/simple/simple.c:1563 -#: ../libpurple/protocols/simple/simple.c:1605 -#: ../libpurple/protocols/simple/simple.c:1618 -#: ../libpurple/protocols/simple/simple.c:1669 +#: ../libpurple/protocols/simple/simple.c:1565 +#: ../libpurple/protocols/simple/simple.c:1607 +#: ../libpurple/protocols/simple/simple.c:1620 +#: ../libpurple/protocols/simple/simple.c:1671 #, fuzzy msgid "Could not create listen socket" msgstr "Kunne ikke opprette socket" -#: ../libpurple/protocols/simple/simple.c:1586 +#: ../libpurple/protocols/simple/simple.c:1588 #, fuzzy msgid "Couldn't resolve host" msgstr "Kunne ikke koble til" -#: ../libpurple/protocols/simple/simple.c:1677 +#: ../libpurple/protocols/simple/simple.c:1679 #, fuzzy msgid "Could not resolve hostname" msgstr "Kan ikke finne datamaskinnavnet." -#: ../libpurple/protocols/simple/simple.c:1694 +#: ../libpurple/protocols/simple/simple.c:1696 #, fuzzy msgid "SIP screen names may not contain whitespaces or @ symbols" msgstr "IRC-kallenavn kan ikke inneholde mellomrom" @@ -12747,43 +12511,43 @@ #. *< id #. *< name #. *< version -#: ../libpurple/protocols/simple/simple.c:1870 +#: ../libpurple/protocols/simple/simple.c:1872 #, fuzzy msgid "SIP/SIMPLE Protocol Plugin" msgstr "SILC-protokolltillegg" #. * summary -#: ../libpurple/protocols/simple/simple.c:1871 +#: ../libpurple/protocols/simple/simple.c:1873 #, fuzzy msgid "The SIP/SIMPLE Protocol Plugin" msgstr "SILC-protokolltillegg" -#: ../libpurple/protocols/simple/simple.c:1899 +#: ../libpurple/protocols/simple/simple.c:1901 #, fuzzy msgid "Publish status (note: everyone may watch you)" msgstr "Publiser status (NB: alle kan se deg)" -#: ../libpurple/protocols/simple/simple.c:1905 +#: ../libpurple/protocols/simple/simple.c:1907 #, fuzzy msgid "Use UDP" msgstr "Brukerid" -#: ../libpurple/protocols/simple/simple.c:1907 +#: ../libpurple/protocols/simple/simple.c:1909 #, fuzzy msgid "Use proxy" msgstr "Ingen proxy" -#: ../libpurple/protocols/simple/simple.c:1909 +#: ../libpurple/protocols/simple/simple.c:1911 #, fuzzy msgid "Proxy" msgstr "Ingen proxy" -#: ../libpurple/protocols/simple/simple.c:1911 +#: ../libpurple/protocols/simple/simple.c:1913 #, fuzzy msgid "Auth User" msgstr "AP-bruker" -#: ../libpurple/protocols/simple/simple.c:1913 +#: ../libpurple/protocols/simple/simple.c:1915 #, fuzzy msgid "Auth Domain" msgstr "Automatisk" @@ -12829,7 +12593,6 @@ msgstr "Advarsel %s er ikke tillatt." #: ../libpurple/protocols/toc/toc.c:503 -#, c-format msgid "A message has been dropped, you are exceeding the server speed limit." msgstr "En beskjed ble forkastet. Du overskrider tjenerens fartsgrense." @@ -12854,47 +12617,38 @@ msgstr "Du gikk glipp av en beskjed fra %s fordi den ble sendt for raskt." #: ../libpurple/protocols/toc/toc.c:518 -#, c-format msgid "Failure." msgstr "Feil." #: ../libpurple/protocols/toc/toc.c:521 -#, c-format msgid "Too many matches." msgstr "For mange treff." #: ../libpurple/protocols/toc/toc.c:524 -#, c-format msgid "Need more qualifiers." msgstr "Trenger flere parametre." #: ../libpurple/protocols/toc/toc.c:527 -#, c-format msgid "Dir service temporarily unavailable." msgstr "Katalogtjenesten er midlertidig utilgjengelig." #: ../libpurple/protocols/toc/toc.c:530 -#, c-format msgid "E-mail lookup restricted." msgstr "E-postoppslag er begrenset." #: ../libpurple/protocols/toc/toc.c:533 -#, c-format msgid "Keyword ignored." msgstr "Nøkkelord ignorert." #: ../libpurple/protocols/toc/toc.c:536 -#, c-format msgid "No keywords." msgstr "Ingen nøkkelord." #: ../libpurple/protocols/toc/toc.c:539 -#, c-format msgid "User has no directory information." msgstr "Brukeren har ingen kataloginformasjon." #: ../libpurple/protocols/toc/toc.c:543 -#, c-format msgid "Country not supported." msgstr "Land ikke støttet." @@ -12904,28 +12658,21 @@ msgstr "Ukjent feil: %s." #: ../libpurple/protocols/toc/toc.c:549 -#, fuzzy, c-format +#, fuzzy msgid "Incorrect screen name or password." msgstr "Feil kallenavn eller passord." #: ../libpurple/protocols/toc/toc.c:552 -#, c-format msgid "The service is temporarily unavailable." msgstr "Tjenesten er midlertidig utilgjengelig." #: ../libpurple/protocols/toc/toc.c:555 -#, 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." #: ../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." -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." #: ../libpurple/protocols/toc/toc.c:560 #, c-format @@ -12958,10 +12705,11 @@ msgid "Password Change Successful" msgstr "Passordet er endret." -#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:5582 -#: ../pidgin/gtkblist.c:5932 +#: ../libpurple/protocols/toc/toc.c:1366 +#: ../pidgin/gtkblist.c:5871 +#: ../pidgin/gtkblist.c:6227 msgid "_Group:" -msgstr "Gruppe:" +msgstr "_Gruppe:" #: ../libpurple/protocols/toc/toc.c:1535 msgid "Get Dir Info" @@ -12980,8 +12728,10 @@ msgid "File transfer failed; other side probably canceled." msgstr "Filoverføringen mislyktes - sannsynligvis avbrutt på den andre siden." -#: ../libpurple/protocols/toc/toc.c:1878 ../libpurple/protocols/toc/toc.c:1918 -#: ../libpurple/protocols/toc/toc.c:2042 ../libpurple/protocols/toc/toc.c:2130 +#: ../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 "Kunne ikke koble til for dataoverføring." @@ -12990,9 +12740,8 @@ msgstr "Kunne ikke skrive filhode. Filen vil ikke bli overført." #: ../libpurple/protocols/toc/toc.c:2175 -#, fuzzy msgid "Save As..." -msgstr "Lagre ikon som..." +msgstr "Lagre som..." #: ../libpurple/protocols/toc/toc.c:2209 #, c-format @@ -13016,253 +12765,223 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/toc/toc.c:2306 ../libpurple/protocols/toc/toc.c:2308 +#: ../libpurple/protocols/toc/toc.c:2306 +#: ../libpurple/protocols/toc/toc.c:2308 msgid "TOC Protocol Plugin" msgstr "TOC-protokolltillegg" -#: ../libpurple/protocols/yahoo/yahoo.c:782 +#: ../libpurple/protocols/yahoo/yahoo.c:784 #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." msgstr "" -#: ../libpurple/protocols/yahoo/yahoo.c:838 +#: ../libpurple/protocols/yahoo/yahoo.c:840 msgid "Your Yahoo! message did not get sent." msgstr "Din Yahoo!-beskjed ble ikke sendt." -#: ../libpurple/protocols/yahoo/yahoo.c:960 +#: ../libpurple/protocols/yahoo/yahoo.c:959 #, c-format msgid "Yahoo! system message for %s:" msgstr "Yahoo! systemmelding for %s:" -#: ../libpurple/protocols/yahoo/yahoo.c:1029 +#: ../libpurple/protocols/yahoo/yahoo.c:1028 #, fuzzy msgid "Authorization denied message:" msgstr "Godkjenning nektet, grunn:" -#: ../libpurple/protocols/yahoo/yahoo.c:1047 -#, 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." - -#: ../libpurple/protocols/yahoo/yahoo.c:1050 +#: ../libpurple/protocols/yahoo/yahoo.c:1046 +#, 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." + +#: ../libpurple/protocols/yahoo/yahoo.c:1049 #, 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." - -#: ../libpurple/protocols/yahoo/yahoo.c:1052 +msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten din." + +#: ../libpurple/protocols/yahoo/yahoo.c:1051 msgid "Add buddy rejected" msgstr "Legge til kontakt avslått" -#: ../libpurple/protocols/yahoo/yahoo.c:1994 -#, fuzzy, 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 Gaim vil antakeligvis ikke være i stand til å logge på Yahoo. " -"Sjekk %s for oppdateringer." - -#: ../libpurple/protocols/yahoo/yahoo.c:1997 +#: ../libpurple/protocols/yahoo/yahoo.c:1993 +#, fuzzy, 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 Gaim vil antakeligvis ikke være i stand til å logge på Yahoo. Sjekk %s for oppdateringer." + +#: ../libpurple/protocols/yahoo/yahoo.c:1996 msgid "Failed Yahoo! Authentication" msgstr "Yahoo!-autentisering feilet" -#: ../libpurple/protocols/yahoo/yahoo.c:2063 -#, 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." - -#: ../libpurple/protocols/yahoo/yahoo.c:2066 +#: ../libpurple/protocols/yahoo/yahoo.c:2062 +#, 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." + +#: ../libpurple/protocols/yahoo/yahoo.c:2065 msgid "Ignore buddy?" msgstr "Ignorere kontakt?" -#: ../libpurple/protocols/yahoo/yahoo.c:2129 +#: ../libpurple/protocols/yahoo/yahoo.c:2128 msgid "Your account is locked, please log in to the Yahoo! website." msgstr "Din konto har blitt låst, vennligst logg inn på Yahoo! nettsiden" -#: ../libpurple/protocols/yahoo/yahoo.c:2132 +#: ../libpurple/protocols/yahoo/yahoo.c:2131 #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." msgstr "" "Ukjent feilkode %d.\n" "Om du logger inn på Yahoo! sin nettside, kan dette kansje løse problemet" -#: ../libpurple/protocols/yahoo/yahoo.c:2186 +#: ../libpurple/protocols/yahoo/yahoo.c:2185 #, c-format msgid "Could not add buddy %s to group %s to the server list on account %s." -msgstr "" -"Kunne ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s." - -#: ../libpurple/protocols/yahoo/yahoo.c:2189 +msgstr "Kunne ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s." + +#: ../libpurple/protocols/yahoo/yahoo.c:2188 msgid "Could not add buddy to server list" msgstr "Kunne ikke legge kontakt til tjenerens kontaktliste" -#: ../libpurple/protocols/yahoo/yahoo.c:2308 +#: ../libpurple/protocols/yahoo/yahoo.c:2307 #, c-format msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "" -#: ../libpurple/protocols/yahoo/yahoo.c:2651 +#: ../libpurple/protocols/yahoo/yahoo.c:2650 #, fuzzy msgid "Received unexpected HTTP response from server." msgstr "Ugyldig svar fra tjener." -#: ../libpurple/protocols/yahoo/yahoo.c:2675 -#: ../libpurple/protocols/yahoo/yahoo.c:2861 -#: ../libpurple/protocols/yahoo/yahoo.c:2964 -#: ../libpurple/protocols/yahoo/yahoo.c:2974 +#: ../libpurple/protocols/yahoo/yahoo.c:2674 +#: ../libpurple/protocols/yahoo/yahoo.c:2860 +#: ../libpurple/protocols/yahoo/yahoo.c:2963 +#: ../libpurple/protocols/yahoo/yahoo.c:2973 #: ../libpurple/protocols/yahoo/yahoochat.c:1514 #: ../libpurple/protocols/yahoo/yahoochat.c:1584 #: ../libpurple/protocols/yahoo/ycht.c:585 msgid "Connection problem" msgstr "Problem ved tilkobling" -#: ../libpurple/protocols/yahoo/yahoo.c:2701 +#: ../libpurple/protocols/yahoo/yahoo.c:2700 #, fuzzy, c-format msgid "" "Lost connection with %s:\n" "%s" msgstr "Samtaler med %s" -#: ../libpurple/protocols/yahoo/yahoo.c:2726 +#: ../libpurple/protocols/yahoo/yahoo.c:2725 #, c-format msgid "" "Could not establish a connection with %s:\n" "%s" msgstr "" -#: ../libpurple/protocols/yahoo/yahoo.c:3081 -#: ../libpurple/protocols/yahoo/yahoo.c:3767 -#, fuzzy +#: ../libpurple/protocols/yahoo/yahoo.c:3080 +#: ../libpurple/protocols/yahoo/yahoo.c:3766 msgid "Not at Home" msgstr "Ikke hjemme" -#: ../libpurple/protocols/yahoo/yahoo.c:3083 -#: ../libpurple/protocols/yahoo/yahoo.c:3770 -#, fuzzy +#: ../libpurple/protocols/yahoo/yahoo.c:3082 +#: ../libpurple/protocols/yahoo/yahoo.c:3769 msgid "Not at Desk" msgstr "Ikke ved skrivebordet" -#: ../libpurple/protocols/yahoo/yahoo.c:3085 -#: ../libpurple/protocols/yahoo/yahoo.c:3773 -#, fuzzy +#: ../libpurple/protocols/yahoo/yahoo.c:3084 +#: ../libpurple/protocols/yahoo/yahoo.c:3772 msgid "Not in Office" msgstr "Ikke på kontoret" -#: ../libpurple/protocols/yahoo/yahoo.c:3089 -#: ../libpurple/protocols/yahoo/yahoo.c:3779 +#: ../libpurple/protocols/yahoo/yahoo.c:3088 +#: ../libpurple/protocols/yahoo/yahoo.c:3778 msgid "On Vacation" msgstr "På ferie" -#: ../libpurple/protocols/yahoo/yahoo.c:3093 -#: ../libpurple/protocols/yahoo/yahoo.c:3785 +#: ../libpurple/protocols/yahoo/yahoo.c:3092 +#: ../libpurple/protocols/yahoo/yahoo.c:3784 msgid "Stepped Out" msgstr "Ute" -#: ../libpurple/protocols/yahoo/yahoo.c:3186 -#: ../libpurple/protocols/yahoo/yahoo.c:3216 +#: ../libpurple/protocols/yahoo/yahoo.c:3185 +#: ../libpurple/protocols/yahoo/yahoo.c:3215 msgid "Not on server list" msgstr "Ikke på tjenerlisten" -#: ../libpurple/protocols/yahoo/yahoo.c:3233 -#: ../libpurple/protocols/yahoo/yahoo.c:3291 +#: ../libpurple/protocols/yahoo/yahoo.c:3232 +#: ../libpurple/protocols/yahoo/yahoo.c:3290 #, fuzzy msgid "Appear Online" msgstr "Lat som avlogget" -#: ../libpurple/protocols/yahoo/yahoo.c:3236 -#: ../libpurple/protocols/yahoo/yahoo.c:3312 +#: ../libpurple/protocols/yahoo/yahoo.c:3235 +#: ../libpurple/protocols/yahoo/yahoo.c:3311 #, fuzzy msgid "Appear Permanently Offline" msgstr "Lat som avlogget" -#: ../libpurple/protocols/yahoo/yahoo.c:3254 +#: ../libpurple/protocols/yahoo/yahoo.c:3253 #, fuzzy msgid "Presence" msgstr "Innstillinger" -#: ../libpurple/protocols/yahoo/yahoo.c:3297 +#: ../libpurple/protocols/yahoo/yahoo.c:3296 msgid "Appear Offline" msgstr "Lat som avlogget" -#: ../libpurple/protocols/yahoo/yahoo.c:3306 +#: ../libpurple/protocols/yahoo/yahoo.c:3305 #, fuzzy msgid "Don't Appear Permanently Offline" msgstr "Lat som avlogget" -#: ../libpurple/protocols/yahoo/yahoo.c:3354 +#: ../libpurple/protocols/yahoo/yahoo.c:3353 msgid "Join in Chat" msgstr "Bli med i samtalegruppe" -#: ../libpurple/protocols/yahoo/yahoo.c:3360 +#: ../libpurple/protocols/yahoo/yahoo.c:3359 msgid "Initiate Conference" msgstr "Start konferanse" -#: ../libpurple/protocols/yahoo/yahoo.c:3388 +#: ../libpurple/protocols/yahoo/yahoo.c:3387 #, fuzzy msgid "Presence Settings" msgstr "Skjulte Innstillinger" -#: ../libpurple/protocols/yahoo/yahoo.c:3394 +#: ../libpurple/protocols/yahoo/yahoo.c:3393 msgid "Start Doodling" msgstr "Start kruseduller" -#: ../libpurple/protocols/yahoo/yahoo.c:3495 +#: ../libpurple/protocols/yahoo/yahoo.c:3494 #, fuzzy msgid "Activate which ID?" msgstr "Aktiver hvilken ID?" -#: ../libpurple/protocols/yahoo/yahoo.c:3506 +#: ../libpurple/protocols/yahoo/yahoo.c:3505 msgid "Join whom in chat?" msgstr "Bli med hvem i samtalegruppe?" -#: ../libpurple/protocols/yahoo/yahoo.c:3518 +#: ../libpurple/protocols/yahoo/yahoo.c:3517 msgid "Activate ID..." msgstr "Aktiver ID..." -#: ../libpurple/protocols/yahoo/yahoo.c:3522 +#: ../libpurple/protocols/yahoo/yahoo.c:3521 #, fuzzy msgid "Join User in Chat..." msgstr "Bli med bruker i samtalegruppe..." -#: ../libpurple/protocols/yahoo/yahoo.c:3527 +#: ../libpurple/protocols/yahoo/yahoo.c:3526 #, fuzzy msgid "Open Inbox" msgstr "Åpne Hotmail Inbox" -#: ../libpurple/protocols/yahoo/yahoo.c:4119 -#, fuzzy -msgid "Buzz" -msgstr "Buzz!!" - -#: ../libpurple/protocols/yahoo/yahoo.c:4121 -#, c-format -msgid "Buzzing %s..." -msgstr "" - -#: ../libpurple/protocols/yahoo/yahoo.c:4136 +#: ../libpurple/protocols/yahoo/yahoo.c:4135 #, fuzzy msgid "join <room>: Join a chat room on the Yahoo network" -msgstr "" -"join: <rom> [vert]: Bli med i en gruppesamtale på denne serveren" - -#: ../libpurple/protocols/yahoo/yahoo.c:4141 +msgstr "join: <rom> [vert]: Bli med i en gruppesamtale på denne serveren" + +#: ../libpurple/protocols/yahoo/yahoo.c:4140 #, fuzzy msgid "list: List rooms on the Yahoo network" msgstr "list: Vis kanaler på dette nettverket" -#: ../libpurple/protocols/yahoo/yahoo.c:4149 +#: ../libpurple/protocols/yahoo/yahoo.c:4148 msgid "doodle: Request user to start a Doodle session" msgstr "doodle: Forespør en bruker om å starte en Doodle session" @@ -13276,62 +12995,62 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/yahoo/yahoo.c:4358 -#: ../libpurple/protocols/yahoo/yahoo.c:4360 +#: ../libpurple/protocols/yahoo/yahoo.c:4357 +#: ../libpurple/protocols/yahoo/yahoo.c:4359 msgid "Yahoo Protocol Plugin" msgstr "Yahoo-protokolltillegg" -#: ../libpurple/protocols/yahoo/yahoo.c:4383 +#: ../libpurple/protocols/yahoo/yahoo.c:4382 msgid "Yahoo Japan" msgstr "Yahoo Japan" -#: ../libpurple/protocols/yahoo/yahoo.c:4386 +#: ../libpurple/protocols/yahoo/yahoo.c:4385 #, fuzzy msgid "Pager server" msgstr "Proxytjener" -#: ../libpurple/protocols/yahoo/yahoo.c:4389 +#: ../libpurple/protocols/yahoo/yahoo.c:4388 #, fuzzy msgid "Japan Pager server" msgstr "Japansk personsøker-adresse:" -#: ../libpurple/protocols/yahoo/yahoo.c:4392 +#: ../libpurple/protocols/yahoo/yahoo.c:4391 msgid "Pager port" msgstr "Personsøker-port:" -#: ../libpurple/protocols/yahoo/yahoo.c:4395 +#: ../libpurple/protocols/yahoo/yahoo.c:4394 #, fuzzy msgid "File transfer server" msgstr "Filoverføringsvert" -#: ../libpurple/protocols/yahoo/yahoo.c:4398 +#: ../libpurple/protocols/yahoo/yahoo.c:4397 #, fuzzy msgid "Japan file transfer server" msgstr "Japansk filoverføringsvert" -#: ../libpurple/protocols/yahoo/yahoo.c:4401 +#: ../libpurple/protocols/yahoo/yahoo.c:4400 msgid "File transfer port" msgstr "Filoverføringsport" -#: ../libpurple/protocols/yahoo/yahoo.c:4404 +#: ../libpurple/protocols/yahoo/yahoo.c:4403 #, fuzzy msgid "Chat room locale" msgstr "Samtaleromslisteadresse" -#: ../libpurple/protocols/yahoo/yahoo.c:4407 +#: ../libpurple/protocols/yahoo/yahoo.c:4406 msgid "Ignore conference and chatroom invitations" msgstr "" -#: ../libpurple/protocols/yahoo/yahoo.c:4415 +#: ../libpurple/protocols/yahoo/yahoo.c:4414 #, fuzzy msgid "Chat room list URL" msgstr "Samtaleromslisteadresse" -#: ../libpurple/protocols/yahoo/yahoo.c:4418 +#: ../libpurple/protocols/yahoo/yahoo.c:4417 msgid "Yahoo Chat server" msgstr "" -#: ../libpurple/protocols/yahoo/yahoo.c:4421 +#: ../libpurple/protocols/yahoo/yahoo.c:4420 #, fuzzy msgid "Yahoo Chat port" msgstr "Yahoo Japan" @@ -13364,20 +13083,13 @@ msgstr "Yahoo!-profil" #: ../libpurple/protocols/yahoo/yahoo_profile.c:838 -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 "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." #: ../libpurple/protocols/yahoo/yahoo_profile.c:840 #, fuzzy -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 "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" #: ../libpurple/protocols/yahoo/yahoo_profile.c:1034 msgid "Yahoo! ID" @@ -13411,7 +13123,6 @@ msgstr "Kul lenke 3" #: ../libpurple/protocols/yahoo/yahoo_profile.c:1190 -#, fuzzy msgid "Last Update" msgstr "Sist oppdatert" @@ -13422,31 +13133,16 @@ #: ../libpurple/protocols/yahoo/yahoo_profile.c:1205 #, fuzzy -msgid "" -"Sorry, this profile seems to be in a language or format that is not " -"supported at this time." -msgstr "" -"Beklager, men denne profilen ser ut til å være i et språk som for øyeblikket " -"ikke er støttet." +msgid "Sorry, this profile seems to be in a language or format that is not supported at this time." +msgstr "Beklager, men denne profilen ser ut til å være i et språk som for øyeblikket ikke er støttet." #: ../libpurple/protocols/yahoo/yahoo_profile.c:1221 -msgid "" -"Could not retrieve the user's profile. This most likely is a temporary " -"server-side problem. Please try again later." -msgstr "" -"Kunne ikke hente ned brukerens profil. Dette er mest sannsynlig et " -"midlertidig server-problem. Vennligst prøv igjen senere." +msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later." +msgstr "Kunne ikke hente ned brukerens profil. Dette er mest sannsynlig et midlertidig server-problem. Vennligst prøv igjen senere." #: ../libpurple/protocols/yahoo/yahoo_profile.c:1224 -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 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 "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 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." #: ../libpurple/protocols/yahoo/yahoo_profile.c:1231 msgid "The user's profile is empty." @@ -13467,15 +13163,13 @@ #. -6 #: ../libpurple/protocols/yahoo/yahoochat.c:441 -#, fuzzy msgid "Unknown room" -msgstr "Ukjent feil" +msgstr "Ukjent rom" #. -15 #: ../libpurple/protocols/yahoo/yahoochat.c:444 -#, fuzzy msgid "Maybe the room is full" -msgstr "Kanskje rommet er fullt?" +msgstr "Kanskje rommet er fullt" #. -35 #: ../libpurple/protocols/yahoo/yahoochat.c:447 @@ -13484,9 +13178,7 @@ msgstr "Ikke tilgjengelig" #: ../libpurple/protocols/yahoo/yahoochat.c:451 -msgid "" -"Unknown error. You may need to logout and wait five minutes before being " -"able to rejoin a chatroom" +msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom" msgstr "" #: ../libpurple/protocols/yahoo/yahoochat.c:534 @@ -13537,12 +13229,8 @@ #: ../libpurple/protocols/zephyr/zephyr.c:354 #, fuzzy -msgid "" -"(There was an error converting this message.\t Check the 'Encoding' option " -"in the Account Editor)" -msgstr "" -"(Det oppstod en feil under konverteringen av denne beskjeden.\t Sjekk " -"'encoding'-innstillingen i kontooppsettet)" +msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)" +msgstr "(Det oppstod en feil under konverteringen av denne beskjeden.\t Sjekk 'encoding'-innstillingen i kontooppsettet)" #: ../libpurple/protocols/zephyr/zephyr.c:752 #, fuzzy, c-format @@ -13593,8 +13281,7 @@ #: ../libpurple/protocols/zephyr/zephyr.c:2700 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" #: ../libpurple/protocols/zephyr/zephyr.c:2705 msgid "inst <instance>: Set the instance to be used on this class" @@ -13602,35 +13289,26 @@ #: ../libpurple/protocols/zephyr/zephyr.c:2710 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" #: ../libpurple/protocols/zephyr/zephyr.c:2716 msgid "sub <class> <instance> <recipient>: Join a new chat" -msgstr "" -"ub <class> <instance> <recipient>: Join en ny samtale" +msgstr "ub <class> <instance> <recipient>: Join en ny samtale" #: ../libpurple/protocols/zephyr/zephyr.c:2721 -msgid "" -"zi <instance>: Send a message to <message,instance,*>" +msgid "zi <instance>: Send a message to <message,instance,*>" msgstr "" #: ../libpurple/protocols/zephyr/zephyr.c:2727 -msgid "" -"zci <class> <instance>: Send a message to <class," -"instance,*>" +msgid "zci <class> <instance>: Send a message to <class,instance,*>" msgstr "" #: ../libpurple/protocols/zephyr/zephyr.c:2733 -msgid "" -"zcir <class> <instance> <recipient>: Send a message to <" -"class,instance,recipient>" +msgid "zcir <class> <instance> <recipient>: Send a message to <class,instance,recipient>" msgstr "" #: ../libpurple/protocols/zephyr/zephyr.c:2739 -msgid "" -"zir <instance> <recipient>: Send a message to <MESSAGE," -"instance,recipient>" +msgid "zir <instance> <recipient>: Send a message to <MESSAGE,instance,recipient>" msgstr "" #: ../libpurple/protocols/zephyr/zephyr.c:2744 @@ -13695,7 +13373,9 @@ msgid "Exposure" msgstr "" -#: ../libpurple/proxy.c:459 ../libpurple/proxy.c:894 ../libpurple/proxy.c:1049 +#: ../libpurple/proxy.c:459 +#: ../libpurple/proxy.c:894 +#: ../libpurple/proxy.c:1049 #: ../libpurple/proxy.c:1617 #, fuzzy, c-format msgid "" @@ -13708,7 +13388,9 @@ msgid "Unable to parse response from HTTP proxy: %s\n" msgstr "" -#: ../libpurple/proxy.c:698 ../libpurple/proxy.c:744 ../libpurple/proxy.c:780 +#: ../libpurple/proxy.c:698 +#: ../libpurple/proxy.c:744 +#: ../libpurple/proxy.c:780 #: ../libpurple/proxy.c:792 #, fuzzy, c-format msgid "HTTP proxy connection error %d" @@ -13733,29 +13415,26 @@ #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons. #. #: ../libpurple/request.h:1378 -#, fuzzy msgid "_Yes" -msgstr "Ja" +msgstr "_Ja" #: ../libpurple/request.h:1378 -#, fuzzy msgid "_No" -msgstr "Nei" +msgstr "_Nei" #. * #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons. #. #: ../libpurple/request.h:1398 -#, fuzzy msgid "_Accept" -msgstr "Godta" +msgstr "_Godta" #. * #. * The default message to use when the user becomes auto-away. #. #: ../libpurple/savedstatuses.c:48 msgid "I'm not here right now" -msgstr "" +msgstr "Jeg er ikke her akkurat nå" #: ../libpurple/savedstatuses.c:535 #, fuzzy @@ -13777,19 +13456,19 @@ msgid "%s has requested your attention!" msgstr "%s hentet informasjon om deg" -#: ../libpurple/server.c:796 +#: ../libpurple/server.c:793 #, fuzzy, c-format msgid "" "%s has invited %s to the chat room %s:\n" "%s" msgstr "Brukeren '%s' inviterer %s til samtalerom: '%s\n" -#: ../libpurple/server.c:801 +#: ../libpurple/server.c:798 #, c-format msgid "%s has invited %s to the chat room %s\n" msgstr "Brukeren '%s' inviterer %s til samtalerom: '%s\n" -#: ../libpurple/server.c:805 +#: ../libpurple/server.c:802 msgid "Accept chat invitation?" msgstr "Aksepter samtaleinvitasjon?" @@ -13817,180 +13496,180 @@ msgid "Unset" msgstr "Enhet" -#: ../libpurple/status.c:156 ../pidgin/gtkstatusbox.c:1059 -#, fuzzy +#: ../libpurple/status.c:156 +#: ../pidgin/gtkstatusbox.c:1059 msgid "Do not disturb" msgstr "Ikke forstyrr" #: ../libpurple/status.c:159 -#, fuzzy msgid "Extended away" msgstr "Utvidet borte" #: ../libpurple/status.c:160 -#, fuzzy msgid "Mobile" -msgstr "Mobiltelefon" +msgstr "Mobil" #: ../libpurple/status.c:609 -#, fuzzy, c-format +#, c-format msgid "%s changed status from %s to %s" -msgstr "%s har endret kanaltema til: %s" - -#: ../libpurple/status.c:619 -#, fuzzy, c-format +msgstr "%s har endret status fra %s til %s" + +#: ../libpurple/status.c:612 +#, c-format +msgid "%s (%s) changed status from %s to %s" +msgstr "%s (%s) har endret status fra %s til %s" + +#: ../libpurple/status.c:623 +#, c-format msgid "%s is now %s" -msgstr "%s heter nå %s" - -#: ../libpurple/status.c:624 -#, fuzzy, c-format +msgstr "%s er nå %s" + +#: ../libpurple/status.c:625 +#, c-format +msgid "%s (%s) is now %s" +msgstr "%s (%s) er nå %s" + +#: ../libpurple/status.c:631 +#, c-format msgid "%s is no longer %s" -msgstr "%s er tilbake." - -#: ../libpurple/status.c:1234 +msgstr "%s er ikke lenger %s" + +#: ../libpurple/status.c:633 +#, c-format +msgid "%s (%s) is no longer %s" +msgstr "%s (%s) er ikke lenger %s" + +#: ../libpurple/status.c:1244 #, c-format msgid "%s became idle" msgstr "%s har blitt inaktiv" -#: ../libpurple/status.c:1251 +#: ../libpurple/status.c:1261 #, c-format msgid "%s became unidle" msgstr "%s har blitt aktiv" -#: ../libpurple/status.c:1314 -#, fuzzy, c-format +#: ../libpurple/status.c:1324 +#, c-format msgid "+++ %s became idle" msgstr "%s har blitt inaktiv" -#: ../libpurple/status.c:1316 -#, fuzzy, c-format +#: ../libpurple/status.c:1326 +#, c-format msgid "+++ %s became unidle" msgstr "%s har blitt aktiv" -#: ../libpurple/util.c:718 +#: ../libpurple/util.c:701 #, c-format msgid "%x %X" -msgstr "" - -#: ../libpurple/util.c:2722 -#, fuzzy, c-format +msgstr "%x %X" + +#: ../libpurple/util.c:2705 +#, c-format msgid "Error Reading %s" -msgstr "" -"Klarte ikke lese %s:\n" -"%s\n" - -#: ../libpurple/util.c:2723 -#, fuzzy, 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 innlasting av kontaktlisten din. Den har ikke " -"blitt lastet, og den gamle filen ble flyttet til blist.xml~." - -#: ../libpurple/util.c:3223 +msgstr "Feil ved lesing av %s" + +#: ../libpurple/util.c:2706 +#, 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~." + +#: ../libpurple/util.c:3206 msgid "Calculating..." msgstr "Beregner..." -#: ../libpurple/util.c:3226 +#: ../libpurple/util.c:3209 msgid "Unknown." msgstr "Ukjent." -#: ../libpurple/util.c:3252 -#, fuzzy, c-format +#: ../libpurple/util.c:3235 +#, c-format msgid "%d second" msgid_plural "%d seconds" -msgstr[0] "sekund" -msgstr[1] "sekunder" - -#: ../libpurple/util.c:3264 -#, fuzzy, c-format +msgstr[0] "%d sekund" +msgstr[1] "%d sekunder" + +#: ../libpurple/util.c:3247 +#, c-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "dag" -msgstr[1] "dager" - -#: ../libpurple/util.c:3272 +msgstr[0] "%d dag" +msgstr[1] "%d dager" + +#: ../libpurple/util.c:3255 #, c-format msgid "%s, %d hour" msgid_plural "%s, %d hours" -msgstr[0] "" -msgstr[1] "" - -#: ../libpurple/util.c:3278 -#, fuzzy, c-format +msgstr[0] "%s, %d time" +msgstr[1] "%s, %d timer" + +#: ../libpurple/util.c:3261 +#, c-format msgid "%d hour" msgid_plural "%d hours" -msgstr[0] "time" -msgstr[1] "timer" - -#: ../libpurple/util.c:3286 -#, fuzzy, c-format +msgstr[0] "%d time" +msgstr[1] "%d timer" + +#: ../libpurple/util.c:3269 +#, c-format msgid "%s, %d minute" msgid_plural "%s, %d minutes" -msgstr[0] "minutt" -msgstr[1] "minutter" - -#: ../libpurple/util.c:3292 -#, fuzzy, c-format +msgstr[0] "%s, %d minutt" +msgstr[1] "%s, %d minutter" + +#: ../libpurple/util.c:3275 +#, c-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "minutt" -msgstr[1] "minutter" - -#: ../libpurple/util.c:3552 +msgstr[0] "%d minutt" +msgstr[1] "%d minutter" + +#: ../libpurple/util.c:3535 #, c-format msgid "Could not open %s: Redirected too many times" -msgstr "" - -#: ../libpurple/util.c:3589 ../libpurple/util.c:3885 -#, fuzzy, c-format +msgstr "Kunne ikke åpne %s: Omdirigert for mange ganger" + +#: ../libpurple/util.c:3572 +#: ../libpurple/util.c:3868 +#, c-format msgid "Unable to connect to %s" -msgstr "Kan ikke koble til tjener." - -#: ../libpurple/util.c:3712 -#, c-format -msgid "" -"Unable to allocate enough memory to hold the contents from %s. The web " -"server may be trying something malicious." -msgstr "" - -#: ../libpurple/util.c:3747 -#, fuzzy, c-format +msgstr "Kan ikke koble til %s" + +#: ../libpurple/util.c:3695 +#, c-format +msgid "Unable to allocate enough memory to hold the contents from %s. The web server may be trying something malicious." +msgstr "" + +#: ../libpurple/util.c:3730 +#, c-format msgid "Error reading from %s: %s" -msgstr "" -"Klarte ikke lese %s:\n" -"%s\n" - -#: ../libpurple/util.c:3778 -#, fuzzy, c-format +msgstr "Feil ved lesing fra %s: %s" + +#: ../libpurple/util.c:3761 +#, c-format msgid "Error writing to %s: %s" -msgstr "" -"Klarte ikke skrive %s:\n" -"%s\n" - -#: ../libpurple/util.c:3803 -#, fuzzy, c-format +msgstr "Feil ved skriving til %s: %s" + +#: ../libpurple/util.c:3786 +#, c-format msgid "Unable to connect to %s: %s" -msgstr "Kan ikke koble til tjener." +msgstr "Kan ikke koble til %s: %s" #: ../pidgin.desktop.in.h:1 msgid "Internet Messenger" msgstr "Lynmeldingsklient" #: ../pidgin.desktop.in.h:2 -#, fuzzy msgid "Pidgin Internet Messenger" -msgstr "Lynmeldingsklient" +msgstr "Pidgin Lynmeldingsklient" #: ../pidgin.desktop.in.h:3 msgid "Send instant messages over multiple protocols" msgstr "Send lynmeldinger over flere protokoller" #: ../pidgin/eggtrayicon.c:129 -#, fuzzy msgid "Orientation" -msgstr "Organisasjon" +msgstr "Orientering" #: ../pidgin/eggtrayicon.c:130 msgid "The orientation of the tray." @@ -14002,24 +13681,20 @@ msgstr "Innloggingsvalg" #: ../pidgin/gtkaccount.c:428 -#, fuzzy msgid "Pro_tocol:" -msgstr "Protokoll:" +msgstr "Pro_tokoll:" #: ../pidgin/gtkaccount.c:439 -#, fuzzy msgid "Screen _name:" -msgstr "Skjermnavn:" +msgstr "Skjerm_navn:" #: ../pidgin/gtkaccount.c:529 -#, fuzzy msgid "_Local alias:" -msgstr "Lokale brukere" +msgstr "_Lokalt alias:" #: ../pidgin/gtkaccount.c:533 -#, fuzzy msgid "Remember pass_word" -msgstr "Husk passord" +msgstr "Husk pass_ord" #. Build the user options frame. #: ../pidgin/gtkaccount.c:591 @@ -14027,9 +13702,8 @@ msgstr "Brukervalg" #: ../pidgin/gtkaccount.c:604 -#, fuzzy msgid "New _mail notifications" -msgstr "Varsling om ny e-post" +msgstr "_Varsling om ny e-post" #. Buddy icon #: ../pidgin/gtkaccount.c:609 @@ -14043,9 +13717,8 @@ msgstr "%s brukervalg" #: ../pidgin/gtkaccount.c:936 -#, fuzzy msgid "Use GNOME Proxy Settings" -msgstr "Bruk globale proxyinnstilinger" +msgstr "Bruk GNOMEs proxyinnstilinger" #: ../pidgin/gtkaccount.c:937 msgid "Use Global Proxy Settings" @@ -14067,8 +13740,8 @@ msgid "SOCKS 5" msgstr "SOCKS 5" -# -#: ../pidgin/gtkaccount.c:967 ../pidgin/gtkprefs.c:1211 +#: ../pidgin/gtkaccount.c:967 +#: ../pidgin/gtkprefs.c:1213 msgid "Use Environmental Settings" msgstr "Bruk innstillinger fra miljøet" @@ -14090,15 +13763,18 @@ msgid "Proxy Options" msgstr "Proxyinnstillinger" -#: ../pidgin/gtkaccount.c:1044 ../pidgin/gtkprefs.c:1205 +#: ../pidgin/gtkaccount.c:1044 +#: ../pidgin/gtkprefs.c:1207 msgid "Proxy _type:" -msgstr "Proxytype:" - -#: ../pidgin/gtkaccount.c:1053 ../pidgin/gtkprefs.c:1226 +msgstr "Proxy_type:" + +#: ../pidgin/gtkaccount.c:1053 +#: ../pidgin/gtkprefs.c:1228 msgid "_Host:" -msgstr "Adresse:" - -#: ../pidgin/gtkaccount.c:1057 ../pidgin/gtkprefs.c:1244 +msgstr "_Vert:" + +#: ../pidgin/gtkaccount.c:1057 +#: ../pidgin/gtkprefs.c:1246 msgid "_Port:" msgstr "_Port:" @@ -14106,41 +13782,39 @@ msgid "_Username:" msgstr "_Brukernavn:" -#: ../pidgin/gtkaccount.c:1072 ../pidgin/gtkprefs.c:1281 +#: ../pidgin/gtkaccount.c:1072 +#: ../pidgin/gtkprefs.c:1283 msgid "Pa_ssword:" -msgstr "Passord:" +msgstr "Pa_ssord:" #: ../pidgin/gtkaccount.c:1195 -#, fuzzy msgid "Unable to save new account" -msgstr "Kunne ikke lage ny tilkobling." +msgstr "Kan ikke lagre ny konto" #: ../pidgin/gtkaccount.c:1196 msgid "An account already exists with the specified criteria." -msgstr "" +msgstr "En konto eksisterer allerede med de spesifiserte kriteriene." #: ../pidgin/gtkaccount.c:1473 msgid "Add Account" msgstr "Legg til konto" #: ../pidgin/gtkaccount.c:1492 -#, fuzzy msgid "_Basic" -msgstr "Tilbake" +msgstr "_Generell" #: ../pidgin/gtkaccount.c:1499 msgid "Create this new account on the server" -msgstr "" +msgstr "Opprett denne nye kontoen på tjeneren" #: ../pidgin/gtkaccount.c:1515 -#, fuzzy msgid "_Advanced" -msgstr "_Avbryt" - -#: ../pidgin/gtkaccount.c:1973 ../pidgin/gtkplugin.c:569 -#, fuzzy +msgstr "_Avansert" + +#: ../pidgin/gtkaccount.c:1973 +#: ../pidgin/gtkplugin.c:569 msgid "Enabled" -msgstr "Feilet." +msgstr "Aktivert" #: ../pidgin/gtkaccount.c:2001 msgid "Protocol" @@ -14151,270 +13825,296 @@ 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->Add/Edit in the Buddy List window" -msgstr "" - -#: ../pidgin/gtkblist.c:767 +"You can come back to this window to add, edit, or remove accounts from Accounts->Add/Edit in the Buddy List window" +msgstr "" + +#: ../pidgin/gtkblist.c:524 +#, 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] "" +msgstr[1] "" + +#: ../pidgin/gtkblist.c:525 +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 "" + +#: ../pidgin/gtkblist.c:527 +#, fuzzy +msgid "_Merge" +msgstr "_Beskjed:" + +#: ../pidgin/gtkblist.c:924 msgid "Join a Chat" msgstr "Bli med i en samtalegruppe" -#: ../pidgin/gtkblist.c:788 -msgid "" -"Please enter the appropriate information about the chat you would like to " -"join.\n" -msgstr "" -"Vennligst skriv inn informasjon om samtalegruppen du ønsker å bli med i.\n" - -#. Set up stuff for the account box -#: ../pidgin/gtkblist.c:799 ../pidgin/gtkblist.c:5530 -#: ../pidgin/gtkblist.c:5893 ../pidgin/gtkpounce.c:539 +#: ../pidgin/gtkblist.c:945 +msgid "Please enter the appropriate information about the chat you would like to join.\n" +msgstr "Vennligst skriv inn informasjon om samtalegruppen du ønsker å bli med i.\n" + +#: ../pidgin/gtkblist.c:956 +#: ../pidgin/gtkblist.c:6188 +#: ../pidgin/gtkpounce.c:539 #: ../pidgin/gtkroomlist.c:396 msgid "_Account:" -msgstr "Konto:" - -#: ../pidgin/gtkblist.c:1088 ../pidgin/gtkprivacy.c:603 +msgstr "_Konto:" + +#: ../pidgin/gtkblist.c:1245 +#: ../pidgin/gtkprivacy.c:603 #: ../pidgin/gtkprivacy.c:617 -#, fuzzy msgid "_Block" -msgstr "Blokker" - -#: ../pidgin/gtkblist.c:1088 -#, fuzzy +msgstr "_Blokker" + +#: ../pidgin/gtkblist.c:1245 msgid "Un_block" -msgstr "Blokker" - -#: ../pidgin/gtkblist.c:1139 +msgstr "_Ta bort blokkering" + +#: ../pidgin/gtkblist.c:1288 +msgid "Move to" +msgstr "Flytt til" + +#: ../pidgin/gtkblist.c:1328 msgid "Get _Info" -msgstr "_Info" - -#: ../pidgin/gtkblist.c:1142 ../pidgin/pidginstock.c:90 +msgstr "Hent _informasjon" + +#: ../pidgin/gtkblist.c:1331 +#: ../pidgin/pidginstock.c:90 msgid "I_M" msgstr "Direkte_melding" -#: ../pidgin/gtkblist.c:1148 -#, fuzzy -msgid "_Send File" -msgstr "Send fil" - -#: ../pidgin/gtkblist.c:1155 -#, fuzzy -msgid "Add Buddy _Pounce" -msgstr "Legg til kompisvarsling" - -#: ../pidgin/gtkblist.c:1160 ../pidgin/gtkblist.c:1164 -#: ../pidgin/gtkblist.c:1269 ../pidgin/gtkblist.c:1292 +#: ../pidgin/gtkblist.c:1337 +msgid "_Send File..." +msgstr "_Send fil..." + +#: ../pidgin/gtkblist.c:1344 +msgid "Add Buddy _Pounce..." +msgstr "Legg til _kontaktvarsling..." + +#: ../pidgin/gtkblist.c:1349 +#: ../pidgin/gtkblist.c:1353 +#: ../pidgin/gtkblist.c:1468 +#: ../pidgin/gtkblist.c:1491 msgid "View _Log" msgstr "Vis _logg" -#: ../pidgin/gtkblist.c:1177 ../pidgin/gtkblist.c:1186 -#: ../pidgin/gtkblist.c:1277 ../pidgin/gtkblist.c:1298 +#: ../pidgin/gtkblist.c:1359 +#, fuzzy +msgid "Hide when offline" +msgstr "Ikke tillatt når avlogget" + +#: ../pidgin/gtkblist.c:1359 +#, fuzzy +msgid "Show when offline" +msgstr "Ikke tillatt når avlogget" + +#: ../pidgin/gtkblist.c:1373 +#: ../pidgin/gtkblist.c:1382 +#: ../pidgin/gtkblist.c:1476 +#: ../pidgin/gtkblist.c:1497 msgid "_Alias..." msgstr "_Alias..." -#: ../pidgin/gtkblist.c:1180 ../pidgin/gtkblist.c:1188 -#: ../pidgin/gtkblist.c:1279 ../pidgin/gtkblist.c:1300 +#: ../pidgin/gtkblist.c:1376 +#: ../pidgin/gtkblist.c:1384 +#: ../pidgin/gtkblist.c:1478 +#: ../pidgin/gtkblist.c:1499 msgid "_Remove" msgstr "Fje_rn" -#: ../pidgin/gtkblist.c:1238 -msgid "Add a _Buddy" -msgstr "Legg til kompis" - -#: ../pidgin/gtkblist.c:1241 -msgid "Add a C_hat" -msgstr "Legg til samtalegruppe" - -#: ../pidgin/gtkblist.c:1244 +#: ../pidgin/gtkblist.c:1434 +msgid "Add _Buddy..." +msgstr "Legg til _kontakt" + +#: ../pidgin/gtkblist.c:1437 +msgid "Add C_hat..." +msgstr "Legg til _samtale" + +#: ../pidgin/gtkblist.c:1440 msgid "_Delete Group" -msgstr "Slett gruppe" - -#: ../pidgin/gtkblist.c:1246 +msgstr "_Slett gruppe" + +#: ../pidgin/gtkblist.c:1442 msgid "_Rename" msgstr "End_re navn" #. join button -#: ../pidgin/gtkblist.c:1265 ../pidgin/gtkroomlist.c:307 -#: ../pidgin/gtkroomlist.c:460 ../pidgin/pidginstock.c:88 +#: ../pidgin/gtkblist.c:1462 +#: ../pidgin/gtkroomlist.c:307 +#: ../pidgin/gtkroomlist.c:460 +#: ../pidgin/pidginstock.c:88 msgid "_Join" -msgstr "_Bli med i samtalegruppe" - -#: ../pidgin/gtkblist.c:1267 +msgstr "_Bli med" + +#: ../pidgin/gtkblist.c:1464 msgid "Auto-Join" msgstr "Automatisk pålogging" -#: ../pidgin/gtkblist.c:1305 ../pidgin/gtkblist.c:1329 +#: ../pidgin/gtkblist.c:1466 +#, fuzzy +msgid "Persistent" +msgstr "Serbisk" + +#: ../pidgin/gtkblist.c:1504 +#: ../pidgin/gtkblist.c:1527 msgid "_Collapse" msgstr "_Lukk" -#: ../pidgin/gtkblist.c:1334 +#: ../pidgin/gtkblist.c:1532 msgid "_Expand" msgstr "_Utvid" -#: ../pidgin/gtkblist.c:1585 ../pidgin/gtkblist.c:1597 -#: ../pidgin/gtkblist.c:4603 ../pidgin/gtkblist.c:4616 -#, fuzzy +#: ../pidgin/gtkblist.c:1783 +#: ../pidgin/gtkblist.c:1795 +#: ../pidgin/gtkblist.c:4885 +#: ../pidgin/gtkblist.c:4898 msgid "/Tools/Mute Sounds" -msgstr "Skru av lyder" - -#: ../pidgin/gtkblist.c:2057 ../pidgin/gtkconv.c:4840 +msgstr "/Verktøy/Skru av lyder" + +#: ../pidgin/gtkblist.c:2255 +#: ../pidgin/gtkconv.c:4903 #: ../pidgin/gtkpounce.c:430 -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." #. Buddies menu -#: ../pidgin/gtkblist.c:2869 +#: ../pidgin/gtkblist.c:3067 msgid "/_Buddies" msgstr "/_Kontakter" -#: ../pidgin/gtkblist.c:2870 +#: ../pidgin/gtkblist.c:3068 msgid "/Buddies/New Instant _Message..." msgstr "/Kontakter/_Ny direktemelding..." -#: ../pidgin/gtkblist.c:2871 +#: ../pidgin/gtkblist.c:3069 msgid "/Buddies/Join a _Chat..." msgstr "/Kontakter/_Bli med i samtalegruppe..." -#: ../pidgin/gtkblist.c:2872 +#: ../pidgin/gtkblist.c:3070 msgid "/Buddies/Get User _Info..." msgstr "/Kontakter/_Hent brukerinfo..." -#: ../pidgin/gtkblist.c:2873 +#: ../pidgin/gtkblist.c:3071 msgid "/Buddies/View User _Log..." -msgstr "/Kontakter/Hent bruker_logg..." - -#: ../pidgin/gtkblist.c:2875 -#, fuzzy +msgstr "/Kontakter/Vis bruker_logg..." + +#: ../pidgin/gtkblist.c:3073 msgid "/Buddies/Show" -msgstr "/Kontakter/L_ogge av" - -#: ../pidgin/gtkblist.c:2876 -#, fuzzy +msgstr "/Kontakter/Vis" + +#: ../pidgin/gtkblist.c:3074 msgid "/Buddies/Show/_Offline Buddies" -msgstr "/Kontakter/_Vis avloggede kontakter" - -#: ../pidgin/gtkblist.c:2877 -#, fuzzy +msgstr "/Kontakter/Vis/_Avloggede kontakter" + +#: ../pidgin/gtkblist.c:3075 msgid "/Buddies/Show/_Empty Groups" -msgstr "/Kontakter/Vis _tomme grupper" - -#: ../pidgin/gtkblist.c:2878 -#, fuzzy +msgstr "/Kontakter/Vis/_Tomme grupper" + +#: ../pidgin/gtkblist.c:3076 msgid "/Buddies/Show/Buddy _Details" -msgstr "/Kontakter/Vis _avloggede kontakter" - -#: ../pidgin/gtkblist.c:2879 -#, fuzzy +msgstr "/Kontakter/Vis/Kontakt_detaljer" + +#: ../pidgin/gtkblist.c:3077 msgid "/Buddies/Show/Idle _Times" -msgstr "/Kontakter/Vis _avloggede kontakter" - -#: ../pidgin/gtkblist.c:2880 -#, fuzzy +msgstr "/Kontakter/Vis/_Fraværstid" + +#: ../pidgin/gtkblist.c:3078 msgid "/Buddies/Show/_Protocol Icons" -msgstr "/Kontakter/Vis _tomme grupper" - -#: ../pidgin/gtkblist.c:2881 -#, fuzzy +msgstr "/Kontakter/Vis/_Protokollikoner" + +#: ../pidgin/gtkblist.c:3079 msgid "/Buddies/_Sort Buddies" -msgstr "/Kontakter/Vis _avloggede kontakter" - -#: ../pidgin/gtkblist.c:2883 +msgstr "/Kontakter/_Sorter kontakter" + +#: ../pidgin/gtkblist.c:3081 msgid "/Buddies/_Add Buddy..." -msgstr "/Kontakter/_Legg til kompis..." - -#: ../pidgin/gtkblist.c:2884 +msgstr "/Kontakter/_Legg til kontakt..." + +#: ../pidgin/gtkblist.c:3082 msgid "/Buddies/Add C_hat..." msgstr "/Kontakter/Legg til _samtalegruppe..." -#: ../pidgin/gtkblist.c:2885 +#: ../pidgin/gtkblist.c:3083 msgid "/Buddies/Add _Group..." msgstr "/Kontakter/Legg til _gruppe..." -#: ../pidgin/gtkblist.c:2887 +#: ../pidgin/gtkblist.c:3085 msgid "/Buddies/_Quit" msgstr "/Kontakter/_Avslutt" #. Accounts menu -#: ../pidgin/gtkblist.c:2890 -#, fuzzy +#: ../pidgin/gtkblist.c:3088 msgid "/_Accounts" -msgstr "Kontoer" - -#: ../pidgin/gtkblist.c:2891 ../pidgin/gtkblist.c:6589 -#, fuzzy -msgid "/Accounts/Add\\/Edit" -msgstr "Kontoer" +msgstr "/_Kontoer" + +#: ../pidgin/gtkblist.c:3089 +#: ../pidgin/gtkblist.c:6889 +#, fuzzy +msgid "/Accounts/Manage" +msgstr "/Kontoer" #. Tools -#: ../pidgin/gtkblist.c:2894 +#: ../pidgin/gtkblist.c:3092 msgid "/_Tools" msgstr "/_Verktøy" -#: ../pidgin/gtkblist.c:2895 -#, fuzzy +#: ../pidgin/gtkblist.c:3093 msgid "/Tools/Buddy _Pounces" msgstr "/Verktøy/_Kompisvarsling" -#: ../pidgin/gtkblist.c:2896 -#, fuzzy +#: ../pidgin/gtkblist.c:3094 msgid "/Tools/_Certificates" -msgstr "/Verktøy/_Innstillinger" - -#: ../pidgin/gtkblist.c:2897 +msgstr "/Verktøy/_Sertifikater" + +#: ../pidgin/gtkblist.c:3095 #, fuzzy msgid "/Tools/Plu_gins" msgstr "/Verktøy/Handlinger for tillegg" -#: ../pidgin/gtkblist.c:2898 +#: ../pidgin/gtkblist.c:3096 msgid "/Tools/Pr_eferences" msgstr "/Verktøy/_Innstillinger" -#: ../pidgin/gtkblist.c:2899 +#: ../pidgin/gtkblist.c:3097 msgid "/Tools/Pr_ivacy" msgstr "/Verktøy/_Sikkerhet" -#: ../pidgin/gtkblist.c:2901 +#: ../pidgin/gtkblist.c:3099 msgid "/Tools/_File Transfers" msgstr "/Verktøy/_Filoverføringer..." -#: ../pidgin/gtkblist.c:2902 +#: ../pidgin/gtkblist.c:3100 msgid "/Tools/R_oom List" msgstr "/Verktøy/_Romliste" -#: ../pidgin/gtkblist.c:2903 -#, fuzzy +#: ../pidgin/gtkblist.c:3101 msgid "/Tools/System _Log" -msgstr "/Verktøy/_Vis systemlogg" - -#: ../pidgin/gtkblist.c:2905 -#, fuzzy +msgstr "/Verktøy/System_logg" + +#: ../pidgin/gtkblist.c:3103 msgid "/Tools/Mute _Sounds" -msgstr "Skru av lyder" +msgstr "/Verktøy/_Skru av lyder" #. Help -#: ../pidgin/gtkblist.c:2907 +#: ../pidgin/gtkblist.c:3105 msgid "/_Help" msgstr "/_Hjelp" -#: ../pidgin/gtkblist.c:2908 +#: ../pidgin/gtkblist.c:3106 msgid "/Help/Online _Help" msgstr "/Hjelp/Hjelp på _nettet" -#: ../pidgin/gtkblist.c:2909 +#: ../pidgin/gtkblist.c:3107 msgid "/Help/_Debug Window" msgstr "/Hjelp/_Avlusningsvindu" -#: ../pidgin/gtkblist.c:2911 ../pidgin/gtkblist.c:2913 +#: ../pidgin/gtkblist.c:3109 +#: ../pidgin/gtkblist.c:3111 msgid "/Help/_About" msgstr "/Hjelp/_Om" -#: ../pidgin/gtkblist.c:2942 +#: ../pidgin/gtkblist.c:3140 #, c-format msgid "" "\n" @@ -14423,699 +14123,643 @@ "\n" "Konto: %s" -#: ../pidgin/gtkblist.c:3020 -#, fuzzy +#: ../pidgin/gtkblist.c:3218 msgid "Buddy Alias" -msgstr "Kontaktliste" - -#: ../pidgin/gtkblist.c:3049 -#, fuzzy +msgstr "Kontaktalias" + +#: ../pidgin/gtkblist.c:3247 msgid "Logged In" -msgstr "Logget ut" - -#: ../pidgin/gtkblist.c:3095 -#, fuzzy +msgstr "Logget inn" + +#: ../pidgin/gtkblist.c:3293 msgid "Last Seen" -msgstr "Etternavn:" - -#: ../pidgin/gtkblist.c:3116 +msgstr "Sist sett" + +#: ../pidgin/gtkblist.c:3314 msgid "Spooky" -msgstr "" - -#: ../pidgin/gtkblist.c:3118 +msgstr "Skummelt" + +#: ../pidgin/gtkblist.c:3316 msgid "Awesome" -msgstr "" - -#: ../pidgin/gtkblist.c:3120 +msgstr "Fantastisk" + +#: ../pidgin/gtkblist.c:3318 msgid "Rockin'" -msgstr "" - -#: ../pidgin/gtkblist.c:3453 -#, fuzzy, c-format +msgstr "Rocker" + +#: ../pidgin/gtkblist.c:3657 +#, c-format msgid "Idle %dd %dh %02dm" -msgstr "Inaktiv (%dt%02dm) " - -#: ../pidgin/gtkblist.c:3455 -#, fuzzy, c-format +msgstr "Inaktiv %dd %dh %02dm" + +#: ../pidgin/gtkblist.c:3659 +#, c-format msgid "Idle %dh %02dm" -msgstr "Inaktiv (%dt%02dm) " - -#: ../pidgin/gtkblist.c:3457 -#, fuzzy, c-format +msgstr "Inaktiv %dh %02dm" + +#: ../pidgin/gtkblist.c:3661 +#, c-format msgid "Idle %dm" -msgstr "Inaktiv (%dm) " - -#: ../pidgin/gtkblist.c:3602 -#, fuzzy +msgstr "Inaktiv %dm" + +#: ../pidgin/gtkblist.c:3806 msgid "/Buddies/New Instant Message..." -msgstr "/Kontakter/_Ny direktemelding..." - -#: ../pidgin/gtkblist.c:3603 ../pidgin/gtkblist.c:3636 +msgstr "/Kontakter/Ny direktemelding..." + +#: ../pidgin/gtkblist.c:3807 +#: ../pidgin/gtkblist.c:3840 msgid "/Buddies/Join a Chat..." -msgstr "/Kontakter/_Bli med i samtalegruppe..." - -#: ../pidgin/gtkblist.c:3604 -#, fuzzy +msgstr "/Kontakter/Bli med i samtalegruppe..." + +#: ../pidgin/gtkblist.c:3808 msgid "/Buddies/Get User Info..." -msgstr "/Kontakter/_Hent brukerinfo..." - -#: ../pidgin/gtkblist.c:3605 -#, fuzzy +msgstr "/Kontakter/Hent brukerinfo..." + +#: ../pidgin/gtkblist.c:3809 msgid "/Buddies/Add Buddy..." -msgstr "/Kontakter/_Legg til kompis..." - -#: ../pidgin/gtkblist.c:3606 ../pidgin/gtkblist.c:3639 -#, fuzzy +msgstr "/Kontakter/Legg til kontakt..." + +#: ../pidgin/gtkblist.c:3810 +#: ../pidgin/gtkblist.c:3843 msgid "/Buddies/Add Chat..." -msgstr "/Kontakter/Legg til _samtalegruppe..." - -#: ../pidgin/gtkblist.c:3607 -#, fuzzy +msgstr "/Kontakter/Legg til samtalegruppe..." + +#: ../pidgin/gtkblist.c:3811 msgid "/Buddies/Add Group..." -msgstr "/Kontakter/Legg til _gruppe..." - -#: ../pidgin/gtkblist.c:3642 +msgstr "/Kontakter/Legg til gruppe..." + +#: ../pidgin/gtkblist.c:3846 msgid "/Tools/Privacy" -msgstr "/Verktøy/Blo_kkeringer" - -#: ../pidgin/gtkblist.c:3645 +msgstr "/Verktøy/Blokkeringer" + +#: ../pidgin/gtkblist.c:3849 msgid "/Tools/Room List" -msgstr "/Verktøy/_Romliste" - -#: ../pidgin/gtkblist.c:3742 ../pidgin/gtkdocklet.c:153 -#, fuzzy, c-format +msgstr "/Verktøy/Romliste" + +#: ../pidgin/gtkblist.c:3944 +#: ../pidgin/gtkdocklet.c:153 +#, c-format msgid "%d unread message from %s\n" msgid_plural "%d unread messages from %s\n" -msgstr[0] "Melding fra %s" -msgstr[1] "Melding fra %s" - -#: ../pidgin/gtkblist.c:3822 -#, fuzzy +msgstr[0] "%d ulest beskjed fra %s\n" +msgstr[1] "%d uleste beskjeder fra %s\n" + +#: ../pidgin/gtkblist.c:4104 msgid "Manually" -msgstr "Egendefinert" - -#: ../pidgin/gtkblist.c:3824 -#, fuzzy -msgid "Alphabetically" -msgstr "Alfabetisk" - -#: ../pidgin/gtkblist.c:3825 +msgstr "Manuelt" + +#: ../pidgin/gtkblist.c:4107 msgid "By status" msgstr "Etter status" -#: ../pidgin/gtkblist.c:3826 +#: ../pidgin/gtkblist.c:4108 msgid "By log size" msgstr "Etter loggstørrelse" -#: ../pidgin/gtkblist.c:4031 ../pidgin/gtkconn.c:179 -#, fuzzy, c-format +#: ../pidgin/gtkblist.c:4313 +#: ../pidgin/gtkconn.c:180 +#, c-format msgid "%s disconnected" -msgstr "Frakoblet." - -#: ../pidgin/gtkblist.c:4067 -#, fuzzy, c-format +msgstr "%s koblet fra" + +#: ../pidgin/gtkblist.c:4349 +#, c-format msgid "%s disconnected: %s" -msgstr "" -"%s har blitt koplet fra.\n" -"\n" -"%s\n" -"%s" - -#: ../pidgin/gtkblist.c:4219 -#, fuzzy +msgstr "%s koblet fra: %s" + +#: ../pidgin/gtkblist.c:4501 msgid "Username:" -msgstr "" -"\n" -"Advart:" - -#: ../pidgin/gtkblist.c:4226 -#, fuzzy +msgstr "Brukernavn:" + +#: ../pidgin/gtkblist.c:4508 msgid "Password:" -msgstr "_Passord:" - -#: ../pidgin/gtkblist.c:4237 +msgstr "Passord:" + +#: ../pidgin/gtkblist.c:4519 #, fuzzy msgid "_Login" msgstr "Innlogging" -#: ../pidgin/gtkblist.c:4320 -#, fuzzy +#: ../pidgin/gtkblist.c:4602 msgid "/Accounts" -msgstr "Kontoer" +msgstr "/Kontoer" #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy -#: ../pidgin/gtkblist.c:4334 +#: ../pidgin/gtkblist.c:4616 #, c-format msgid "" "Welcome to %s!\n" "\n" -"You have no accounts enabled. Enable your IM accounts from the Accounts window at Accounts->Add/Edit. 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. Once you enable accounts, you'll be able to sign on, set your status, and talk to your friends." msgstr "" #. set the Show Offline Buddies option. must be done #. * after the treeview or faceprint gets mad. -Robot101 #. -#: ../pidgin/gtkblist.c:4597 -#, fuzzy +#: ../pidgin/gtkblist.c:4879 msgid "/Buddies/Show/Offline Buddies" -msgstr "/Kontakter/Vis _avloggede kontakter" - -#: ../pidgin/gtkblist.c:4600 -#, fuzzy +msgstr "/Kontakter/Vis/Avloggede kontakter" + +#: ../pidgin/gtkblist.c:4882 msgid "/Buddies/Show/Empty Groups" -msgstr "/Kontakter/Vis tomme grupper" - -#: ../pidgin/gtkblist.c:4606 -#, fuzzy +msgstr "/Kontakter/Vis/Tomme grupper" + +#: ../pidgin/gtkblist.c:4888 msgid "/Buddies/Show/Buddy Details" -msgstr "/Kontakter/Vis _avloggede kontakter" - -#: ../pidgin/gtkblist.c:4609 -#, fuzzy +msgstr "/Kontakter/Vis/Kontaktdetaljer" + +#: ../pidgin/gtkblist.c:4891 msgid "/Buddies/Show/Idle Times" -msgstr "/Kontakter/Vis _avloggede kontakter" - -#: ../pidgin/gtkblist.c:4612 -#, fuzzy +msgstr "/Kontakter/Vis/Fraværstider" + +#: ../pidgin/gtkblist.c:4894 msgid "/Buddies/Show/Protocol Icons" -msgstr "/Kontakter/Vis tomme grupper" - -#: ../pidgin/gtkblist.c:5507 -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 "" -"Vennligst skriv inn skjermnavnet til den personen som du vil legge til i " -"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" +msgstr "/Kontakter/Vis/Protokollikoner" + +#: ../pidgin/gtkblist.c:5796 +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 "Vennligst skriv inn skjermnavnet til den personen som du vil legge til i 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" + +#. Set up stuff for the account box +#: ../pidgin/gtkblist.c:5819 +msgid "A_ccount:" +msgstr "K_onto:" #. End of account box -#: ../pidgin/gtkblist.c:5542 -#, fuzzy +#: ../pidgin/gtkblist.c:5831 msgid "_Screen name:" -msgstr "_Skjermnavn" - -#: ../pidgin/gtkblist.c:5564 ../pidgin/gtkblist.c:5914 -#, fuzzy +msgstr "_Skjermnavn:" + +#: ../pidgin/gtkblist.c:5853 +#: ../pidgin/gtkblist.c:6209 msgid "A_lias:" -msgstr "Alias:" - -#: ../pidgin/gtkblist.c:5826 +msgstr "A_lias:" + +#: ../pidgin/gtkblist.c:6121 msgid "This protocol does not support chat rooms." msgstr "Denne protokollversjonen støtter ikke samtalerom" -#: ../pidgin/gtkblist.c:5842 -msgid "" -"You are not currently signed on with any protocols that have the ability to " -"chat." +#: ../pidgin/gtkblist.c:6137 +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." -#: ../pidgin/gtkblist.c:5883 -msgid "" -"Please enter an alias, and the appropriate information about the chat you " -"would like to add to your buddy list.\n" -msgstr "" -"Vennligst skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n" - -#: ../pidgin/gtkblist.c:5964 +#: ../pidgin/gtkblist.c:6178 +msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n" +msgstr "Vennligst skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n" + +#: ../pidgin/gtkblist.c:6237 +msgid "Autojoin when account becomes online." +msgstr "" + +#: ../pidgin/gtkblist.c:6238 +msgid "Hide chat when the window is closed." +msgstr "" + +#: ../pidgin/gtkblist.c:6264 msgid "Please enter the name of the group to be added." msgstr "Vennligst skriv inn navnet på gruppen som skal legges til." -#: ../pidgin/gtkblist.c:6609 +#: ../pidgin/gtkblist.c:6909 msgid "/Accounts/" -msgstr "" - -#: ../pidgin/gtkblist.c:6633 -#, fuzzy +msgstr "/Kontoer/" + +#: ../pidgin/gtkblist.c:6933 msgid "_Edit Account" -msgstr "Konto:" - -#: ../pidgin/gtkblist.c:6646 ../pidgin/gtkconv.c:3073 +msgstr "_Rediger konto" + +#: ../pidgin/gtkblist.c:6946 +#: ../pidgin/gtkconv.c:3136 msgid "No actions available" msgstr "Ingen handlinger tilgjengelig" -#: ../pidgin/gtkblist.c:6654 -#, fuzzy +#: ../pidgin/gtkblist.c:6954 msgid "_Disable" -msgstr "Synlig" - -# -#: ../pidgin/gtkblist.c:6666 -#, fuzzy +msgstr "_Deaktiver" + +#: ../pidgin/gtkblist.c:6966 msgid "Enable Account" -msgstr "Konto" - -#: ../pidgin/gtkblist.c:6672 +msgstr "Aktiver konto" + +#: ../pidgin/gtkblist.c:6972 msgid "/Accounts/Enable Account" -msgstr "" - -#: ../pidgin/gtkblist.c:6721 -#, fuzzy +msgstr "/Kontoer/Aktiver konto" + +#: ../pidgin/gtkblist.c:7021 msgid "/Tools" -msgstr "/_Verktøy" - -#: ../pidgin/gtkblist.c:6791 -#, fuzzy +msgstr "/Verktøy" + +#: ../pidgin/gtkblist.c:7091 msgid "/Buddies/Sort Buddies" -msgstr "/Kontakter/Vis _avloggede kontakter" +msgstr "/Kontakter/Sorter kontakter" #. Widget creation function #: ../pidgin/gtkcertmgr.c:530 -#, fuzzy msgid "SSL Servers" -msgstr "Tjener" - -#: ../pidgin/gtkconn.c:180 +msgstr "SSL-tjenere" + +#: ../pidgin/gtkconn.c:181 #, fuzzy, c-format msgid "" "%s\n" "\n" -"%s will not attempt to reconnect the account until you correct the error and " -"re-enable the account." -msgstr "" -"%s ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen " -"og slå på kontoen for å tilkoble." - -#: ../pidgin/gtkconv.c:482 -#, fuzzy +"%s will not attempt to reconnect the account until you correct the error and re-enable the account." +msgstr "%s ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen og slå på kontoen for å tilkoble." + +#: ../pidgin/gtkconv.c:523 msgid "Unknown command." -msgstr "Ukjent kommando:" - -#: ../pidgin/gtkconv.c:754 ../pidgin/gtkconv.c:780 -#, fuzzy +msgstr "Ukjent kommando." + +#: ../pidgin/gtkconv.c:795 +#: ../pidgin/gtkconv.c:821 msgid "That buddy is not on the same protocol as this chat." -msgstr "Denne vennen er ikke på den samme protokollen som denne samtalegruppa" - -#: ../pidgin/gtkconv.c:774 -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 kameraten." - -#: ../pidgin/gtkconv.c:827 +msgstr "Denne kontakten er ikke på den samme protokollen som denne samtalegruppa" + +#: ../pidgin/gtkconv.c:815 +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." + +#: ../pidgin/gtkconv.c:868 msgid "Invite Buddy Into Chat Room" -msgstr "Inviter kamerat inn i samtalerom" +msgstr "Inviter kontakten inn i samtalerom" #. Put our happy label in it. -#: ../pidgin/gtkconv.c:857 -msgid "" -"Please enter the name of the user you wish to invite, along with an optional " -"invite message." -msgstr "" -"Vennligst skriv inn navnet på brukeren som du vil invitere, og en eventuell " -"invitasjonsbeskjed." - -#: ../pidgin/gtkconv.c:878 +#: ../pidgin/gtkconv.c:898 +msgid "Please enter the name of the user you wish to invite, along with an optional invite message." +msgstr "Vennligst skriv inn navnet på brukeren som du vil invitere, og en eventuell invitasjonsbeskjed." + +#: ../pidgin/gtkconv.c:919 msgid "_Buddy:" -msgstr "Kontakt:" - -#: ../pidgin/gtkconv.c:889 ../pidgin/gtksavedstatuses.c:1194 +msgstr "_Kontakt:" + +#: ../pidgin/gtkconv.c:930 +#: ../pidgin/gtksavedstatuses.c:1194 #: ../pidgin/gtksavedstatuses.c:1528 msgid "_Message:" -msgstr "Beskjed:" - -#: ../pidgin/gtkconv.c:947 ../pidgin/gtkconv.c:2598 ../pidgin/gtkdebug.c:219 +msgstr "_Beskjed:" + +#: ../pidgin/gtkconv.c:988 +#: ../pidgin/gtkconv.c:2657 +#: ../pidgin/gtkdebug.c:219 #: ../pidgin/gtkft.c:543 msgid "Unable to open file." -msgstr "Klarte ikke åpne fil." - -#: ../pidgin/gtkconv.c:953 +msgstr "Kunne ikke ikke åpne fil." + +#: ../pidgin/gtkconv.c:994 #, c-format msgid "

Conversation with %s

\n" msgstr "

Samtale med %s

\n" -#: ../pidgin/gtkconv.c:991 +#: ../pidgin/gtkconv.c:1032 msgid "Save Conversation" msgstr "Lagre samtale" -#: ../pidgin/gtkconv.c:1140 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:743 +#: ../pidgin/gtkconv.c:1178 +#: ../pidgin/gtkdebug.c:167 +#: ../pidgin/gtkdebug.c:743 msgid "Find" msgstr "Finn" -# -#: ../pidgin/gtkconv.c:1166 ../pidgin/gtkdebug.c:195 +#: ../pidgin/gtkconv.c:1204 +#: ../pidgin/gtkdebug.c:195 msgid "_Search for:" msgstr "_Søk etter:" -#: ../pidgin/gtkconv.c:1622 +#: ../pidgin/gtkconv.c:1675 msgid "Un-Ignore" msgstr "Fjern ignorer" -#: ../pidgin/gtkconv.c:1625 +#: ../pidgin/gtkconv.c:1678 msgid "Ignore" msgstr "Ignorer" -#: ../pidgin/gtkconv.c:1645 +#: ../pidgin/gtkconv.c:1698 #, fuzzy msgid "Get Away Message" msgstr "Ny fraværsbeskjed" -#: ../pidgin/gtkconv.c:1668 -#, fuzzy +#: ../pidgin/gtkconv.c:1721 msgid "Last said" -msgstr "Etternavn:" - -#: ../pidgin/gtkconv.c:2606 +msgstr "Sa sist" + +#: ../pidgin/gtkconv.c:2665 msgid "Unable to save icon file to disk." msgstr "Kan ikke lagre ikonfil til disk." -#: ../pidgin/gtkconv.c:2657 +#: ../pidgin/gtkconv.c:2716 msgid "Save Icon" msgstr "Lagre ikon" -# -#: ../pidgin/gtkconv.c:2709 +#: ../pidgin/gtkconv.c:2768 msgid "Animate" msgstr "Animer" -#: ../pidgin/gtkconv.c:2714 +#: ../pidgin/gtkconv.c:2773 msgid "Hide Icon" msgstr "Skjul ikon" -#: ../pidgin/gtkconv.c:2717 +#: ../pidgin/gtkconv.c:2776 msgid "Save Icon As..." msgstr "Lagre ikon som..." -#: ../pidgin/gtkconv.c:2721 -#, fuzzy +#: ../pidgin/gtkconv.c:2780 msgid "Set Custom Icon..." -msgstr "Egendefinert" - -# -#: ../pidgin/gtkconv.c:2734 -#, fuzzy +msgstr "Velg eget ikon..." + +#: ../pidgin/gtkconv.c:2793 msgid "Remove Custom Icon" -msgstr "Fje_rn kontakt" - -#: ../pidgin/gtkconv.c:2861 +msgstr "Ta bort eget ikon" + +#: ../pidgin/gtkconv.c:2924 msgid "Show All" -msgstr "" +msgstr "Vis alle" #. Conversation menu -#: ../pidgin/gtkconv.c:2880 +#: ../pidgin/gtkconv.c:2943 msgid "/_Conversation" msgstr "/_Samtale" -#: ../pidgin/gtkconv.c:2882 +#: ../pidgin/gtkconv.c:2945 msgid "/Conversation/New Instant _Message..." msgstr "/Samtale/Ny direktemelding..." -#: ../pidgin/gtkconv.c:2887 +#: ../pidgin/gtkconv.c:2950 msgid "/Conversation/_Find..." msgstr "/Samtale/_Finn..." -# -#: ../pidgin/gtkconv.c:2889 +#: ../pidgin/gtkconv.c:2952 msgid "/Conversation/View _Log" msgstr "/Samtale/_Vis logg..." -#: ../pidgin/gtkconv.c:2890 +#: ../pidgin/gtkconv.c:2953 msgid "/Conversation/_Save As..." msgstr "/Samtale/_Lagre som..." -#: ../pidgin/gtkconv.c:2892 -#, fuzzy +#: ../pidgin/gtkconv.c:2955 msgid "/Conversation/Clea_r Scrollback" -msgstr "/Samtale/Tøm" - -#: ../pidgin/gtkconv.c:2896 +msgstr "/Samtale/_Tøm tilbakeblikk" + +#: ../pidgin/gtkconv.c:2959 msgid "/Conversation/Se_nd File..." msgstr "/Samtale/Se_nd fil..." -#: ../pidgin/gtkconv.c:2897 +#: ../pidgin/gtkconv.c:2960 msgid "/Conversation/Add Buddy _Pounce..." msgstr "/Samtale/Legg til _kompisvarsling" -#: ../pidgin/gtkconv.c:2899 +#: ../pidgin/gtkconv.c:2962 msgid "/Conversation/_Get Info" msgstr "/Samtale/_Hent info" -#: ../pidgin/gtkconv.c:2901 +#: ../pidgin/gtkconv.c:2964 msgid "/Conversation/In_vite..." msgstr "/Samtale/_Inviter..." -#: ../pidgin/gtkconv.c:2903 -#, fuzzy +#: ../pidgin/gtkconv.c:2966 msgid "/Conversation/M_ore" -msgstr "/Samtale/L_ukk" - -#: ../pidgin/gtkconv.c:2907 -#, fuzzy +msgstr "/Samtale/M_ere" + +#: ../pidgin/gtkconv.c:2970 msgid "/Conversation/Al_ias..." -msgstr "/Samtale/Alias..." - -#: ../pidgin/gtkconv.c:2909 +msgstr "/Samtale/Al_ias..." + +#: ../pidgin/gtkconv.c:2972 msgid "/Conversation/_Block..." msgstr "/Samtale/_Blokker..." -#: ../pidgin/gtkconv.c:2911 -#, fuzzy +#: ../pidgin/gtkconv.c:2974 msgid "/Conversation/_Unblock..." -msgstr "/Samtale/_Blokker..." - -#: ../pidgin/gtkconv.c:2913 +msgstr "/Samtale/_Fjern blokkering..." + +#: ../pidgin/gtkconv.c:2976 msgid "/Conversation/_Add..." msgstr "/Samtale/_Legg til..." -#: ../pidgin/gtkconv.c:2915 +#: ../pidgin/gtkconv.c:2978 msgid "/Conversation/_Remove..." msgstr "/Samtale/_Fjern..." -#: ../pidgin/gtkconv.c:2920 +#: ../pidgin/gtkconv.c:2983 msgid "/Conversation/Insert Lin_k..." msgstr "/Samtale/Sett inn len_ke..." -#: ../pidgin/gtkconv.c:2922 +#: ../pidgin/gtkconv.c:2985 msgid "/Conversation/Insert Imag_e..." msgstr "/Samtale/Sett inn bild_e..." -#: ../pidgin/gtkconv.c:2928 +#: ../pidgin/gtkconv.c:2991 msgid "/Conversation/_Close" msgstr "/Samtale/L_ukk" #. Options -#: ../pidgin/gtkconv.c:2932 +#: ../pidgin/gtkconv.c:2995 msgid "/_Options" msgstr "/_Brukervalg" -#: ../pidgin/gtkconv.c:2933 +#: ../pidgin/gtkconv.c:2996 msgid "/Options/Enable _Logging" msgstr "/Brukervalg/Slå på _logging" -#: ../pidgin/gtkconv.c:2934 +#: ../pidgin/gtkconv.c:2997 msgid "/Options/Enable _Sounds" msgstr "/Brukervalg/Slå på l_yder" -#: ../pidgin/gtkconv.c:2936 -#, fuzzy +#: ../pidgin/gtkconv.c:2999 msgid "/Options/Show Formatting _Toolbars" msgstr "/Brukervalg/Vis _formateringsverktøy" -#: ../pidgin/gtkconv.c:2937 -#, fuzzy +#: ../pidgin/gtkconv.c:3000 msgid "/Options/Show Ti_mestamps" -msgstr "/Brukervalg/Vis tidsstempler" - -#: ../pidgin/gtkconv.c:3061 -#, fuzzy +msgstr "/Brukervalg/Vis _tidsstempler" + +#: ../pidgin/gtkconv.c:3124 msgid "/Conversation/More" -msgstr "/Samtale/L_ukk" - -#: ../pidgin/gtkconv.c:3117 -#, fuzzy +msgstr "/Samtale/Mere" + +#: ../pidgin/gtkconv.c:3180 msgid "/Options" -msgstr "/_Brukervalg" +msgstr "/Brukervalg" #. 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. -#: ../pidgin/gtkconv.c:3152 ../pidgin/gtkconv.c:3184 -#, fuzzy +#: ../pidgin/gtkconv.c:3215 +#: ../pidgin/gtkconv.c:3247 msgid "/Conversation" -msgstr "/_Samtale" +msgstr "/Samtale" # -#: ../pidgin/gtkconv.c:3192 +#: ../pidgin/gtkconv.c:3255 msgid "/Conversation/View Log" msgstr "/Samtale/Vis logg" -#: ../pidgin/gtkconv.c:3198 +#: ../pidgin/gtkconv.c:3261 msgid "/Conversation/Send File..." msgstr "/Samtale/Send fil..." -#: ../pidgin/gtkconv.c:3202 +#: ../pidgin/gtkconv.c:3265 msgid "/Conversation/Add Buddy Pounce..." msgstr "/Samtale/Legg til kompisvarsling..." -#: ../pidgin/gtkconv.c:3208 +#: ../pidgin/gtkconv.c:3271 msgid "/Conversation/Get Info" msgstr "/Samtale/Hent info" -#: ../pidgin/gtkconv.c:3212 +#: ../pidgin/gtkconv.c:3275 msgid "/Conversation/Invite..." msgstr "/Samtale/Inviter..." -#: ../pidgin/gtkconv.c:3218 +#: ../pidgin/gtkconv.c:3281 msgid "/Conversation/Alias..." msgstr "/Samtale/Alias..." -#: ../pidgin/gtkconv.c:3222 +#: ../pidgin/gtkconv.c:3285 msgid "/Conversation/Block..." msgstr "/Samtale/Blokker..." -#: ../pidgin/gtkconv.c:3226 -#, fuzzy +#: ../pidgin/gtkconv.c:3289 msgid "/Conversation/Unblock..." -msgstr "/Samtale/Blokker..." - -#: ../pidgin/gtkconv.c:3230 +msgstr "/Samtale/Fjern blokkering..." + +#: ../pidgin/gtkconv.c:3293 msgid "/Conversation/Add..." msgstr "/Samtale/Legg til..." -#: ../pidgin/gtkconv.c:3234 +#: ../pidgin/gtkconv.c:3297 msgid "/Conversation/Remove..." msgstr "/Samtale/Fjern..." -#: ../pidgin/gtkconv.c:3240 +#: ../pidgin/gtkconv.c:3303 msgid "/Conversation/Insert Link..." msgstr "/Samtale/Sett inn lenke" -#: ../pidgin/gtkconv.c:3244 +#: ../pidgin/gtkconv.c:3307 msgid "/Conversation/Insert Image..." msgstr "/Samtale/Sett inn bilde..." -#: ../pidgin/gtkconv.c:3250 +#: ../pidgin/gtkconv.c:3313 msgid "/Options/Enable Logging" msgstr "/Brukervalg/Slå på logging" -#: ../pidgin/gtkconv.c:3253 +#: ../pidgin/gtkconv.c:3316 msgid "/Options/Enable Sounds" msgstr "/Brukervalg/Slå på lyder" -#: ../pidgin/gtkconv.c:3266 -#, fuzzy +#: ../pidgin/gtkconv.c:3329 msgid "/Options/Show Formatting Toolbars" msgstr "/Brukervalg/Vis formateringsverktøy" -#: ../pidgin/gtkconv.c:3269 +#: ../pidgin/gtkconv.c:3332 msgid "/Options/Show Timestamps" msgstr "/Brukervalg/Vis tidsstempler" -#: ../pidgin/gtkconv.c:3346 ../pidgin/gtkconv.c:3388 +#: ../pidgin/gtkconv.c:3409 +#: ../pidgin/gtkconv.c:3451 msgid "User is typing..." msgstr "Brukeren skriver en melding..." -#: ../pidgin/gtkconv.c:3391 -#, fuzzy +#: ../pidgin/gtkconv.c:3454 msgid "User has typed something and stopped" -msgstr "Brukeren har skrevet noe og tatt pause" +msgstr "Brukeren har skrevet noe og pauset" #. Build the Send To menu -#: ../pidgin/gtkconv.c:3574 ../pidgin/gtkconv.c:8022 -#, fuzzy -msgid "_Send To" -msgstr "Send som" - -#: ../pidgin/gtkconv.c:4286 -#, fuzzy +#: ../pidgin/gtkconv.c:3637 +#: ../pidgin/gtkconv.c:8103 +msgid "S_end To" +msgstr "S_end til" + +#: ../pidgin/gtkconv.c:4349 msgid "_Send" -msgstr "Send" +msgstr "_Send" #. Setup the label telling how many people are in the room. -#: ../pidgin/gtkconv.c:4390 +#: ../pidgin/gtkconv.c:4453 msgid "0 people in room" msgstr "0 brukere i rommet" -#: ../pidgin/gtkconv.c:5759 ../pidgin/gtkconv.c:5880 +#: ../pidgin/gtkconv.c:5823 +#: ../pidgin/gtkconv.c:5944 #, c-format msgid "%d person in room" msgid_plural "%d people in room" msgstr[0] "%d person i rommet" msgstr[1] "%d personer i rommet" -#: ../pidgin/gtkconv.c:6486 ../pidgin/gtkstatusbox.c:660 -#, fuzzy +#: ../pidgin/gtkconv.c:6550 +#: ../pidgin/gtkstatusbox.c:660 msgid "Typing" -msgstr "Ping" - -#: ../pidgin/gtkconv.c:6490 -#, fuzzy +msgstr "Skriver" + +#: ../pidgin/gtkconv.c:6554 msgid "Stopped Typing" -msgstr "Ping" - -#: ../pidgin/gtkconv.c:6493 +msgstr "Stoppet å skrive" + +#: ../pidgin/gtkconv.c:6557 #, fuzzy msgid "Nick Said" msgstr "Kallenavn" -#: ../pidgin/gtkconv.c:6496 ../pidgin/gtkdocklet.c:492 -#, fuzzy +#: ../pidgin/gtkconv.c:6560 +#: ../pidgin/gtkdocklet.c:492 msgid "Unread Messages" -msgstr "Send beskjed" - -#: ../pidgin/gtkconv.c:6499 -#, fuzzy +msgstr "Uleste beskjeder" + +#: ../pidgin/gtkconv.c:6563 msgid "New Event" -msgstr "Hendelse" - -#: ../pidgin/gtkconv.c:7572 +msgstr "Ny hendelse" + +#: ../pidgin/gtkconv.c:7654 #, fuzzy msgid "clear: Clears all conversation scrollbacks." msgstr "%s har lukket samtalevinduet." -#: ../pidgin/gtkconv.c:7736 -#, fuzzy +#: ../pidgin/gtkconv.c:7817 msgid "Confirm close" -msgstr "Bekrefte konto" - -#: ../pidgin/gtkconv.c:7768 -#, fuzzy +msgstr "Bekrefte lukking" + +#: ../pidgin/gtkconv.c:7849 msgid "You have unread messages. Are you sure you want to close the window?" -msgstr "Er du sikker på at du vil slette %s?" - -#: ../pidgin/gtkconv.c:8355 +msgstr "Du har uleste beskjeder. Er du sikker på at du vil lukke vinduet?" + +#: ../pidgin/gtkconv.c:8436 msgid "Close other tabs" -msgstr "" - -#: ../pidgin/gtkconv.c:8361 +msgstr "Lukk andre faner" + +#: ../pidgin/gtkconv.c:8442 msgid "Close all tabs" -msgstr "" - -#: ../pidgin/gtkconv.c:8369 +msgstr "Lukk alle faner" + +#: ../pidgin/gtkconv.c:8450 msgid "Detach this tab" msgstr "" -#: ../pidgin/gtkconv.c:8375 +#: ../pidgin/gtkconv.c:8456 msgid "Close this tab" -msgstr "" - -#: ../pidgin/gtkconv.c:8875 +msgstr "Lukk denne fanen" + +#: ../pidgin/gtkconv.c:8951 msgid "Close conversation" msgstr "Lukk samtalen" -#: ../pidgin/gtkconv.c:9477 +#: ../pidgin/gtkconv.c:9553 msgid "Last created window" -msgstr "Sist lagde vindu" - -#: ../pidgin/gtkconv.c:9479 +msgstr "Sist opprettede vindu" + +#: ../pidgin/gtkconv.c:9555 msgid "Separate IM and Chat windows" msgstr "Skill direktemeldings- og gruppesamtalevinduer." -#: ../pidgin/gtkconv.c:9481 ../pidgin/gtkprefs.c:1415 +#: ../pidgin/gtkconv.c:9557 +#: ../pidgin/gtkprefs.c:1417 msgid "New window" msgstr "Nytt vindu" -#: ../pidgin/gtkconv.c:9483 +#: ../pidgin/gtkconv.c:9559 msgid "By group" msgstr "Etter gruppe" -#: ../pidgin/gtkconv.c:9485 +#: ../pidgin/gtkconv.c:9561 msgid "By account" msgstr "Etter konto" @@ -15124,9 +14768,8 @@ msgstr "Lagre avlusningslogg" #: ../pidgin/gtkdebug.c:582 -#, fuzzy msgid "Invert" -msgstr "Sett _inn" +msgstr "Inverter" #: ../pidgin/gtkdebug.c:585 msgid "Highlight matches" @@ -15134,70 +14777,74 @@ #: ../pidgin/gtkdebug.c:652 msgid "_Icon Only" -msgstr "" +msgstr "Bare _ikon" #: ../pidgin/gtkdebug.c:653 msgid "_Text Only" -msgstr "" +msgstr "Bare _tekst" #: ../pidgin/gtkdebug.c:654 msgid "_Both Icon & Text" -msgstr "" +msgstr "_Både ikon og tekst" #: ../pidgin/gtkdebug.c:775 -#, fuzzy msgid "Filter" -msgstr "Feilet." +msgstr "Filter" #: ../pidgin/gtkdebug.c:794 -#, fuzzy msgid "Right click for more options." -msgstr "Vis flere valg" +msgstr "Høyreklikk for flere valg" #: ../pidgin/gtkdebug.c:824 msgid "Level " -msgstr "" - -#: ../pidgin/gtkdebug.c:825 ../pidgin/gtkdebug.c:831 +msgstr "Nivå" + +#: ../pidgin/gtkdebug.c:825 +#: ../pidgin/gtkdebug.c:831 msgid "Select the debug filter level." msgstr "" #: ../pidgin/gtkdebug.c:833 -#, fuzzy msgid "All" -msgstr "Tillat" +msgstr "Alle" #: ../pidgin/gtkdebug.c:834 msgid "Misc" -msgstr "" +msgstr "Diverse" #: ../pidgin/gtkdebug.c:836 -#, fuzzy msgid "Warning" -msgstr "Advar" +msgstr "Advarsel" #: ../pidgin/gtkdebug.c:837 -#, fuzzy msgid "Error " msgstr "Feil" #: ../pidgin/gtkdebug.c:838 -#, fuzzy msgid "Fatal Error" -msgstr "Intern feil" - -#: ../pidgin/gtkdialogs.c:72 ../pidgin/gtkdialogs.c:117 +msgstr "Alvorlig feil" + +#: ../pidgin/gtkdialogs.c:72 +#: ../pidgin/gtkdialogs.c:117 msgid "lead developer" msgstr "hovedutvikler" -#: ../pidgin/gtkdialogs.c:73 ../pidgin/gtkdialogs.c:74 -#: ../pidgin/gtkdialogs.c:75 ../pidgin/gtkdialogs.c:76 -#: ../pidgin/gtkdialogs.c:77 ../pidgin/gtkdialogs.c:78 -#: ../pidgin/gtkdialogs.c:79 ../pidgin/gtkdialogs.c:80 -#: ../pidgin/gtkdialogs.c:81 ../pidgin/gtkdialogs.c:82 -#: ../pidgin/gtkdialogs.c:83 ../pidgin/gtkdialogs.c:84 -#: ../pidgin/gtkdialogs.c:85 ../pidgin/gtkdialogs.c:86 -#: ../pidgin/gtkdialogs.c:89 ../pidgin/gtkdialogs.c:91 +#: ../pidgin/gtkdialogs.c:73 +#: ../pidgin/gtkdialogs.c:74 +#: ../pidgin/gtkdialogs.c:75 +#: ../pidgin/gtkdialogs.c:76 +#: ../pidgin/gtkdialogs.c:77 +#: ../pidgin/gtkdialogs.c:78 +#: ../pidgin/gtkdialogs.c:79 +#: ../pidgin/gtkdialogs.c:80 +#: ../pidgin/gtkdialogs.c:81 +#: ../pidgin/gtkdialogs.c:82 +#: ../pidgin/gtkdialogs.c:83 +#: ../pidgin/gtkdialogs.c:84 +#: ../pidgin/gtkdialogs.c:85 +#: ../pidgin/gtkdialogs.c:86 +#: ../pidgin/gtkdialogs.c:89 +#: ../pidgin/gtkdialogs.c:91 #: ../pidgin/gtkdialogs.c:92 msgid "developer" msgstr "utvikler" @@ -15207,13 +14854,13 @@ msgid "support" msgstr "støtte" -# #: ../pidgin/gtkdialogs.c:88 #, fuzzy msgid "support/QA" msgstr "støtte" -#: ../pidgin/gtkdialogs.c:90 ../pidgin/gtkdialogs.c:112 +#: ../pidgin/gtkdialogs.c:90 +#: ../pidgin/gtkdialogs.c:112 msgid "developer & webmaster" msgstr "utvikler og vevansvarlig" @@ -15225,15 +14872,14 @@ msgid "win32 port" msgstr "windows-versjon" -# -#: ../pidgin/gtkdialogs.c:109 ../pidgin/gtkdialogs.c:110 +#: ../pidgin/gtkdialogs.c:109 +#: ../pidgin/gtkdialogs.c:110 msgid "maintainer" msgstr "ansvarlig" #: ../pidgin/gtkdialogs.c:111 -#, fuzzy msgid "libfaim maintainer" -msgstr "tidligere libfaim-ansvarlig" +msgstr "libfaim-ansvarlig" #. If "lazy bum" translates literally into a serious insult, use something else or omit it. #: ../pidgin/gtkdialogs.c:114 @@ -15241,76 +14887,79 @@ msgstr "hacker og sjåfør (avslappet fyr)" #: ../pidgin/gtkdialogs.c:115 -#, fuzzy msgid "XMPP developer" -msgstr "utvikler" - -# +msgstr "XMPP-utvikler" + #: ../pidgin/gtkdialogs.c:116 msgid "original author" msgstr "opprinnelig laget av" #: ../pidgin/gtkdialogs.c:133 msgid "Afrikaans" -msgstr "" - -# -#: ../pidgin/gtkdialogs.c:134 ../pidgin/gtkdialogs.c:226 -#, fuzzy +msgstr "Afrikaans" + +#: ../pidgin/gtkdialogs.c:134 msgid "Arabic" -msgstr "Amharisk" +msgstr "Arabisk" #: ../pidgin/gtkdialogs.c:135 msgid "Belarusian Latin" msgstr "" -#: ../pidgin/gtkdialogs.c:136 ../pidgin/gtkdialogs.c:137 -#: ../pidgin/gtkdialogs.c:227 +#: ../pidgin/gtkdialogs.c:136 +#: ../pidgin/gtkdialogs.c:137 +#: ../pidgin/gtkdialogs.c:224 msgid "Bulgarian" msgstr "Bulgarsk" -#: ../pidgin/gtkdialogs.c:138 ../pidgin/gtkdialogs.c:139 -#: ../pidgin/gtkdialogs.c:140 ../pidgin/gtkdialogs.c:141 +#: ../pidgin/gtkdialogs.c:138 +#: ../pidgin/gtkdialogs.c:139 +#: ../pidgin/gtkdialogs.c:140 +#: ../pidgin/gtkdialogs.c:141 msgid "Bengali" msgstr "" -# #: ../pidgin/gtkdialogs.c:142 -#, fuzzy msgid "Bosnian" -msgstr "Estisk" - -#: ../pidgin/gtkdialogs.c:143 ../pidgin/gtkdialogs.c:228 -#: ../pidgin/gtkdialogs.c:229 +msgstr "Bosnisk" + +#: ../pidgin/gtkdialogs.c:143 +#: ../pidgin/gtkdialogs.c:225 +#: ../pidgin/gtkdialogs.c:226 msgid "Catalan" msgstr "Katalansk" -#: ../pidgin/gtkdialogs.c:144 ../pidgin/gtkdialogs.c:145 +#: ../pidgin/gtkdialogs.c:144 +#: ../pidgin/gtkdialogs.c:145 msgid "Valencian-Catalan" msgstr "" -#: ../pidgin/gtkdialogs.c:146 ../pidgin/gtkdialogs.c:230 +#: ../pidgin/gtkdialogs.c:146 +#: ../pidgin/gtkdialogs.c:227 msgid "Czech" msgstr "Tsjekkisk" -# -#: ../pidgin/gtkdialogs.c:147 ../pidgin/gtkdialogs.c:148 +#: ../pidgin/gtkdialogs.c:147 +#: ../pidgin/gtkdialogs.c:148 msgid "Danish" msgstr "Dansk" -#: ../pidgin/gtkdialogs.c:149 ../pidgin/gtkdialogs.c:150 -#: ../pidgin/gtkdialogs.c:231 +#: ../pidgin/gtkdialogs.c:149 +#: ../pidgin/gtkdialogs.c:150 +#: ../pidgin/gtkdialogs.c:228 msgid "German" msgstr "Tysk" -#: ../pidgin/gtkdialogs.c:151 ../pidgin/gtkdialogs.c:152 +#: ../pidgin/gtkdialogs.c:151 +#: ../pidgin/gtkdialogs.c:152 #: ../pidgin/gtkdialogs.c:153 msgid "Dzongkha" msgstr "" -#: ../pidgin/gtkdialogs.c:154 ../pidgin/gtkdialogs.c:155 +#: ../pidgin/gtkdialogs.c:154 +#: ../pidgin/gtkdialogs.c:155 msgid "Greek" -msgstr "" +msgstr "Gresk" #: ../pidgin/gtkdialogs.c:156 msgid "Australian English" @@ -15328,48 +14977,52 @@ msgid "Esperanto" msgstr "" -#: ../pidgin/gtkdialogs.c:160 ../pidgin/gtkdialogs.c:232 -#: ../pidgin/gtkdialogs.c:233 ../pidgin/gtkdialogs.c:234 -#: ../pidgin/gtkdialogs.c:235 +#: ../pidgin/gtkdialogs.c:160 +#: ../pidgin/gtkdialogs.c:229 +#: ../pidgin/gtkdialogs.c:230 +#: ../pidgin/gtkdialogs.c:231 +#: ../pidgin/gtkdialogs.c:232 msgid "Spanish" msgstr "Spansk" -# #: ../pidgin/gtkdialogs.c:161 -#, fuzzy msgid "Estonian" msgstr "Estisk" -#: ../pidgin/gtkdialogs.c:162 ../pidgin/gtkdialogs.c:163 +#: ../pidgin/gtkdialogs.c:162 +#: ../pidgin/gtkdialogs.c:163 msgid "Euskera(Basque)" msgstr "" -#: ../pidgin/gtkdialogs.c:164 ../pidgin/gtkdialogs.c:165 +#: ../pidgin/gtkdialogs.c:164 +#: ../pidgin/gtkdialogs.c:165 #: ../pidgin/gtkdialogs.c:166 #, fuzzy msgid "Persian" msgstr "Serbisk" -# -#: ../pidgin/gtkdialogs.c:167 ../pidgin/gtkdialogs.c:236 -#: ../pidgin/gtkdialogs.c:237 +#: ../pidgin/gtkdialogs.c:167 +#: ../pidgin/gtkdialogs.c:233 +#: ../pidgin/gtkdialogs.c:234 msgid "Finnish" msgstr "Finsk" -#: ../pidgin/gtkdialogs.c:168 ../pidgin/gtkdialogs.c:238 -#: ../pidgin/gtkdialogs.c:239 ../pidgin/gtkdialogs.c:240 -#: ../pidgin/gtkdialogs.c:241 +#: ../pidgin/gtkdialogs.c:168 +#: ../pidgin/gtkdialogs.c:235 +#: ../pidgin/gtkdialogs.c:236 +#: ../pidgin/gtkdialogs.c:237 +#: ../pidgin/gtkdialogs.c:238 msgid "French" msgstr "Fransk" -# -#: ../pidgin/gtkdialogs.c:169 ../pidgin/gtkdialogs.c:170 -#: ../pidgin/gtkdialogs.c:242 -#, fuzzy +#: ../pidgin/gtkdialogs.c:169 +#: ../pidgin/gtkdialogs.c:170 +#: ../pidgin/gtkdialogs.c:239 msgid "Galician" -msgstr "Italiensk" - -#: ../pidgin/gtkdialogs.c:171 ../pidgin/gtkdialogs.c:172 +msgstr "Galisisk" + +#: ../pidgin/gtkdialogs.c:171 +#: ../pidgin/gtkdialogs.c:172 msgid "Gujarati" msgstr "" @@ -15377,7 +15030,8 @@ msgid "Gujarati Language Team" msgstr "" -#: ../pidgin/gtkdialogs.c:173 ../pidgin/gtkdialogs.c:243 +#: ../pidgin/gtkdialogs.c:173 +#: ../pidgin/gtkdialogs.c:240 msgid "Hebrew" msgstr "Hebraisk" @@ -15385,29 +15039,31 @@ msgid "Hindi" msgstr "Hindi" -#: ../pidgin/gtkdialogs.c:175 ../pidgin/gtkdialogs.c:244 +#: ../pidgin/gtkdialogs.c:175 +#: ../pidgin/gtkdialogs.c:241 msgid "Hungarian" msgstr "Ungarsk" #: ../pidgin/gtkdialogs.c:176 -#, fuzzy msgid "Indonesian" -msgstr "Makedons" - -# -#: ../pidgin/gtkdialogs.c:177 ../pidgin/gtkdialogs.c:245 +msgstr "Indonesisk" + +#: ../pidgin/gtkdialogs.c:177 +#: ../pidgin/gtkdialogs.c:242 msgid "Italian" msgstr "Italiensk" -#: ../pidgin/gtkdialogs.c:178 ../pidgin/gtkdialogs.c:246 -#: ../pidgin/gtkdialogs.c:247 ../pidgin/gtkdialogs.c:248 +#: ../pidgin/gtkdialogs.c:178 +#: ../pidgin/gtkdialogs.c:243 +#: ../pidgin/gtkdialogs.c:244 +#: ../pidgin/gtkdialogs.c:245 msgid "Japanese" msgstr "Japansk" -#: ../pidgin/gtkdialogs.c:179 ../pidgin/gtkdialogs.c:249 -#, fuzzy +#: ../pidgin/gtkdialogs.c:179 +#: ../pidgin/gtkdialogs.c:246 msgid "Georgian" -msgstr "Tysk" +msgstr "Georgisk" #: ../pidgin/gtkdialogs.c:179 #, fuzzy @@ -15415,378 +15071,330 @@ msgstr "Aktive oversettere" #: ../pidgin/gtkdialogs.c:180 -#, fuzzy msgid "Kannada" -msgstr "Bannlyst" +msgstr "Kannada" #: ../pidgin/gtkdialogs.c:180 msgid "Kannada Translation team" msgstr "" -#: ../pidgin/gtkdialogs.c:181 ../pidgin/gtkdialogs.c:250 -#: ../pidgin/gtkdialogs.c:251 +#: ../pidgin/gtkdialogs.c:181 +#: ../pidgin/gtkdialogs.c:247 +#: ../pidgin/gtkdialogs.c:248 msgid "Korean" msgstr "Koreansk" -#: ../pidgin/gtkdialogs.c:182 ../pidgin/gtkdialogs.c:183 +#: ../pidgin/gtkdialogs.c:182 +#: ../pidgin/gtkdialogs.c:183 #: ../pidgin/gtkdialogs.c:184 -#, fuzzy msgid "Kurdish" -msgstr "Tyrkisk" +msgstr "Kurdisk" #: ../pidgin/gtkdialogs.c:185 -msgid "Lao" -msgstr "" - -#: ../pidgin/gtkdialogs.c:186 ../pidgin/gtkdialogs.c:252 -#: ../pidgin/gtkdialogs.c:253 +#: ../pidgin/gtkdialogs.c:249 +#: ../pidgin/gtkdialogs.c:250 msgid "Lithuanian" msgstr "Litauisk" -#: ../pidgin/gtkdialogs.c:187 ../pidgin/gtkdialogs.c:188 -#: ../pidgin/gtkdialogs.c:189 ../pidgin/gtkdialogs.c:254 +#: ../pidgin/gtkdialogs.c:186 +#: ../pidgin/gtkdialogs.c:187 +#: ../pidgin/gtkdialogs.c:251 msgid "Macedonian" msgstr "Makedons" -#: ../pidgin/gtkdialogs.c:190 ../pidgin/gtkdialogs.c:255 -#: ../pidgin/gtkdialogs.c:256 -#, fuzzy +#: ../pidgin/gtkdialogs.c:188 +#: ../pidgin/gtkdialogs.c:252 msgid "Bokmål Norwegian" -msgstr "Norsk" - -#: ../pidgin/gtkdialogs.c:191 +msgstr "Norsk Bokmål" + +#: ../pidgin/gtkdialogs.c:189 msgid "Nepali" msgstr "" -#: ../pidgin/gtkdialogs.c:192 +#: ../pidgin/gtkdialogs.c:190 #, fuzzy msgid "Dutch, Flemish" msgstr "Nederlansk, flamsk" -#: ../pidgin/gtkdialogs.c:193 -#, fuzzy +#: ../pidgin/gtkdialogs.c:191 msgid "Norwegian Nynorsk" -msgstr "Norsk" - -# -#: ../pidgin/gtkdialogs.c:194 ../pidgin/gtkdialogs.c:195 -#: ../pidgin/gtkdialogs.c:196 ../pidgin/gtkdialogs.c:257 +msgstr "Norsk Nynorsk" + +#: ../pidgin/gtkdialogs.c:192 +#: ../pidgin/gtkdialogs.c:193 +#: ../pidgin/gtkdialogs.c:194 +#: ../pidgin/gtkdialogs.c:253 msgid "Polish" msgstr "Polsk" -#: ../pidgin/gtkdialogs.c:197 +#: ../pidgin/gtkdialogs.c:195 msgid "Portuguese" msgstr "Portugisisk" -#: ../pidgin/gtkdialogs.c:198 +#: ../pidgin/gtkdialogs.c:196 msgid "Portuguese-Brazil" msgstr "Portugisisk (Brasil)" +#: ../pidgin/gtkdialogs.c:197 +msgid "Pashto" +msgstr "Pashto" + +#: ../pidgin/gtkdialogs.c:198 +msgid "Romanian" +msgstr "Rumensk" + #: ../pidgin/gtkdialogs.c:199 -#, fuzzy -msgid "Pashto" -msgstr "Bilde" - -# -#: ../pidgin/gtkdialogs.c:200 -msgid "Romanian" -msgstr "Rumensk" - -#: ../pidgin/gtkdialogs.c:201 ../pidgin/gtkdialogs.c:258 -#: ../pidgin/gtkdialogs.c:259 +#: ../pidgin/gtkdialogs.c:254 +#: ../pidgin/gtkdialogs.c:255 msgid "Russian" msgstr "Russisk" -#: ../pidgin/gtkdialogs.c:202 ../pidgin/gtkdialogs.c:203 -#: ../pidgin/gtkdialogs.c:260 ../pidgin/gtkdialogs.c:261 -#: ../pidgin/gtkdialogs.c:262 +#: ../pidgin/gtkdialogs.c:200 +#: ../pidgin/gtkdialogs.c:201 +#: ../pidgin/gtkdialogs.c:256 +#: ../pidgin/gtkdialogs.c:257 +#: ../pidgin/gtkdialogs.c:258 msgid "Slovak" msgstr "Slovakisk" -#: ../pidgin/gtkdialogs.c:204 ../pidgin/gtkdialogs.c:263 +#: ../pidgin/gtkdialogs.c:202 +#: ../pidgin/gtkdialogs.c:259 msgid "Slovenian" msgstr "Slovensk" -# -#: ../pidgin/gtkdialogs.c:205 +#: ../pidgin/gtkdialogs.c:203 msgid "Albanian" msgstr "Albansk" -#: ../pidgin/gtkdialogs.c:206 ../pidgin/gtkdialogs.c:207 -#: ../pidgin/gtkdialogs.c:264 ../pidgin/gtkdialogs.c:265 +#: ../pidgin/gtkdialogs.c:204 +#: ../pidgin/gtkdialogs.c:205 +#: ../pidgin/gtkdialogs.c:260 +#: ../pidgin/gtkdialogs.c:261 msgid "Serbian" msgstr "Serbisk" -#: ../pidgin/gtkdialogs.c:208 ../pidgin/gtkdialogs.c:266 -#: ../pidgin/gtkdialogs.c:267 +#: ../pidgin/gtkdialogs.c:206 +#: ../pidgin/gtkdialogs.c:262 +#: ../pidgin/gtkdialogs.c:263 msgid "Swedish" msgstr "Svensk" +#: ../pidgin/gtkdialogs.c:207 +msgid "Tamil" +msgstr "Tamil" + +#: ../pidgin/gtkdialogs.c:208 +msgid "Telugu" +msgstr "Dravidisk" + #: ../pidgin/gtkdialogs.c:209 -#, fuzzy -msgid "Tamil" -msgstr "Terminal" +msgid "Thai" +msgstr "Thai" #: ../pidgin/gtkdialogs.c:210 -msgid "Telugu" -msgstr "Dravidisk" +#: ../pidgin/gtkdialogs.c:264 +msgid "Turkish" +msgstr "Tyrkisk" #: ../pidgin/gtkdialogs.c:211 -msgid "Thai" -msgstr "" - -#: ../pidgin/gtkdialogs.c:212 ../pidgin/gtkdialogs.c:268 -msgid "Turkish" -msgstr "Tyrkisk" - -#: ../pidgin/gtkdialogs.c:213 msgid "Vietnamese" msgstr "Vietnamesisk" +#: ../pidgin/gtkdialogs.c:211 +msgid "T.M.Thanh and the Gnome-Vi Team" +msgstr "" + +#: ../pidgin/gtkdialogs.c:212 +#: ../pidgin/gtkdialogs.c:265 +msgid "Simplified Chinese" +msgstr "Forenklet kinesisk" + #: ../pidgin/gtkdialogs.c:213 -msgid "T.M.Thanh and the Gnome-Vi Team" -msgstr "" - -#: ../pidgin/gtkdialogs.c:214 ../pidgin/gtkdialogs.c:269 -msgid "Simplified Chinese" -msgstr "Forenklet kinesisk" - -#: ../pidgin/gtkdialogs.c:215 ../pidgin/gtkdialogs.c:216 +#: ../pidgin/gtkdialogs.c:214 +#: ../pidgin/gtkdialogs.c:215 +msgid "Hong Kong Chinese" +msgstr "" + +#: ../pidgin/gtkdialogs.c:216 #: ../pidgin/gtkdialogs.c:217 -msgid "Hong Kong Chinese" -msgstr "" - -#: ../pidgin/gtkdialogs.c:218 ../pidgin/gtkdialogs.c:219 -#: ../pidgin/gtkdialogs.c:270 +#: ../pidgin/gtkdialogs.c:266 msgid "Traditional Chinese" msgstr "Tradisjonell kinesisk" # -#: ../pidgin/gtkdialogs.c:225 +#: ../pidgin/gtkdialogs.c:223 msgid "Amharic" msgstr "Amharisk" -#: ../pidgin/gtkdialogs.c:357 -#, fuzzy, c-format +#: ../pidgin/gtkdialogs.c:353 +#, c-format msgid "About %s" -msgstr "Om Gaim" - -#: ../pidgin/gtkdialogs.c:400 -#, 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 "" - -#: ../pidgin/gtkdialogs.c:418 -#, fuzzy, c-format +msgstr "Om %s" + +#: ../pidgin/gtkdialogs.c:396 +#, 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 "" + +#: ../pidgin/gtkdialogs.c:414 msgid "IRC: #pidgin on irc.freenode.net

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

" - -#: ../pidgin/gtkdialogs.c:423 -#, fuzzy +msgstr "IRC: #pidgin på irc.freenode.net

" + +#: ../pidgin/gtkdialogs.c:419 msgid "Current Developers" -msgstr "tidligere utviklere" - -#: ../pidgin/gtkdialogs.c:438 +msgstr "Tidligere utviklere" + +#: ../pidgin/gtkdialogs.c:434 msgid "Crazy Patch Writers" -msgstr "folk som har bidratt med rettelser" - -#: ../pidgin/gtkdialogs.c:453 +msgstr "Folk som har bidratt med rettelser" + +#: ../pidgin/gtkdialogs.c:449 msgid "Retired Developers" msgstr "tidligere utviklere" -#: ../pidgin/gtkdialogs.c:468 -#, fuzzy +#: ../pidgin/gtkdialogs.c:464 msgid "Retired Crazy Patch Writers" -msgstr "folk som har bidratt med rettelser" - -#: ../pidgin/gtkdialogs.c:483 +msgstr "\"Pensjonerte\" folk som har bidratt med rettelser" + +#: ../pidgin/gtkdialogs.c:479 msgid "Artists" -msgstr "" - -#: ../pidgin/gtkdialogs.c:498 +msgstr "Artister" + +#: ../pidgin/gtkdialogs.c:494 msgid "Current Translators" msgstr "Aktive oversettere" -#: ../pidgin/gtkdialogs.c:518 +#: ../pidgin/gtkdialogs.c:514 msgid "Past Translators" msgstr "Tidligere oversettere" -#: ../pidgin/gtkdialogs.c:536 +#: ../pidgin/gtkdialogs.c:532 #, fuzzy msgid "Debugging Information" msgstr "Brukerinformasjon" -#: ../pidgin/gtkdialogs.c:906 +#: ../pidgin/gtkdialogs.c:902 msgid "Get User Info" msgstr "Hent brukerinfo" -#: ../pidgin/gtkdialogs.c:908 -#, fuzzy -msgid "" -"Please enter the screen name or alias of the person whose info you would " -"like to view." -msgstr "" -"Vennligst skriv inn skjermnavnet til den personen du vil se informasjon om." - -#: ../pidgin/gtkdialogs.c:998 -#, fuzzy +#: ../pidgin/gtkdialogs.c:904 +msgid "Please enter the screen name or alias of the person whose info you would like to view." +msgstr "Vennligst skriv inn skjermnavnet eller aliaset til den personen du vil se informasjon om." + +#: ../pidgin/gtkdialogs.c:994 msgid "View User Log" -msgstr "Hent brukerlogg" - -#: ../pidgin/gtkdialogs.c:1000 -#, fuzzy -msgid "" -"Please enter the screen name or alias of the person whose log you would like " -"to view." -msgstr "" -"Vennligst skriv inn skjermnavnet til den personen du vil se loggen til." - -# -#: ../pidgin/gtkdialogs.c:1020 +msgstr "Se på brukerlogg" + +#: ../pidgin/gtkdialogs.c:996 +msgid "Please enter the screen name or alias of the person whose log you would like to view." +msgstr "Vennligst skriv inn skjermnavnet eller aliaset til den personen du vil se loggen til." + +#: ../pidgin/gtkdialogs.c:1016 msgid "Alias Contact" msgstr "Kontaktalias" -# -#: ../pidgin/gtkdialogs.c:1021 +#: ../pidgin/gtkdialogs.c:1017 msgid "Enter an alias for this contact." -msgstr "Vennligst skriv inn aliasnavn for denne kontakten." - -#: ../pidgin/gtkdialogs.c:1043 +msgstr "Vennligst skriv inn et alias for denne kontakten." + +#: ../pidgin/gtkdialogs.c:1039 #, c-format msgid "Enter an alias for %s." msgstr "Oppgi et alias for %s." -#: ../pidgin/gtkdialogs.c:1045 +#: ../pidgin/gtkdialogs.c:1041 msgid "Alias Buddy" msgstr "Alias for kontakt" -#: ../pidgin/gtkdialogs.c:1066 +#: ../pidgin/gtkdialogs.c:1062 msgid "Alias Chat" msgstr "Samtalealias" -#: ../pidgin/gtkdialogs.c:1067 +#: ../pidgin/gtkdialogs.c:1063 msgid "Enter an alias for this chat." msgstr "Vennligst skriv inn aliasnavn for denne samtalegruppa." -#: ../pidgin/gtkdialogs.c:1106 -#, fuzzy, c-format -msgid "" -"You are about to remove the contact containing %s and %d other buddy from " -"your buddy list. Do you want to continue?" -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] "" -"Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre " -"kontakter fra kontaktlisten din?" -msgstr[1] "" -"Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre " -"kontakter fra kontaktlisten din?" - -# -#: ../pidgin/gtkdialogs.c:1114 +#: ../pidgin/gtkdialogs.c:1102 +#, fuzzy, c-format +msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list. Do you want to continue?" +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] "Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre kontakter fra kontaktlisten din?" +msgstr[1] "Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre kontakter fra kontaktlisten din?" + +#: ../pidgin/gtkdialogs.c:1110 msgid "Remove Contact" -msgstr "Fje_rn kontakt" - -# -#: ../pidgin/gtkdialogs.c:1117 -#, fuzzy +msgstr "Fjern kontakt" + +#: ../pidgin/gtkdialogs.c:1113 msgid "_Remove Contact" msgstr "Fje_rn kontakt" -#: ../pidgin/gtkdialogs.c:1148 -#, fuzzy, c-format -msgid "" -"You are about to merge the group called %s into the group called %s. Do you " -"want to continue?" -msgstr "" -"Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra " -"kontaktlisten din?" - -#: ../pidgin/gtkdialogs.c:1155 +#: ../pidgin/gtkdialogs.c:1144 +#, fuzzy, c-format +msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?" +msgstr "Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra kontaktlisten din?" + +#: ../pidgin/gtkdialogs.c:1151 #, fuzzy msgid "Merge Groups" msgstr "Fjern gruppe" -#: ../pidgin/gtkdialogs.c:1158 +#: ../pidgin/gtkdialogs.c:1154 #, fuzzy msgid "_Merge Groups" msgstr "Slett gruppe" -#: ../pidgin/gtkdialogs.c:1208 -#, 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?" - -#: ../pidgin/gtkdialogs.c:1211 +#: ../pidgin/gtkdialogs.c:1204 +#, 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?" + +#: ../pidgin/gtkdialogs.c:1207 msgid "Remove Group" msgstr "Fjern gruppe" -#: ../pidgin/gtkdialogs.c:1214 -#, fuzzy +#: ../pidgin/gtkdialogs.c:1210 msgid "_Remove Group" -msgstr "Fjern gruppe" - -#: ../pidgin/gtkdialogs.c:1247 -#, c-format -msgid "" -"You are about to remove %s from your buddy list. Do you want to continue?" +msgstr "Fje_rn gruppe" + +#: ../pidgin/gtkdialogs.c:1243 +#, c-format +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?" -#: ../pidgin/gtkdialogs.c:1250 +#: ../pidgin/gtkdialogs.c:1246 msgid "Remove Buddy" msgstr "Fjern kontakt" -#: ../pidgin/gtkdialogs.c:1253 +#: ../pidgin/gtkdialogs.c:1249 msgid "_Remove Buddy" msgstr "Fje_rn kontakt" -#: ../pidgin/gtkdialogs.c:1274 -#, 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?" - -#: ../pidgin/gtkdialogs.c:1277 +#: ../pidgin/gtkdialogs.c:1270 +#, 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?" + +#: ../pidgin/gtkdialogs.c:1273 msgid "Remove Chat" msgstr "Fjern samtalegruppe" -#: ../pidgin/gtkdialogs.c:1280 -#, fuzzy +#: ../pidgin/gtkdialogs.c:1276 msgid "_Remove Chat" -msgstr "Fjern samtalegruppe" +msgstr "_Fjern samtalegruppe" #: ../pidgin/gtkdocklet.c:150 -#, fuzzy msgid "Right-click for more unread messages...\n" -msgstr "Vis flere valg" +msgstr "Høyreklikk for flere uleste beskjeder...\n" #: ../pidgin/gtkdocklet.c:435 -#, fuzzy msgid "Change Status" -msgstr "Endre adresse til:" +msgstr "Endre status" #: ../pidgin/gtkdocklet.c:487 -#, fuzzy msgid "Show Buddy List" -msgstr "Kontaktliste" - -# +msgstr "Vis kontaktliste" + #: ../pidgin/gtkdocklet.c:513 msgid "New Message..." msgstr "Ny melding..." @@ -15795,24 +15403,22 @@ msgid "Mute Sounds" msgstr "Skru av lyder" -# #: ../pidgin/gtkdocklet.c:535 #, fuzzy -msgid "Blink on new message" -msgstr "Ny melding..." +msgid "Blink on New Message" +msgstr "Blink ved nye beskjeder" #: ../pidgin/gtkdocklet.c:542 msgid "Quit" msgstr "Avslutt" #: ../pidgin/gtkft.c:154 -#, fuzzy msgid "Not started" -msgstr "Ikke støttet" +msgstr "Ikke startet" #: ../pidgin/gtkft.c:274 msgid "Receiving As:" -msgstr "Mottar som:" +msgstr "Mottas som:" #: ../pidgin/gtkft.c:276 msgid "Receiving From:" @@ -15835,28 +15441,27 @@ msgstr "En feil oppsto under åpningen av filen" #: ../pidgin/gtkft.c:540 -#, fuzzy, c-format +#, c-format msgid "Error launching %s: %s" -msgstr "Feil under starting av kommando: %s:%s" +msgstr "Feil under start av %s: %s" #: ../pidgin/gtkft.c:549 -#, fuzzy, c-format +#, c-format msgid "Error running %s" -msgstr "Klarte ikke bli med i gruppesamtale %s" +msgstr "Feil ved kjøring av %s" #: ../pidgin/gtkft.c:550 #, c-format msgid "Process returned error code %d" -msgstr "" +msgstr "Prosessen returnerte feilkode %d" #: ../pidgin/gtkft.c:697 msgid "Filename:" msgstr "Filnavn:" #: ../pidgin/gtkft.c:698 -#, fuzzy msgid "Local File:" -msgstr "Lokale brukere" +msgstr "Lokal fil" #: ../pidgin/gtkft.c:700 msgid "Speed:" @@ -15872,21 +15477,20 @@ #: ../pidgin/gtkft.c:784 msgid "Close this window when all transfers _finish" -msgstr "" +msgstr "Lukk dette vinduet når alle overføringene er _fullført" #: ../pidgin/gtkft.c:794 -#, fuzzy msgid "C_lear finished transfers" -msgstr "Fjern fullførte overføringer" +msgstr "_Fjern fullførte overføringer" #. "Download Details" arrow #: ../pidgin/gtkft.c:803 -#, fuzzy msgid "File transfer _details" -msgstr "Skjul overføringsdetaljer" +msgstr "Skjul overførings_detaljer" #. Pause button -#: ../pidgin/gtkft.c:833 ../pidgin/pidginstock.c:95 +#: ../pidgin/gtkft.c:833 +#: ../pidgin/pidginstock.c:95 msgid "_Pause" msgstr "_Pause" @@ -15896,12 +15500,11 @@ msgstr "_Fortsett" #: ../pidgin/gtkimhtml.c:816 -#, fuzzy msgid "Paste as Plain _Text" -msgstr "Li_m inn som tekst" - -#: ../pidgin/gtkimhtml.c:833 ../pidgin/gtkimhtmltoolbar.c:1194 -#, fuzzy +msgstr "Lim inn som ren _tekst" + +#: ../pidgin/gtkimhtml.c:833 +#: ../pidgin/gtkimhtmltoolbar.c:1195 msgid "_Reset formatting" msgstr "_Fjern formatering" @@ -15911,7 +15514,7 @@ #: ../pidgin/gtkimhtml.c:1374 msgid "Color to draw hyperlinks." -msgstr "Farge på lenker" +msgstr "Fargen som lenker skal ha" #: ../pidgin/gtkimhtml.c:1377 #, fuzzy @@ -15923,18 +15526,17 @@ msgid "Color to draw hyperlinks when mouse is over them." msgstr "Farge på lenker" -# #: ../pidgin/gtkimhtml.c:1598 msgid "_Copy E-Mail Address" -msgstr "Kopier e-postadresse" +msgstr "_Kopier e-postadresse" #: ../pidgin/gtkimhtml.c:1610 msgid "_Open Link in Browser" -msgstr "Åpne i nettleser" +msgstr "_Åpne lenke i nettleser" #: ../pidgin/gtkimhtml.c:1620 msgid "_Copy Link Location" -msgstr "Kopier snarvei" +msgstr "_Kopier lenkemål" #: ../pidgin/gtkimhtml.c:3369 msgid "" @@ -15957,32 +15559,35 @@ "Går tilbake til PNG." #: ../pidgin/gtkimhtml.c:3401 -#, fuzzy, c-format +#, c-format msgid "" "Error saving image\n" "\n" "%s" msgstr "" -"Du har e-post!\n" +"Feil ved lagring av bilde\n" "\n" "%s" #: ../pidgin/gtkimhtml.c:3404 -#, fuzzy, c-format +#, c-format msgid "" "Error saving image\n" "\n" "%s" -msgstr "Feil under lagring av bilde: %s" - -#: ../pidgin/gtkimhtml.c:3482 ../pidgin/gtkimhtml.c:3494 +msgstr "" +"Feil ved lagring av bilde\n" +"\n" +"%s" + +#: ../pidgin/gtkimhtml.c:3482 +#: ../pidgin/gtkimhtml.c:3494 msgid "Save Image" msgstr "Lagre bilde" #: ../pidgin/gtkimhtml.c:3522 -#, c-format msgid "_Save Image..." -msgstr "Lagre bilde..." +msgstr "_Lagre bilde..." #: ../pidgin/gtkimhtmltoolbar.c:163 msgid "Select Font" @@ -16001,29 +15606,24 @@ msgstr "_URL" #: ../pidgin/gtkimhtmltoolbar.c:418 -#, fuzzy msgid "_Description" -msgstr "Beskrivelse" +msgstr "_Beskrivelse" #: ../pidgin/gtkimhtmltoolbar.c:421 -msgid "" -"Please enter the URL and description of the link that you want to insert. " -"The description is optional." -msgstr "" -"Vennligst 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 "Vennligst skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt." #: ../pidgin/gtkimhtmltoolbar.c:425 msgid "Please enter the URL of the link that you want to insert." -msgstr "" -"Vennligst skriv inn URL og beskrivelse av lenka du vil sette inn. " -"Beskrivelsesfeltet er valgfritt." - -#: ../pidgin/gtkimhtmltoolbar.c:430 ../pidgin/gtkimhtmltoolbar.c:1102 +msgstr "Vennligst skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt." + +#: ../pidgin/gtkimhtmltoolbar.c:430 +#: ../pidgin/gtkimhtmltoolbar.c:1102 msgid "Insert Link" msgstr "Sett inn lenke" -#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1262 +#: ../pidgin/gtkimhtmltoolbar.c:434 +#: ../pidgin/gtkimhtmltoolbar.c:1263 msgid "_Insert" msgstr "Sett _inn" @@ -16032,7 +15632,8 @@ msgid "Failed to store image: %s\n" msgstr "Klarte ikke å lagre bilde: %s\n" -#: ../pidgin/gtkimhtmltoolbar.c:540 ../pidgin/gtkimhtmltoolbar.c:550 +#: ../pidgin/gtkimhtmltoolbar.c:540 +#: ../pidgin/gtkimhtmltoolbar.c:550 msgid "Insert Image" msgstr "Sett inn bilde" @@ -16045,7 +15646,8 @@ msgid "Smile!" msgstr "Smil!" -#: ../pidgin/gtkimhtmltoolbar.c:846 ../pidgin/gtkimhtmltoolbar.c:1219 +#: ../pidgin/gtkimhtmltoolbar.c:846 +#: ../pidgin/gtkimhtmltoolbar.c:1220 #, fuzzy msgid "_Font" msgstr "Konto:" @@ -16059,15 +15661,18 @@ msgid "Ungroup Items" msgstr "" -#: ../pidgin/gtkimhtmltoolbar.c:1088 ../pidgin/plugins/convcolors.c:287 +#: ../pidgin/gtkimhtmltoolbar.c:1088 +#: ../pidgin/plugins/convcolors.c:287 msgid "Bold" msgstr "Fet" -#: ../pidgin/gtkimhtmltoolbar.c:1089 ../pidgin/plugins/convcolors.c:294 +#: ../pidgin/gtkimhtmltoolbar.c:1089 +#: ../pidgin/plugins/convcolors.c:294 msgid "Italic" msgstr "Kursiv" -#: ../pidgin/gtkimhtmltoolbar.c:1090 ../pidgin/plugins/convcolors.c:301 +#: ../pidgin/gtkimhtmltoolbar.c:1090 +#: ../pidgin/plugins/convcolors.c:301 msgid "Underline" msgstr "Understrek" @@ -16076,9 +15681,8 @@ msgstr "" #: ../pidgin/gtkimhtmltoolbar.c:1093 -#, fuzzy msgid "Increase Font Size" -msgstr "Ignorer skriftstørrelser" +msgstr "Øk skriftstørrelse" #: ../pidgin/gtkimhtmltoolbar.c:1094 msgid "Decrease Font Size" @@ -16089,12 +15693,10 @@ msgstr "Skrifttype" #: ../pidgin/gtkimhtmltoolbar.c:1097 -#, fuzzy msgid "Background Color" msgstr "Bakgrunnsfarge" #: ../pidgin/gtkimhtmltoolbar.c:1098 -#, fuzzy msgid "Foreground Color" msgstr "Forgrunnsfarge" @@ -16109,143 +15711,110 @@ msgstr "Sett inn bilde" #: ../pidgin/gtkimhtmltoolbar.c:1104 -#, fuzzy msgid "Insert Smiley" msgstr "Sett inn smilefjes" -#: ../pidgin/gtkimhtmltoolbar.c:1179 -#, fuzzy +#: ../pidgin/gtkimhtmltoolbar.c:1180 msgid "_Bold" -msgstr "_Passord:" - -#: ../pidgin/gtkimhtmltoolbar.c:1180 -#, fuzzy -msgid "_Italic" -msgstr " (irc-operatør)" +msgstr "_Uthev" #: ../pidgin/gtkimhtmltoolbar.c:1181 -#, fuzzy -msgid "_Underline" -msgstr "Understrek" +msgid "_Italic" +msgstr "_Kursiv" #: ../pidgin/gtkimhtmltoolbar.c:1182 -msgid "Strikethrough" -msgstr "" +msgid "_Underline" +msgstr "_Understrek" #: ../pidgin/gtkimhtmltoolbar.c:1183 -#, fuzzy +msgid "Strikethrough" +msgstr "" + +#: ../pidgin/gtkimhtmltoolbar.c:1184 msgid "_Larger" -msgstr "Gaim v%s" - -#: ../pidgin/gtkimhtmltoolbar.c:1185 -#, fuzzy +msgstr "_Større" + +#: ../pidgin/gtkimhtmltoolbar.c:1186 msgid "_Normal" -msgstr "Normal" - -#: ../pidgin/gtkimhtmltoolbar.c:1187 +msgstr "_Normal" + +#: ../pidgin/gtkimhtmltoolbar.c:1188 msgid "_Smaller" -msgstr "" +msgstr "_Mindre" #. 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:1191 +#: ../pidgin/gtkimhtmltoolbar.c:1192 #, fuzzy msgid "_Font face" msgstr "Skrifttype" -#: ../pidgin/gtkimhtmltoolbar.c:1192 -#, fuzzy +#: ../pidgin/gtkimhtmltoolbar.c:1193 msgid "Foreground _color" -msgstr "Forgrunnsfarge" - -#: ../pidgin/gtkimhtmltoolbar.c:1193 -#, fuzzy +msgstr "Forgrunns_farge" + +#: ../pidgin/gtkimhtmltoolbar.c:1194 msgid "Bac_kground color" -msgstr "Bakgrunnsfarge" - -#: ../pidgin/gtkimhtmltoolbar.c:1270 -#, fuzzy -msgid "_Smiley" -msgstr "Smil!" - -#: ../pidgin/gtkimhtmltoolbar.c:1276 -#, fuzzy +msgstr "Ba_kgrunnsfarge" + +#: ../pidgin/gtkimhtmltoolbar.c:1271 msgid "_Image" -msgstr "Lagre bilde" - -#: ../pidgin/gtkimhtmltoolbar.c:1282 -#, fuzzy +msgstr "_Bilde" + +#: ../pidgin/gtkimhtmltoolbar.c:1277 msgid "_Link" -msgstr "_Bli med i samtalegruppe" - -#: ../pidgin/gtkimhtmltoolbar.c:1288 +msgstr "_Lenke" + +#: ../pidgin/gtkimhtmltoolbar.c:1283 msgid "_Horizontal rule" msgstr "" +#: ../pidgin/gtkimhtmltoolbar.c:1305 +msgid "_Smile!" +msgstr "_Smil!" + #: ../pidgin/gtklog.c:293 #, c-format -msgid "" -"Are you sure you want to permanently delete the log of the conversation with " -"%s which started at %s?" +msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?" msgstr "" #: ../pidgin/gtklog.c:304 #, c-format -msgid "" -"Are you sure you want to permanently delete the log of the conversation in %" -"s which started at %s?" +msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?" msgstr "" #: ../pidgin/gtklog.c:309 #, fuzzy, c-format -msgid "" -"Are you sure you want to permanently delete the system log which started at %" -"s?" +msgid "Are you sure you want to permanently delete the system log which started at %s?" msgstr "Er du sikker på at du vil slette \"%s\"?" #: ../pidgin/gtklog.c:453 -#, fuzzy, c-format +#, c-format msgid "Conversation in %s on %s" -msgstr "" -"Du har e-post!\n" -"\n" -"%s" +msgstr "Samtale i %s på %s" #: ../pidgin/gtklog.c:456 -#, fuzzy, c-format +#, c-format msgid "Conversation with %s on %s" -msgstr "" -"Du har e-post!\n" -"\n" -"%s" +msgstr "Samtale med %s på %s" #: ../pidgin/gtklog.c:503 msgid "%B %Y" -msgstr "" +msgstr "%B %Y" #: ../pidgin/gtklog.c:550 -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 "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å." #: ../pidgin/gtklog.c:554 -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 "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å." #: ../pidgin/gtklog.c:557 #, fuzzy -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 "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å." #: ../pidgin/gtklog.c:561 msgid "No logs were found" @@ -16262,11 +15831,12 @@ msgstr "Etter loggstørrelse" #: ../pidgin/gtklog.c:709 -#, fuzzy, c-format +#, c-format msgid "Conversations in %s" -msgstr "Samtaler med %s" - -#: ../pidgin/gtklog.c:717 ../pidgin/gtklog.c:779 +msgstr "Samtaler i %s" + +#: ../pidgin/gtklog.c:717 +#: ../pidgin/gtklog.c:779 #, c-format msgid "Conversations with %s" msgstr "Samtaler med %s" @@ -16276,9 +15846,9 @@ msgstr "Systemlogg" #: ../pidgin/gtkmain.c:386 -#, fuzzy, c-format +#, c-format msgid "%s %s. Try `%s -h' for more information.\n" -msgstr "Gaim %s. Prøv '%s -h' for mer informasjon.\n" +msgstr "%s %s. Prøv '%s -h' for mer informasjon.\n" #: ../pidgin/gtkmain.c:388 #, c-format @@ -16293,13 +15863,14 @@ " -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" " -v, --version display the current version and exit\n" msgstr "" -#: ../pidgin/gtkmain.c:512 -#, c-format -msgid "" -"%s has segfaulted and attempted to dump a core file.\n" +#: ../pidgin/gtkmain.c:516 +#, 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" @@ -16320,59 +15891,54 @@ #. Translators may want to transliterate the name. #. It is not to be translated. -#: ../pidgin/gtkmain.c:699 ../pidgin/pidgin.h:51 -#, fuzzy +#: ../pidgin/gtkmain.c:706 +#: ../pidgin/pidgin.h:51 msgid "Pidgin" -msgstr "Paging" +msgstr "Pidgin" #: ../pidgin/gtknotify.c:349 -#, fuzzy msgid "Open All Messages" -msgstr "Send beskjed" +msgstr "Åpne alle beskjeder" #: ../pidgin/gtknotify.c:402 -#, fuzzy msgid "You have mail!" -msgstr "" -"Du har e-post!\n" -"\n" -"%s" - -#: ../pidgin/gtknotify.c:540 +msgstr "Du har fått e-post!" + +#: ../pidgin/gtknotify.c:537 #, c-format msgid "%s has %d new message." msgid_plural "%s has %d new messages." msgstr[0] "%s har %d ny beskjed." msgstr[1] "%s har %d nye beskjeder." -#: ../pidgin/gtknotify.c:564 -#, c-format -msgid "You have %d new e-mail." -msgid_plural "You have %d new e-mails." -msgstr[0] "" -msgstr[1] "" +#: ../pidgin/gtknotify.c:562 +#, c-format +msgid "%d new e-mail." +msgid_plural "%d new e-mails." +msgstr[0] "%d ny e-post." +msgstr[1] "%d nye e-poster." #: ../pidgin/gtknotify.c:989 #, fuzzy, c-format msgid "The browser command \"%s\" is invalid." msgstr "Nettleserkommandoen %s er ugyldig." -#: ../pidgin/gtknotify.c:991 ../pidgin/gtknotify.c:1003 -#: ../pidgin/gtknotify.c:1016 ../pidgin/gtknotify.c:1144 +#: ../pidgin/gtknotify.c:991 +#: ../pidgin/gtknotify.c:1003 +#: ../pidgin/gtknotify.c:1016 +#: ../pidgin/gtknotify.c:1144 msgid "Unable to open URL" msgstr "Kunne ikke åpne URL" -#: ../pidgin/gtknotify.c:1001 ../pidgin/gtknotify.c:1014 +#: ../pidgin/gtknotify.c:1001 +#: ../pidgin/gtknotify.c:1014 #, fuzzy, c-format msgid "Error launching \"%s\": %s" msgstr "Feil under starting av kommando: %s:%s" #: ../pidgin/gtknotify.c:1145 -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." #: ../pidgin/gtkplugin.c:265 msgid "The following plugins will be unloaded." @@ -16388,17 +15954,15 @@ msgstr "Tillegg" #: ../pidgin/gtkplugin.c:400 -#, fuzzy, c-format +#, c-format msgid "" "%s%sWritten by:\t%s\n" "Website:\t\t%s\n" "Filename:\t\t%s" msgstr "" -"%s %s\n" -"\n" -"Skrevet av:\t%s\n" -"Webside:\t\t%s\n" -"Filnavn:\t%s" +"%s%sSkrevet av:\t%s\n" +"Hjemmeside:\t\t%s\n" +"Filnavn:\t\t%s" #: ../pidgin/gtkplugin.c:410 #, c-format @@ -16423,62 +15987,52 @@ #. Create the "Pounce on Whom" frame. #: ../pidgin/gtkpounce.c:532 -#, fuzzy msgid "Pounce on Whom" -msgstr "Varsling for" +msgstr "Varsling for hvem" #: ../pidgin/gtkpounce.c:559 msgid "_Buddy name:" -msgstr "Kontaktnavn:" +msgstr "_Kontaktnavn:" #: ../pidgin/gtkpounce.c:593 -#, fuzzy msgid "Si_gns on" -msgstr "Pålo_gging" +msgstr "Lo_gger på" #: ../pidgin/gtkpounce.c:595 -#, fuzzy msgid "Signs o_ff" -msgstr "Logg _av" +msgstr "Logger _av" #: ../pidgin/gtkpounce.c:597 -#, fuzzy msgid "Goes a_way" -msgstr "Kontakt forsvinner" +msgstr "Går _vekk" #: ../pidgin/gtkpounce.c:599 -#, fuzzy msgid "Ret_urns from away" -msgstr "_Returnere fra fravær" +msgstr "_Returnerer fra fravær" #: ../pidgin/gtkpounce.c:601 -#, fuzzy msgid "Becomes _idle" -msgstr "%s har blitt inaktiv" +msgstr "Blir _inaktiv" #: ../pidgin/gtkpounce.c:603 -#, fuzzy msgid "Is no longer i_dle" -msgstr "%s er ikke lenger inaktiv" +msgstr "Er ikke lenger i_naktiv" #: ../pidgin/gtkpounce.c:605 -#, fuzzy msgid "Starts _typing" -msgstr "Venn s_tarter å skrive" +msgstr "S_tarter å skrive" #: ../pidgin/gtkpounce.c:607 msgid "P_auses while typing" -msgstr "" +msgstr "P_auser under skriving" #: ../pidgin/gtkpounce.c:609 -#, fuzzy msgid "Stops t_yping" -msgstr "Venn slutter å skrive til deg" +msgstr "Stopper å _skrive" #: ../pidgin/gtkpounce.c:611 -#, fuzzy msgid "Sends a _message" -msgstr "Send _beskjed" +msgstr "Sender en _beskjed" #: ../pidgin/gtkpounce.c:654 #, fuzzy @@ -16496,21 +16050,19 @@ #: ../pidgin/gtkpounce.c:660 msgid "E_xecute a command" -msgstr "Kjør en kommando" +msgstr "_Kjør en kommando" #: ../pidgin/gtkpounce.c:662 msgid "P_lay a sound" -msgstr "Spill av en lyd" +msgstr "Spi_ll av en lyd" #: ../pidgin/gtkpounce.c:668 -#, fuzzy msgid "Brows_e..." msgstr "_Bla gjennom..." #: ../pidgin/gtkpounce.c:670 -#, fuzzy msgid "Br_owse..." -msgstr "_Bla gjennom..." +msgstr "Bla _gjennom..." #: ../pidgin/gtkpounce.c:671 msgid "Pre_view" @@ -16531,9 +16083,8 @@ #: ../pidgin/gtkprefs.c:386 #: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:1 -#, fuzzy msgid "Default" -msgstr "Gnome-standard" +msgstr "Forvalgt" #: ../pidgin/gtkprefs.c:517 msgid "Smiley theme failed to unpack." @@ -16541,15 +16092,11 @@ #: ../pidgin/gtkprefs.c:644 msgid "Install Theme" -msgstr "" +msgstr "Installer tema" #: ../pidgin/gtkprefs.c:697 -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." #: ../pidgin/gtkprefs.c:732 msgid "Icon" @@ -16565,28 +16112,26 @@ msgstr "System-trayikon" #: ../pidgin/gtkprefs.c:899 -#, fuzzy msgid "On unread messages" -msgstr "Send _beskjed" +msgstr "Ved uleste beskjeder" #: ../pidgin/gtkprefs.c:904 -#, fuzzy msgid "Conversation Window Hiding" msgstr "Samtalevinduer for direktemeldinger" #: ../pidgin/gtkprefs.c:905 -#, fuzzy msgid "_Hide new IM conversations:" -msgstr "Lukk samtalen" - -#: ../pidgin/gtkprefs.c:908 ../pidgin/gtkprefs.c:1944 +msgstr "_Gjem nye direktemeldingssamtaler" + +#: ../pidgin/gtkprefs.c:908 +#: ../pidgin/gtkprefs.c:1946 msgid "When away" msgstr "Når fraværende" #. All the tab options! #: ../pidgin/gtkprefs.c:916 msgid "Tabs" -msgstr "" +msgstr "Faner" #: ../pidgin/gtkprefs.c:918 msgid "Show IMs and chats in _tabbed windows" @@ -16597,9 +16142,8 @@ msgstr "Vis _lukkeknapp på faner" #: ../pidgin/gtkprefs.c:935 -#, fuzzy msgid "_Placement:" -msgstr "ExtPlacement" +msgstr "_Plassering" #: ../pidgin/gtkprefs.c:937 msgid "Top" @@ -16626,196 +16170,185 @@ msgstr "" #: ../pidgin/gtkprefs.c:950 -#, fuzzy msgid "N_ew conversations:" -msgstr "Lukk samtalen" +msgstr "Ny_e samtaler:" #: ../pidgin/gtkprefs.c:995 -#, fuzzy msgid "Show _formatting on incoming messages" -msgstr "Vis formateringsverktøylinje" - -#: ../pidgin/gtkprefs.c:998 -#, fuzzy -msgid "Show _detailed information" -msgstr "Profilinformasjon" +msgstr "Vis _formateringsverktøy på innkommende beskjeder" + +#: ../pidgin/gtkprefs.c:997 +msgid "Close IMs immediately when the tab is closed" +msgstr "" #: ../pidgin/gtkprefs.c:1000 +msgid "Show _detailed information" +msgstr "Vis _detaljert informasjon" + +#: ../pidgin/gtkprefs.c:1002 msgid "Enable buddy ic_on animation" msgstr "Slå på _animasjoner i kontaktikoner" -#: ../pidgin/gtkprefs.c:1007 +#: ../pidgin/gtkprefs.c:1009 msgid "_Notify buddies that you are typing to them" -msgstr "Varsle kontakter når skriver til dem" - -#: ../pidgin/gtkprefs.c:1010 -#, fuzzy +msgstr "_Varsle kontakter når skriver til dem" + +#: ../pidgin/gtkprefs.c:1012 msgid "Highlight _misspelled words" -msgstr "Marker stavefeil" - -#: ../pidgin/gtkprefs.c:1014 +msgstr "Marker _feilstavede ord" + +#: ../pidgin/gtkprefs.c:1016 msgid "Use smooth-scrolling" msgstr "" -#: ../pidgin/gtkprefs.c:1017 -#, fuzzy -msgid "F_lash window when IMs are received" -msgstr "_Blink vinduet når nye beskjeder mottas" - #: ../pidgin/gtkprefs.c:1019 -#, fuzzy +msgid "F_lash window when IMs are received" +msgstr "B_link vinduet når nye direktemeldinger mottas" + +#: ../pidgin/gtkprefs.c:1021 msgid "Minimi_ze new conversation windows" -msgstr "Samtalevinduer for direktemeldinger" - -#: ../pidgin/gtkprefs.c:1023 -#, fuzzy +msgstr "Mini_mer nye samtalevinduer" + +#: ../pidgin/gtkprefs.c:1025 msgid "Font" msgstr "Skrifttype" -#: ../pidgin/gtkprefs.c:1025 +#: ../pidgin/gtkprefs.c:1027 msgid "Use document font from _theme" msgstr "" -#: ../pidgin/gtkprefs.c:1027 -msgid "Use font from _theme" -msgstr "" - #: ../pidgin/gtkprefs.c:1029 +msgid "Use font from _theme" +msgstr "" + +#: ../pidgin/gtkprefs.c:1031 #, fuzzy msgid "Conversation _font:" msgstr "Samtaler" -#: ../pidgin/gtkprefs.c:1043 +#: ../pidgin/gtkprefs.c:1045 msgid "Default Formatting" msgstr "Standardformatering" -#: ../pidgin/gtkprefs.c:1062 -#, fuzzy -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 :)" - -#: ../pidgin/gtkprefs.c:1128 -#, fuzzy +#: ../pidgin/gtkprefs.c:1064 +#, fuzzy +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 :)" + +#: ../pidgin/gtkprefs.c:1130 msgid "ST_UN server:" -msgstr "_Tjener:" - -#: ../pidgin/gtkprefs.c:1140 +msgstr "ST_UN-tjener:" + +#: ../pidgin/gtkprefs.c:1142 msgid "Example: stunserver.org" -msgstr "" - -#: ../pidgin/gtkprefs.c:1144 -#, fuzzy +msgstr "Eksempel: stunserver.org" + +#: ../pidgin/gtkprefs.c:1146 msgid "_Autodetect IP address" msgstr "Finn IP-adresse _automatisk" -#: ../pidgin/gtkprefs.c:1153 +#: ../pidgin/gtkprefs.c:1155 msgid "Public _IP:" -msgstr "Offentlig _IP (ved NAT):" - -#: ../pidgin/gtkprefs.c:1182 +msgstr "Offentlig _IP:" + +#: ../pidgin/gtkprefs.c:1184 msgid "Ports" msgstr "Porter" -#: ../pidgin/gtkprefs.c:1185 +#: ../pidgin/gtkprefs.c:1187 msgid "_Manually specify range of ports to listen on" msgstr "_Manuellt spesifiser et intervall av porter å lytte på" -#: ../pidgin/gtkprefs.c:1188 -#, fuzzy +#: ../pidgin/gtkprefs.c:1190 msgid "_Start port:" msgstr "_Startport:" -#: ../pidgin/gtkprefs.c:1195 -#, fuzzy +#: ../pidgin/gtkprefs.c:1197 msgid "_End port:" msgstr "_Sluttport:" -#: ../pidgin/gtkprefs.c:1203 +#: ../pidgin/gtkprefs.c:1205 msgid "Proxy Server" msgstr "Proxytjener" -#: ../pidgin/gtkprefs.c:1207 +#: ../pidgin/gtkprefs.c:1209 msgid "No proxy" msgstr "Ingen proxy" -#: ../pidgin/gtkprefs.c:1263 +#: ../pidgin/gtkprefs.c:1265 msgid "_User:" msgstr "_Bruker:" -#: ../pidgin/gtkprefs.c:1328 +#: ../pidgin/gtkprefs.c:1330 msgid "Seamonkey" -msgstr "" - -#: ../pidgin/gtkprefs.c:1329 +msgstr "Seamonkey" + +#: ../pidgin/gtkprefs.c:1331 msgid "Opera" msgstr "Opera" -#: ../pidgin/gtkprefs.c:1330 +#: ../pidgin/gtkprefs.c:1332 msgid "Netscape" msgstr "Netscape" -#: ../pidgin/gtkprefs.c:1331 +#: ../pidgin/gtkprefs.c:1333 msgid "Mozilla" msgstr "Mozilla" -#: ../pidgin/gtkprefs.c:1332 +#: ../pidgin/gtkprefs.c:1334 msgid "Konqueror" msgstr "Konqueror" -#: ../pidgin/gtkprefs.c:1333 +#: ../pidgin/gtkprefs.c:1335 #, fuzzy msgid "GNOME Default" msgstr "Gnome-standard" -#: ../pidgin/gtkprefs.c:1334 +#: ../pidgin/gtkprefs.c:1336 msgid "Galeon" msgstr "Galeon" -#: ../pidgin/gtkprefs.c:1335 +#: ../pidgin/gtkprefs.c:1337 msgid "Firefox" msgstr "Firefox" -#: ../pidgin/gtkprefs.c:1336 +#: ../pidgin/gtkprefs.c:1338 msgid "Firebird" msgstr "Firebird" -#: ../pidgin/gtkprefs.c:1337 +#: ../pidgin/gtkprefs.c:1339 msgid "Epiphany" msgstr "Epiphany" -#: ../pidgin/gtkprefs.c:1346 +#: ../pidgin/gtkprefs.c:1348 msgid "Manual" msgstr "Egendefinert" -#: ../pidgin/gtkprefs.c:1399 +#: ../pidgin/gtkprefs.c:1401 msgid "Browser Selection" msgstr "Valg av nettleser" -#: ../pidgin/gtkprefs.c:1403 +#: ../pidgin/gtkprefs.c:1405 msgid "_Browser:" msgstr "_Nettleser:" -#: ../pidgin/gtkprefs.c:1411 +#: ../pidgin/gtkprefs.c:1413 msgid "_Open link in:" msgstr "_Åpne lenke i:" -#: ../pidgin/gtkprefs.c:1413 +#: ../pidgin/gtkprefs.c:1415 msgid "Browser default" msgstr "Standard for nettleser" -#: ../pidgin/gtkprefs.c:1414 +#: ../pidgin/gtkprefs.c:1416 msgid "Existing window" msgstr "Eksisterende vindu" -#: ../pidgin/gtkprefs.c:1416 +#: ../pidgin/gtkprefs.c:1418 msgid "New tab" -msgstr "Ny tab" - -#: ../pidgin/gtkprefs.c:1430 +msgstr "Ny fane" + +#: ../pidgin/gtkprefs.c:1432 #, c-format msgid "" "_Manual:\n" @@ -16824,72 +16357,64 @@ "_Egendefinert:\n" "(%s for URL)" -#: ../pidgin/gtkprefs.c:1470 -#, fuzzy +#: ../pidgin/gtkprefs.c:1472 msgid "Log _format:" msgstr "Logg_format:" -#: ../pidgin/gtkprefs.c:1475 -#, fuzzy -msgid "Log all _instant messages" -msgstr "Logg alle direktemeldinger" - #: ../pidgin/gtkprefs.c:1477 -msgid "Log all c_hats" -msgstr "Logg alle samtaler" +msgid "Log all _instant messages" +msgstr "Logg alle d_irektemeldinger" #: ../pidgin/gtkprefs.c:1479 +msgid "Log all c_hats" +msgstr "Logg alle s_amtaler" + +#: ../pidgin/gtkprefs.c:1481 msgid "Log all _status changes to system log" -msgstr "Logg alle status endinger til systemlogg" - -#: ../pidgin/gtkprefs.c:1625 +msgstr "Logg alle _status endinger til systemlogg" + +#: ../pidgin/gtkprefs.c:1627 msgid "Sound Selection" msgstr "Lydvalg" -#: ../pidgin/gtkprefs.c:1635 -#, fuzzy, c-format -msgid "Quietest" -msgstr "Avslutt" - #: ../pidgin/gtkprefs.c:1637 -#, fuzzy, c-format -msgid "Quieter" -msgstr "Avslutt" +msgid "Quietest" +msgstr "Stillest" #: ../pidgin/gtkprefs.c:1639 -#, fuzzy, c-format +msgid "Quieter" +msgstr "Stillere" + +#: ../pidgin/gtkprefs.c:1641 msgid "Quiet" -msgstr "Avslutt" - -#: ../pidgin/gtkprefs.c:1643 -#, fuzzy, c-format -msgid "Loud" -msgstr "Last" +msgstr "Stille" #: ../pidgin/gtkprefs.c:1645 -#, fuzzy, c-format -msgid "Louder" -msgstr "time" +msgid "Loud" +msgstr "Høy" #: ../pidgin/gtkprefs.c:1647 -#, fuzzy, c-format +msgid "Louder" +msgstr "Høyere" + +#: ../pidgin/gtkprefs.c:1649 msgid "Loudest" -msgstr "Lyder" - -#: ../pidgin/gtkprefs.c:1713 +msgstr "Høyest" + +#: ../pidgin/gtkprefs.c:1715 msgid "_Method:" msgstr "_Metode:" -#: ../pidgin/gtkprefs.c:1715 +#: ../pidgin/gtkprefs.c:1717 msgid "Console beep" msgstr "Konsollpip" -#: ../pidgin/gtkprefs.c:1722 +#: ../pidgin/gtkprefs.c:1724 #, fuzzy msgid "No sounds" msgstr "Lyder" -#: ../pidgin/gtkprefs.c:1730 +#: ../pidgin/gtkprefs.c:1732 #, c-format msgid "" "Sound c_ommand:\n" @@ -16898,91 +16423,85 @@ "_Program for lydavspilling\n" "(%s for filnavn)" -# -#: ../pidgin/gtkprefs.c:1757 +#: ../pidgin/gtkprefs.c:1759 msgid "Sounds when conversation has _focus" msgstr "Lyder når samtalevinduet har _fokus" -#: ../pidgin/gtkprefs.c:1759 -#, fuzzy +#: ../pidgin/gtkprefs.c:1761 msgid "Enable sounds:" -msgstr "Feilet." - -#: ../pidgin/gtkprefs.c:1770 +msgstr "Aktiver lyder:" + +#: ../pidgin/gtkprefs.c:1772 msgid "Volume:" -msgstr "" - -#: ../pidgin/gtkprefs.c:1850 +msgstr "Volum:" + +#: ../pidgin/gtkprefs.c:1852 msgid "Play" msgstr "Spill av" -#: ../pidgin/gtkprefs.c:1927 +#: ../pidgin/gtkprefs.c:1929 #, fuzzy msgid "_Report idle time:" msgstr "Vis inaktiv tid" -#: ../pidgin/gtkprefs.c:1932 +#: ../pidgin/gtkprefs.c:1934 msgid "Based on keyboard or mouse use" msgstr "" -#: ../pidgin/gtkprefs.c:1941 +#: ../pidgin/gtkprefs.c:1943 msgid "_Auto-reply:" msgstr "_Automatisk svar" -#: ../pidgin/gtkprefs.c:1945 -#, fuzzy +#: ../pidgin/gtkprefs.c:1947 msgid "When both away and idle" -msgstr "Når fraværende og inaktiv" +msgstr "Når både fraværende og inaktiv" #. Auto-away stuff -#: ../pidgin/gtkprefs.c:1951 +#: ../pidgin/gtkprefs.c:1953 msgid "Auto-away" msgstr "Automatisk fraværsmarkering" -#: ../pidgin/gtkprefs.c:1953 -#, fuzzy +#: ../pidgin/gtkprefs.c:1955 msgid "Change status when _idle" -msgstr "Sett som borte når inaktiv" - -#: ../pidgin/gtkprefs.c:1957 +msgstr "Endre status hvis _inaktiv" + +#: ../pidgin/gtkprefs.c:1959 #, fuzzy msgid "_Minutes before becoming idle:" msgstr "Antall minutter før fraværsmarkert:" -#: ../pidgin/gtkprefs.c:1965 -#, fuzzy +#: ../pidgin/gtkprefs.c:1967 msgid "Change _status to:" -msgstr "Endre adresse til:" +msgstr "Endre _status til:" #. Signon status stuff -#: ../pidgin/gtkprefs.c:1986 +#: ../pidgin/gtkprefs.c:1988 msgid "Status at Startup" -msgstr "" - -#: ../pidgin/gtkprefs.c:1988 +msgstr "Status ved oppstart" + +#: ../pidgin/gtkprefs.c:1990 msgid "Use status from last _exit at startup" msgstr "" -#: ../pidgin/gtkprefs.c:1994 +#: ../pidgin/gtkprefs.c:1996 msgid "Status to a_pply at startup:" msgstr "" -#: ../pidgin/gtkprefs.c:2032 +#: ../pidgin/gtkprefs.c:2034 msgid "Interface" msgstr "Grensesnitt" -#: ../pidgin/gtkprefs.c:2034 +#: ../pidgin/gtkprefs.c:2036 msgid "Smiley Themes" msgstr "Smilefjes-tema" -#: ../pidgin/gtkprefs.c:2041 +#: ../pidgin/gtkprefs.c:2043 msgid "Browser" msgstr "Nettleser" -#: ../pidgin/gtkprefs.c:2045 -#, fuzzy +#: ../pidgin/gtkprefs.c:2047 msgid "Status / Idle" -msgstr "Borte / inaktiv" +msgstr "Status / inaktiv" #: ../pidgin/gtkprivacy.c:80 msgid "Allow all users to contact me" @@ -17017,7 +16536,8 @@ msgid "Set privacy for:" msgstr "Sett sikkerhet for:" -#: ../pidgin/gtkprivacy.c:557 ../pidgin/gtkprivacy.c:574 +#: ../pidgin/gtkprivacy.c:557 +#: ../pidgin/gtkprivacy.c:574 msgid "Permit User" msgstr "Tillat bruker" @@ -17027,13 +16547,12 @@ #: ../pidgin/gtkprivacy.c:559 msgid "Please enter the name of the user you wish to be able to contact you." -msgstr "" -"Vennligst skriv inn navnet på brukeren som du vil skal kunne kontakte deg." - -#: ../pidgin/gtkprivacy.c:562 ../pidgin/gtkprivacy.c:578 -#, fuzzy +msgstr "Vennligst skriv inn navnet på brukeren som du vil skal kunne kontakte deg." + +#: ../pidgin/gtkprivacy.c:562 +#: ../pidgin/gtkprivacy.c:578 msgid "_Permit" -msgstr "Tillat" +msgstr "_Tillat" #: ../pidgin/gtkprivacy.c:568 #, c-format @@ -17045,7 +16564,8 @@ msgid "Are you sure you wish to allow %s to contact you?" msgstr "Er du sikker på at du vil at %s skal kunne kontakte deg?" -#: ../pidgin/gtkprivacy.c:599 ../pidgin/gtkprivacy.c:613 +#: ../pidgin/gtkprivacy.c:599 +#: ../pidgin/gtkprivacy.c:613 msgid "Block User" msgstr "Blokker bruker" @@ -17081,16 +16601,16 @@ #: ../pidgin/gtkrequest.c:1511 msgid "Overwrite" -msgstr "" +msgstr "Overskriv" #: ../pidgin/gtkrequest.c:1512 msgid "Choose New Name" msgstr "" -#: ../pidgin/gtkrequest.c:1650 ../pidgin/gtkrequest.c:1664 -#, fuzzy +#: ../pidgin/gtkrequest.c:1650 +#: ../pidgin/gtkrequest.c:1664 msgid "Select Folder..." -msgstr "Velg tekstfarge" +msgstr "Velg mappe..." #. Create the window. #: ../pidgin/gtkroomlist.c:375 @@ -17104,9 +16624,8 @@ #. add button #: ../pidgin/gtkroomlist.c:451 -#, fuzzy msgid "_Add Chat" -msgstr "Legg til samtale" +msgstr "_Legg til samtale" #: ../pidgin/gtksavedstatuses.c:337 #, fuzzy @@ -17114,29 +16633,27 @@ msgstr "Er du sikker på at du vil slette %s?" #. Use button -#: ../pidgin/gtksavedstatuses.c:620 ../pidgin/gtksavedstatuses.c:1266 -#, fuzzy +#: ../pidgin/gtksavedstatuses.c:620 +#: ../pidgin/gtksavedstatuses.c:1266 msgid "_Use" -msgstr "Bruk" +msgstr "_Bruk" #: ../pidgin/gtksavedstatuses.c:780 msgid "Title already in use. You must choose a unique title." msgstr "Tittel allerede i bruk. Du må velge en unik tittel." #: ../pidgin/gtksavedstatuses.c:970 -#, fuzzy msgid "Different" -msgstr "Avdeling" +msgstr "Forskjellig" #: ../pidgin/gtksavedstatuses.c:1159 -#, fuzzy msgid "_Title:" -msgstr "Tittel" - -#: ../pidgin/gtksavedstatuses.c:1178 ../pidgin/gtksavedstatuses.c:1497 -#, fuzzy +msgstr "_Tittel" + +#: ../pidgin/gtksavedstatuses.c:1178 +#: ../pidgin/gtksavedstatuses.c:1497 msgid "_Status:" -msgstr "Status:" +msgstr "_Status:" #. Different status message expander #: ../pidgin/gtksavedstatuses.c:1210 @@ -17149,9 +16666,9 @@ msgstr "Lagre & bruk" #: ../pidgin/gtksavedstatuses.c:1480 -#, fuzzy, c-format +#, c-format msgid "Status for %s" -msgstr "Status: %s" +msgstr "Status for %s" #: ../pidgin/gtkstatusbox.c:664 #, fuzzy @@ -17160,55 +16677,54 @@ #: ../pidgin/gtkutils.c:632 msgid "Google Talk" -msgstr "" - -#: ../pidgin/gtkutils.c:1399 ../pidgin/gtkutils.c:1422 +msgstr "Google Talk" + +#: ../pidgin/gtkutils.c:1399 +#: ../pidgin/gtkutils.c:1422 #, fuzzy, c-format msgid "The following error has occurred loading %s: %s" msgstr "En ukjent påloggingsfeil har inntruffet: %s." -#: ../pidgin/gtkutils.c:1402 ../pidgin/gtkutils.c:1424 +#: ../pidgin/gtkutils.c:1402 +#: ../pidgin/gtkutils.c:1424 #, fuzzy msgid "Failed to load image" msgstr "Klarte ikke å lagre bilde: %s\n" #: ../pidgin/gtkutils.c:1498 -#, fuzzy, c-format +#, c-format msgid "Cannot send folder %s." -msgstr "Kan ikke sende fil" +msgstr "Kan ikke sende mappe %s" #: ../pidgin/gtkutils.c:1499 #, fuzzy, 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 "Gaim kan ikke overføre en mappe. Du må sende filene inni hver for seg" -#: ../pidgin/gtkutils.c:1531 ../pidgin/gtkutils.c:1543 +#: ../pidgin/gtkutils.c:1531 +#: ../pidgin/gtkutils.c:1543 #: ../pidgin/gtkutils.c:1550 #, fuzzy msgid "You have dragged an image" msgstr "Du har tastet inn et ugyldig brukernavn" #: ../pidgin/gtkutils.c:1532 -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 kompis ikon for denne brukeren." - -#: ../pidgin/gtkutils.c:1538 ../pidgin/gtkutils.c:1558 +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 kompis ikon for denne brukeren." + +#: ../pidgin/gtkutils.c:1538 +#: ../pidgin/gtkutils.c:1558 #, fuzzy msgid "Set as buddy icon" msgstr "Vis kontaktikoner" -#: ../pidgin/gtkutils.c:1539 ../pidgin/gtkutils.c:1559 -#, fuzzy +#: ../pidgin/gtkutils.c:1539 +#: ../pidgin/gtkutils.c:1559 msgid "Send image file" -msgstr "Send beskjed" - -#: ../pidgin/gtkutils.c:1540 ../pidgin/gtkutils.c:1559 +msgstr "Send bildefil" + +#: ../pidgin/gtkutils.c:1540 +#: ../pidgin/gtkutils.c:1559 #, fuzzy msgid "Insert in message" msgstr "Sett inn bilde" @@ -17220,20 +16736,12 @@ #: ../pidgin/gtkutils.c:1551 #, fuzzy -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 kompis ikon 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 kompis ikon for denne brukeren." #: ../pidgin/gtkutils.c:1552 -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 kompis ikon 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 kompis ikon 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 @@ -17246,9 +16754,7 @@ msgstr "Kan ikke sende fil" #: ../pidgin/gtkutils.c:1610 -msgid "" -"You dragged a desktop launcher. Most likely you wanted to send whatever this " -"launcher points to instead of this launcher itself." +msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself." msgstr "" #: ../pidgin/gtkutils.c:2345 @@ -17284,33 +16790,29 @@ #: ../pidgin/gtkutils.c:2793 #, c-format -msgid "" -"Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "" - -#: ../pidgin/gtkwhiteboard.c:754 ../pidgin/gtkwhiteboard.c:773 -#, fuzzy +msgid "Failed to load image '%s': reason not known, probably a corrupt image file" +msgstr "" + +#: ../pidgin/gtkwhiteboard.c:754 +#: ../pidgin/gtkwhiteboard.c:773 msgid "Save File" -msgstr "Lagre fil..." +msgstr "Lagre fil" #: ../pidgin/gtkwhiteboard.c:861 -#, fuzzy msgid "Select color" -msgstr "Velg tekstfarge" +msgstr "Velg farge" #: ../pidgin/pidginstock.c:87 msgid "_Alias" msgstr "_Alias" #: ../pidgin/pidginstock.c:89 -#, fuzzy msgid "Close _tabs" -msgstr "L_ukk" +msgstr "Lukk _faner" #: ../pidgin/pidginstock.c:91 -#, fuzzy msgid "_Get Info" -msgstr "Hent informasjon" +msgstr "_Hent informasjon" #: ../pidgin/pidginstock.c:92 msgid "_Invite" @@ -17337,16 +16839,16 @@ msgstr "" #: ../pidgin/pixmaps/emotes/none/none.theme.in.h:3 -#, fuzzy msgid "none" -msgstr "Alle" +msgstr "ingen" #: ../pidgin/plugins/cap/cap.c:450 #, fuzzy msgid "Display Statistics" msgstr "Vis advarsler om tidsavbrudd" -#: ../pidgin/plugins/cap/cap.c:462 ../pidgin/plugins/cap/cap.c:465 +#: ../pidgin/plugins/cap/cap.c:462 +#: ../pidgin/plugins/cap/cap.c:465 #, fuzzy msgid "Response Probability:" msgstr "Svaret gikk tapt" @@ -17361,9 +16863,10 @@ msgid "Maximum response timeout:" msgstr "" -#: ../pidgin/plugins/cap/cap.c:817 ../pidgin/plugins/cap/cap.c:824 -#: ../pidgin/plugins/cap/cap.c:831 ../pidgin/plugins/timestamp.c:150 -#, fuzzy +#: ../pidgin/plugins/cap/cap.c:817 +#: ../pidgin/plugins/cap/cap.c:824 +#: ../pidgin/plugins/cap/cap.c:831 +#: ../pidgin/plugins/timestamp.c:150 msgid "minutes" msgstr "minutter" @@ -17395,20 +16898,16 @@ #. * summary #: ../pidgin/plugins/cap/cap.c:939 -msgid "" -"The contact availability plugin (cap) is used to display statistical " -"information about buddies in a users contact list." +msgid "The contact availability plugin (cap) is used to display statistical information about buddies in a users contact list." msgstr "" #: ../pidgin/plugins/contact_priority.c:61 -#, fuzzy msgid "Buddy is idle" -msgstr "Kontakt er inaktiv:" +msgstr "Kontakt er inaktiv" #: ../pidgin/plugins/contact_priority.c:62 -#, fuzzy msgid "Buddy is away" -msgstr "Kontakt er borte:" +msgstr "Kontakt er borte" #: ../pidgin/plugins/contact_priority.c:63 #, fuzzy @@ -17417,23 +16916,19 @@ #. Not used yet. #: ../pidgin/plugins/contact_priority.c:66 -#, fuzzy msgid "Buddy is mobile" -msgstr "Kontakt er inaktiv:" +msgstr "Kontakt er mobil" #: ../pidgin/plugins/contact_priority.c:68 -#, fuzzy msgid "Buddy is offline" -msgstr "Kontakt er avlogget:" +msgstr "Kontakt er avlogget" #: ../pidgin/plugins/contact_priority.c:90 msgid "Point values to use when..." msgstr "Verdier for bruk når..." #: ../pidgin/plugins/contact_priority.c:118 -msgid "" -"The buddy with the largest score is the buddy who will have priority " -"in the contact.\n" +msgid "The buddy with the largest score is the buddy who will have priority in the contact.\n" msgstr "" #: ../pidgin/plugins/contact_priority.c:125 @@ -17459,26 +16954,21 @@ #. *< version #. *< summary #: ../pidgin/plugins/contact_priority.c:190 -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 #: ../pidgin/plugins/contact_priority.c:192 -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." #: ../pidgin/plugins/convcolors.c:23 #, fuzzy msgid "Conversation Colors" msgstr "/Samtale/L_ukk" -#: ../pidgin/plugins/convcolors.c:25 ../pidgin/plugins/convcolors.c:26 +#: ../pidgin/plugins/convcolors.c:25 +#: ../pidgin/plugins/convcolors.c:26 #, fuzzy msgid "Customize colors in the conversation window" msgstr "Samtalevinduer for direktemeldinger" @@ -17499,19 +16989,18 @@ msgstr "Send beskjed" #: ../pidgin/plugins/convcolors.c:85 -#, fuzzy msgid "Sent Messages" -msgstr "Send beskjed" +msgstr "Sendte beskjeder" #: ../pidgin/plugins/convcolors.c:86 -#, fuzzy msgid "Received Messages" -msgstr "Send beskjed" - -#: ../pidgin/plugins/convcolors.c:210 ../pidgin/plugins/pidginrc.c:251 -#, fuzzy, c-format +msgstr "Mottatte beskjeder" + +#: ../pidgin/plugins/convcolors.c:210 +#: ../pidgin/plugins/pidginrc.c:245 +#, c-format msgid "Select Color for %s" -msgstr "Velg tekstfarge" +msgstr "Velg farge for %s" #: ../pidgin/plugins/convcolors.c:310 #, fuzzy @@ -17537,9 +17026,7 @@ #. 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\"." +msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"." msgstr "" #: ../pidgin/plugins/extplacement.c:111 @@ -17548,9 +17035,7 @@ #: ../pidgin/plugins/extplacement.c:117 msgid "Separate IM and Chat windows when placing by number" -msgstr "" -"Separere direktemeldings- og chattevinduer når programet plasserer etter " -"nummer" +msgstr "Separere direktemeldings- og chattevinduer når programet plasserer etter nummer" #. *< type #. *< ui_requirement @@ -17571,12 +17056,8 @@ #. *< summary #. * description #: ../pidgin/plugins/extplacement.c:150 -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 direktemeldinger og chat" #. Configuration frame #: ../pidgin/plugins/gestures/gestures.c:235 @@ -17638,9 +17119,7 @@ #. Add the label. #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:457 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" #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:551 #: ../pidgin/plugins/gevolution/new_person_dialog.c:301 @@ -17661,18 +17140,13 @@ #. 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." -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 #: ../pidgin/plugins/gevolution/assoc-buddy.c:431 -#, fuzzy msgid "User _details" -msgstr "Skjul brukerdetaljer" +msgstr "_Brukerdetaljer" #. "Associate Buddy" button #: ../pidgin/plugins/gevolution/assoc-buddy.c:484 @@ -17681,9 +17155,8 @@ #: ../pidgin/plugins/gevolution/gevolution.c:240 #: ../pidgin/plugins/gevolution/gevolution.c:246 -#, fuzzy msgid "Unable to send e-mail" -msgstr "Kunne ikke sende e-post" +msgstr "Klarte ikke å sende e-post" #: ../pidgin/plugins/gevolution/gevolution.c:241 msgid "The evolution executable was not found in the PATH." @@ -17698,7 +17171,6 @@ msgstr "Legg til i adresseboka" #: ../pidgin/plugins/gevolution/gevolution.c:285 -#, fuzzy msgid "Send E-Mail" msgstr "Send E-post" @@ -17729,9 +17201,8 @@ #. * description #: ../pidgin/plugins/gevolution/gevolution.c:530 #: ../pidgin/plugins/gevolution/gevolution.c:532 -#, fuzzy msgid "Provides integration with Evolution." -msgstr "Tilbyr integrasjon med Ximian Evolution" +msgstr "Tilbyr integrasjon med Evolution" #: ../pidgin/plugins/gevolution/new_person_dialog.c:262 msgid "Please enter the person's information below." @@ -17739,9 +17210,7 @@ #: ../pidgin/plugins/gevolution/new_person_dialog.c:266 msgid "Please enter the buddy's screen name and account type below." -msgstr "" -"Venligst tast inn kontaktens brukernavn og hvilken protokoll kontakten " -"finnes på under." +msgstr "Venligst tast inn kontaktens brukernavn og hvilken protokoll kontakten finnes på under." #: ../pidgin/plugins/gevolution/new_person_dialog.c:286 msgid "Account type:" @@ -17793,7 +17262,7 @@ "\n" "Inaktiv:" -#: ../pidgin/plugins/history.c:188 +#: ../pidgin/plugins/history.c:192 msgid "History" msgstr "Historikk" @@ -17811,7 +17280,8 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/iconaway.c:85 ../pidgin/plugins/iconaway.c:87 +#: ../pidgin/plugins/iconaway.c:85 +#: ../pidgin/plugins/iconaway.c:87 msgid "Iconifies the buddy list and your conversations when you go away." msgstr "Minimer kontaktlisten og samtalene når du er markert som borte." @@ -17825,15 +17295,15 @@ #: ../pidgin/plugins/mailchk.c:163 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." #: ../pidgin/plugins/markerline.c:23 #, fuzzy msgid "Markerline" msgstr "Understrek" -#: ../pidgin/plugins/markerline.c:25 ../pidgin/plugins/markerline.c:26 +#: ../pidgin/plugins/markerline.c:25 +#: ../pidgin/plugins/markerline.c:26 msgid "Draw a line to indicate new messages in a conversation." msgstr "" @@ -17841,19 +17311,19 @@ msgid "Draw Markerline in " msgstr "" -#: ../pidgin/plugins/markerline.c:250 ../pidgin/plugins/notify.c:682 +#: ../pidgin/plugins/markerline.c:250 +#: ../pidgin/plugins/notify.c:682 msgid "_IM windows" msgstr "Vinduer for direktemeldinger" # -#: ../pidgin/plugins/markerline.c:254 ../pidgin/plugins/notify.c:689 +#: ../pidgin/plugins/markerline.c:254 +#: ../pidgin/plugins/notify.c:689 msgid "C_hat windows" msgstr "_Samtalevinduer" #: ../pidgin/plugins/musicmessaging/musicmessaging.c:44 -msgid "" -"A music messaging session has been requested. Please click the MM icon to " -"accept." +msgid "A music messaging session has been requested. Please click the MM icon to accept." msgstr "" #: ../pidgin/plugins/musicmessaging/musicmessaging.c:45 @@ -17891,7 +17361,7 @@ #: ../pidgin/plugins/musicmessaging/musicmessaging.c:644 msgid "_Apply" -msgstr "Bruk" +msgstr "_Bruk" #. *< type #. *< ui_requirement @@ -17907,9 +17377,7 @@ #. * 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." +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" ---------- @@ -18004,7 +17472,8 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/notify.c:910 ../pidgin/plugins/notify.c:912 +#: ../pidgin/plugins/notify.c:910 +#: ../pidgin/plugins/notify.c:912 msgid "Provides a variety of ways of notifying you of unread messages." msgstr "Lar deg bli varslet om uleste meldinger på flere vis." @@ -18056,52 +17525,41 @@ msgid "GtkTreeView Horizontal Separation" msgstr "" -#: ../pidgin/plugins/pidginrc.c:73 +#: ../pidgin/plugins/pidginrc.c:69 #, fuzzy msgid "Conversation Entry" msgstr "Samtaler" -#: ../pidgin/plugins/pidginrc.c:74 -#, fuzzy -msgid "Conversation History" -msgstr "Samtaler Historie" - -#: ../pidgin/plugins/pidginrc.c:75 -#, fuzzy -msgid "Log Viewer" -msgstr "Log Viser" - -#: ../pidgin/plugins/pidginrc.c:76 +#: ../pidgin/plugins/pidginrc.c:70 #, fuzzy msgid "Request Dialog" msgstr "Anmodnings Dialog" -#: ../pidgin/plugins/pidginrc.c:77 +#: ../pidgin/plugins/pidginrc.c:71 #, fuzzy msgid "Notify Dialog" msgstr "Bruk varsling for" -#: ../pidgin/plugins/pidginrc.c:253 -#, fuzzy +#: ../pidgin/plugins/pidginrc.c:247 msgid "Select Color" -msgstr "Velg tekstfarge" - -#: ../pidgin/plugins/pidginrc.c:300 -#, fuzzy, c-format +msgstr "Velg farge" + +#: ../pidgin/plugins/pidginrc.c:294 +#, fuzzy msgid "Select Interface Font" msgstr "Velg skrifttype" -#: ../pidgin/plugins/pidginrc.c:303 +#: ../pidgin/plugins/pidginrc.c:297 #, fuzzy, c-format msgid "Select Font for %s" msgstr "Velg skrifttype" -#: ../pidgin/plugins/pidginrc.c:371 +#: ../pidgin/plugins/pidginrc.c:365 #, fuzzy msgid "GTK+ Interface Font" msgstr "Valg for grensesnitt" -#: ../pidgin/plugins/pidginrc.c:391 +#: ../pidgin/plugins/pidginrc.c:385 msgid "GTK+ Text Shortcut Theme" msgstr "GTK+ Tekst Tema Snarvei" @@ -18125,40 +17583,41 @@ #. widget_bool_widgets[i]); #. } #. -#: ../pidgin/plugins/pidginrc.c:428 +#: ../pidgin/plugins/pidginrc.c:422 #, fuzzy msgid "Interface colors" msgstr "Ignorer farger" -#: ../pidgin/plugins/pidginrc.c:452 +#: ../pidgin/plugins/pidginrc.c:446 msgid "Widget Sizes" msgstr "" -#: ../pidgin/plugins/pidginrc.c:473 +#: ../pidgin/plugins/pidginrc.c:467 #, fuzzy msgid "Fonts" msgstr "Kontoer" -#: ../pidgin/plugins/pidginrc.c:497 +#: ../pidgin/plugins/pidginrc.c:491 #, fuzzy msgid "Gtkrc File Tools" msgstr "Styre Gaim fra kontrollfil" -#: ../pidgin/plugins/pidginrc.c:502 +#: ../pidgin/plugins/pidginrc.c:496 #, c-format msgid "Write settings to %s%sgtkrc-2.0" msgstr "" -#: ../pidgin/plugins/pidginrc.c:511 +#: ../pidgin/plugins/pidginrc.c:505 msgid "Re-read gtkrc files" msgstr "" -#: ../pidgin/plugins/pidginrc.c:544 +#: ../pidgin/plugins/pidginrc.c:538 #, fuzzy msgid "Pidgin GTK+ Theme Control" msgstr "Gaim GTK+ Tema Kontroll" -#: ../pidgin/plugins/pidginrc.c:546 ../pidgin/plugins/pidginrc.c:547 +#: ../pidgin/plugins/pidginrc.c:540 +#: ../pidgin/plugins/pidginrc.c:541 msgid "Provides access to commonly used gtkrc settings." msgstr "Gir tilgang til vanlig brukte gtkrc innstillinger" @@ -18172,18 +17631,12 @@ #: ../pidgin/plugins/raw.c:178 #, fuzzy -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 (Jabber, MSN, " -"IRC, TOC). Trykk 'Enter' for å sende, og sjekk avlusningsvinduet." +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 (Jabber, MSN, IRC, TOC). Trykk 'Enter' for å sende, og sjekk avlusningsvinduet." #: ../pidgin/plugins/relnot.c:71 #, fuzzy, c-format -msgid "" -"You are using %s version %s. The current version is %s. You can get it " -"from %s
" +msgid "You are using %s version %s. The current version is %s. You can get it from %s
" msgstr "Du bruker Gaim versjon %s. Den nåværende versjonen er %s.
" #: ../pidgin/plugins/relnot.c:79 @@ -18193,7 +17646,8 @@ " Endringslogg: \n" "%s

" -#: ../pidgin/plugins/relnot.c:84 ../pidgin/plugins/relnot.c:85 +#: ../pidgin/plugins/relnot.c:84 +#: ../pidgin/plugins/relnot.c:85 msgid "New Version Available" msgstr "Ny versjon tilgjengelig" @@ -18216,11 +17670,8 @@ #. * description #: ../pidgin/plugins/relnot.c:148 -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." #: ../pidgin/plugins/spellchk.c:1962 msgid "Duplicate Correction" @@ -18284,7 +17735,8 @@ msgid "Text replacement" msgstr "Teksterstatter" -#: ../pidgin/plugins/spellchk.c:2372 ../pidgin/plugins/spellchk.c:2373 +#: ../pidgin/plugins/spellchk.c:2372 +#: ../pidgin/plugins/spellchk.c:2373 msgid "Replaces text in outgoing messages according to user-defined rules." msgstr "Erstatter tekst i utgående beskjeder etter regler som du bestemmer." @@ -18294,7 +17746,8 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/ticker/ticker.c:74 ../pidgin/plugins/ticker/ticker.c:354 +#: ../pidgin/plugins/ticker/ticker.c:74 +#: ../pidgin/plugins/ticker/ticker.c:354 msgid "Buddy Ticker" msgstr "Rullende kontaktliste" @@ -18302,7 +17755,8 @@ #. *< version #. * summary #. * description -#: ../pidgin/plugins/ticker/ticker.c:357 ../pidgin/plugins/ticker/ticker.c:359 +#: ../pidgin/plugins/ticker/ticker.c:357 +#: ../pidgin/plugins/ticker/ticker.c:359 msgid "A horizontal scrolling version of the buddy list." msgstr "En horisontalt rullende versjon av kontaktlisten." @@ -18340,19 +17794,16 @@ msgstr "" #: ../pidgin/plugins/timestamp_format.c:26 -#, c-format msgid "_Force 24-hour time format" msgstr "" #: ../pidgin/plugins/timestamp_format.c:33 -#, fuzzy msgid "Show dates in..." -msgstr "Vis flere valg" +msgstr "Vis datoer i..." #: ../pidgin/plugins/timestamp_format.c:38 -#, fuzzy msgid "Co_nversations:" -msgstr "Samtaler" +msgstr "Sa_mtaler:" #: ../pidgin/plugins/timestamp_format.c:40 #: ../pidgin/plugins/timestamp_format.c:49 @@ -18389,9 +17840,7 @@ #. * description #: ../pidgin/plugins/timestamp_format.c:156 -msgid "" -"This plugin allows the user to customize conversation and logging message " -"timestamp formats." +msgid "This plugin allows the user to customize conversation and logging message timestamp formats." msgstr "" #: ../pidgin/plugins/win32/transparency/win2ktrans.c:175 @@ -18460,13 +17909,11 @@ #: ../pidgin/plugins/win32/transparency/win2ktrans.c:698 #, fuzzy 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 tillegget gjør at samtalevinduene og kontaktlisten blir delvis " -"gjennomsiktige.\n" +"Dette tillegget gjør at samtalevinduene og kontaktlisten blir delvis gjennomsiktige.\n" "\n" "* Merk: du må ha Windows 2000 eller Windows XP for at denne skal virke." @@ -18480,9 +17927,9 @@ msgstr "Oppstart" #: ../pidgin/plugins/win32/winprefs/winprefs.c:312 -#, fuzzy, c-format +#, c-format msgid "_Start %s on Windows startup" -msgstr "Start Gaim når Windows starter" +msgstr "_Start %s når Windows starter" #: ../pidgin/plugins/win32/winprefs/winprefs.c:327 msgid "_Dockable Buddy List" @@ -18516,11 +17963,8 @@ #: ../pidgin/plugins/win32/winprefs/winprefs.c:374 #, fuzzy -msgid "" -"Provides options specific to Pidgin for Windows , such as buddy list docking." -msgstr "" -"Gir spesifikke innstillinger for Windows Gaim, slik som kontaktliste docking " -"og samtale blinking." +msgid "Provides options specific to Pidgin for Windows , such as buddy list docking." +msgstr "Gir spesifikke innstillinger for Windows Gaim, slik som kontaktliste docking og samtale blinking." #: ../pidgin/plugins/xmppconsole.c:667 msgid "Logged out." @@ -18532,13 +17976,13 @@ #. *< dependencies #. *< priority #. *< id -#: ../pidgin/plugins/xmppconsole.c:746 ../pidgin/plugins/xmppconsole.c:841 +#: ../pidgin/plugins/xmppconsole.c:746 +#: ../pidgin/plugins/xmppconsole.c:841 #: ../pidgin/plugins/xmppconsole.c:860 msgid "XMPP Console" msgstr "" #: ../pidgin/plugins/xmppconsole.c:753 -#, fuzzy msgid "Account: " msgstr "Konto:" @@ -18571,1666 +18015,3 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "" -#, fuzzy -#~ msgid "Offline buddies" -#~ msgstr "Dimme ned inaktive kontakter" - -#, fuzzy -#~ msgid "Sort" -#~ msgstr "Port" - -#, fuzzy -#~ msgid "By Status" -#~ msgstr "Etter status" - -#, fuzzy -#~ msgid "By Log Size" -#~ msgstr "Etter loggstørrelse" - -#, fuzzy -#~ msgid "Unable to connect to contact server" -#~ msgstr "Kan ikke koble til tjener." - -#, fuzzy -#~ msgid "Unable to retrieve MSN Address Book" -#~ msgstr "Kunne ikke hente kontaktliste" - -#, fuzzy -#~ msgid "Current media" -#~ msgstr "Pålogget på" - -#, fuzzy -#~ msgid "Windows Live Messenger Protocol Plugin" -#~ msgstr "Novel GroupWise Messenger protolltillegg" - -#, fuzzy -#~ msgid "Windows Live ID authentication Failed" -#~ msgstr "Normal autentisering feilet" - -#, fuzzy -#~ msgid "%s just sent you a Nudge!" -#~ msgstr "%s ønsker å sende deg en fil." - -#, fuzzy -#~ msgid "Unknown error (%d)" -#~ msgstr "Ukjent feil" - -#, fuzzy -#~ msgid "Unable to connect to OIM server" -#~ msgstr "Kan ikke koble til tjener." - -#, fuzzy -#~ msgid "%s (%s) changed status from %s to %s" -#~ msgstr "%s har endret kanaltema til: %s" - -#, fuzzy -#~ msgid "%s (%s) is now %s" -#~ msgstr "%s heter nå %s" - -#, fuzzy -#~ msgid "%s (%s) is no longer %s" -#~ msgstr "%s er tilbake." - -#, fuzzy -#~ msgid "_Merge" -#~ msgstr "Beskjed:" - -#, fuzzy -#~ msgid "_Send File..." -#~ msgstr "_Send fil" - -#, fuzzy -#~ msgid "Add Buddy _Pounce..." -#~ msgstr "Legg til kompisvarsling" - -#, fuzzy -#~ msgid "Hide when offline" -#~ msgstr "Ikke tillatt når avlogget" - -#, fuzzy -#~ msgid "Show when offline" -#~ msgstr "Ikke tillatt når avlogget" - -#, fuzzy -#~ msgid "Add _Buddy..." -#~ msgstr "Legg til kontakt" - -#, fuzzy -#~ msgid "Add C_hat..." -#~ msgstr "Legg til samtale" - -#, fuzzy -#~ msgid "Persistent" -#~ msgstr "Tillat" - -#, fuzzy -#~ msgid "/Accounts/Manage" -#~ msgstr "Kontoer" - -#, fuzzy -#~ msgid "A_ccount:" -#~ msgstr "Konto:" - -#, fuzzy -#~ msgid "S_end To" -#~ msgstr "Send som" - -#~ msgid "Gaim Internet Messenger" -#~ msgstr "Gaim lynmeldingsklient" - -#~ msgid "Hide Disconnect Errors" -#~ msgstr "Skjul frakoblingsfeil" - -#~ msgid "Hide Login Errors" -#~ msgstr "Skjul påloggningsfeil" - -#, fuzzy -#~ msgid "Hide Reconnecting Dialog" -#~ msgstr "Skjul frakoblingsfeil" - -#~ msgid "When you are kicked offline, this reconnects you." -#~ msgstr "" -#~ "Dette tillegget vil koble deg til på nytt dersom du mister forbindelsen." - -#~ msgid "Use last matching buddy" -#~ msgstr "Bruk samme kontakt som sist" - -#, fuzzy -#~ msgid "" -#~ "The buddy with the lowest score is the buddy who will have priority in " -#~ "the contact.\n" -#~ "The default values (offline = 4, away = 2, and idle = 1) will use what " -#~ "used to be\n" -#~ "the built-in order: active, idle, away, away + idle, offline." -#~ msgstr "" -#~ "Kompisen med den laveste verdien er den som er prioritert i kontakten.\n" -#~ "Standardverdiene (frakoblet = 4, fraværende = 2, og ingen aktivitet = 1)\n" -#~ "vil tilsvare det som var den innebygde rekkefølgen:\n" -#~ "aktiv -> ingen aktivitet -> fraværende -> fraværende og ingen aktivitet -" -#~ "> ikke pålogget." - -#~ msgid "Gaim" -#~ msgstr "Gaim" - -#~ msgid "Gaim - Signed off" -#~ msgstr "Gaim - Avlogget" - -#~ msgid "Gaim - Away" -#~ msgstr "Gaim - Borte" - -#~ msgid "Join A Chat..." -#~ msgstr "Bli med i samtalegruppe..." - -#~ msgid "Displays an icon for Gaim in the system tray." -#~ msgstr "Viser et ikon for gaim i systemtray." - -#~ msgid "" -#~ "Displays a system tray icon (in GNOME, KDE or Windows for example) to " -#~ "show the current status of Gaim, allow fast access to commonly used " -#~ "functions, and to toggle display of the buddy list or login window. Also " -#~ "allows messages to be queued until the icon is clicked, similar to ICQ." -#~ msgstr "" -#~ "Bruker et beskjedvarslings-applet (f.eks. i GNOME eller KDE) for å vise " -#~ "Gaims status, gi hurtig tilgang til ofte brukte funksjoner, og for å " -#~ "fjerne/vise kontaktlisten og påloggingsvinduet. Muliggjør også kølegging " -#~ "av beskjeder helt til ikonet klikkes, a la ICQ." - -#, fuzzy -#~ msgid "GtkTreeView Expander Size" -#~ msgstr "Utvider-størrelse" - -#~ msgid "The specified buddy was not found in the Evolution Contacts." -#~ msgstr "Kompisen ble ikke funnet i adresseboka til Evolution" - -#~ msgid "" -#~ "When a new conversation is opened this plugin will insert the last " -#~ "conversation into the current conversation.\n" -#~ "\n" -#~ "The history plugin requires logging be enabled. Logging can be enabled " -#~ "from Tools -> Preferences -> Logging. Enabling logs for instant messages " -#~ "and/or chats will activate history for the same conversation type(s)." -#~ msgstr "" -#~ "Når en ny samtale er åpnet vil dette tillegget sette inn siste samtale i " -#~ "den pågående samtalen.\n" -#~ "\n" -#~ "Historie tillegget krever at logging er slått på. Logging kan bli satt på " -#~ "gjennom Verktøy -> Innstillinger -> Logging. Å slå på logger for " -#~ "lynmeldinger og/eller prat vil aktivere historie for den samme " -#~ "samtaletypen." - -#~ msgid "" -#~ "You can get version %s from:
http://gaim.sourceforge.net." -#~ msgstr "" -#~ "Du kan finne versjon %s her:
http://gaim.sourceforge.net." - -#~ msgid "Delay" -#~ msgstr "Sett inn hvert" - -#~ msgid "WinGaim Options" -#~ msgstr "WinGaim Innstilinger" - -#~ msgid "" -#~ "%d buddy from group %s was not removed because its account was not logged " -#~ "in. This buddy and the group were not removed.\n" -#~ msgid_plural "" -#~ "%d buddies from group %s were not removed because their accounts were not " -#~ "logged in. These buddies and the group were not removed.\n" -#~ msgstr[0] "" -#~ "%d kontakt fra gruppen %s ble ikke fjernet fordi kontaktens konto ikke " -#~ "var innlogget. Denne kontakten (og gruppen) ble ikke fjernet.\n" -#~ msgstr[1] "" -#~ "%d kontakter fra gruppen %s ble ikke fjernet fordi kontoene deres ikke " -#~ "var innlogget. Disse kontaktene (og gruppen) ble ikke fjernet.\n" - -#~ msgid "Group not removed" -#~ msgstr "Gruppe ikke fjernet" - -#~ msgid "(+%d more)" -#~ msgstr "(+%d flere)" - -#~ msgid " left the room (%s)." -#~ msgstr " forlot rommet (%s)." - -#~ msgid "Screen Name:" -#~ msgstr "Skjermnavn:" - -#~ msgid "Buddy icon:" -#~ msgstr "Kontaktikon:" - -#~ msgid "" -#~ "\n" -#~ "\n" -#~ "Do you wish to add him or her to your buddy list?" -#~ msgstr "" -#~ "\n" -#~ "\n" -#~ "Ønsker du å legge vedkommende til i din kontaktliste?" - -#~ msgid "_Alias Buddy..." -#~ msgstr "_Alias for kontakt..." - -# -#, fuzzy -#~ msgid "Alias Contact..." -#~ msgstr "Kontaktalias..." - -#~ msgid "/Tools/Account Ac_tions" -#~ msgstr "/Verktøy/_Handlinger for kontoer" - -#~ msgid "/Tools/A_ccounts" -#~ msgstr "/Verktøy/K_ontoer" - -# -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Contact Alias: %s" -#~ msgstr "" -#~ "\n" -#~ "Kontaktalias:" - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Alias: %s" -#~ msgstr "" -#~ "\n" -#~ "Alias:" - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Nickname: %s" -#~ msgstr "" -#~ "\n" -#~ "Kallenavn:" - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Logged In: %s" -#~ msgstr "" -#~ "\n" -#~ "Pålogget: " - -#~ msgid "" -#~ "\n" -#~ "Status: Offline" -#~ msgstr "" -#~ "\n" -#~ "Status: Avlogget" - -#~ msgid "" -#~ "\n" -#~ "Description: Spooky" -#~ msgstr "" -#~ "\n" -#~ "Beskrivelse: Skummel" - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Status: Awesome" -#~ msgstr "" -#~ "\n" -#~ "Status: Fantastisk" - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Status: Rockin'" -#~ msgstr "" -#~ "\n" -#~ "Status: Rockin'" - -#~ msgid "/Tools/Buddy Pounce" -#~ msgstr "/Verktøy/Kompisvarsel" - -#~ msgid "/Tools/Account Actions" -#~ msgstr "/Verktøy/_Handlinger for kontoe" - -# Lot "me" stå, var usikker på om denne brukes "teknisk" -# (denne meldingen kommer opp når du skriver "debug version" -# - da byttes "me" ut med kallenavn) -#~ msgid "me is using Gaim v%s." -#~ msgstr "me bruker Gaim v%s." - -#, fuzzy -#~ msgid "/Options/Show Buddy _Icon" -#~ msgstr "Vis kontaktikoner" - -#, fuzzy -#~ msgid "/Options/Show Buddy Icon" -#~ msgstr "Vis kontaktikoner" - -#~ msgid "IM the user" -#~ msgstr "Send beskjed til bruker" - -#~ msgid "Ignore the user" -#~ msgstr "Ignorer bruker" - -#~ msgid "Get the user's information" -#~ msgstr "Hent brukerinformasjon" - -#, fuzzy -#~ msgid "Jabber developer" -#~ msgstr "tidligere jabber-utvikler" - -#, fuzzy -#~ msgid "" -#~ "Gaim is a modular messaging client capable of using AIM, MSN, Yahoo!, " -#~ "Jabber, ICQ, IRC, SILC, Novell GroupWise, Napster, Zephyr, and Gadu-Gadu " -#~ "all at once. It is written using GTK+ and is licensed under the GNU GPL." -#~ "

" -#~ msgstr "" -#~ "Gaim er en modulbasert klient for direktemeldinger som kan bruke AIM, " -#~ "MSN, Yahoo!, Jabber, ICQ, IRC, SILC, Novell GroupWise, Napster, Zephyr, " -#~ "og Gadu-Gadu samtidig. Programmet er bygget på Gtk+ og er lisensiert " -#~ "under GPL.

" - -#~ msgid "IRC: #wingaim on irc.freenode.net

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

" - -#~ msgid "Active Developers" -#~ msgstr "Aktive utviklere" - -#~ msgid "_Keep the dialog open" -#~ msgstr "Hold dialogen åpen" - -#~ msgid "Smaller font size" -#~ msgstr "Mindre skrift" - -#~ msgid "Insert link" -#~ msgstr "Sett inn lenke" - -#~ msgid "Insert image" -#~ msgstr "Sett inn bilde" - -#, fuzzy -#~ msgid "Conversation in %s on %s" -#~ msgstr "Samtaler med %s" - -#~ msgid "From: %s\n" -#~ msgstr "Fra: %s\n" - -#~ msgid "Subject: %s\n" -#~ msgstr "Emne: %s\n" - -#~ msgid "" -#~ "You have mail!\n" -#~ "\n" -#~ "%s%s%s%s" -#~ msgstr "" -#~ "Du har e-post!\n" -#~ "\n" -#~ "%s%s%s%s" - -#~ msgid "Error launching %s: %s" -#~ msgstr "Feil under starting av kommando: %s:%s" - -#~ msgid "A_way" -#~ msgstr "_Borte" - -#~ msgid "_Idle" -#~ msgstr "_Inaktiv" - -#~ msgid "Retur_n from idle" -#~ msgstr "Retur_ner fra inaktivitet" - -#~ msgid "Pounce Action" -#~ msgstr "Varslingsmåte" - -#~ msgid "Bro_wse..." -#~ msgstr "Bla _gjennom" - -#~ msgid "Sav_e this pounce after activation" -#~ msgstr "Lagre denne varslingen etter aktivering" - -#~ msgid "Remove Buddy Pounce" -#~ msgstr "Fjern kompisvarsling" - -#~ msgid "Send unknown \"_slash\" commands as messages" -#~ msgstr "Send ukjente \"skråstreks\"-kommandoer som meldinger" - -#~ msgid "Show buddy _icons" -#~ msgstr "Vis kontaktikoner" - -#~ msgid "Tab Options" -#~ msgstr "Fanevalg" - -#~ msgid "_Sounds while away" -#~ msgstr "Lyder når du er fraværsmarkert" - -#~ msgid "_Queue new messages when away" -#~ msgstr "Når borte, legg nye beskjeder i kø" - -#, fuzzy -#~ msgid "Custom status" -#~ msgstr "Etter status" - -#~ msgid "" -#~ "Unable to play sound because the 'Command' sound method has been chosen, " -#~ "but no command has been set." -#~ msgstr "" -#~ "Kunne ikke spille av lyd fordi du har valgt at et eksternt program skal " -#~ "spille av lyd, men ikke spesifisert navnet på programmet." - -#~ msgid "" -#~ "Unable to play sound because the configured sound command could not be " -#~ "launched: %s" -#~ msgstr "" -#~ "Kunne ikke spille av lyd fordi det konfigurerte avspillingsprogrammet " -#~ "ikke kunne startes: %s" - -#~ msgid "_Warn" -#~ msgstr "Advar" - -#~ 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 bildet som filoverføring, sett det inn i denne " -#~ "bekjeden eller bruk det som kompis ikon for denne brukeren." - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Status: %s" -#~ msgstr "" -#~ "\n" -#~ "Status: Fantastisk" - -#, fuzzy -#~ msgid "" -#~ "\n" -#~ "Message: %s" -#~ msgstr "" -#~ "\n" -#~ "%s: %s" - -#, fuzzy -#~ msgid "Could't open file" -#~ msgstr "Kan ikke sende fil" - -#, fuzzy -#~ msgid "Change password" -#~ msgstr "Bytt passord" - -#~ msgid "%s: %s" -#~ msgstr "%s: %s" - -#~ msgid "%s: %s
" -#~ msgstr "%s: %s
" - -#~ msgid "Realname" -#~ msgstr "Virkelig navn" - -#~ msgid "Cannot join %s:" -#~ msgstr "Kan ikke bli med i %s:" - -#~ msgid "" -#~ "Server requires TLS/SSL for login. Select \"Use TLS if available\" in " -#~ "account properties" -#~ msgstr "" -#~ "Tjeneren krever TSL/SSL for innlogging. Velg \"Bruk TLS hvis tilgjengelig " -#~ "\" i kontoalternativer." - -#~ msgid "Jabber ID" -#~ msgstr "Jabber-feil" - -#, fuzzy -#~ msgid "Search for Jabber users" -#~ msgstr "Kontaktsøk etter e-postadresse" - -#~ msgid "Invalid Jabber ID" -#~ msgstr "Ugyldig jabber-ID" - -#~ msgid "Change Jabber Password" -#~ msgstr "Bytt jabber-passord" - -#~ msgid "Jabber Protocol Plugin" -#~ msgstr "Jabber-protokolltillegg" - -#~ msgid "Use TLS if available" -#~ msgstr "Bruk TLS hvis tilgjengelig" - -#~ msgid "The user %s wants to add %s to his or her buddy list." -#~ msgstr "Brukeren %s ønsker å legge til %s i kontaktlisten sin." - -#~ msgid "You have just sent a Nudge!" -#~ msgstr "Du har sent en Nudge!" - -#~ msgid "" -#~ "\n" -#~ "%s: %s" -#~ msgstr "" -#~ "\n" -#~ "%s: %s" - -#~ msgid "Hidden" -#~ msgstr "Usynlig" - -#~ msgid "%s: " -#~ msgstr "%s: " - -#~ msgid "MSN Profile" -#~ msgstr "MSN-profil" - -#~ msgid "Login server" -#~ msgstr "Påloggingstjener" - -#~ msgid "The user %s (%s) wants to add %s to his or her buddy list." -#~ msgstr "Brukeren %s (%s) ønsker å legge til %s i kontaktlisten sin." - -#~ msgid "Unable to read header from server" -#~ msgstr "Kunne ikke lese meldingshode fra tjener" - -#~ msgid "" -#~ "Unable to read message from server: %s. Command is %hd, length is %hd." -#~ msgstr "" -#~ "Kunne ikke lese melding fra tjener: %s. Kommando er %hd, lengde er %hd." - -#~ msgid "users: %s, files: %s, size: %sGB" -#~ msgstr "brukere: %s, filer: %s, størrelse %sGB" - -#~ msgid "Unable to add \"%s\" to your Napster hotlist" -#~ msgstr "Kunne ikke legge til \"%s\" i Napster-listen din" - -#~ msgid "%s requested a PING" -#~ msgstr "%s pinget deg" - -#~ msgid "NAPSTER Protocol Plugin" -#~ msgstr "Napster-protokolltillegg" - -# -#~ msgid "Invalid password" -#~ msgstr "Ugyldig passord" - -#~ msgid "Invalid username or password" -#~ msgstr "Ugyldig brukernavn eller passord" - -#~ msgid "Error processing event or response (%s)." -#~ msgstr "Klarte ikke behandle hendelse eller svar (%s)." - -#~ msgid "Direct IM with %s closed" -#~ msgstr "Direkte samtale med %s stengt" - -#~ msgid "Direct IM with %s failed" -#~ msgstr "Direkte samtale med %s mislyktes" - -#~ msgid "Unable to open Direct IM" -#~ msgstr "Kunne ikke åpne direkte direktesamtale" - -#, fuzzy -#~ msgid "You have lost your connection to chat room %s." -#~ msgstr "Du har blitt koblet fra samtalegruppen %s." - -#~ msgid "Chat is currently unavailable" -#~ msgstr "Samtalegrupper er for tiden utilgjengelig" - -#~ msgid "" -#~ "Transfer of file %s timed out.\n" -#~ " Try enabling proxy servers for file transfers in Tools->Preferences->AIM/" -#~ "ICQ." -#~ msgstr "" -#~ "Overføring av filen %s timet ut.\n" -#~ " Forsøk å slå på proxy servere for filoverføringer i Verktøy-" -#~ ">Innstillinger->AIM/ICQ." - -#, fuzzy -#~ msgid "Unable to log into file transfer proxy." -#~ msgstr "Kunne ikke skrive fil %s." - -#, fuzzy -#~ msgid "" -#~ "Unable to establish listener socket or no AOL proxy connection present." -#~ msgstr "Kunne ikke etablere lytte-socket." - -#~ msgid "" -#~ "The user %s requires authorization before being added to a buddy list. " -#~ "Do you want to send an authorization request?" -#~ msgstr "" -#~ "Brukeren %s krever godkjenning før vedkommende legges til i " -#~ "kontaktlisten. Vil du sende en godkjenningsforespørsel?" - -#~ msgid "Request Authorization" -#~ msgstr "Spør om godkjenning" - -#, fuzzy -#~ msgid "" -#~ "The user %u wants to add %s to their buddy list for the following " -#~ "reason:\n" -#~ "%s" -#~ msgstr "" -#~ "Brukeren %u ønsker å legge deg til sin kontaktliste og oppgav følgende " -#~ "grunn:\n" -#~ "%s" - -#~ msgid "Authorization Request" -#~ msgstr "Godkjenningsforespørsel" - -#~ msgid "UIN: %s
Status: %s
%s" -#~ msgstr "UIN: %s
Status: %s
%s" - -#~ msgid "SNAC threw error: %s\n" -#~ msgstr "SNAC-feil: %s\n" - -#~ msgid "User information for %s unavailable:" -#~ msgstr "Brukerinformasjon for %s er ikke tilgjengelig:" - -#~ msgid "Rate limiting error." -#~ msgstr "Feil ved hastighetsbegrensning." - -#~ msgid "You have been signed off for an unknown reason." -#~ msgstr "Du har blitt logget av, årsak ukjent." - -#~ msgid "" -#~ "Your screen name is currently formatted as follows:\n" -#~ "%s" -#~ msgstr "" -#~ "Skjermnavnet ditt er formatert slik:\n" -#~ "%s" - -#~ msgid "Unable to set AIM away message." -#~ msgstr "Kunne ikke sette fraværsbeskjed for AIM." - -#~ msgid "" -#~ "You have probably requested to set your away message before the login " -#~ "procedure completed. You remain in a \"present\" state; try setting it " -#~ "again when you are fully connected." -#~ msgstr "" -#~ "Du har antakeligvis prøvd å sette en fraværsbeskjed før " -#~ "innloggingsprosedyren var ferdig. Du er fortsatt markert som til stede. " -#~ "Prøv å gjenta operasjonen når du er ferdig pålogget." - -#~ 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 " -#~ "buddy list." -#~ msgstr "" -#~ "Kunne ikke legge til kontakten %s pga. en ukjent feil. Den vanligste " -#~ "årsaken til dette er at du har nådd maksimalgrensen for antall kontakter " -#~ "i kontaktlisten din." - -#, fuzzy -#~ msgid "" -#~ "The user %s wants to add %s to their buddy list for the following " -#~ "reason:\n" -#~ "%s" -#~ msgstr "" -#~ "Brukeren %s ønsker å legge deg til i kontaktlisten sin med følgende " -#~ "grunn:\n" -#~ "%s" - -#, fuzzy -#~ msgid "Hide IP address" -#~ msgstr "IP-adresse" - -#, fuzzy -#~ msgid "Web aware" -#~ msgstr "Web-oppmerksom" - -#~ msgid "New screen name formatting:" -#~ msgstr "Ny skjermnavn-formatering:" - -#~ msgid "Format Screen Name..." -#~ msgstr "Formatere skjermnavn..." - -#~ msgid "Use AIM/ICQ proxy server (Slower/More Secure/Usually Works)" -#~ msgstr "Bruk AIM/ICQ proxy server (Saktere/Mer sikkert/Fungerer vanligvis)" - -#~ msgid "Auth host" -#~ msgstr "Autentiseringsadresse:" - -#~ msgid "Auth port" -#~ msgstr "Autentiseringsport:" - -#~ msgid "Active" -#~ msgstr "Aktiv" - -#~ msgid "" -#~ "Could not add the buddy %s because every simple user has to start with " -#~ "'sip:'." -#~ msgstr "" -#~ "Kunne ikke tilføye kompis %s fordi hver enkel bruker må starte med 'sip:'." - -#~ msgid "Thomas Butter " -#~ msgstr "Thomas Butter " - -#~ msgid "EMail" -#~ msgstr "E-post" - -#~ msgid "Instant Messages" -#~ msgstr "Direktemeldinger" - -#~ msgid "Verify all IM message signatures" -#~ msgstr "Bekreft alle direktemeldingssignaturer" - -#~ msgid "Channel Messages" -#~ msgstr "Kanalmeldinger" - -#~ msgid "Digitally sign all channel messages" -#~ msgstr "Signer alle kanalmeldinger digitalt" - -#~ msgid "Verify all channel message signatures" -#~ msgstr "Bekreft alle kanalmeldingssignaturer" - -#, fuzzy -#~ msgid "Reject watching by other users" -#~ msgstr "Avvis overvåkning fra andre brukere" - -#~ msgid "Block invites" -#~ msgstr "Blokker invitasjoner" - -#, fuzzy -#~ msgid "Reject online status attribute requests" -#~ msgstr "Avvis spørsmål om tilkoplingsstatus" - -#~ 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. Gaim will prevent anything from going through. " -#~ "This is only temporary, please be patient." -#~ msgstr "" -#~ "Når dette skjer, vil TOC ignorere alle beskjeder som blir sendt, og vil " -#~ "kanskje kaste deg ut hvis du prøver å sende. Gaim vil derfor stoppe alle " -#~ "utsendelser. Dette er bare midlertidig, vennligst vent." - -#~ msgid "Gaim - Save As..." -#~ msgstr "Gaim - Lagre som..." - -#~ msgid "TOC host" -#~ msgstr "TOC-adresse:" - -#~ msgid "TOC port" -#~ msgstr "TOC-port:" - -#, fuzzy -#~ msgid "Message (optional) :" -#~ msgstr "Beskjedvarsling" - -#~ msgid "" -#~ "The normal authentication method has failed. This means either your " -#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. " -#~ "Gaim will now attempt to log in using Web Messenger authentication, which " -#~ "will result in reduced functionality and features." -#~ msgstr "" -#~ "Den normale autentifikasjonsmekanismen har feilet, noe som enten betyr at " -#~ "passordet ditt er feil, eller at Yahoo! sin autentifikasjonsmetode har " -#~ "endret seg. Gaim vil nå forsøke å logge inn ved hjelp av Web Messenger " -#~ "autentifikasjon, noe som vil føre til redusert funksjonalitet og færre " -#~ "muligheter" - -#~ msgid "Unable to read" -#~ msgstr "Kunne ikke lese" - -#, fuzzy -#~ msgid "Stealth" -#~ msgstr "Fylke/stat" - -#~ msgid "Pager host" -#~ msgstr "Personsøker-adresse:" - -#, fuzzy -#~ msgid "YCHT Host" -#~ msgstr "YCHT-vert" - -#, fuzzy -#~ msgid "YCHT Port" -#~ msgstr "YCHT-Port" - -#~ msgid "IP Address: %s
" -#~ msgstr "IP-adresse: %s
" - -#~ msgid "(%d message)" -#~ msgid_plural "(%d messages)" -#~ msgstr[0] "(%d beskjeder)" -#~ msgstr[1] "(%d beskjeder)" - -#~ msgid "(1 message)" -#~ msgstr "(1 beskjed)" - -#~ msgid "%s came back" -#~ msgstr "%s kom tilbake" - -#, fuzzy -#~ msgid "Default auto-away" -#~ msgstr "Automatisk fraværsmarkering" - -#~ msgid "g003: Error opening connection.\n" -#~ msgstr "g003: Feil ved tilkobling.\n" - -#, fuzzy -#~ msgid "Show more buddy details" -#~ msgstr "Vis brukerdetaljer" - -#~ msgid "Gnome Default" -#~ msgstr "Gnome-standard" - -#~ msgid "Away m_essage:" -#~ msgstr "Fraværsbeskjed:" - -#, fuzzy -#~ msgid "Quit message" -#~ msgstr "(1 beskjed)" - -#~ msgid "Restore Away State On Reconnect" -#~ msgstr "" -#~ "Fortsett som fraværende etter at forbindelsen har blitt gjennoprettet" - -#~ msgid "Mail Server" -#~ msgstr "E-posttjener" - -#~ msgid "%s (%d new/%d total)" -#~ msgstr "%s (%d nye/%d totalt)" - -#~ msgid "Check Mail" -#~ msgstr "Sjekk e-post" - -#~ msgid "Check e-mail every X seconds.\n" -#~ msgstr "Sjekk e-post hvert Xte sekund.\n" - -#~ msgid "Auto-login" -#~ msgstr "Automatisk pålogging" - -#~ msgid "Signoff" -#~ msgstr "Logge av" - -#~ msgid "_Hide new messages until tray icon is clicked" -#~ msgstr "Skjul nye beskjeder inntil trayikon klikkes" - -#~ msgid "Not connected to AIM" -#~ msgstr "Ikke tilkoblet til AIM" - -#~ msgid "No roomname given." -#~ msgstr "Romnavn ikke oppgitt." - -#~ msgid "Invalid AIM URI" -#~ msgstr "Ugyldig AIM URI" - -#~ msgid "" -#~ "Failed to assign %s to a socket:\n" -#~ "%s" -#~ msgstr "" -#~ "Klarte ikke tilordne %s til en socket:\n" -#~ "%s" - -#~ msgid "Remote Control" -#~ msgstr "Styre Gaim fra kontrollfil" - -#~ msgid "Provides remote control for gaim applications." -#~ msgstr "Muliggjør fjernstyring for Gaim-applikasjoner." - -#~ msgid "" -#~ "Gives Gaim the ability to be remote-controlled through third-party " -#~ "applications or through the gaim-remote tool." -#~ msgstr "" -#~ "Lar Gaim bli kontrollert fra tredjeparts-applikasjoner eller gjennom " -#~ "verktøyet gaim-remote." - -#~ msgid "Docked _Buddy List is always on top" -#~ msgstr "Dockable kontaktliste er alltid øverst" - -#~ msgid "Away!" -#~ msgstr "Borte" - -#~ msgid "Edit This Message" -#~ msgstr "Rediger denne meldingen" - -#~ msgid "I'm Back!" -#~ msgstr "Tilbake!" - -#~ msgid "Remove Away Message" -#~ msgstr "Fjern fraværsbeskjed" - -#~ msgid "Set All Away" -#~ msgstr "Marker som borte på alle" - -#~ msgid "You cannot save an away message with a blank title" -#~ msgstr "Du kan ikke lagre en fraværsbeskjed uten tittel" - -#~ msgid "" -#~ "Please give the message a title, or choose \"Use\" to use without saving." -#~ msgstr "" -#~ "Vennligst gi beskjeden en tittel, eller velg \"Bruk\" for å bruke uten " -#~ "lagring." - -#~ msgid "You cannot create an empty away message" -#~ msgstr "Du kan ikke lage en tom fraværsbeskjed" - -#~ msgid "Away title: " -#~ msgstr "Tittel: " - -#~ msgid "Buddy List Error" -#~ msgstr "Feil i kontaktliste" - -#~ msgid "Size of the expander arrow" -#~ msgstr "Størrelse på utvider-pil" - -#~ msgid "" -#~ "Usage: %s command [OPTIONS] [URI]\n" -#~ "\n" -#~ " COMMANDS:\n" -#~ " uri Handle AIM: URI\n" -#~ " away Popup the away dialog with the default " -#~ "message\n" -#~ " back Remove the away dialog\n" -#~ " quit Close running copy of Gaim\n" -#~ "\n" -#~ " OPTIONS:\n" -#~ " -h, --help [command] Show help for command\n" -#~ msgstr "" -#~ "Bruksmåte: %s kommando [FLAGG] [URI]\n" -#~ "\n" -#~ " KOMMANDOER:\n" -#~ " uri Håndtere AIM-URI\n" -#~ " away Sprett opp fraværsdialogen med " -#~ "standardmeldingen\n" -#~ " back Fjern standardmeldingen\n" -#~ " quit Lukk Gaim-program som kjører\n" -#~ "\n" -#~ " FLAGG:\n" -#~ " -h, --help [kommando] Vis hjelp for kommando\n" - -#~ msgid "" -#~ "Gaim not running (on session 0)\n" -#~ "Is the \"Remote Control\" plugin loaded?\n" -#~ msgstr "" -#~ "Gaim kjører ikke (på sesjon 0)\n" -#~ "Er fjernstyringstillegget lastet?\n" - -#~ msgid "" -#~ "\n" -#~ "Using AIM: URIs:\n" -#~ "Sending an IM to a screen name:\n" -#~ "\tgaim-remote uri 'aim:goim?screenname=Penguin&message=hello+world'\n" -#~ "In this case, 'Penguin' is the screen name we wish to IM, and 'hello " -#~ "world'\n" -#~ "is the message to be sent. '+' must be used in place of spaces.\n" -#~ "Please note the quoting used above - if you run this from a shell the " -#~ "'&'\n" -#~ "needs to be escaped, or the command will stop at that point.\n" -#~ "Also,the following will just open a conversation window to a screen " -#~ "name,\n" -#~ "with no message:\n" -#~ "\tgaim-remote uri 'aim:goim?screenname=Penguin'\n" -#~ "\n" -#~ "Joining a chat:\n" -#~ "\tgaim-remote uri 'aim:gochat?roomname=PenguinLounge'\n" -#~ "...joins the 'PenguinLounge' chat room.\n" -#~ "\n" -#~ "Adding a buddy to your buddy list:\n" -#~ "\tgaim-remote uri 'aim:addbuddy?screenname=Penguin'\n" -#~ "...prompts you to add 'Penguin' to your buddy list.\n" -#~ msgstr "" -#~ "\n" -#~ "Bruke AIM: URIer:\n" -#~ "Å sende en direktebeskjed til en kontakts skjermnavn:\n" -#~ "\tgaim-remote uri 'aim:goim?screenname=Penguin&message=hello+world'\n" -#~ "'Penguin' er skjermnavnet vi ønsker å sende direktebeskjed til, og " -#~ "'hello\n" -#~ "world' er beskjeden. Tegnet '+' må brukes som erstatning for mellomrom.\n" -#~ "Merk at hvordan kommandoen over bruker anførselstegn - hvis du starter\n" -#~ "kommandoen fra et shell, må du passe på å 'escape' tegnet &, ellers vil " -#~ "resten\n" -#~ "av linja ignoreres. Hvis du bare ønsker å åpne et samtalevindu til en " -#~ "kontakt\n" -#~ "uten å sende noen beskjed først, kan du gjøre slik:\n" -#~ "\tgaim-remote uri aim:goim?screenname=Penguin\n" -#~ "\n" -#~ "For å bli med i en samtale:\n" -#~ "\tgaim-remote uri aim:gochat?roomname=PenguinLounge\n" -#~ "...starter en samtale i PenguinLounge-samtalerommet.\n" -#~ "\n" -#~ "For å legge til en kontakt i kontaktlisten:\n" -#~ "\tgaim-remote uri aim:addbuddy?screenname=Penguin\n" -#~ "...vil spørre deg om å legge til Penguin i kontaktlisten.\n" - -#~ msgid "" -#~ "\n" -#~ "Close running copy of Gaim\n" -#~ msgstr "" -#~ "\n" -#~ "Lukk eksisterende Gaim-program\n" - -#~ msgid "" -#~ "\n" -#~ "Mark all accounts as \"away\" with the default message.\n" -#~ msgstr "" -#~ "\n" -#~ "Merk alle kontoer som \"fraværende\" med standardmeldingen.\n" - -#~ msgid "" -#~ "\n" -#~ "Set all accounts as not away.\n" -#~ msgstr "" -#~ "\n" -#~ "Sett alle kontoers status til ikke fraværende.\n" - -#~ msgid "Show fewer options" -#~ msgstr "Vis færre valg" - -#~ msgid "/Tools/_Away" -#~ msgstr "/Verktøy/_Borte" - -#~ msgid "/Tools/Pl_ugin Actions" -#~ msgstr "/Verktøy/Handlinger for tillegg" - -#~ msgid "Rename Group" -#~ msgstr "Endre gruppenavn" - -#~ msgid "New group name" -#~ msgstr "Nytt gruppenavn:" - -#~ msgid "%d%%" -#~ msgstr "%d%%" - -#~ msgid "" -#~ "\n" -#~ "Account:" -#~ msgstr "" -#~ "\n" -#~ "Konto:" - -#~ msgid "Warned (%d%%) " -#~ msgstr "Advart (%d%%) " - -#~ msgid "/Tools/Away" -#~ msgstr "/Verktøy/Borte" - -#~ msgid "Send a message to the selected buddy" -#~ msgstr "Send beskjed til den valgte kontakten" - -#~ msgid "Get information on the selected buddy" -#~ msgstr "Hent informasjon om den valgte kontakten" - -#~ msgid "_Chat" -#~ msgstr "_Gruppesamtale" - -#~ msgid "Join a chat room" -#~ msgstr "Bli med i samtalegruppe" - -#~ msgid "_Away" -#~ msgstr "_Borte" - -#~ msgid "Set an away message" -#~ msgstr "Sett en fraværsbeskjed" - -#~ msgid "Done." -#~ msgstr "Ferdig." - -#~ msgid "Signon: " -#~ msgstr "Pålogging: " - -#~ msgid "Signon" -#~ msgstr "Pålogging" - -#~ msgid "Cancel All" -#~ msgstr "A_vbryt alle" - -# -#~ msgid "_Reconnect" -#~ msgstr "Kople til på nytt" - -#~ msgid "Reason Unknown." -#~ msgstr "Ukjent årsak." - -# -#~ msgid "Reconnect _All" -#~ msgstr "Kople til _alle på nytt" - -#~ msgid "Get Away Msg" -#~ msgstr "Hent fraværsbeskjed" - -#~ msgid "/Conversation/_Warn..." -#~ msgstr "/Samtale/A_dvar..." - -#~ msgid "/Conversation/A_lias..." -#~ msgstr "/Samtale/_Alias..." - -#~ msgid "/Options/Show T_imestamps" -#~ msgstr "/Brukervalg/Vis t_idsstempler" - -#~ msgid "/Conversation/Warn..." -#~ msgstr "/Samtale/Advar..." - -#~ msgid "Warn the user" -#~ msgstr "Advar brukeren" - -#~ msgid "Send a file to the user" -#~ msgstr "Send en fil til brukeren" - -#~ msgid "Remove the user from your buddy list" -#~ msgstr "Fjern brukeren fra kontaktlisten din" - -#~ msgid "Invite a user" -#~ msgstr "Inviter en bruker" - -#~ msgid "Add the chat to your buddy list" -#~ msgstr "Legg til samtalen i kontaktlisten din" - -#~ msgid "
/Conversation/Close" -#~ msgstr "
/Samtale/Lukk" - -#~ msgid "former lead developer" -#~ msgstr "tidligere hovedutvikler" - -#~ msgid "former maintainer" -#~ msgstr "tidligere ansvarlig" - -#, fuzzy -#~ msgid "Azerbaijani" -#~ msgstr "Serbisk" - -#~ msgid "Burmese" -#~ msgstr "Burmesisk" - -#~ msgid "Ukrainian" -#~ msgstr "Ukrainsk" - -# -#~ msgid "Chinese" -#~ msgstr "Kinesisk" - -#~ msgid "" -#~ "Warn %s?\n" -#~ "\n" -#~ "This will increase %s's warning level and he or she will be subject to " -#~ "harsher rate limiting.\n" -#~ msgstr "" -#~ "Advar %s?\n" -#~ "\n" -#~ "Dette vil øke advarselsnivået til %s og vedkommende vil måtte tåle " -#~ "strengere hastighetsbegrensning.\n" - -#~ msgid "Warn _anonymously?" -#~ msgstr "Advar anonymt" - -#~ msgid "Anonymous warnings are less severe." -#~ msgstr "Anonyme advarsler er mindre betydningsfulle." - -#~ msgid "Show transfer details" -#~ msgstr "Vis overføringsdetaljer" - -#~ msgid "D_isplay remote nicknames if no alias is set" -#~ msgstr "Vis kallenavn for personer hvis de ikke har noe alias" - -#~ msgid "Display" -#~ msgstr "Vis" - -#~ msgid "Show _timestamp on messages" -#~ msgstr "Vis tidsstempel på beskjeder" - -#~ msgid "Ignore font _faces" -#~ msgstr "Ignorer skrifttyper" - -#~ msgid "_Send default formatting with outgoing messages" -#~ msgstr "_Send standardformatering med utgående meldinger" - -#~ msgid "Enter _sends message" -#~ msgstr "Enter _sender beskjeden" - -#~ msgid "Window Closing" -#~ msgstr "Lukke vindu" - -#~ msgid "_Escape closes window" -#~ msgstr "_ESC lukker vinduet" - -#~ msgid "Insertions" -#~ msgstr "Innsettinger" - -#~ msgid "Control-{B/I/U} changes _formatting" -#~ msgstr "CTRL-{b/i/u/s} endrer _formatering" - -#~ msgid "Control-(number) _inserts smileys" -#~ msgstr "CTRL-(tall) setter _inn smilefjes" - -#~ msgid "Show _buttons as:" -#~ msgstr "Vis knapper som:" - -#~ msgid "Text" -#~ msgstr "Tekst" - -#~ msgid "Pictures and text" -#~ msgstr "Bilder og tekst" - -#~ msgid "_Raise window on events" -#~ msgstr "Flytt vinduet øverst ved hendelser" - -#~ msgid "Show _warning levels" -#~ msgstr "Vis advarselsnivåer" - -#~ msgid "Enable \"_slash\" commands" -#~ msgstr "Skru på \"_skråstreks\"-kommandoer" - -#~ msgid "_Raise IM window on events" -#~ msgstr "Flytt direktemeldingsvindu øverst ved hendelser" - -#~ msgid "Raise chat _window on events" -#~ msgstr "Flytt gruppesamtalevinduet øverst ved hendelser" - -#~ msgid "Use _multi-colored screen names in chats" -#~ msgstr "Bruk _flerfargede brukernavn i samtalegrupper" - -#~ msgid "Tab p_lacement:" -#~ msgstr "_Faneplassering:" - -#~ msgid "New conversation _placement:" -#~ msgstr "Ny samtale_plassering" - -#~ msgid "System Logs" -#~ msgstr "Systemlogging" - -#~ msgid "_Enable system log" -#~ msgstr "Skru på _systemlogg:" - -#~ msgid "Log when buddies _sign on/sign off" -#~ msgstr "Skriv til logg når kontakter logger av/på" - -#~ msgid "Log when buddies become _idle/un-idle" -#~ msgstr "Skriv til logg når kontakter blir aktiv/inaktiv" - -#~ msgid "Log when buddies go away/come _back" -#~ msgstr "Skriv til logg når kontakter blir borte/kommer tilbake" - -#~ msgid "Log your _own signons/idleness/awayness" -#~ msgstr "Skriv egne pålogginger/inaktivitet/bortemarkeringer til logg" - -#~ msgid "Idle _time reporting:" -#~ msgstr "Rapportering av inaktiv _tid:" - -#~ msgid "Gaim usage" -#~ msgstr "Gaim-bruk" - -#~ msgid "X usage" -#~ msgstr "X-bruk" - -#~ msgid "Windows usage" -#~ msgstr "Windows-bruk" - -#~ msgid "" -#~ "%s %s\n" -#~ "\n" -#~ "Written by: %s\n" -#~ "URL: %s\n" -#~ "File name: %s" -#~ msgstr "" -#~ "%s %s\n" -#~ "\n" -#~ "Skrevet av: %s\n" -#~ "URL: %s\n" -#~ "Filnavn: %s" - -#~ msgid "Summary" -#~ msgstr "Oppsummering" - -#~ msgid "Details" -#~ msgstr "Detaljer" - -#~ msgid "Message Text" -#~ msgstr "Beskjeder" - -#~ msgid "Shortcuts" -#~ msgstr "Hurtigtaster" - -#~ msgid "Away Messages" -#~ msgstr "Fraværsbeskjeder" - -#~ msgid "Please create an account." -#~ msgstr "Vennligst lag en konto." - -#~ msgid "_Account:" -#~ msgstr "_Konto:" - -#~ msgid "A_ccounts" -#~ msgstr "Kontoer" - -#, fuzzy -#~ msgid "P_references" -#~ msgstr "Innstillinger" - -#~ msgid "_Sign on" -#~ msgstr "Logg _på" - -#~ msgid "" -#~ "Gaim %s\n" -#~ "Usage: %s [OPTION]...\n" -#~ "\n" -#~ " -a, --acct display account editor window\n" -#~ " -w, --away[=MESG] make away on signon (optional argument MESG " -#~ "specifies\n" -#~ " name of away message to use)\n" -#~ " -l, --login[=NAME] automatically login (optional argument NAME " -#~ "specifies\n" -#~ " account(s) to use, seperated by commas)\n" -#~ " -n, --loginwin don't automatically login; show login window\n" -#~ " -u, --user=NAME use account NAME\n" -#~ " -c, --config=DIR use DIR for config files\n" -#~ " -d, --debug print debugging messages to stdout\n" -#~ " -v, --version display the current version and exit\n" -#~ " -h, --help display this help and exit\n" -#~ msgstr "" -#~ "Gaim %s\n" -#~ "Bruksmåte: %s [BRUKERVALG]...\n" -#~ "\n" -#~ " -a, --acct vis redigeringsvindu for kontoer\n" -#~ " -w, --away[=MESG] marker som borte ved pålogging (valgfri MESG er " -#~ "navnet\n" -#~ " på bortebeskjeden du vil bruke)\n" -#~ " -l, --login[=NAME] logg inn automatisk (valgfri NAME er navnet på\n" -#~ " konto(er) du vil bruke, atskilt av komma)\n" -#~ " -n, --loginwin ikke logg inn automatisk, men vis påloggingsvindu\n" -#~ " -u, --user=NAME bruk kontoen NAME\n" -#~ " -f, --file=FILE bruk filen FILE som konfigurasjonsfil\n" -#~ " -d, --debug skriv avlusningsinfo til stdout\n" -#~ " -v, --version vis versjonsinformasjon og avslutt\n" -#~ " -h, --help vis denne hjelpeteksten og avslutt\n" - -#~ msgid "Unable to load preferences" -#~ msgstr "Kunne ikke åpne innstillinger" - -#~ msgid "" -#~ "Gaim was not able to load your preferences because they are stored in an " -#~ "old format that is no longer used. Please reconfigure your settings " -#~ "using the Preferences window." -#~ msgstr "" -#~ "Gaim kunne ikke åpne dine instillinger, da de er lagret i et gammelt " -#~ "format som ikke lenger er i bruk. Vennligst rekonfigurer dine " -#~ "instillinger ved hjelp av innstillingsvinduet" - -#~ msgid "Slightly less boring default" -#~ msgstr "kjedelig standardsvar" - -#~ msgid "Available for friends only" -#~ msgstr "Tilgjengelig bare for venner" - -#~ msgid "Away for friends only" -#~ msgstr "Borte bare for venner" - -#~ msgid "Invisible for friends only" -#~ msgstr "Usynlig bare for venner" - -#~ msgid "Error while writing to socket." -#~ msgstr "Feil under skriving til socket." - -#~ msgid "Authentication failed." -#~ msgstr "Autentisering feilet." - -#~ msgid "Unknown Error Code." -#~ msgstr "Ukjent feilkode." - -#~ msgid "Balancer handshake" -#~ msgstr "Finner ledig tjener" - -#~ msgid "Reading server key" -#~ msgstr "Leser tjenernøkkel" - -#~ msgid "Exchanging key hash" -#~ msgstr "Utveksler nøkkel-hash" - -#~ msgid "Critical error in GG library\n" -#~ msgstr "Kritisk feil i GG-biblioteket\n" - -#~ msgid "Unable to ping server" -#~ msgstr "Kunne ikke pinge tjener" - -#~ msgid "Send as message" -#~ msgstr "Send som beskjed" - -#~ msgid "Looking up GG server" -#~ msgstr "Søker etter GG-tjener" - -#~ msgid "Invalid Gadu-Gadu UIN specified" -#~ msgstr "Ugyldig Gadu-Gadu UIN oppgitt" - -#~ msgid "You are trying to send a message to an invalid Gadu-Gadu UIN." -#~ msgstr "Du prøver å sende en beskjed til et ugyldig Gadu-Gadu UIN." - -#~ msgid "Couldn't get search results" -#~ msgstr "Kunne ikke laste ned søkeresultater" - -#~ msgid "Sex" -#~ msgstr "Kjønn" - -#~ msgid "Couldn't Import Buddy List from Server" -#~ msgstr "Kunne ikke importere kontaktliste fra tjeneren" - -#~ msgid "Buddy List successfully transferred to Gadu-Gadu server" -#~ msgstr "Kontaktlisten ble overført til Gadu-Gadu-tjeneren" - -#~ msgid "Couldn't transfer Buddy List to Gadu-Gadu server" -#~ msgstr "Kunne ikke overføre kontaktlisten til Gadu-Gadu-tjeneren" - -#~ msgid "Buddy List successfully deleted from Gadu-Gadu server" -#~ msgstr "Kontaktlisten ble slettet fra Gadu-Gadu-tjeneren" - -#~ msgid "Couldn't delete Buddy List from Gadu-Gadu server" -#~ msgstr "Kunne ikke slette kontaktlisten fra Gadu-Gadu-tjeneren" - -#~ msgid "Password couldn't be changed" -#~ msgstr "Passordet kunne ikke endres" - -#~ msgid "Error communicating with Gadu-Gadu server" -#~ msgstr "Feil i kommunikasjonen med Gadu-Gadu-tjeneren" - -#~ msgid "" -#~ "Gaim was unable to complete your request due to a problem communicating " -#~ "with the Gadu-Gadu HTTP server. Please try again later." -#~ msgstr "" -#~ "Gaim kunne ikke fullføre oppgaven på grunn av kommunikasjonsproblemer med " -#~ "Gadu-Gadu-HTTP-tjeneren. Vennligst forsøk igjen senere." - -#~ msgid "Unable to import Gadu-Gadu buddy list" -#~ msgstr "Kunne ikke importere Gadu-Gadu-kontaktliste" - -#~ msgid "" -#~ "Gaim was unable to connect to the Gadu-Gadu buddy list server. Please " -#~ "try again later." -#~ msgstr "" -#~ "Gaim kunne ikke koble til kontaktliste-tjeneren for Gadu-Gadu. Vennligst " -#~ "forsøk igjen senere." - -#~ msgid "" -#~ "Gaim was unable to connect to the buddy list server. Please try again " -#~ "later." -#~ msgstr "" -#~ "Gaim kunne ikke koble til kontaktliste-tjeneren. Vennligst forsøk igjen " -#~ "senere." - -#~ msgid "Unable to delete Gadu-Gadu buddy list" -#~ msgstr "Kunne ikke slette kontaktliste for Gadu-Gadu" - -#~ msgid "Unable to access directory" -#~ msgstr "Fikk ikke tilgang til katalogen" - -#~ msgid "" -#~ "Gaim was unable to search the Directory because it was unable to connect " -#~ "to the directory server. Please try again later." -#~ msgstr "" -#~ "Gaim kunne ikke søke i katalogen fordi den ikke fikk kontakt med " -#~ "katalogtjeneren. Vennligst prøv igjen senere." - -#~ msgid "" -#~ "Gaim was unable to change your password due to an error connecting to the " -#~ "Gadu-Gadu server. Please try again later." -#~ msgstr "" -#~ "Gaim fikk ikke kontakt med Gadu-Gadu-tjeneren og kunne ikke endre " -#~ "passordet ditt. Vennligst forsøk igjen senere." - -#~ msgid "Directory Search" -#~ msgstr "Katalogsøk" - -#~ msgid "Unable to access user profile." -#~ msgstr "Fikk ikke tilgang til brukerprofilen." - -#~ msgid "" -#~ "Gaim was unable to access this user's profile due to an error connecting " -#~ "to the directory server. Please try again later." -#~ msgstr "" -#~ "Gaim kunne ikke lese brukerprofilen på grunn av tilkoblingsproblemer mot " -#~ "katalogtjeneren. Vennligst forsøk igjen senere." - -#~ msgid "Gaim encountered an error communicating with the ICQ server." -#~ msgstr "Det oppstod en feil i kommunikasjonen med ICQ-tjeneren." - -#~ msgid "The user %s (%s%s%s%s%s) wants you to authorize them." -#~ msgstr "Brukeren %s (%s%s%s%s%s) ønsker å bli godkjent av deg." - -#~ msgid "Send message through server" -#~ msgstr "Send beskjed gjennom tjener" - -#~ msgid "Nick:" -#~ msgstr "Kallenavn:" - -#~ msgid "Gaim User" -#~ msgstr "Gaim-bruker" - -#~ msgid "File Transfer Aborted" -#~ msgstr "Filoverføring avbrutt" - -#~ msgid "Buddy Information for %s" -#~ msgstr "Kontaktinformasjon for %s" - -#~ msgid "Invalid nickname '%s'" -#~ msgstr "Ugyldig brukernavn '%s'" - -#~ msgid "Jabber Profile" -#~ msgstr "Jabber-profil" - -# -#~ msgid "Roomlist Error" -#~ msgstr "Feil ved liste over rom" - -#~ msgid "The user %s wants to add you to their buddy list." -#~ msgstr "Brukeren %s vil legge deg til i sin kontaktliste." - -#~ msgid "Display conversation closed notices" -#~ msgstr "Vis advasler om at samtalen har blitt lukket" - -#~ msgid "The conversation has become inactive and timed out." -#~ msgstr "Samtalen har blitt avsluttet pga. inaktivitet." - -#~ msgid "" -#~ "You were disconnected from the server, because you logged on from a " -#~ "different location" -#~ msgstr "Du ble logget av fordi du har logget på et annet sted." - -#, fuzzy -#~ msgid "User Properties" -#~ msgstr "Brukervalg" - -#, fuzzy -#~ msgid "Transfer of file %s timed out." -#~ msgstr "Overføring av filen %s er ferdig." - -#~ msgid "" -#~ "You have been disconnected because you have signed on with this screen " -#~ "name at another location." -#~ msgstr "" -#~ "Du ble logget av fordi du har logget på med dette skjermnavnet et annet " -#~ "sted." - -# Gammel "uventet", kansje bedre? -#, fuzzy -#~ msgid "Not specified" -#~ msgstr "Ikke spesifisert" - -#~ msgid "ICQ Info for %s" -#~ msgstr "ICQ-info for %s" - -#~ msgid "" -#~ "Error 0x%04x: Unable to format screen name because the requested screen " -#~ "name ends in a space." -#~ msgstr "" -#~ "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte " -#~ "skjermnavnet slutter med et mellomrom." - -#~ msgid "I'm doing work and hoping for a distraction--IM me!" -#~ msgstr "Jeg jobber og håper at noen skal forstyrre - send meg en beskjed!" - -#~ msgid "Set Available Message..." -#~ msgstr "Sett tilstedebeskjed..." - -#~ msgid "Failed to leave channel" -#~ msgstr "Kunne ikke forlate kanalen" - -#~ msgid "Basic Profile" -#~ msgstr "Grunnleggende profil" - -#~ msgid "AIM" -#~ msgstr "AIM" - -#~ msgid "ICQ UIN" -#~ msgstr "ICQ UIN" - -#~ msgid "MSN" -#~ msgstr "MSN" - -#~ msgid "Yahoo" -#~ msgstr "Yahoo" - -#~ msgid "I'm From" -#~ msgstr "Jeg er fra" - -#~ msgid "Set your Trepia profile data." -#~ msgstr "Skriv inn data i din Trepia-profil." - -#~ msgid "Visit Homepage" -#~ msgstr "Besøk hjemmeside" - -#~ msgid "Local Users" -#~ msgstr "Lokale brukere" - -#~ msgid "Trepia Protocol Plugin" -#~ msgstr "Trepia-protokolltillegg" - -#~ msgid "" -#~ "You have been logged off as you have logged in on a different machine or " -#~ "device." -#~ msgstr "Du har blitt logget av, da du har logget inn et annet sted" - -#~ msgid "Please enter your password" -#~ msgstr "Skriv inn passord" - -#~ msgid "%s logged in." -#~ msgstr "%s logget inn." - -#~ msgid "%s logged out." -#~ msgstr "%s logget ut." - -#~ msgid "" -#~ "%s has just been warned by %s.\n" -#~ "Your new warning level is %d%%" -#~ msgstr "" -#~ "%s har blitt advart av %s.\n" -#~ "Ditt nye advarselsnivå er %d%%" - -#~ msgid "an anonymous person" -#~ msgstr "en anonym person" - -#~ msgid "" -#~ "%s has invited %s to the chat room %s:\n" -#~ "%s" -#~ msgstr "" -#~ "Brukeren '%s' inviterer %s til samtalerom: '%s'\n" -#~ "%s" - -#~ msgid "Sorry, I ran out for a bit!" -#~ msgstr "Borte litt, tilbake om en stund!" - -#~ msgid "" -#~ "Unable to guess the image type based on the file extension supplied. " -#~ "Defaulting to PNG." -#~ msgstr "" -#~ "Gaim kunne ikke gjette bildetypen ut fra filtypen (siste del av " -#~ "filnavnet). Antar PNG-format." - -#~ msgid "SILC Public Key" -#~ msgstr "SILC offentlig nøkkel" - -#~ msgid "SILC Private Key" -#~ msgstr "SILC privat nøkkel" diff -r 7697f6872380 -r f7e4a558a439 po/sk.po --- a/po/sk.po Tue Oct 23 17:40:56 2007 +0000 +++ b/po/sk.po Tue Oct 23 17:41:06 2007 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: pidgin-1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-09-28 15:32-0500\n" +"POT-Creation-Date: 2007-10-02 04:01-0400\n" "PO-Revision-Date: 2007-09-10 17:31+0000\n" "Last-Translator: helix84 \n" "Language-Team: Slovak \n" @@ -51,7 +51,7 @@ " -n, --nologin neprihlasovať automaticky\n" " -v, --version zobrazí verziu programu a skončí\n" -#: ../finch/finch.c:328 ../pidgin/gtkmain.c:711 +#: ../finch/finch.c:328 ../pidgin/gtkmain.c:718 #, c-format msgid "" "%s encountered errors migrating your settings from %s to %s. Please " @@ -63,11 +63,11 @@ "http://developer.pidgin.im" #: ../finch/gntaccount.c:124 ../finch/gntaccount.c:484 ../finch/gntblist.c:300 -#: ../finch/gntblist.c:433 ../finch/gntblist.c:446 ../finch/gntplugin.c:186 -#: ../finch/gntplugin.c:234 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310 +#: ../finch/gntblist.c:433 ../finch/gntblist.c:446 ../finch/gntplugin.c:187 +#: ../finch/gntplugin.c:235 ../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:2029 +#: ../libpurple/protocols/jabber/buddy.c:2032 #: ../libpurple/protocols/jabber/chat.c:677 #: ../libpurple/protocols/jabber/chat.c:688 #: ../libpurple/protocols/jabber/jabber.c:1515 @@ -102,8 +102,8 @@ msgid "(You probably forgot to 'make install'.)" msgstr "(Pravdepodobne ste zabudli na „make install“.)" -#: ../finch/gntaccount.c:496 ../finch/gntconn.c:136 -#: ../pidgin/gtkaccount.c:1473 ../pidgin/gtkblist.c:4040 +#: ../finch/gntaccount.c:496 ../finch/gntconn.c:137 +#: ../pidgin/gtkaccount.c:1473 ../pidgin/gtkblist.c:4322 msgid "Modify Account" msgstr "Upraviť účet" @@ -133,18 +133,18 @@ #: ../finch/gntaccount.c:575 ../finch/gntaccount.c:638 #: ../finch/gntaccount.c:889 ../finch/gntblist.c:344 ../finch/gntblist.c:421 #: ../finch/gntblist.c:456 ../finch/gntblist.c:803 ../finch/gntblist.c:1005 -#: ../finch/gntblist.c:1101 ../finch/gntblist.c:2222 ../finch/gntcertmgr.c:91 -#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:459 ../finch/gntpounce.c:667 -#: ../finch/gntprefs.c:265 ../finch/gntsound.c:1058 ../finch/gntstatus.c:145 -#: ../finch/gntstatus.c:485 ../finch/gntstatus.c:610 +#: ../finch/gntblist.c:1101 ../finch/gntblist.c:2224 ../finch/gntblist.c:2287 +#: ../finch/gntcertmgr.c:91 ../finch/gntplugin.c:472 ../finch/gntpounce.c:459 +#: ../finch/gntpounce.c:667 ../finch/gntprefs.c:265 ../finch/gntsound.c:1058 +#: ../finch/gntstatus.c:145 ../finch/gntstatus.c:485 ../finch/gntstatus.c:610 #: ../libpurple/account.c:1013 ../libpurple/account.c:1263 #: ../libpurple/account.c:1298 ../libpurple/conversation.c:1215 #: ../libpurple/plugins/buddynote.c:51 ../libpurple/protocols/gg/gg.c:507 #: ../libpurple/protocols/gg/gg.c:666 ../libpurple/protocols/gg/gg.c:803 #: ../libpurple/protocols/gg/gg.c:884 #: ../libpurple/protocols/jabber/buddy.c:728 -#: ../libpurple/protocols/jabber/buddy.c:2413 -#: ../libpurple/protocols/jabber/buddy.c:2449 +#: ../libpurple/protocols/jabber/buddy.c:2416 +#: ../libpurple/protocols/jabber/buddy.c:2452 #: ../libpurple/protocols/jabber/chat.c:786 #: ../libpurple/protocols/jabber/jabber.c:1008 #: ../libpurple/protocols/jabber/jabber.c:1017 @@ -153,10 +153,10 @@ #: ../libpurple/protocols/jabber/usermood.c:184 #: ../libpurple/protocols/jabber/usernick.c:78 #: ../libpurple/protocols/jabber/xdata.c:400 -#: ../libpurple/protocols/msn/msn.c:287 ../libpurple/protocols/msn/msn.c:304 -#: ../libpurple/protocols/msn/msn.c:321 ../libpurple/protocols/msn/msn.c:338 -#: ../libpurple/protocols/msn/msn.c:359 -#: ../libpurple/protocols/oscar/oscar.c:6094 +#: ../libpurple/protocols/msn/msn.c:290 ../libpurple/protocols/msn/msn.c:307 +#: ../libpurple/protocols/msn/msn.c:324 ../libpurple/protocols/msn/msn.c:341 +#: ../libpurple/protocols/msn/msn.c:362 +#: ../libpurple/protocols/oscar/oscar.c:6146 #: ../libpurple/protocols/oscar/peer.c:1046 #: ../libpurple/protocols/qq/buddy_info.c:484 #: ../libpurple/protocols/qq/buddy_opt.c:214 @@ -191,10 +191,10 @@ #: ../libpurple/protocols/silc10/ops.c:1904 #: ../libpurple/protocols/silc10/silc.c:736 #: ../libpurple/protocols/silc10/silc.c:942 -#: ../libpurple/protocols/yahoo/yahoo.c:1032 -#: ../libpurple/protocols/yahoo/yahoo.c:3498 -#: ../libpurple/protocols/yahoo/yahoo.c:3509 ../pidgin/gtkaccount.c:1908 -#: ../pidgin/gtkaccount.c:2495 ../pidgin/gtkblist.c:5967 +#: ../libpurple/protocols/yahoo/yahoo.c:1034 +#: ../libpurple/protocols/yahoo/yahoo.c:3500 +#: ../libpurple/protocols/yahoo/yahoo.c:3511 ../pidgin/gtkaccount.c:1908 +#: ../pidgin/gtkaccount.c:2495 ../pidgin/gtkblist.c:6267 #: ../pidgin/gtkcertmgr.c:197 ../pidgin/gtkdialogs.c:773 #: ../pidgin/gtkdialogs.c:912 ../pidgin/gtkdialogs.c:1004 #: ../pidgin/gtkdialogs.c:1024 ../pidgin/gtkdialogs.c:1048 @@ -202,7 +202,7 @@ #: ../pidgin/gtkdialogs.c:1159 ../pidgin/gtkdialogs.c:1215 #: ../pidgin/gtkdialogs.c:1254 ../pidgin/gtkdialogs.c:1281 #: ../pidgin/gtkimhtmltoolbar.c:435 ../pidgin/gtklog.c:328 -#: ../pidgin/gtkplugin.c:289 ../pidgin/gtkpounce.c:1101 +#: ../pidgin/gtkplugin.c:289 ../pidgin/gtkpounce.c:1108 #: ../pidgin/gtkprivacy.c:563 ../pidgin/gtkprivacy.c:579 #: ../pidgin/gtkprivacy.c:604 ../pidgin/gtkprivacy.c:618 #: ../pidgin/gtkrequest.c:271 ../pidgin/gtksavedstatuses.c:345 @@ -212,8 +212,8 @@ #. Save button #. Save -#: ../finch/gntaccount.c:579 ../finch/gntcertmgr.c:311 -#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:465 ../finch/gntprefs.c:265 +#: ../finch/gntaccount.c:579 ../finch/gntcertmgr.c:311 ../finch/gntdebug.c:297 +#: ../finch/gntplugin.c:472 ../finch/gntpounce.c:465 ../finch/gntprefs.c:265 #: ../finch/gntsound.c:1055 ../finch/gntstatus.c:488 ../finch/gntstatus.c:598 #: ../libpurple/account.c:1297 ../libpurple/plugins/buddynote.c:50 #: ../libpurple/protocols/jabber/buddy.c:727 ../pidgin/gtkdebug.c:749 @@ -236,12 +236,12 @@ #: ../finch/gntcertmgr.c:319 ../finch/gntpounce.c:666 ../finch/gntpounce.c:729 #: ../finch/gntstatus.c:144 ../finch/gntstatus.c:210 #: ../pidgin/gtkaccount.c:1907 ../pidgin/gtklog.c:327 -#: ../pidgin/gtkpounce.c:1100 ../pidgin/gtkrequest.c:274 +#: ../pidgin/gtkpounce.c:1107 ../pidgin/gtkrequest.c:274 #: ../pidgin/gtksavedstatuses.c:344 ../pidgin/gtkstatusbox.c:1573 msgid "Delete" msgstr "Odstrániť" -#: ../finch/gntaccount.c:669 ../finch/gntblist.c:2119 ../finch/gntui.c:82 +#: ../finch/gntaccount.c:669 ../finch/gntblist.c:2121 ../finch/gntui.c:82 #: ../pidgin/gtkaccount.c:2325 ../pidgin/gtkdocklet.c:522 msgid "Accounts" msgstr "Účty" @@ -252,15 +252,16 @@ #. Add button #: ../finch/gntaccount.c:698 ../finch/gntaccount.c:888 ../finch/gntblist.c:343 -#: ../finch/gntblist.c:421 ../finch/gntblist.c:456 ../finch/gntcertmgr.c:306 -#: ../finch/gntnotify.c:380 ../finch/gntpounce.c:713 ../finch/gntstatus.c:199 -#: ../libpurple/protocols/gg/gg.c:883 ../libpurple/protocols/qq/sys_msg.c:114 +#: ../finch/gntblist.c:421 ../finch/gntblist.c:456 ../finch/gntblist.c:2372 +#: ../finch/gntcertmgr.c:306 ../finch/gntnotify.c:383 ../finch/gntpounce.c:713 +#: ../finch/gntstatus.c:199 ../libpurple/protocols/gg/gg.c:883 +#: ../libpurple/protocols/qq/sys_msg.c:114 #: ../libpurple/protocols/qq/sys_msg.c:173 #: ../libpurple/protocols/qq/sys_msg.c:267 #: ../libpurple/protocols/sametime/sametime.c:5486 #: ../libpurple/protocols/silc/chat.c:615 #: ../libpurple/protocols/silc10/chat.c:599 ../pidgin/gtkaccount.c:2494 -#: ../pidgin/gtkblist.c:5966 ../pidgin/gtkconv.c:1659 +#: ../pidgin/gtkblist.c:6266 ../pidgin/gtkconv.c:1712 #: ../pidgin/gtkrequest.c:275 msgid "Add" msgstr "Pridať" @@ -322,13 +323,13 @@ msgid "Error adding buddy" msgstr "Chyba počas pridávania priateľa" -#: ../finch/gntblist.c:325 ../libpurple/protocols/oscar/oscar.c:2888 +#: ../finch/gntblist.c:325 ../libpurple/protocols/oscar/oscar.c:2902 #: ../pidgin/gtkaccount.c:1981 ../pidgin/gtksavedstatuses.c:980 msgid "Screen Name" msgstr "Používateľské meno" #: ../finch/gntblist.c:328 ../finch/gntblist.c:410 ../finch/gntblist.c:1250 -#: ../libpurple/protocols/msn/msn.c:1395 +#: ../libpurple/protocols/msn/msn.c:1507 #: ../libpurple/protocols/silc/chat.c:606 #: ../libpurple/protocols/silc10/chat.c:590 #: ../libpurple/protocols/yahoo/yahoo_profile.c:704 @@ -344,10 +345,11 @@ msgstr "Skupina" #: ../finch/gntblist.c:335 ../finch/gntblist.c:401 ../finch/gntblist.c:1305 -#: ../finch/gntnotify.c:174 ../finch/gntstatus.c:576 -#: ../libpurple/plugins/idle.c:153 ../libpurple/plugins/idle.c:190 -#: ../pidgin/gtkblist.c:3008 ../pidgin/gtknotify.c:506 -#: ../pidgin/gtkpounce.c:1268 ../pidgin/plugins/gevolution/gevolution.c:445 +#: ../finch/gntblist.c:2210 ../finch/gntblist.c:2274 ../finch/gntnotify.c:174 +#: ../finch/gntstatus.c:576 ../libpurple/plugins/idle.c:153 +#: ../libpurple/plugins/idle.c:190 ../pidgin/gtkblist.c:3206 +#: ../pidgin/gtknotify.c:511 ../pidgin/gtkpounce.c:1275 +#: ../pidgin/plugins/gevolution/gevolution.c:445 msgid "Account" msgstr "Účet" @@ -360,7 +362,7 @@ #: ../libpurple/protocols/silc10/buddy.c:1033 #: ../libpurple/protocols/silc10/buddy.c:1080 #: ../libpurple/protocols/silc10/buddy.c:1180 -#: ../libpurple/protocols/yahoo/yahoo.c:3343 ../pidgin/gtkblist.c:5483 +#: ../libpurple/protocols/yahoo/yahoo.c:3345 ../pidgin/gtkblist.c:5772 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:445 msgid "Add Buddy" msgstr "Pridať priateľa" @@ -369,15 +371,16 @@ msgid "Please enter buddy information." msgstr "Zadajte, prosím, informáciu o priateľovi." -#: ../finch/gntblist.c:370 ../libpurple/blist.c:1209 +#: ../finch/gntblist.c:370 ../libpurple/blist.c:1210 msgid "Chats" msgstr "Chaty" #. Extract their Name and put it in -#: ../finch/gntblist.c:407 ../libpurple/protocols/jabber/jabber.c:924 +#: ../finch/gntblist.c:407 ../finch/gntblist.c:2205 +#: ../libpurple/protocols/jabber/jabber.c:924 #: ../libpurple/protocols/jabber/jabber.c:927 -#: ../libpurple/protocols/msn/msn.c:1584 ../libpurple/protocols/msn/msn.c:1649 -#: ../libpurple/protocols/msn/msn.c:1676 +#: ../libpurple/protocols/msn/msn.c:1694 ../libpurple/protocols/msn/msn.c:1759 +#: ../libpurple/protocols/msn/msn.c:1786 #: ../libpurple/protocols/qq/buddy_info.c:44 ../pidgin/gtkplugin.c:582 #: ../pidgin/gtkroomlist.c:618 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:132 @@ -389,7 +392,7 @@ msgid "Auto-join" msgstr "Prihlásiť automaticky" -#: ../finch/gntblist.c:419 ../finch/gntblist.c:854 ../pidgin/gtkblist.c:5859 +#: ../finch/gntblist.c:419 ../finch/gntblist.c:854 ../pidgin/gtkblist.c:6154 msgid "Add Chat" msgstr "Pridať chat" @@ -411,7 +414,7 @@ #: ../finch/gntblist.c:454 ../finch/gntblist.c:856 #: ../libpurple/protocols/sametime/sametime.c:5396 -#: ../libpurple/protocols/sametime/sametime.c:5484 ../pidgin/gtkblist.c:5963 +#: ../libpurple/protocols/sametime/sametime.c:5484 ../pidgin/gtkblist.c:6263 msgid "Add Group" msgstr "Pridať skupinu" @@ -443,7 +446,7 @@ msgid "Retrieving..." msgstr "Prijíma sa..." -#: ../finch/gntblist.c:904 ../finch/gntconv.c:507 +#: ../finch/gntblist.c:904 ../finch/gntconv.c:534 #: ../libpurple/protocols/silc/chat.c:899 #: ../libpurple/protocols/silc10/chat.c:883 msgid "Get Info" @@ -454,10 +457,10 @@ msgstr "Pridať sledovanie priateľa" #. if (q_bud && is_online(q_bud->status)) { -#: ../finch/gntblist.c:915 ../finch/gntconv.c:519 +#: ../finch/gntblist.c:915 ../finch/gntconv.c:546 #: ../libpurple/protocols/jabber/si.c:874 #: ../libpurple/protocols/oscar/oscar.c:654 ../libpurple/protocols/qq/qq.c:587 -#: ../pidgin/gtkconv.c:1607 +#: ../pidgin/gtkconv.c:1660 msgid "Send File" msgstr "Odoslať súbor" @@ -503,14 +506,14 @@ msgstr "Potvrdiť odstránenie" #: ../finch/gntblist.c:1100 ../finch/gntblist.c:1252 ../finch/gntft.c:227 -#: ../pidgin/gtkconv.c:1656 ../pidgin/gtkrequest.c:276 +#: ../pidgin/gtkconv.c:1709 ../pidgin/gtkrequest.c:276 #: ../pidgin/gtkstatusbox.c:264 msgid "Remove" msgstr "Odstrániť" #. Buddy List -#: ../finch/gntblist.c:1226 ../finch/gntblist.c:2307 ../finch/gntprefs.c:258 -#: ../finch/gntui.c:83 ../pidgin/gtkblist.c:2688 ../pidgin/gtkblist.c:4284 +#: ../finch/gntblist.c:1226 ../finch/gntblist.c:2422 ../finch/gntprefs.c:258 +#: ../finch/gntui.c:83 ../pidgin/gtkblist.c:2886 ../pidgin/gtkblist.c:4566 #: ../pidgin/plugins/win32/winprefs/winprefs.c:326 msgid "Buddy List" msgstr "Zoznam priateľov" @@ -529,15 +532,15 @@ #: ../libpurple/protocols/gg/gg.c:2207 #: ../libpurple/protocols/jabber/buddy.c:286 #: ../libpurple/protocols/jabber/buddy.c:1247 -#: ../libpurple/protocols/jabber/buddy.c:2214 -#: ../libpurple/protocols/jabber/buddy.c:2396 +#: ../libpurple/protocols/jabber/buddy.c:2217 +#: ../libpurple/protocols/jabber/buddy.c:2399 #: ../libpurple/protocols/jabber/jabber.c:937 #: ../libpurple/protocols/jabber/jabber.c:1544 #: ../libpurple/protocols/jabber/jabber.c:1567 #: ../libpurple/protocols/jabber/jabber.c:1590 #: ../libpurple/protocols/jabber/jabber.c:1613 #: ../libpurple/protocols/jabber/jabber.c:1636 -#: ../libpurple/protocols/msn/msn.c:1403 ../libpurple/protocols/msn/msn.c:1587 +#: ../libpurple/protocols/msn/msn.c:1515 ../libpurple/protocols/msn/msn.c:1697 #: ../libpurple/protocols/qq/buddy_info.c:43 #: ../libpurple/protocols/silc/buddy.c:1535 #: ../libpurple/protocols/silc/ops.c:1002 @@ -547,7 +550,7 @@ #: ../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:3032 +#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 ../pidgin/gtkblist.c:3230 msgid "Nickname" msgstr "Prezývka" @@ -556,12 +559,12 @@ #: ../libpurple/protocols/bonjour/bonjour.c:340 #: ../libpurple/protocols/jabber/buddy.c:787 #: ../libpurple/protocols/jabber/buddy.c:951 -#: ../libpurple/protocols/msn/msn.c:544 ../libpurple/protocols/msn/state.c:32 -#: ../libpurple/protocols/novell/novell.c:2825 -#: ../libpurple/protocols/oscar/oscar.c:2912 -#: ../libpurple/protocols/yahoo/yahoo.c:3097 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3060 -#: ../pidgin/gtkblist.c:3460 ../pidgin/gtkprefs.c:1925 +#: ../libpurple/protocols/msn/state.c:32 +#: ../libpurple/protocols/novell/novell.c:2830 +#: ../libpurple/protocols/oscar/oscar.c:2926 +#: ../libpurple/protocols/yahoo/yahoo.c:3099 +#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3258 +#: ../pidgin/gtkblist.c:3664 ../pidgin/gtkprefs.c:1927 msgid "Idle" msgstr "Nečinný" @@ -592,36 +595,26 @@ "\n" "Naposledy pripojený: %s dozadu" -#: ../finch/gntblist.c:1702 ../pidgin/gtkdocklet.c:470 +#: ../finch/gntblist.c:1704 ../pidgin/gtkdocklet.c:470 #: ../pidgin/gtkstatusbox.c:1072 msgid "New..." msgstr "Nový..." -#: ../finch/gntblist.c:1709 ../pidgin/gtkdocklet.c:471 +#: ../finch/gntblist.c:1711 ../pidgin/gtkdocklet.c:471 #: ../pidgin/gtkstatusbox.c:1073 msgid "Saved..." msgstr "Uložený..." -#: ../finch/gntblist.c:2087 ../finch/gntplugin.c:255 ../finch/gntui.c:88 +#: ../finch/gntblist.c:2089 ../finch/gntplugin.c:343 ../finch/gntui.c:88 #: ../pidgin/gtkdocklet.c:523 ../pidgin/gtkplugin.c:531 msgid "Plugins" msgstr "Moduly" -#: ../finch/gntblist.c:2203 ../pidgin/gtkdialogs.c:754 -#: ../pidgin/gtkdialogs.c:893 ../pidgin/gtkdialogs.c:974 -msgid "_Name" -msgstr "_Meno" - -#: ../finch/gntblist.c:2208 ../pidgin/gtkdialogs.c:759 -#: ../pidgin/gtkdialogs.c:898 ../pidgin/gtkdialogs.c:979 -msgid "_Account" -msgstr "Úč_et" - -#: ../finch/gntblist.c:2216 ../pidgin/gtkdialogs.c:767 +#: ../finch/gntblist.c:2218 ../pidgin/gtkdialogs.c:767 msgid "New Instant Message" msgstr "Nová správa" -#: ../finch/gntblist.c:2218 ../pidgin/gtkdialogs.c:769 +#: ../finch/gntblist.c:2220 ../pidgin/gtkdialogs.c:769 msgid "" "Please enter the screen name or alias of the person you would like to IM." msgstr "" @@ -631,15 +624,15 @@ #. Not multiline #. Not masked? #. No hints? -#: ../finch/gntblist.c:2221 ../finch/gntcertmgr.c:90 ../finch/gntconn.c:135 +#: ../finch/gntblist.c:2223 ../finch/gntcertmgr.c:90 ../finch/gntconn.c:136 #: ../finch/gntnotify.c:80 ../libpurple/account.c:1012 #: ../libpurple/account.c:1262 ../libpurple/protocols/gg/gg.c:506 #: ../libpurple/protocols/gg/gg.c:665 ../libpurple/protocols/gg/gg.c:802 #: ../libpurple/protocols/jabber/jabber.c:1736 #: ../libpurple/protocols/jabber/xdata.c:399 -#: ../libpurple/protocols/msn/msn.c:286 ../libpurple/protocols/msn/msn.c:303 -#: ../libpurple/protocols/msn/msn.c:320 ../libpurple/protocols/msn/msn.c:337 -#: ../libpurple/protocols/oscar/oscar.c:6093 +#: ../libpurple/protocols/msn/msn.c:289 ../libpurple/protocols/msn/msn.c:306 +#: ../libpurple/protocols/msn/msn.c:323 ../libpurple/protocols/msn/msn.c:340 +#: ../libpurple/protocols/oscar/oscar.c:6145 #: ../libpurple/protocols/silc/buddy.c:454 #: ../libpurple/protocols/silc/buddy.c:1190 #: ../libpurple/protocols/silc/chat.c:447 @@ -656,58 +649,83 @@ #: ../libpurple/protocols/silc10/ops.c:1297 #: ../libpurple/protocols/silc10/ops.c:1903 #: ../libpurple/protocols/silc10/silc.c:735 -#: ../libpurple/protocols/yahoo/yahoo.c:1031 -#: ../libpurple/protocols/yahoo/yahoo.c:3497 -#: ../libpurple/protocols/yahoo/yahoo.c:3508 ../pidgin/gtkblist.c:4039 +#: ../libpurple/protocols/yahoo/yahoo.c:1033 +#: ../libpurple/protocols/yahoo/yahoo.c:3499 +#: ../libpurple/protocols/yahoo/yahoo.c:3510 ../pidgin/gtkblist.c:4321 #: ../pidgin/gtkcertmgr.c:195 ../pidgin/gtkdialogs.c:772 #: ../pidgin/gtkdialogs.c:911 ../pidgin/gtkdialogs.c:1003 #: ../pidgin/gtkrequest.c:270 msgid "OK" msgstr "OK" +#: ../finch/gntblist.c:2270 +msgid "Channel" +msgstr "Kanál" + +#: ../finch/gntblist.c:2282 ../pidgin/gtkblist.c:924 +msgid "Join a Chat" +msgstr "Pripojiť sa k chatu" + +#: ../finch/gntblist.c:2284 +msgid "Please enter the name of the chat you want to join." +msgstr "Prosím, zadajte názov chatu na ktorý sa chcete pripojiť." + +#: ../finch/gntblist.c:2286 ../finch/gntnotify.c:392 +msgid "Join" +msgstr "Pripojiť" + #. Create the "Options" frame. -#: ../finch/gntblist.c:2241 ../finch/gntpounce.c:447 ../pidgin/gtkpounce.c:790 +#: ../finch/gntblist.c:2324 ../finch/gntpounce.c:447 ../pidgin/gtkpounce.c:797 msgid "Options" msgstr "Voľby" -#: ../finch/gntblist.c:2247 +#: ../finch/gntblist.c:2330 msgid "Send IM..." msgstr "Odoslať správu..." -#: ../finch/gntblist.c:2251 -#, fuzzy -msgid "Show empty groups" -msgstr "Zobraziť prázdne skupiny" - -#: ../finch/gntblist.c:2257 -#, fuzzy -msgid "Show offline buddies" -msgstr "Zobraziť odpojených priateľov" - -#: ../finch/gntblist.c:2263 -msgid "Sort by status" -msgstr "Zoradiť podľa stavu" - -#: ../finch/gntblist.c:2267 -msgid "Sort alphabetically" -msgstr "Zoradiť podľa abecedy" - -#: ../finch/gntblist.c:2271 -msgid "Sort by log size" -msgstr "Zoradiť podľa veľkosti záznamu" +#: ../finch/gntblist.c:2334 +msgid "Join Chat..." +msgstr "Pripojiť sa na chat..." + +#: ../finch/gntblist.c:2338 +msgid "Show" +msgstr "Zobraziť" + +#: ../finch/gntblist.c:2343 +msgid "Empty groups" +msgstr "Prázdne skupiny" + +#: ../finch/gntblist.c:2349 +msgid "Offline buddies" +msgstr "Odpojených priateľov" + +#: ../finch/gntblist.c:2355 +msgid "Sort" +msgstr "Zoradiť" + +#: ../finch/gntblist.c:2360 +msgid "By Status" +msgstr "Podľa stavu" + +#: ../finch/gntblist.c:2364 ../pidgin/gtkblist.c:4106 +msgid "Alphabetically" +msgstr "Podľa abecedy" + +#: ../finch/gntblist.c:2368 +msgid "By Log Size" +msgstr "Podľa veľkosti záznamu" #: ../finch/gntcertmgr.c:86 ../pidgin/gtkcertmgr.c:188 -#, fuzzy msgid "Certificate Import" -msgstr "Certifikáty" +msgstr "Import certifikátu" #: ../finch/gntcertmgr.c:87 ../pidgin/gtkcertmgr.c:189 msgid "Specify a hostname" -msgstr "" +msgstr "Zadajte názov hostiteľa" #: ../finch/gntcertmgr.c:88 ../pidgin/gtkcertmgr.c:190 msgid "Type the host name this certificate is for." -msgstr "" +msgstr "Zadajte názov hostiteľa, komu je určený tento certifikát." #: ../finch/gntcertmgr.c:97 ../pidgin/gtkcertmgr.c:210 #, c-format @@ -715,21 +733,20 @@ "File %s could not be imported.\n" "Make sure that the file is readable and in PEM format.\n" msgstr "" +"Nie je možné importovať súbor %s.\n" +"Skontrolujte, či je ho možné čítať a či je vo formáte PEM.\n" #: ../finch/gntcertmgr.c:99 ../pidgin/gtkcertmgr.c:212 -#, fuzzy msgid "Certificate Import Error" -msgstr "Certifikáty" +msgstr "Chyba pri importe certifikátu" #: ../finch/gntcertmgr.c:100 ../pidgin/gtkcertmgr.c:213 -#, fuzzy msgid "X.509 certificate import failed" -msgstr "X.509 certifikáty" +msgstr "Import X.509 certifikátu zlyhal" #: ../finch/gntcertmgr.c:110 ../pidgin/gtkcertmgr.c:224 -#, fuzzy msgid "Select a PEM certificate" -msgstr "Vyberte súbor" +msgstr "Vyberte PEM certifikát" #: ../finch/gntcertmgr.c:127 ../pidgin/gtkcertmgr.c:245 #, c-format @@ -737,26 +754,25 @@ "Export to file %s failed.\n" "Check that you have write permission to the target path\n" msgstr "" +"Export do súboru %s zlyhal.\n" +"Skontrolujte, či máte právo na zápis do cieľového umiestnenia\n" #: ../finch/gntcertmgr.c:129 ../pidgin/gtkcertmgr.c:247 -#, fuzzy msgid "Certificate Export Error" -msgstr "Certifikáty" +msgstr "Chyba exportu certifikátu" #: ../finch/gntcertmgr.c:130 ../pidgin/gtkcertmgr.c:248 -#, fuzzy msgid "X.509 certificate export failed" -msgstr "X.509 certifikáty" +msgstr "Export X.509 certifikátu zlyhal" #: ../finch/gntcertmgr.c:159 ../pidgin/gtkcertmgr.c:299 -#, fuzzy msgid "PEM X.509 Certificate Export" -msgstr "X.509 certifikáty" +msgstr "Export PEM X.509 certifikátu" #: ../finch/gntcertmgr.c:188 -#, fuzzy, c-format +#, c-format msgid "Certificate for %s" -msgstr "Certifikáty" +msgstr "Certifikát pre %s" #: ../finch/gntcertmgr.c:195 #, c-format @@ -766,25 +782,27 @@ "SHA1 fingerprint:\n" "%s" msgstr "" +"Bežný názov: %s\n" +"\n" +"SHA1 odtlačok:\n" +"%s" #: ../finch/gntcertmgr.c:198 -#, fuzzy msgid "SSL Host Certificate" -msgstr "Certifikáty" +msgstr "SSL certifikát hostiteľa" #: ../finch/gntcertmgr.c:233 ../pidgin/gtkcertmgr.c:372 #, c-format msgid "Really delete certificate for %s?" -msgstr "" +msgstr "Naozaj chcete odstrániť certifikát pre %s?" #: ../finch/gntcertmgr.c:236 ../pidgin/gtkcertmgr.c:374 msgid "Confirm certificate delete" -msgstr "" +msgstr "Potvrdiť odstránenie certifikátu" #: ../finch/gntcertmgr.c:293 ../pidgin/gtkcertmgr.c:602 -#, fuzzy msgid "Certificate Manager" -msgstr "Certifikáty" +msgstr "Manažér certifikátov" #. Creating the user splits #: ../finch/gntcertmgr.c:298 ../libpurple/protocols/bonjour/bonjour.c:652 @@ -793,32 +811,32 @@ msgid "Hostname" msgstr "Názov hostiteľa" -#: ../finch/gntcertmgr.c:315 ../finch/gntnotify.c:383 ../pidgin/gtkconv.c:1635 +#: ../finch/gntcertmgr.c:315 ../finch/gntnotify.c:386 ../pidgin/gtkconv.c:1688 #: ../pidgin/gtkdebug.c:835 msgid "Info" msgstr "Podrobnosti" #. Close button #: ../finch/gntcertmgr.c:324 ../finch/gntft.c:237 ../finch/gntnotify.c:182 -#: ../finch/gntplugin.c:210 ../finch/gntplugin.c:310 ../finch/gntpounce.c:738 -#: ../finch/gntstatus.c:216 ../libpurple/protocols/msn/msn.c:403 +#: ../finch/gntplugin.c:211 ../finch/gntplugin.c:403 ../finch/gntpounce.c:738 +#: ../finch/gntstatus.c:216 ../libpurple/protocols/msn/msn.c:406 #: ../libpurple/protocols/silc/util.c:382 #: ../libpurple/protocols/silc10/util.c:377 ../pidgin/gtkaccount.c:2468 #: ../pidgin/gtkrequest.c:273 msgid "Close" msgstr "Zavrieť" -#: ../finch/gntconn.c:124 +#: ../finch/gntconn.c:125 #, c-format msgid "%s (%s)" msgstr "%s (%s)" -#: ../finch/gntconn.c:127 +#: ../finch/gntconn.c:128 #, c-format msgid "%s disconnected." msgstr "%s je odpojený." -#: ../finch/gntconn.c:128 +#: ../finch/gntconn.c:129 #, c-format msgid "" "%s\n" @@ -831,7 +849,7 @@ "Finch sa nebude pokúšať znovu pripojiť na tento účet, dokým neopravíte chybu " "a znovu nepovolíte tento účet." -#: ../finch/gntconn.c:137 ../pidgin/gtkblist.c:4041 +#: ../finch/gntconn.c:138 ../pidgin/gtkblist.c:4323 msgid "Re-enable Account" msgstr "Znovu povoliť účet" @@ -839,23 +857,23 @@ msgid "No such command." msgstr "Tento príkaz neexistuje." -#: ../finch/gntconv.c:143 ../pidgin/gtkconv.c:489 +#: ../finch/gntconv.c:143 ../pidgin/gtkconv.c:530 msgid "Syntax Error: You typed the wrong number of arguments to that command." msgstr "Chyba syntaxi: V príkaze ste zadali nesprávny počet argumentov." -#: ../finch/gntconv.c:148 ../pidgin/gtkconv.c:495 +#: ../finch/gntconv.c:148 ../pidgin/gtkconv.c:536 msgid "Your command failed for an unknown reason." msgstr "Váš príkaz zlyhal z neznámeho dôvodu." -#: ../finch/gntconv.c:153 ../pidgin/gtkconv.c:502 +#: ../finch/gntconv.c:153 ../pidgin/gtkconv.c:543 msgid "That command only works in chats, not IMs." msgstr "Tento príkaz funguje len v chatoch, nie v IM." -#: ../finch/gntconv.c:156 ../pidgin/gtkconv.c:505 +#: ../finch/gntconv.c:156 ../pidgin/gtkconv.c:546 msgid "That command only works in IMs, not chats." msgstr "Tento príkaz funguje len v IM, nie v chatoch." -#: ../finch/gntconv.c:160 ../pidgin/gtkconv.c:510 +#: ../finch/gntconv.c:160 ../pidgin/gtkconv.c:551 msgid "That command doesn't work on this protocol." msgstr "Tento príkaz nefunguje v tomto protokole." @@ -873,7 +891,7 @@ msgid "%s [%s]" msgstr "%s [%s]" -#: ../finch/gntconv.c:279 ../finch/gntconv.c:773 +#: ../finch/gntconv.c:279 ../finch/gntconv.c:801 #, c-format msgid "" "\n" @@ -886,65 +904,65 @@ msgid "You have left this chat." msgstr "Opustili ste tento chat." -#: ../finch/gntconv.c:387 ../pidgin/gtkconv.c:1362 +#: ../finch/gntconv.c:414 ../pidgin/gtkconv.c:1415 msgid "Logging started. Future messages in this conversation will be logged." msgstr "" "Zaznamenávanie bolo spustené. Nasledujúce správy v rozhovore budú " "zaznamenané." -#: ../finch/gntconv.c:393 ../pidgin/gtkconv.c:1370 +#: ../finch/gntconv.c:420 ../pidgin/gtkconv.c:1423 msgid "" "Logging stopped. Future messages in this conversation will not be logged." msgstr "" "Zaznamenávanie bolo zastavené. Nasledujúce správy v rozhovore už nebudú " "zaznamenané." -#: ../finch/gntconv.c:442 +#: ../finch/gntconv.c:469 msgid "Send To" msgstr "Odoslať do" -#: ../finch/gntconv.c:486 +#: ../finch/gntconv.c:513 msgid "Conversation" msgstr "Rozhovor" -#: ../finch/gntconv.c:492 +#: ../finch/gntconv.c:519 msgid "Clear Scrollback" msgstr "Vymazať záznam" -#: ../finch/gntconv.c:496 ../finch/gntprefs.c:191 +#: ../finch/gntconv.c:523 ../finch/gntprefs.c:191 msgid "Show Timestamps" msgstr "Zobrazovať časové značky" -#: ../finch/gntconv.c:512 +#: ../finch/gntconv.c:539 msgid "Add Buddy Pounce..." msgstr "Pridať sledovanie priateľa..." -#: ../finch/gntconv.c:527 +#: ../finch/gntconv.c:554 msgid "Enable Logging" msgstr "Zapnúť zaznamenávanie" -#: ../finch/gntconv.c:533 +#: ../finch/gntconv.c:560 msgid "Enable Sounds" msgstr "Zapnúť zvuky" -#: ../finch/gntconv.c:739 +#: ../finch/gntconv.c:766 msgid " " msgstr " " #. Print the list of users in the room -#: ../finch/gntconv.c:861 +#: ../finch/gntconv.c:889 msgid "List of users:\n" msgstr "Zoznam používateľov:\n" -#: ../finch/gntconv.c:1023 ../pidgin/gtkconv.c:331 +#: ../finch/gntconv.c:1051 ../pidgin/gtkconv.c:370 msgid "Supported debug options are: version" msgstr "Podporované ladiace voľby sú: version" -#: ../finch/gntconv.c:1059 ../pidgin/gtkconv.c:381 +#: ../finch/gntconv.c:1087 ../pidgin/gtkconv.c:422 msgid "No such command (in this context)." msgstr "Tento príkaz neexistuje (v tejto situácii)." -#: ../finch/gntconv.c:1062 ../pidgin/gtkconv.c:384 +#: ../finch/gntconv.c:1090 ../pidgin/gtkconv.c:425 msgid "" "Use \"/help <command>\" for help on a specific command.\n" "The following commands are available in this context:\n" @@ -952,60 +970,65 @@ "Pomocníka ku zadanému príkazu zobrazíte zadaním „/help <príkaz>“.\n" "V tomto kontexte sú dostupné nasledujúce príkazy:\n" -#: ../finch/gntconv.c:1120 ../pidgin/gtkconv.c:7560 +#: ../finch/gntconv.c:1148 ../pidgin/gtkconv.c:7644 msgid "" "say <message>: Send a message normally as if you weren't using a " "command." msgstr "say <správa>: Odošle správu rovnako, ako bez použitia príkazu." -#: ../finch/gntconv.c:1123 ../pidgin/gtkconv.c:7563 +#: ../finch/gntconv.c:1151 ../pidgin/gtkconv.c:7647 msgid "me <action>: Send an IRC style action to a buddy or chat." msgstr "me <akcia>: Odošle priateľovi alebo na chat akciu v štýle IRC." -#: ../finch/gntconv.c:1126 ../pidgin/gtkconv.c:7566 +#: ../finch/gntconv.c:1154 ../pidgin/gtkconv.c:7650 msgid "" "debug <option>: Send various debug information to the current " "conversation." msgstr "" "debug <voľby>: Do aktuálneho rozhovoru vloží rôzne ladiace informácie." -#: ../finch/gntconv.c:1129 ../pidgin/gtkconv.c:7569 +#: ../finch/gntconv.c:1157 ../pidgin/gtkconv.c:7653 msgid "clear: Clears the conversation scrollback." msgstr "clear: Vyčistí okno rozhovoru." -#: ../finch/gntconv.c:1132 ../pidgin/gtkconv.c:7575 +#: ../finch/gntconv.c:1160 ../pidgin/gtkconv.c:7659 msgid "help <command>: Help on a specific command." msgstr "help <príkaz>: Zobrazí pomocníka ku zadanému príkazu." -#: ../finch/gntconv.c:1135 +#: ../finch/gntconv.c:1163 msgid "users: Show the list of users in the chat." msgstr "users: Zobrazí zoznam používateľov na chate." -#: ../finch/gntconv.c:1140 +#: ../finch/gntconv.c:1168 msgid "plugins: Show the plugins window." msgstr "plugins: Zobrazí okno modulov." -#: ../finch/gntconv.c:1143 +#: ../finch/gntconv.c:1171 msgid "buddylist: Show the buddylist." msgstr "zoznam kamarátov: Zobraziť zoznam." -#: ../finch/gntconv.c:1146 +#: ../finch/gntconv.c:1174 msgid "accounts: Show the accounts window." msgstr "účty: Zobraziť okno s účtami." -#: ../finch/gntconv.c:1149 +#: ../finch/gntconv.c:1177 msgid "debugwin: Show the debug window." msgstr "ladiace okno: Zobraziť ladiace okno" -#: ../finch/gntconv.c:1152 +#: ../finch/gntconv.c:1180 msgid "prefs: Show the preference window." msgstr "vlastnosti: Zobraziť okno vlastností" -#: ../finch/gntconv.c:1155 +#: ../finch/gntconv.c:1183 msgid "statuses: Show the savedstatuses window." msgstr "stavy: Zobraziť okno stavov." -#: ../finch/gntdebug.c:235 ../finch/gntui.c:86 ../pidgin/gtkdebug.c:695 +#: ../finch/gntdebug.c:231 ../pidgin/gtkconv.c:988 ../pidgin/gtkconv.c:2657 +#: ../pidgin/gtkdebug.c:219 ../pidgin/gtkft.c:543 +msgid "Unable to open file." +msgstr "Nepodarilo sa otvoriť súbor." + +#: ../finch/gntdebug.c:271 ../finch/gntui.c:86 ../pidgin/gtkdebug.c:695 msgid "Debug Window" msgstr "Ladiace okno" @@ -1013,15 +1036,15 @@ #. * 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:256 ../pidgin/gtkdebug.c:754 +#: ../finch/gntdebug.c:292 ../pidgin/gtkdebug.c:754 msgid "Clear" msgstr "Vyčistiť" -#: ../finch/gntdebug.c:262 -msgid "Filter: " +#: ../finch/gntdebug.c:303 +msgid "Filter:" msgstr "Filter: " -#: ../finch/gntdebug.c:266 ../pidgin/gtkdebug.c:763 +#: ../finch/gntdebug.c:309 ../pidgin/gtkdebug.c:763 msgid "Pause" msgstr "Pozastaviť" @@ -1065,17 +1088,17 @@ #: ../libpurple/protocols/jabber/buddy.c:782 #: ../libpurple/protocols/jabber/buddy.c:941 #: ../libpurple/protocols/jabber/jabber.c:1500 -#: ../libpurple/protocols/msn/msn.c:543 -#: ../libpurple/protocols/novell/novell.c:2835 +#: ../libpurple/protocols/msn/msn.c:596 ../libpurple/protocols/msn/msn.c:603 +#: ../libpurple/protocols/novell/novell.c:2840 #: ../libpurple/protocols/oscar/oscar.c:821 #: ../libpurple/protocols/oscar/oscar.c:826 #: ../libpurple/protocols/oscar/oscar.c:828 -#: ../libpurple/protocols/oscar/oscar.c:2700 -#: ../libpurple/protocols/oscar/oscar.c:3780 +#: ../libpurple/protocols/oscar/oscar.c:2714 +#: ../libpurple/protocols/oscar/oscar.c:3794 #: ../libpurple/protocols/sametime/sametime.c:3263 #: ../libpurple/protocols/sametime/sametime.c:4150 -#: ../libpurple/protocols/yahoo/yahoo.c:3248 ../pidgin/gtkblist.c:3104 -#: ../pidgin/gtkblist.c:3118 ../pidgin/gtkblist.c:3120 +#: ../libpurple/protocols/yahoo/yahoo.c:3250 ../pidgin/gtkblist.c:3302 +#: ../pidgin/gtkblist.c:3316 ../pidgin/gtkblist.c:3318 #: ../pidgin/gtksavedstatuses.c:999 ../pidgin/gtksavedstatuses.c:1144 msgid "Status" msgstr "Stav" @@ -1119,7 +1142,7 @@ msgid "Finished" msgstr "Dokončené" -#: ../finch/gntft.c:437 ../libpurple/protocols/msn/session.c:347 +#: ../finch/gntft.c:437 ../libpurple/protocols/msn/session.c:386 msgid "Transferring" msgstr "Prenáša sa" @@ -1131,11 +1154,11 @@ msgid "You have mail!" msgstr "Máte poštu!" -#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:513 +#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:518 msgid "Sender" msgstr "Odosielateľ" -#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:520 +#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:525 msgid "Subject" msgstr "Predmet" @@ -1151,49 +1174,45 @@ msgid "New Mail" msgstr "Nová pošta" -#: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940 +#: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:947 #, c-format msgid "Info for %s" -msgstr "Podrobnosti o %s" +msgstr "Podrobnosti o priateľovi %s" #: ../finch/gntnotify.c:291 ../libpurple/protocols/toc/toc.c:476 -#: ../pidgin/gtknotify.c:941 +#: ../pidgin/gtknotify.c:948 msgid "Buddy Information" msgstr "Podrobnosti o priateľovi" -#: ../finch/gntnotify.c:377 ../libpurple/protocols/qq/group_join.c:367 +#: ../finch/gntnotify.c:380 ../libpurple/protocols/qq/group_join.c:367 msgid "Continue" msgstr "Pokračovať" -#: ../finch/gntnotify.c:386 ../pidgin/gtkconv.c:1596 +#: ../finch/gntnotify.c:389 ../pidgin/gtkconv.c:1649 msgid "IM" msgstr "Napísať správu" -#: ../finch/gntnotify.c:389 -msgid "Join" -msgstr "Pripojiť" - -#: ../finch/gntnotify.c:392 ../libpurple/protocols/sametime/sametime.c:3473 +#: ../finch/gntnotify.c:395 ../libpurple/protocols/sametime/sametime.c:3473 msgid "Invite" msgstr "Pozvať" -#: ../finch/gntnotify.c:395 +#: ../finch/gntnotify.c:398 msgid "(none)" msgstr "(žiadne)" -#: ../finch/gntplugin.c:75 ../finch/gntplugin.c:84 +#: ../finch/gntplugin.c:76 ../finch/gntplugin.c:85 msgid "ERROR" msgstr "CHYBA" -#: ../finch/gntplugin.c:75 +#: ../finch/gntplugin.c:76 msgid "loading plugin failed" msgstr "načítavanie modulu zlyhalo" -#: ../finch/gntplugin.c:84 +#: ../finch/gntplugin.c:85 msgid "unloading plugin failed" msgstr "ukončenie modulu zlyhalo" -#: ../finch/gntplugin.c:129 +#: ../finch/gntplugin.c:130 #, c-format msgid "" "Name: %s\n" @@ -1210,19 +1229,41 @@ "Domovská stránka: %s\n" "Názov súboru: %s\n" -#: ../finch/gntplugin.c:187 +#: ../finch/gntplugin.c:188 msgid "Plugin need to be loaded before you can configure it." msgstr "Prosím, zapnite tento modul, ak ho chcete konfigurovať." -#: ../finch/gntplugin.c:235 +#: ../finch/gntplugin.c:236 msgid "No configuration options for this plugin." msgstr "Tento modul sa nedá konfigurovať." -#: ../finch/gntplugin.c:260 +#: ../finch/gntplugin.c:257 +msgid "Error loading plugin" +msgstr "Chyba pri načítavaní modulu" + +#: ../finch/gntplugin.c:258 +msgid "The selected file is not a valid plugin." +msgstr "Vybraný súbor nie je správny modul." + +#: ../finch/gntplugin.c:259 +msgid "" +"Please open the debug window and try again to see the exact error message." +msgstr "" +"Prosím, otvorte ladiace okno a skúste to znovu. Mala by sa vám zobraziť presná chybová správa." + +#: ../finch/gntplugin.c:322 +msgid "Select plugin to install" +msgstr "Vyberte modul, ktorý chcete nainštalovať" + +#: ../finch/gntplugin.c:348 msgid "You can (un)load plugins from the following list." msgstr "V nasledujúcom zozname je možné zapínať a vypínať moduly." -#: ../finch/gntplugin.c:315 +#: ../finch/gntplugin.c:399 +msgid "Install Plugin..." +msgstr "Inštalovať modul..." + +#: ../finch/gntplugin.c:408 msgid "Configure Plugin" msgstr "Konfigurovať modul" @@ -1231,8 +1272,8 @@ #. (that should have been "effect," right?) #. Back to instant-apply! I win! BU-HAHAHA! #. Create the window -#: ../finch/gntplugin.c:371 ../finch/gntplugin.c:378 ../finch/gntprefs.c:264 -#: ../finch/gntui.c:90 ../pidgin/gtkdocklet.c:524 ../pidgin/gtkprefs.c:2067 +#: ../finch/gntplugin.c:464 ../finch/gntplugin.c:471 ../finch/gntprefs.c:264 +#: ../finch/gntui.c:90 ../pidgin/gtkdocklet.c:524 ../pidgin/gtkprefs.c:2069 msgid "Preferences" msgstr "Nastavenia" @@ -1240,11 +1281,11 @@ msgid "Please enter a buddy to pounce." msgstr "Zadajte, prosím, priateľa, ktorého chcete sledovať." -#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517 +#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:524 msgid "New Buddy Pounce" msgstr "Nové sledovanie priateľa" -#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517 +#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:524 msgid "Edit Buddy Pounce" msgstr "Upraviť sledovanie priateľa" @@ -1262,7 +1303,7 @@ msgstr "Meno priateľa:" #. Create the "Pounce When Buddy..." frame. -#: ../finch/gntpounce.c:374 ../pidgin/gtkpounce.c:585 +#: ../finch/gntpounce.c:374 ../pidgin/gtkpounce.c:592 msgid "Pounce When Buddy..." msgstr "Sledovať keď priateľ..." @@ -1307,7 +1348,7 @@ msgstr "Pošle správu" #. Create the "Action" frame. -#: ../finch/gntpounce.c:414 ../pidgin/gtkpounce.c:646 +#: ../finch/gntpounce.c:414 ../pidgin/gtkpounce.c:653 msgid "Action" msgstr "Akcia" @@ -1335,7 +1376,7 @@ msgid "Pounce only when my status is not available" msgstr "Sledovať, len ak som nedostupný" -#: ../finch/gntpounce.c:450 ../pidgin/gtkpounce.c:1281 +#: ../finch/gntpounce.c:450 ../pidgin/gtkpounce.c:1288 msgid "Recurring" msgstr "Opakujúci sa" @@ -1351,67 +1392,66 @@ msgid "You must create an account first before you can create a pounce." msgstr "Pred tým než spustíte sledovanie si musíte pridať účet." -#: ../finch/gntpounce.c:662 ../pidgin/gtkpounce.c:1096 +#: ../finch/gntpounce.c:662 ../pidgin/gtkpounce.c:1103 #, c-format msgid "Are you sure you want to delete the pounce on %s for %s?" -msgstr "Ste si istý, že chcete odstrániť sledovanie na %s pre %s?" - -#: ../finch/gntpounce.c:696 ../finch/gntui.c:84 ../pidgin/gtkpounce.c:1325 +msgstr "Ste si istý, že chcete odstrániť sledovanie priateľa %s v účte %s?" + +#: ../finch/gntpounce.c:696 ../finch/gntui.c:84 ../pidgin/gtkpounce.c:1332 msgid "Buddy Pounces" msgstr "Sledovanie priateľov" -#: ../finch/gntpounce.c:810 ../pidgin/gtkpounce.c:1452 +#: ../finch/gntpounce.c:810 ../pidgin/gtkpounce.c:1459 #, c-format msgid "%s has started typing to you (%s)" msgstr "používateľ %s vám začal písať (%s)" -#: ../finch/gntpounce.c:812 ../pidgin/gtkpounce.c:1454 +#: ../finch/gntpounce.c:812 ../pidgin/gtkpounce.c:1461 #, c-format msgid "%s has paused while typing to you (%s)" msgstr "používteľ %s vám prestal písať (%s)" -#: ../finch/gntpounce.c:814 ../pidgin/gtkpounce.c:1456 +#: ../finch/gntpounce.c:814 ../pidgin/gtkpounce.c:1463 #, c-format msgid "%s has signed on (%s)" msgstr "používateľ %s sa prihlásil (%s)" -#: ../finch/gntpounce.c:816 ../pidgin/gtkpounce.c:1458 +#: ../finch/gntpounce.c:816 ../pidgin/gtkpounce.c:1465 #, c-format msgid "%s has returned from being idle (%s)" msgstr "používateľ %s prestal byť nečinný (%s)" -#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1460 +#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1467 #, c-format msgid "%s has returned from being away (%s)" msgstr "používateľ %s sa vrátil (%s)" -#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1462 +#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1469 #, c-format msgid "%s has stopped typing to you (%s)" msgstr "používateľ %s vám nenapísal (%s)" -#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1464 +#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1471 #, c-format msgid "%s has signed off (%s)" msgstr "používateľ %s sa odhlásil (%s)" -#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1466 +#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1473 #, c-format msgid "%s has become idle (%s)" msgstr "používateľ %s sa stal nečinným (%s)" -#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1468 +#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1475 #, c-format msgid "%s has gone away. (%s)" msgstr "používateľ %s sa stal neprítomným (%s)" -#: ../finch/gntpounce.c:828 ../pidgin/gtkpounce.c:1470 +#: ../finch/gntpounce.c:828 ../pidgin/gtkpounce.c:1477 #, c-format msgid "%s has sent you a message. (%s)" msgstr "používateľ %s vám poslal správu. (%s)" -#: ../finch/gntpounce.c:829 ../pidgin/gtkpounce.c:1471 -#, c-format +#: ../finch/gntpounce.c:829 ../pidgin/gtkpounce.c:1478 msgid "Unknown pounce event. Please report this!" msgstr "Neznáma udalosť sledovania. Oznámte to, prosím!" @@ -1419,12 +1459,12 @@ msgid "Based on keyboard use" msgstr "Podľa využitia klávesnice" -#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:1930 +#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:1932 msgid "From last sent message" msgstr "Podľa naposledy odoslanej správy" #: ../finch/gntprefs.c:96 ../pidgin/gtkprefs.c:898 ../pidgin/gtkprefs.c:907 -#: ../pidgin/gtkprefs.c:1929 ../pidgin/gtkprefs.c:1943 +#: ../pidgin/gtkprefs.c:1931 ../pidgin/gtkprefs.c:1945 #: ../pidgin/plugins/win32/winprefs/winprefs.c:333 msgid "Never" msgstr "Nikdy" @@ -1474,25 +1514,25 @@ msgstr "Zmeniť stav na:" #. Conversations -#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:993 ../pidgin/gtkprefs.c:2033 +#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:993 ../pidgin/gtkprefs.c:2035 #: ../pidgin/plugins/win32/winprefs/winprefs.c:340 msgid "Conversations" msgstr "Rozhovory" -#: ../finch/gntprefs.c:260 ../pidgin/gtkprefs.c:1467 ../pidgin/gtkprefs.c:2044 +#: ../finch/gntprefs.c:260 ../pidgin/gtkprefs.c:1469 ../pidgin/gtkprefs.c:2046 msgid "Logging" msgstr "Zaznamenávanie" -#: ../finch/gntrequest.c:583 +#: ../finch/gntrequest.c:585 msgid "Not implemented yet." msgstr "Zatiaľ nie je implementované." -#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1555 +#: ../finch/gntrequest.c:661 ../pidgin/gtkrequest.c:1555 #: ../pidgin/gtkrequest.c:1601 msgid "Save File..." msgstr "Uložiť súbor..." -#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1556 +#: ../finch/gntrequest.c:661 ../pidgin/gtkrequest.c:1556 #: ../pidgin/gtkrequest.c:1602 msgid "Open File..." msgstr "Otvoriť súbor..." @@ -1545,8 +1585,8 @@ msgid "GStreamer failed to initialize." msgstr "Nepodarilo sa inicializovať rozhranie GStreamer" -#: ../finch/gntsound.c:716 ../finch/gntsound.c:802 ../pidgin/gtkprefs.c:1587 -#: ../pidgin/gtkprefs.c:1676 ../pidgin/gtkprefs.c:1872 +#: ../finch/gntsound.c:716 ../finch/gntsound.c:802 ../pidgin/gtkprefs.c:1589 +#: ../pidgin/gtkprefs.c:1678 ../pidgin/gtkprefs.c:1874 msgid "(default)" msgstr "(štandardné)" @@ -1562,7 +1602,7 @@ msgid "Profiles" msgstr "Profily" -#: ../finch/gntsound.c:954 ../pidgin/gtkprefs.c:1717 +#: ../finch/gntsound.c:954 ../pidgin/gtkprefs.c:1719 msgid "Automatic" msgstr "Automaticky" @@ -1570,7 +1610,7 @@ msgid "Console Beep" msgstr "Pípnutie konzoly" -#: ../finch/gntsound.c:958 ../pidgin/gtkprefs.c:1721 +#: ../finch/gntsound.c:958 ../pidgin/gtkprefs.c:1723 msgid "Command" msgstr "Príkaz" @@ -1578,7 +1618,7 @@ msgid "No Sound" msgstr "Žiadne zvuky" -#: ../finch/gntsound.c:961 ../pidgin/gtkprefs.c:1712 +#: ../finch/gntsound.c:961 ../pidgin/gtkprefs.c:1714 msgid "Sound Method" msgstr "Metóda zvukov" @@ -1596,7 +1636,7 @@ "(%s pre názov súboru)" #. Sound options -#: ../finch/gntsound.c:981 ../pidgin/gtkprefs.c:1756 +#: ../finch/gntsound.c:981 ../pidgin/gtkprefs.c:1758 msgid "Sound Options" msgstr "Možnosti zvuku" @@ -1605,17 +1645,17 @@ msgstr "Prehrávať zvuky, keď je okno koverzácie aktívne" #: ../finch/gntsound.c:990 ../pidgin/gtkprefs.c:897 ../pidgin/gtkprefs.c:909 -#: ../pidgin/gtkprefs.c:1763 ../pidgin/plugins/timestamp_format.c:42 +#: ../pidgin/gtkprefs.c:1765 ../pidgin/plugins/timestamp_format.c:42 #: ../pidgin/plugins/timestamp_format.c:51 #: ../pidgin/plugins/win32/winprefs/winprefs.c:334 msgid "Always" msgstr "Vždy" -#: ../finch/gntsound.c:991 ../pidgin/gtkprefs.c:1761 +#: ../finch/gntsound.c:991 ../pidgin/gtkprefs.c:1763 msgid "Only when available" msgstr "Len ak sú dostupné" -#: ../finch/gntsound.c:992 ../pidgin/gtkprefs.c:1762 +#: ../finch/gntsound.c:992 ../pidgin/gtkprefs.c:1764 msgid "Only when not available" msgstr "Len ak sú nedostupné" @@ -1624,11 +1664,11 @@ msgstr "Hlasitosť(0-100):" #. Sound events -#: ../finch/gntsound.c:1018 ../pidgin/gtkprefs.c:1798 +#: ../finch/gntsound.c:1018 ../pidgin/gtkprefs.c:1800 msgid "Sound Events" msgstr "Zvukové udalosti" -#: ../finch/gntsound.c:1020 ../pidgin/gtkprefs.c:1857 +#: ../finch/gntsound.c:1020 ../pidgin/gtkprefs.c:1859 msgid "Event" msgstr "Udalosť" @@ -1636,15 +1676,15 @@ msgid "File" msgstr "Súbor" -#: ../finch/gntsound.c:1039 ../pidgin/gtkprefs.c:1876 +#: ../finch/gntsound.c:1039 ../pidgin/gtkprefs.c:1878 msgid "Test" msgstr "Ukážka" -#: ../finch/gntsound.c:1042 ../pidgin/gtkprefs.c:1880 +#: ../finch/gntsound.c:1042 ../pidgin/gtkprefs.c:1882 msgid "Reset" msgstr "Obnoviť" -#: ../finch/gntsound.c:1045 ../pidgin/gtkprefs.c:1884 +#: ../finch/gntsound.c:1045 ../pidgin/gtkprefs.c:1886 msgid "Choose..." msgstr "Vybrať..." @@ -1664,7 +1704,7 @@ #: ../finch/gntstatus.c:183 ../finch/gntstatus.c:539 #: ../libpurple/protocols/jabber/buddy.c:298 #: ../libpurple/protocols/jabber/buddy.c:1359 -#: ../libpurple/protocols/novell/novell.c:1484 +#: ../libpurple/protocols/novell/novell.c:1486 #: ../pidgin/gtksavedstatuses.c:500 msgid "Title" msgstr "Nadpis" @@ -1695,17 +1735,20 @@ #: ../libpurple/protocols/jabber/jabber.c:1601 #: ../libpurple/protocols/jabber/jabber.c:1624 #: ../libpurple/protocols/jabber/jabber.c:1649 +#: ../libpurple/protocols/msn/msn.c:634 ../libpurple/protocols/msn/msn.c:641 +#: ../libpurple/protocols/msn/msn.c:648 ../libpurple/protocols/msn/msn.c:655 +#: ../libpurple/protocols/msn/msn.c:661 ../libpurple/protocols/msn/msn.c:667 #: ../libpurple/protocols/myspace/myspace.c:148 -#: ../libpurple/protocols/novell/novell.c:2838 -#: ../libpurple/protocols/novell/novell.c:2941 -#: ../libpurple/protocols/novell/novell.c:2947 -#: ../libpurple/protocols/novell/novell.c:2953 -#: ../libpurple/protocols/oscar/oscar.c:5554 -#: ../libpurple/protocols/oscar/oscar.c:5772 -#: ../libpurple/protocols/oscar/oscar.c:5786 -#: ../libpurple/protocols/oscar/oscar.c:5802 -#: ../libpurple/protocols/oscar/oscar.c:5809 -#: ../libpurple/protocols/oscar/oscar.c:5816 +#: ../libpurple/protocols/novell/novell.c:2843 +#: ../libpurple/protocols/novell/novell.c:2946 +#: ../libpurple/protocols/novell/novell.c:2952 +#: ../libpurple/protocols/novell/novell.c:2958 +#: ../libpurple/protocols/oscar/oscar.c:5606 +#: ../libpurple/protocols/oscar/oscar.c:5824 +#: ../libpurple/protocols/oscar/oscar.c:5838 +#: ../libpurple/protocols/oscar/oscar.c:5854 +#: ../libpurple/protocols/oscar/oscar.c:5861 +#: ../libpurple/protocols/oscar/oscar.c:5868 #: ../libpurple/protocols/sametime/sametime.c:3286 #: ../libpurple/protocols/sametime/sametime.c:3292 #: ../libpurple/protocols/sametime/sametime.c:3298 @@ -1713,8 +1756,8 @@ #: ../libpurple/protocols/silc/buddy.c:1551 #: ../libpurple/protocols/silc10/buddy.c:1551 #: ../libpurple/protocols/simple/simple.c:246 -#: ../libpurple/protocols/yahoo/yahoo.c:3751 -#: ../libpurple/protocols/yahoo/yahoo.c:3757 +#: ../libpurple/protocols/yahoo/yahoo.c:3753 +#: ../libpurple/protocols/yahoo/yahoo.c:3759 #: ../libpurple/protocols/zephyr/zephyr.c:2337 #: ../pidgin/gtksavedstatuses.c:526 ../pidgin/gtksavedstatuses.c:1010 msgid "Message" @@ -1770,7 +1813,7 @@ msgid "Certificates" msgstr "Certifikáty" -#: ../finch/gntui.c:89 ../pidgin/gtkprefs.c:2035 +#: ../finch/gntui.c:89 ../pidgin/gtkprefs.c:2037 msgid "Sounds" msgstr "Zvuky" @@ -1780,23 +1823,20 @@ #: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121 #: ../finch/plugins/gntclipboard.c:128 -#, fuzzy msgid "Error loading the plugin." -msgstr "Počas zatvárania modulu sa vyskytli chyby." +msgstr "Počas načítavania modulu sa vyskytli chyby." #: ../finch/plugins/gntclipboard.c:116 -#, fuzzy msgid "Couldn't find X display" -msgstr "Nepodarilo sa otvoriť súbor" +msgstr "Nebola nájdená X obrazovka" #: ../finch/plugins/gntclipboard.c:122 -#, fuzzy msgid "Couldn't find window" -msgstr "Nepodarilo sa otvoriť súbor" +msgstr "Nebolo nájdené okno" #: ../finch/plugins/gntclipboard.c:129 msgid "This plugin cannot be loaded because it was not built with X11 support." -msgstr "" +msgstr "Tento modul nebol načítaný, pretože neobsahuje podporu pre X11." #: ../finch/plugins/gntclipboard.c:158 msgid "GntClipboard" @@ -1874,16 +1914,16 @@ msgid "Toaster plugin" msgstr "Modul vysúvaceho okna" -#: ../finch/plugins/gnthistory.c:116 ../pidgin/plugins/history.c:120 +#: ../finch/plugins/gnthistory.c:116 ../pidgin/plugins/history.c:123 #, c-format msgid "Conversation with %s on %s:
" msgstr "Rozhovor s %s, %s:
" -#: ../finch/plugins/gnthistory.c:138 ../pidgin/plugins/history.c:147 +#: ../finch/plugins/gnthistory.c:138 ../pidgin/plugins/history.c:150 msgid "History Plugin Requires Logging" msgstr "Modul História vyžaduje zaznamenávanie" -#: ../finch/plugins/gnthistory.c:139 ../pidgin/plugins/history.c:148 +#: ../finch/plugins/gnthistory.c:139 ../pidgin/plugins/history.c:151 msgid "" "Logging can be enabled from Tools -> Preferences -> Logging.\n" "\n" @@ -1899,11 +1939,11 @@ msgid "GntHistory" msgstr "GntHistory" -#: ../finch/plugins/gnthistory.c:181 ../pidgin/plugins/history.c:190 +#: ../finch/plugins/gnthistory.c:181 ../pidgin/plugins/history.c:194 msgid "Shows recently logged conversations in new conversations." msgstr "Zobrazuje nedávno zaznamenanú konverzáciu v novom okne konverzácie." -#: ../finch/plugins/gnthistory.c:182 ../pidgin/plugins/history.c:191 +#: ../finch/plugins/gnthistory.c:182 ../pidgin/plugins/history.c:195 msgid "" "When a new conversation is opened this plugin will insert the last " "conversation into the current conversation." @@ -1939,7 +1979,7 @@ #: ../libpurple/account.c:992 #, c-format msgid "Enter password for %s (%s)" -msgstr "Zadajte heslo pre %s (%s)" +msgstr "Zadajte heslo používateľa %s (%s)" #: ../libpurple/account.c:999 msgid "Enter Password" @@ -1956,7 +1996,7 @@ msgstr "Chýba modul protokolu pre protokol %s" #: ../libpurple/account.c:1041 ../libpurple/connection.c:108 -#: ../pidgin/gtkblist.c:4036 +#: ../pidgin/gtkblist.c:4318 msgid "Connection Error" msgstr "Chyba pripojenia" @@ -1984,7 +2024,7 @@ #: ../libpurple/account.c:1251 #, c-format msgid "Change password for %s" -msgstr "Zmeniť heslo %s" +msgstr "Zmeniť heslo používateľa %s" #: ../libpurple/account.c:1259 msgid "Please enter your current password and your new password." @@ -2001,16 +2041,16 @@ #: ../libpurple/account.c:1764 ../libpurple/protocols/gg/gg.c:1017 #: ../libpurple/protocols/jabber/buddy.c:782 -#: ../libpurple/protocols/jabber/buddy.c:2027 -#: ../libpurple/protocols/jabber/buddy.c:2044 -#: ../libpurple/protocols/novell/novell.c:2831 +#: ../libpurple/protocols/jabber/buddy.c:2030 +#: ../libpurple/protocols/jabber/buddy.c:2047 +#: ../libpurple/protocols/novell/novell.c:2836 #: ../libpurple/protocols/qq/qq.c:232 ../pidgin/gtkft.c:160 msgid "Unknown" msgstr "Neznáma" -#: ../libpurple/blist.c:521 ../libpurple/blist.c:1320 -#: ../libpurple/blist.c:1552 ../libpurple/protocols/jabber/roster.c:69 -#: ../libpurple/protocols/myspace/myspace.c:3244 ../pidgin/gtkblist.c:5373 +#: ../libpurple/blist.c:521 ../libpurple/blist.c:1321 +#: ../libpurple/blist.c:1531 ../libpurple/protocols/jabber/roster.c:69 +#: ../libpurple/protocols/myspace/myspace.c:3250 ../pidgin/gtkblist.c:5662 #: ../pidgin/plugins/gevolution/gevo-util.c:67 #: ../pidgin/plugins/gevolution/gevolution.c:96 msgid "Buddies" @@ -2022,13 +2062,13 @@ #: ../libpurple/certificate.c:545 msgid "(DOES NOT MATCH)" -msgstr "" +msgstr "(NEVYHOVUJE)" #. Make messages #: ../libpurple/certificate.c:549 #, c-format msgid "%s has presented the following certificate for just-this-once use:" -msgstr "" +msgstr "%s vytvoril nasledujúci certifikát iba na jedno použitie:" #: ../libpurple/certificate.c:550 #, c-format @@ -2036,41 +2076,41 @@ "Common name: %s %s\n" "Fingerprint (SHA1): %s" msgstr "" +"Bežný názov: %s %s\n" +"Odtlačok (SHA1): %s" #. TODO: Find what the handle ought to be #: ../libpurple/certificate.c:555 msgid "Single-use Certificate Verification" -msgstr "" +msgstr "Overenie certifikátu na jedno použitie" #. Scheme name #. Pool name #: ../libpurple/certificate.c:872 -#, fuzzy msgid "Certificate Authorities" -msgstr "Certifikáty" +msgstr "Autority certifikátov" #. Scheme name #. Pool name #: ../libpurple/certificate.c:1040 msgid "SSL Peers Cache" -msgstr "" +msgstr "Vyrovnávacia pamäť SSL peerov" #. Make messages #: ../libpurple/certificate.c:1171 -#, fuzzy, c-format +#, c-format msgid "Accept certificate for %s?" -msgstr "Prijať pozvanie na chat?" +msgstr "Prijať certifikát pre %s?" #. TODO: Find what the handle ought to be #: ../libpurple/certificate.c:1177 msgid "SSL Certificate Verification" -msgstr "" +msgstr "Overenie SSL certifikátu" #. Number of actions #: ../libpurple/certificate.c:1186 -#, fuzzy msgid "Accept" -msgstr "Použiť" +msgstr "Prijať" #: ../libpurple/certificate.c:1187 ../libpurple/protocols/qq/buddy_opt.c:214 #: ../libpurple/protocols/qq/group_im.c:144 @@ -2081,9 +2121,8 @@ msgstr "Odmietnuť" #: ../libpurple/certificate.c:1188 -#, fuzzy msgid "_View Certificate..." -msgstr "Certifikáty" +msgstr "_Prezrieť certifikát..." #. Prompt the user to authenticate the certificate #. TODO: Provide the user with more guidance about why he is @@ -2095,6 +2134,9 @@ "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 "" +"Certifikát od používateľa \"%s\" tvrdí, že pochádza od používateľa \"%s\". " +"To môže znamenať, že sa nepripájate na tú službu, na ktorú sa chcete " +"pripojiť. " #. Prompt the user to authenticate the certificate #. vrq will be completed by user_auth @@ -2104,11 +2146,13 @@ "The certificate presented by \"%s\" is self-signed. It cannot be " "automatically checked." msgstr "" +"Certifikát od používateľa \"%s\" je podpísaný samým sebou. Nie je možné ho " +"automaticky overiť." #: ../libpurple/certificate.c:1331 #, c-format msgid "The certificate chain presented for %s is not valid." -msgstr "" +msgstr "Reťaz certifikátu od používateľa %s nie je správna." #. TODO: Make this error either block the ensuing SSL #. connection error until the user dismisses this one, or @@ -2116,14 +2160,12 @@ #. TODO: Probably wrong. #. TODO: Probably wrong #: ../libpurple/certificate.c:1339 ../libpurple/certificate.c:1416 -#, fuzzy msgid "SSL Certificate Error" -msgstr "Certifikáty" +msgstr "Chyba SSL Certifikátu" #: ../libpurple/certificate.c:1340 -#, fuzzy msgid "Invalid certificate chain" -msgstr "Chybný titulok" +msgstr "Chybná reťaz certifikátu" #. vrq will be completed by user_auth #: ../libpurple/certificate.c:1360 @@ -2131,12 +2173,14 @@ "You have no database of root certificates, so this certificate cannot be " "validated." msgstr "" +"Nemáte databázu koreňových certifikátov, takže tento certifikát nie je možné " +"overiť." #. vrq will be completed by user_auth #: ../libpurple/certificate.c:1382 msgid "" "The root certificate this one claims to be issued by is unknown to Pidgin." -msgstr "" +msgstr "Certifikát, ktorým je tento certifikát vydaný, je pre Pidgin neznámy." #: ../libpurple/certificate.c:1408 #, c-format @@ -2145,10 +2189,12 @@ "signature from the Certificate Authority from which it claims to have a " "signature." msgstr "" +"Reťaz certifikátu od používateľa %s nemá správny digitálny podpis od " +"autority, ktorá je na ňom uvedená." #: ../libpurple/certificate.c:1417 msgid "Invalid certificate authority signature" -msgstr "" +msgstr "Chybný podpis autority" #. Make messages #: ../libpurple/certificate.c:1881 @@ -2161,21 +2207,25 @@ "Activation date: %s\n" "Expiration date: %s\n" msgstr "" +"Bežný názov: %s\n" +"\n" +"Odtlačok (SHA1): %s\n" +"\n" +"Dátum aktivácie: %s\n" +"Dátum vypršania: %s\n" #. TODO: Find what the handle ought to be #: ../libpurple/certificate.c:1890 -#, fuzzy msgid "Certificate Information" -msgstr "Podrobnosti o serveri" +msgstr "Podrobnosti o certifikáte" #: ../libpurple/connection.c:107 msgid "Registration Error" msgstr "Chyba pri registrácii" #: ../libpurple/connection.c:180 -#, fuzzy msgid "Unregistration Error" -msgstr "Chyba pri registrácii" +msgstr "Chyba pri rušení registrácie" #: ../libpurple/connection.c:350 #, c-format @@ -2188,9 +2238,9 @@ msgstr "+++ používateľ %s sa odhlásil" #: ../libpurple/connection.c:497 ../libpurple/plugin.c:282 -#: ../libpurple/protocols/jabber/buddy.c:2337 +#: ../libpurple/protocols/jabber/buddy.c:2340 #: ../libpurple/protocols/msn/servconn.c:141 -#: ../libpurple/protocols/msn/session.c:322 +#: ../libpurple/protocols/msn/session.c:361 msgid "Unknown error" msgstr "Neznáma chyba" @@ -2306,7 +2356,6 @@ "%s" #: ../libpurple/dnsquery.c:578 -#, c-format msgid "EOF while reading from resolver process" msgstr "Počas čítania z procesu resolveru sa vyskytlo EOF" @@ -2415,7 +2464,6 @@ msgstr "Prenos súboru %s bol dokončený" #: ../libpurple/ft.c:685 -#, c-format msgid "File transfer complete" msgstr "Prenos súboru je dokončený" @@ -2425,7 +2473,6 @@ msgstr "Zrušili ste prenos %s" #: ../libpurple/ft.c:1108 -#, c-format msgid "File transfer cancelled" msgstr "Prenos súboru zrušený" @@ -2675,7 +2722,6 @@ msgstr "Používate %s, ale tento modul vyžaduje %s." #: ../libpurple/plugin.c:380 -#, c-format msgid "This plugin has not defined an ID." msgstr "Tento modul nemá definované ID." @@ -2759,13 +2805,13 @@ #: ../libpurple/plugins/autoaccept.c:165 ../libpurple/plugins/idle.c:170 #: ../libpurple/plugins/idle.c:204 ../libpurple/plugins/idle.c:230 #: ../libpurple/protocols/oscar/oscar.c:1453 -#: ../libpurple/protocols/oscar/oscar.c:2233 -#: ../libpurple/protocols/oscar/oscar.c:2282 -#: ../libpurple/protocols/oscar/oscar.c:5886 -#: ../libpurple/protocols/oscar/oscar.c:5941 -#: ../libpurple/protocols/oscar/oscar.c:6167 -#: ../libpurple/protocols/oscar/oscar.c:6237 ../libpurple/request.h:1388 -#: ../libpurple/request.h:1398 +#: ../libpurple/protocols/oscar/oscar.c:2247 +#: ../libpurple/protocols/oscar/oscar.c:2296 +#: ../libpurple/protocols/oscar/oscar.c:5938 +#: ../libpurple/protocols/oscar/oscar.c:5993 +#: ../libpurple/protocols/oscar/oscar.c:6219 +#: ../libpurple/protocols/oscar/oscar.c:6289 ../libpurple/request.h:1388 +#: ../libpurple/request.h:1398 ../pidgin/gtkblist.c:527 msgid "_Cancel" msgstr "_Zrušiť" @@ -2807,8 +2853,8 @@ "súboru\n" "(len ak neexistuje konverzácia s odosielateľom)" -#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:1660 -#: ../libpurple/protocols/msn/msn.c:1690 +#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:1770 +#: ../libpurple/protocols/msn/msn.c:1800 msgid "Notes" msgstr "Poznámky" @@ -3246,9 +3292,9 @@ msgstr "Sledovanie môžete pridať/odstrániť v dialógu „Sledovanie priateľov“" #: ../libpurple/plugins/offlinemsg.c:165 -#: ../libpurple/protocols/msn/dialog.c:133 -#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560 -#: ../libpurple/protocols/novell/novell.c:1917 +#: ../libpurple/protocols/msn/dialog.c:141 +#: ../libpurple/protocols/msn/msn.c:622 +#: ../libpurple/protocols/novell/novell.c:1919 #: ../libpurple/protocols/silc/buddy.c:317 #: ../libpurple/protocols/silc/pk.c:113 ../libpurple/protocols/silc/wb.c:304 #: ../libpurple/protocols/silc10/buddy.c:314 @@ -3258,9 +3304,9 @@ msgstr "Áno" #: ../libpurple/plugins/offlinemsg.c:166 -#: ../libpurple/protocols/msn/dialog.c:134 -#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560 -#: ../libpurple/protocols/novell/novell.c:1918 +#: ../libpurple/protocols/msn/dialog.c:142 +#: ../libpurple/protocols/msn/msn.c:622 +#: ../libpurple/protocols/novell/novell.c:1920 #: ../libpurple/protocols/silc/buddy.c:318 #: ../libpurple/protocols/silc/pk.c:114 ../libpurple/protocols/silc/wb.c:305 #: ../libpurple/protocols/silc10/buddy.c:315 @@ -3369,7 +3415,7 @@ msgstr "Test pre zistenie, či väčšina vecí funguje." #. Scheme name -#: ../libpurple/plugins/ssl/ssl-gnutls.c:902 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:911 #: ../libpurple/plugins/ssl/ssl-nss.c:725 msgid "X.509 Certificates" msgstr "X.509 certifikáty" @@ -3380,7 +3426,7 @@ #. *< dependencies #. *< priority #. *< id -#: ../libpurple/plugins/ssl/ssl-gnutls.c:986 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:995 msgid "GNUTLS" msgstr "GNUTLS" @@ -3388,8 +3434,8 @@ #. *< version #. * summary #. * description -#: ../libpurple/plugins/ssl/ssl-gnutls.c:989 -#: ../libpurple/plugins/ssl/ssl-gnutls.c:991 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:998 +#: ../libpurple/plugins/ssl/ssl-gnutls.c:1000 msgid "Provides SSL support through GNUTLS." msgstr "Poskytuje podporu SSL pomocou GNUTLS." @@ -3494,15 +3540,15 @@ "Upozorní v okne konverzácie, keď priateľ je alebo prestane byť neprítomný " "alebo nečinný." -#: ../libpurple/plugins/tcl/tcl.c:421 +#: ../libpurple/plugins/tcl/tcl.c:423 msgid "Tcl Plugin Loader" msgstr "Načítač Tcl modulov" -#: ../libpurple/plugins/tcl/tcl.c:423 ../libpurple/plugins/tcl/tcl.c:424 +#: ../libpurple/plugins/tcl/tcl.c:425 ../libpurple/plugins/tcl/tcl.c:426 msgid "Provides support for loading Tcl plugins" msgstr "Umožňuje spúšťať Tcl moduly." -#: ../libpurple/plugins/tcl/tcl.c:507 +#: ../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" @@ -3539,7 +3585,7 @@ #: ../libpurple/protocols/jabber/buddy.c:295 #: ../libpurple/protocols/jabber/buddy.c:1325 #: ../libpurple/protocols/jabber/buddy.c:1335 -#: ../libpurple/protocols/jabber/buddy.c:2216 +#: ../libpurple/protocols/jabber/buddy.c:2219 #: ../libpurple/protocols/silc/ops.c:1041 #: ../libpurple/protocols/silc/util.c:555 #: ../libpurple/protocols/silc10/ops.c:1075 @@ -3720,8 +3766,8 @@ #: ../libpurple/protocols/gg/gg.c:642 ../libpurple/protocols/gg/gg.c:1054 #: ../libpurple/protocols/gg/gg.c:1126 #: ../libpurple/protocols/jabber/jabber.c:957 -#: ../libpurple/protocols/oscar/oscar.c:3789 -#: ../libpurple/protocols/oscar/oscar.c:3802 +#: ../libpurple/protocols/oscar/oscar.c:3803 +#: ../libpurple/protocols/oscar/oscar.c:3816 #: ../libpurple/protocols/qq/buddy_info.c:49 msgid "City" msgstr "Mesto" @@ -3730,9 +3776,9 @@ msgid "Year of birth" msgstr "Rok narodenia" -#: ../libpurple/protocols/gg/gg.c:650 ../libpurple/protocols/msn/msn.c:1589 -#: ../libpurple/protocols/myspace/user.c:115 -#: ../libpurple/protocols/oscar/oscar.c:3732 +#: ../libpurple/protocols/gg/gg.c:650 ../libpurple/protocols/msn/msn.c:1699 +#: ../libpurple/protocols/myspace/user.c:117 +#: ../libpurple/protocols/oscar/oscar.c:3746 #: ../libpurple/protocols/qq/buddy_info.c:46 #: ../libpurple/protocols/qq/qq.c:226 ../libpurple/protocols/qq/qq.c:229 #: ../libpurple/protocols/qq/qq.c:232 ../libpurple/protocols/qq/qq.c:236 @@ -3745,14 +3791,14 @@ msgstr "Muž alebo žena" #: ../libpurple/protocols/gg/gg.c:652 -#: ../libpurple/protocols/oscar/oscar.c:3732 +#: ../libpurple/protocols/oscar/oscar.c:3746 #: ../libpurple/protocols/qq/buddy_info.c:83 #: ../libpurple/protocols/qq/qq.c:226 msgid "Male" msgstr "Muž" #: ../libpurple/protocols/gg/gg.c:653 -#: ../libpurple/protocols/oscar/oscar.c:3732 +#: ../libpurple/protocols/oscar/oscar.c:3746 #: ../libpurple/protocols/qq/buddy_info.c:84 #: ../libpurple/protocols/qq/qq.c:229 msgid "Female" @@ -3812,25 +3858,25 @@ msgstr "Pridať na chat..." #: ../libpurple/protocols/gg/gg.c:1008 -#: ../libpurple/protocols/jabber/buddy.c:2031 -#: ../libpurple/protocols/novell/novell.c:2828 +#: ../libpurple/protocols/jabber/buddy.c:2034 +#: ../libpurple/protocols/novell/novell.c:2833 #: ../libpurple/protocols/oscar/oscar.c:828 -#: ../libpurple/protocols/oscar/oscar.c:5604 +#: ../libpurple/protocols/oscar/oscar.c:5656 #: ../libpurple/protocols/qq/qq.c:170 ../libpurple/protocols/qq/qq.c:177 #: ../libpurple/protocols/qq/qq.c:292 -#: ../libpurple/protocols/yahoo/yahoo.c:3099 ../libpurple/status.c:154 -#: ../pidgin/gtkblist.c:3104 ../pidgin/gtkblist.c:3436 +#: ../libpurple/protocols/yahoo/yahoo.c:3101 ../libpurple/status.c:154 +#: ../pidgin/gtkblist.c:3302 ../pidgin/gtkblist.c:3640 #: ../pidgin/gtkdocklet.c:450 ../pidgin/gtkstatusbox.c:1061 msgid "Offline" msgstr "Odpojený" #: ../libpurple/protocols/gg/gg.c:1011 -#: ../libpurple/protocols/jabber/buddy.c:2033 +#: ../libpurple/protocols/jabber/buddy.c:2036 #: ../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/novell/novell.c:2816 +#: ../libpurple/protocols/novell/novell.c:2821 #: ../libpurple/protocols/qq/qq.c:280 -#: ../libpurple/protocols/yahoo/yahoo.c:3101 ../libpurple/status.c:155 +#: ../libpurple/protocols/yahoo/yahoo.c:3103 ../libpurple/status.c:155 #: ../pidgin/gtkdocklet.c:438 ../pidgin/gtkstatusbox.c:1057 msgid "Available" msgstr "Pripojený" @@ -3840,32 +3886,31 @@ #. Away stuff #: ../libpurple/protocols/gg/gg.c:1014 ../libpurple/protocols/irc/irc.c:528 #: ../libpurple/protocols/irc/msgs.c:310 -#: ../libpurple/protocols/jabber/buddy.c:2037 -#: ../libpurple/protocols/novell/novell.c:2819 +#: ../libpurple/protocols/jabber/buddy.c:2040 +#: ../libpurple/protocols/novell/novell.c:2824 #: ../libpurple/protocols/oscar/oscar.c:733 -#: ../libpurple/protocols/oscar/oscar.c:4547 -#: ../libpurple/protocols/oscar/oscar.c:5632 +#: ../libpurple/protocols/oscar/oscar.c:4561 +#: ../libpurple/protocols/oscar/oscar.c:5684 #: ../libpurple/protocols/qq/qq.c:180 ../libpurple/protocols/qq/qq.c:284 #: ../libpurple/protocols/silc/buddy.c:1476 #: ../libpurple/protocols/silc10/buddy.c:1476 -#: ../libpurple/protocols/yahoo/yahoo.c:3653 -#: ../libpurple/protocols/yahoo/yahoo.c:3727 ../libpurple/status.c:158 -#: ../pidgin/gtkdocklet.c:442 ../pidgin/gtkprefs.c:1939 +#: ../libpurple/protocols/yahoo/yahoo.c:3655 +#: ../libpurple/protocols/yahoo/yahoo.c:3729 ../libpurple/status.c:158 +#: ../pidgin/gtkdocklet.c:442 ../pidgin/gtkprefs.c:1941 #: ../pidgin/gtkstatusbox.c:1058 -#, c-format msgid "Away" msgstr "Neprítomný" #: ../libpurple/protocols/gg/gg.c:1043 ../libpurple/protocols/gg/gg.c:1117 -#: ../libpurple/protocols/oscar/oscar.c:2699 -#: ../libpurple/protocols/oscar/oscar.c:3699 +#: ../libpurple/protocols/oscar/oscar.c:2713 +#: ../libpurple/protocols/oscar/oscar.c:3713 msgid "UIN" msgstr "UIN" #: ../libpurple/protocols/gg/gg.c:1046 ../libpurple/protocols/gg/gg.c:1120 -#: ../libpurple/protocols/jabber/buddy.c:2210 -#: ../libpurple/protocols/jabber/buddy.c:2386 -#: ../libpurple/protocols/oscar/oscar.c:3710 +#: ../libpurple/protocols/jabber/buddy.c:2213 +#: ../libpurple/protocols/jabber/buddy.c:2389 +#: ../libpurple/protocols/oscar/oscar.c:3724 #: ../libpurple/protocols/silc/ops.c:990 #: ../libpurple/protocols/silc10/ops.c:1024 msgid "First Name" @@ -3876,7 +3921,7 @@ msgstr "Rok narodenia" #: ../libpurple/protocols/gg/gg.c:1111 ../libpurple/protocols/gg/gg.c:1180 -#: ../libpurple/protocols/oscar/oscar.c:3911 +#: ../libpurple/protocols/oscar/oscar.c:3925 msgid "Unable to display the search results." msgstr "Nebolo možné zobraziť výsledky vyhľadávania." @@ -3920,7 +3965,7 @@ msgid "Connection failed." msgstr "Pripojenie zlyhalo" -#: ../libpurple/protocols/gg/gg.c:1621 ../libpurple/protocols/msn/msn.c:559 +#: ../libpurple/protocols/gg/gg.c:1621 ../libpurple/protocols/msn/msn.c:621 msgid "Blocked" msgstr "Blokovaný" @@ -4058,7 +4103,7 @@ #: ../libpurple/protocols/irc/irc.c:127 ../libpurple/protocols/irc/irc.c:165 #: ../libpurple/protocols/irc/irc.c:612 ../libpurple/protocols/irc/irc.c:637 -#: ../libpurple/protocols/myspace/myspace.c:2356 +#: ../libpurple/protocols/myspace/myspace.c:2361 msgid "Server has disconnected" msgstr "Server bol odpojený" @@ -4084,14 +4129,14 @@ #. connect to the server #: ../libpurple/protocols/irc/irc.c:319 #: ../libpurple/protocols/jabber/jabber.c:1280 -#: ../libpurple/protocols/msn/session.c:345 -#: ../libpurple/protocols/myspace/myspace.c:301 -#: ../libpurple/protocols/novell/novell.c:2182 +#: ../libpurple/protocols/msn/session.c:384 +#: ../libpurple/protocols/myspace/myspace.c:302 +#: ../libpurple/protocols/novell/novell.c:2187 #: ../libpurple/protocols/oscar/oscar.c:1287 #: ../libpurple/protocols/qq/qq.c:136 #: ../libpurple/protocols/sametime/sametime.c:3723 -#: ../libpurple/protocols/simple/simple.c:1716 -#: ../libpurple/protocols/yahoo/yahoo.c:2939 +#: ../libpurple/protocols/simple/simple.c:1718 +#: ../libpurple/protocols/yahoo/yahoo.c:2941 #: ../libpurple/protocols/zephyr/zephyr.c:1621 ../pidgin/gtkstatusbox.c:662 msgid "Connecting" msgstr "Pripája sa" @@ -4105,20 +4150,20 @@ #. TODO: try other ports if in auto mode, then save #. * working port and try that first next time. #: ../libpurple/protocols/irc/irc.c:338 -#: ../libpurple/protocols/myspace/myspace.c:317 +#: ../libpurple/protocols/myspace/myspace.c:318 #: ../libpurple/protocols/simple/simple.c:464 -#: ../libpurple/protocols/simple/simple.c:1631 +#: ../libpurple/protocols/simple/simple.c:1633 msgid "Couldn't create socket" msgstr "Nepodarilo sa vytvoriť socket" #: ../libpurple/protocols/irc/irc.c:421 -#: ../libpurple/protocols/myspace/myspace.c:2469 +#: ../libpurple/protocols/myspace/myspace.c:2474 #: ../libpurple/protocols/oscar/oscar.c:1283 msgid "Couldn't connect to host" msgstr "Nepodarilo sa pripojiť ku hostiteľovi" #: ../libpurple/protocols/irc/irc.c:609 ../libpurple/protocols/irc/irc.c:634 -#: ../libpurple/protocols/myspace/myspace.c:2352 +#: ../libpurple/protocols/myspace/myspace.c:2357 msgid "Read error" msgstr "Chyba čítania" @@ -4158,22 +4203,22 @@ #. host to connect to #: ../libpurple/protocols/irc/irc.c:940 ../libpurple/protocols/irc/msgs.c:323 -#: ../libpurple/protocols/msn/msn.c:2185 -#: ../libpurple/protocols/oscar/oscar.c:6671 +#: ../libpurple/protocols/msn/msn.c:2297 +#: ../libpurple/protocols/oscar/oscar.c:6723 #: ../libpurple/protocols/qq/qq.c:755 #: ../libpurple/protocols/sametime/sametime.c:5727 #: ../libpurple/protocols/silc/ops.c:1249 #: ../libpurple/protocols/silc/ops.c:1341 #: ../libpurple/protocols/silc10/ops.c:1244 #: ../libpurple/protocols/silc10/ops.c:1347 -#: ../libpurple/protocols/simple/simple.c:1896 +#: ../libpurple/protocols/simple/simple.c:1898 #: ../libpurple/protocols/toc/toc.c:2327 msgid "Server" msgstr "Server" #. port to connect to -#: ../libpurple/protocols/irc/irc.c:943 ../libpurple/protocols/msn/msn.c:2190 -#: ../libpurple/protocols/oscar/oscar.c:6674 +#: ../libpurple/protocols/irc/irc.c:943 ../libpurple/protocols/msn/msn.c:2302 +#: ../libpurple/protocols/oscar/oscar.c:6726 #: ../libpurple/protocols/qq/qq.c:758 #: ../libpurple/protocols/sametime/sametime.c:5732 #: ../libpurple/protocols/silc/silc.c:1918 @@ -4245,7 +4290,7 @@ msgstr " (identifikovaný)" #: ../libpurple/protocols/irc/msgs.c:303 -#: ../libpurple/protocols/oscar/oscar.c:3700 +#: ../libpurple/protocols/oscar/oscar.c:3714 #: ../libpurple/protocols/silc/ops.c:1418 #: ../libpurple/protocols/silc10/ops.c:1414 msgid "Nick" @@ -4344,79 +4389,79 @@ msgid "Invitation only" msgstr "Len pre pozvaných" -#: ../libpurple/protocols/irc/msgs.c:795 +#: ../libpurple/protocols/irc/msgs.c:798 #, c-format msgid "You have been kicked by %s: (%s)" msgstr "Používateľ %s vás vykopol: (%s)" #. Remove user from channel -#: ../libpurple/protocols/irc/msgs.c:800 ../libpurple/protocols/silc/ops.c:699 +#: ../libpurple/protocols/irc/msgs.c:803 ../libpurple/protocols/silc/ops.c:699 #: ../libpurple/protocols/silc10/ops.c:720 #, c-format msgid "Kicked by %s (%s)" msgstr "Vykopnutý používateľom %s (%s)" -#: ../libpurple/protocols/irc/msgs.c:823 +#: ../libpurple/protocols/irc/msgs.c:826 #, c-format msgid "mode (%s %s) by %s" msgstr "režim (%s %s) od %s" -#: ../libpurple/protocols/irc/msgs.c:908 ../libpurple/protocols/irc/msgs.c:909 +#: ../libpurple/protocols/irc/msgs.c:911 ../libpurple/protocols/irc/msgs.c:912 msgid "Invalid nickname" msgstr "Neplatná prezývka" -#: ../libpurple/protocols/irc/msgs.c:910 +#: ../libpurple/protocols/irc/msgs.c:913 msgid "" "Your selected nickname was rejected by the server. It probably contains " "invalid characters." msgstr "" "Server neuznal vami vybranú prezývku. Zrejme obsahuje nedovolené znaky." -#: ../libpurple/protocols/irc/msgs.c:915 +#: ../libpurple/protocols/irc/msgs.c:918 msgid "" "Your selected account name was rejected by the server. It probably contains " "invalid characters." msgstr "" "Server neuznal vami vybraný názov účtu. Zrejme obsahuje nedovolené znaky." -#: ../libpurple/protocols/irc/msgs.c:954 +#: ../libpurple/protocols/irc/msgs.c:957 msgid "Cannot change nick" msgstr "Nepodarilo sa zmeniť prezývku" -#: ../libpurple/protocols/irc/msgs.c:954 +#: ../libpurple/protocols/irc/msgs.c:957 msgid "Could not change nick" msgstr "Nebolo možné zmeniť prezývku" -#: ../libpurple/protocols/irc/msgs.c:975 +#: ../libpurple/protocols/irc/msgs.c:978 #, c-format msgid "You have parted the channel%s%s" msgstr "Opustili ste kanál %s%s" -#: ../libpurple/protocols/irc/msgs.c:1017 +#: ../libpurple/protocols/irc/msgs.c:1020 msgid "Error: invalid PONG from server" msgstr "Chyba: neplatný PONG od servera" -#: ../libpurple/protocols/irc/msgs.c:1019 +#: ../libpurple/protocols/irc/msgs.c:1022 #, c-format msgid "PING reply -- Lag: %lu seconds" msgstr "Odpoveď na PING -- Oneskorenie: %lu sekúnd" -#: ../libpurple/protocols/irc/msgs.c:1110 +#: ../libpurple/protocols/irc/msgs.c:1113 #, c-format msgid "Cannot join %s: Registration is required." msgstr "Nedá sa pripojiť do %s: Je potrebné sa zaregistrovať." -#: ../libpurple/protocols/irc/msgs.c:1111 +#: ../libpurple/protocols/irc/msgs.c:1114 #: ../libpurple/protocols/silc/ops.c:1093 #: ../libpurple/protocols/silc10/ops.c:1128 msgid "Cannot join channel" msgstr "Nepodarilo sa pripojiť na kanál" -#: ../libpurple/protocols/irc/msgs.c:1145 +#: ../libpurple/protocols/irc/msgs.c:1148 msgid "Nick or channel is temporarily unavailable." msgstr "Prezývka alebo kanál je dočasne nedostupný." -#: ../libpurple/protocols/irc/msgs.c:1157 +#: ../libpurple/protocols/irc/msgs.c:1160 #, c-format msgid "Wallops from %s" msgstr "Operátori %s" @@ -4528,7 +4573,7 @@ "names [kanál]: Zobrazí názvy používateľov nachádzajúcich sa na kanáli." #: ../libpurple/protocols/irc/parse.c:137 -#: ../libpurple/protocols/jabber/jabber.c:2261 +#: ../libpurple/protocols/jabber/jabber.c:2299 msgid "nick <new nickname>: Change your nickname." msgstr "nick <nová prezývka>: Zmení vašu prezývku." @@ -4667,14 +4712,12 @@ #: ../libpurple/protocols/jabber/adhoccommands.c:139 #: ../libpurple/protocols/jabber/adhoccommands.c:140 -#, fuzzy msgid "Ad-Hoc Command Failed" -msgstr "príkaz blocklist zlyhal" - -#: ../libpurple/protocols/jabber/adhoccommands.c:173 -#, fuzzy +msgstr "príkaz Ad-Hoc zlyhal" + +#: ../libpurple/protocols/jabber/adhoccommands.c:176 msgid "execute" -msgstr "Neočakávané" +msgstr "vykonať" #: ../libpurple/protocols/jabber/auth.c:53 msgid "Server requires TLS/SSL for login. No TLS/SSL support found." @@ -4819,15 +4862,15 @@ #: ../libpurple/protocols/jabber/buddy.c:300 #: ../libpurple/protocols/jabber/buddy.c:1250 -#: ../libpurple/protocols/msn/msn.c:1658 -#: ../libpurple/protocols/oscar/oscar.c:3749 +#: ../libpurple/protocols/msn/msn.c:1768 +#: ../libpurple/protocols/oscar/oscar.c:3763 msgid "Birthday" msgstr "Dátum narodenia" #: ../libpurple/protocols/jabber/buddy.c:301 #: ../libpurple/protocols/jabber/buddy.c:1365 #: ../libpurple/protocols/jabber/chat.c:775 -#: ../libpurple/protocols/jabber/usermood.c:175 ../pidgin/gtkblist.c:3116 +#: ../libpurple/protocols/jabber/usermood.c:175 ../pidgin/gtkblist.c:3314 #: ../pidgin/gtkprefs.c:739 msgid "Description" msgstr "Popis" @@ -4858,104 +4901,92 @@ #: ../libpurple/protocols/jabber/buddy.c:815 #: ../libpurple/protocols/jabber/buddy.c:975 msgid "Last Activity" -msgstr "" +msgstr "Posledná aktivita" #: ../libpurple/protocols/jabber/buddy.c:817 #: ../libpurple/protocols/jabber/buddy.c:977 -#, fuzzy msgid "Service Discovery Info" -msgstr "Nastaviť informácie o priečinku" +msgstr "Prieskum služieb" #: ../libpurple/protocols/jabber/buddy.c:819 #: ../libpurple/protocols/jabber/buddy.c:979 msgid "Service Discovery Items" -msgstr "" +msgstr "Položky prieskumu služieb" #: ../libpurple/protocols/jabber/buddy.c:821 #: ../libpurple/protocols/jabber/buddy.c:981 -#, fuzzy msgid "Extended Stanza Addressing" -msgstr "Rozšírená adresa" +msgstr "Rozšírené adresovanie slôh" #: ../libpurple/protocols/jabber/buddy.c:823 #: ../libpurple/protocols/jabber/buddy.c:983 -#, fuzzy msgid "Multi-User Chat" -msgstr "Prezývka pre chat" +msgstr "Skupinový chat" #: ../libpurple/protocols/jabber/buddy.c:825 #: ../libpurple/protocols/jabber/buddy.c:985 -#, fuzzy msgid "Multi-User Chat Extended Presence Information" -msgstr "Používateľ nemá žiadne podrobnosti v adresári." +msgstr "Rozšírené informácie o prítomnosti v skupinovom chate." #: ../libpurple/protocols/jabber/buddy.c:827 #: ../libpurple/protocols/jabber/buddy.c:987 msgid "In-Band Bytestreams" -msgstr "" +msgstr "In-Band Bajtstreamy" #: ../libpurple/protocols/jabber/buddy.c:829 #: ../libpurple/protocols/jabber/buddy.c:989 -#, fuzzy msgid "Ad-Hoc Commands" -msgstr "Príkaz" +msgstr "Príkaz Ad-Hoc" #: ../libpurple/protocols/jabber/buddy.c:831 #: ../libpurple/protocols/jabber/buddy.c:991 msgid "PubSub Service" -msgstr "" +msgstr "PubSub služba" #: ../libpurple/protocols/jabber/buddy.c:833 #: ../libpurple/protocols/jabber/buddy.c:993 msgid "SOCKS5 Bytestreams" -msgstr "" +msgstr "SOCKS5 Bajtstreamy" #: ../libpurple/protocols/jabber/buddy.c:835 #: ../libpurple/protocols/jabber/buddy.c:995 msgid "Out of Band Data" -msgstr "" +msgstr "Mimo skupinových dát" #: ../libpurple/protocols/jabber/buddy.c:837 #: ../libpurple/protocols/jabber/buddy.c:997 -#, fuzzy msgid "XHTML-IM" -msgstr "HTML" +msgstr "XHTML-IM" #: ../libpurple/protocols/jabber/buddy.c:839 #: ../libpurple/protocols/jabber/buddy.c:999 -#, fuzzy msgid "In-Band Registration" -msgstr "Chyba pri registrácii" +msgstr "In-Band Registrácia" #: ../libpurple/protocols/jabber/buddy.c:841 #: ../libpurple/protocols/jabber/buddy.c:1001 -#, fuzzy msgid "User Location" msgstr "Lokalita" #: ../libpurple/protocols/jabber/buddy.c:843 #: ../libpurple/protocols/jabber/buddy.c:1003 -#, fuzzy msgid "User Avatar" -msgstr "Hľadanie používateľov" +msgstr "Avatar používateľa" #: ../libpurple/protocols/jabber/buddy.c:845 #: ../libpurple/protocols/jabber/buddy.c:1005 -#, fuzzy msgid "Chat State Notifications" -msgstr "Upozornenie na stav priateľa" +msgstr "Upozornenie na stav v chate" #: ../libpurple/protocols/jabber/buddy.c:847 #: ../libpurple/protocols/jabber/buddy.c:1007 -#, fuzzy msgid "Software Version" -msgstr "Nepodporovaná verzia" +msgstr "Verzia softvéru" #: ../libpurple/protocols/jabber/buddy.c:849 #: ../libpurple/protocols/jabber/buddy.c:1009 -#, fuzzy msgid "Stream Initiation" -msgstr "Orientácia" +msgstr "Iniciácia streamu" #: ../libpurple/protocols/jabber/buddy.c:851 #: ../libpurple/protocols/jabber/buddy.c:1011 @@ -4965,129 +4996,113 @@ #: ../libpurple/protocols/jabber/buddy.c:853 #: ../libpurple/protocols/jabber/buddy.c:1013 -#, fuzzy msgid "User Mood" -msgstr "Režimy používateľa" +msgstr "Nálada používateľa" #: ../libpurple/protocols/jabber/buddy.c:855 #: ../libpurple/protocols/jabber/buddy.c:1015 -#, fuzzy msgid "User Activity" -msgstr "Limit používateľov" +msgstr "Aktivita používateľa" #: ../libpurple/protocols/jabber/buddy.c:857 #: ../libpurple/protocols/jabber/buddy.c:1017 -#, fuzzy msgid "Entity Capabilities" msgstr "Schopnosti" #: ../libpurple/protocols/jabber/buddy.c:859 #: ../libpurple/protocols/jabber/buddy.c:1019 msgid "Encrypted Session Negotiations" -msgstr "" +msgstr "Požadovanie šifrovaného spojenia" #: ../libpurple/protocols/jabber/buddy.c:861 #: ../libpurple/protocols/jabber/buddy.c:1021 -#, fuzzy msgid "User Tune" -msgstr "Prihlasovacie meno" +msgstr "Používateľ Tune" #: ../libpurple/protocols/jabber/buddy.c:863 #: ../libpurple/protocols/jabber/buddy.c:1023 -#, fuzzy msgid "Roster Item Exchange" -msgstr "IM s výmenou kľúčov" +msgstr "Výmena kontaktov" #: ../libpurple/protocols/jabber/buddy.c:865 #: ../libpurple/protocols/jabber/buddy.c:1025 -#, fuzzy msgid "Reachability Address" -msgstr "E-mailová adresa" +msgstr "Dostupná adresa" #: ../libpurple/protocols/jabber/buddy.c:867 #: ../libpurple/protocols/jabber/buddy.c:1027 -#, fuzzy msgid "User Profile" -msgstr "Profil" +msgstr "Profil používateľa" #: ../libpurple/protocols/jabber/buddy.c:869 #: ../libpurple/protocols/jabber/buddy.c:1029 -#, fuzzy msgid "Jingle" -msgstr "Pripojiť" +msgstr "Jingle" #: ../libpurple/protocols/jabber/buddy.c:871 #: ../libpurple/protocols/jabber/buddy.c:1031 msgid "Jingle Audio" -msgstr "" +msgstr "Zvuk Jingle" #: ../libpurple/protocols/jabber/buddy.c:873 #: ../libpurple/protocols/jabber/buddy.c:1033 -#, fuzzy msgid "User Nickname" -msgstr "Meno používateľa" +msgstr "Prezývka používateľa" #: ../libpurple/protocols/jabber/buddy.c:875 #: ../libpurple/protocols/jabber/buddy.c:1035 msgid "Jingle ICE UDP" -msgstr "" +msgstr "Jingle ICE UDP" #: ../libpurple/protocols/jabber/buddy.c:877 #: ../libpurple/protocols/jabber/buddy.c:1037 msgid "Jingle ICE TCP" -msgstr "" +msgstr "Jingle ICE UDP" #: ../libpurple/protocols/jabber/buddy.c:879 #: ../libpurple/protocols/jabber/buddy.c:1039 msgid "Jingle Raw UDP" -msgstr "" +msgstr "Jingle ICE UDP" #: ../libpurple/protocols/jabber/buddy.c:881 #: ../libpurple/protocols/jabber/buddy.c:1041 -#, fuzzy msgid "Jingle Video" -msgstr "Živé video" +msgstr "Jingle Video" #: ../libpurple/protocols/jabber/buddy.c:883 #: ../libpurple/protocols/jabber/buddy.c:1043 msgid "Jingle DTMF" -msgstr "" +msgstr "Jingle DTMF" #: ../libpurple/protocols/jabber/buddy.c:885 #: ../libpurple/protocols/jabber/buddy.c:1045 -#, fuzzy msgid "Message Receipts" -msgstr "Prijatá správa" +msgstr "Príjem správ" #: ../libpurple/protocols/jabber/buddy.c:887 #: ../libpurple/protocols/jabber/buddy.c:1047 -#, fuzzy msgid "Public Key Publishing" -msgstr "Babbleprint verejného kľúča" +msgstr "Zverejnenie verejného kľúča" #: ../libpurple/protocols/jabber/buddy.c:889 #: ../libpurple/protocols/jabber/buddy.c:1049 -#, fuzzy msgid "User Chatting" -msgstr "Možnosti používateľa" +msgstr "Používateľ chatuje" #: ../libpurple/protocols/jabber/buddy.c:891 #: ../libpurple/protocols/jabber/buddy.c:1051 -#, fuzzy msgid "User Browsing" -msgstr "Režimy používateľa" +msgstr "Používateľ surfuje" #: ../libpurple/protocols/jabber/buddy.c:893 #: ../libpurple/protocols/jabber/buddy.c:1053 -#, fuzzy msgid "User Gaming" -msgstr "Meno používateľa" +msgstr "Používateľ hrá" #: ../libpurple/protocols/jabber/buddy.c:895 #: ../libpurple/protocols/jabber/buddy.c:1055 -#, fuzzy msgid "User Viewing" -msgstr "Limit používateľov" +msgstr "Používateľ prezerá" #: ../libpurple/protocols/jabber/buddy.c:897 #: ../libpurple/protocols/jabber/buddy.c:1057 @@ -5100,48 +5115,47 @@ #: ../libpurple/protocols/jabber/buddy.c:899 #: ../libpurple/protocols/jabber/buddy.c:1059 -#, fuzzy msgid "Stanza Encryption" -msgstr "Šifrovanie Trillian" +msgstr "Šifrovanie slôh" #: ../libpurple/protocols/jabber/buddy.c:901 #: ../libpurple/protocols/jabber/buddy.c:1061 msgid "Entity Time" -msgstr "" +msgstr "Čas entity" #: ../libpurple/protocols/jabber/buddy.c:903 #: ../libpurple/protocols/jabber/buddy.c:1063 msgid "Delayed Delivery" -msgstr "" +msgstr "Odložené doručenie" #: ../libpurple/protocols/jabber/buddy.c:905 #: ../libpurple/protocols/jabber/buddy.c:1065 msgid "Collaborative Data Objects" -msgstr "" +msgstr "Spolupracujúce dátové objekty" #: ../libpurple/protocols/jabber/buddy.c:907 #: ../libpurple/protocols/jabber/buddy.c:1067 msgid "File Repository and Sharing" -msgstr "" +msgstr "Ukladanie a zdieľanie súborov" #: ../libpurple/protocols/jabber/buddy.c:909 #: ../libpurple/protocols/jabber/buddy.c:1069 msgid "STUN Service Discovery for Jingle" -msgstr "" +msgstr "Objavenie STUN služieb pre Jingle" #: ../libpurple/protocols/jabber/buddy.c:911 #: ../libpurple/protocols/jabber/buddy.c:1071 msgid "Simplified Encrypted Session Negotiation" -msgstr "" +msgstr "Požadovanie zjednodušeného šiforvaného spojenia" #: ../libpurple/protocols/jabber/buddy.c:913 #: ../libpurple/protocols/jabber/buddy.c:1073 msgid "Hop Check" -msgstr "" +msgstr "Kontrola skoku" #: ../libpurple/protocols/jabber/buddy.c:921 #: ../libpurple/protocols/jabber/buddy.c:1081 -#: ../libpurple/protocols/oscar/oscar.c:2906 +#: ../libpurple/protocols/oscar/oscar.c:2920 msgid "Capabilities" msgstr "Schopnosti" @@ -5168,8 +5182,8 @@ #: ../libpurple/protocols/jabber/buddy.c:1270 #: ../libpurple/protocols/jabber/jabber.c:952 -#: ../libpurple/protocols/oscar/oscar.c:3788 -#: ../libpurple/protocols/oscar/oscar.c:3801 +#: ../libpurple/protocols/oscar/oscar.c:3802 +#: ../libpurple/protocols/oscar/oscar.c:3815 #: ../libpurple/protocols/qq/buddy_info.c:56 #: ../libpurple/protocols/silc/ops.c:1030 #: ../libpurple/protocols/silc10/ops.c:1064 @@ -5178,7 +5192,7 @@ #: ../libpurple/protocols/jabber/buddy.c:1276 msgid "P.O. Box" -msgstr "P.O. Box" +msgstr "P.O.Box" #: ../libpurple/protocols/jabber/buddy.c:1386 msgid "Photo" @@ -5188,74 +5202,71 @@ msgid "Logo" msgstr "Logo" -#: ../libpurple/protocols/jabber/buddy.c:1942 +#: ../libpurple/protocols/jabber/buddy.c:1945 msgid "Un-hide From" msgstr "Zviditeľniť pred" -#: ../libpurple/protocols/jabber/buddy.c:1946 +#: ../libpurple/protocols/jabber/buddy.c:1949 msgid "Temporarily Hide From" msgstr "Dočasne skryť pred" #. && NOT ME -#: ../libpurple/protocols/jabber/buddy.c:1954 +#: ../libpurple/protocols/jabber/buddy.c:1957 msgid "Cancel Presence Notification" msgstr "Zrušiť upozornenie prítomnosti" -#: ../libpurple/protocols/jabber/buddy.c:1961 +#: ../libpurple/protocols/jabber/buddy.c:1964 msgid "(Re-)Request authorization" msgstr "Znovu požiadať o autorizáciu" #. if(NOT ME) #. shouldn't this just happen automatically when the buddy is #. removed? -#: ../libpurple/protocols/jabber/buddy.c:1970 +#: ../libpurple/protocols/jabber/buddy.c:1973 msgid "Unsubscribe" msgstr "Odhlásiť sa" -#: ../libpurple/protocols/jabber/buddy.c:1985 -#, fuzzy +#: ../libpurple/protocols/jabber/buddy.c:1988 msgid "Log In" -msgstr "Prihlásený" - -#: ../libpurple/protocols/jabber/buddy.c:1989 -#, fuzzy +msgstr "Prihlásiť" + +#: ../libpurple/protocols/jabber/buddy.c:1992 msgid "Log Out" -msgstr "Ukladať rozhovory" - -#: ../libpurple/protocols/jabber/buddy.c:2035 +msgstr "Odhlásiť" + +#: ../libpurple/protocols/jabber/buddy.c:2038 #: ../libpurple/protocols/jabber/jabber.c:1553 msgid "Chatty" msgstr "Chatty" -#: ../libpurple/protocols/jabber/buddy.c:2039 +#: ../libpurple/protocols/jabber/buddy.c:2042 msgid "Extended Away" msgstr "Dlhšie neprítomný" -#: ../libpurple/protocols/jabber/buddy.c:2041 +#: ../libpurple/protocols/jabber/buddy.c:2044 #: ../libpurple/protocols/jabber/jabber.c:1622 #: ../libpurple/protocols/oscar/oscar.c:727 -#: ../libpurple/protocols/oscar/oscar.c:5808 +#: ../libpurple/protocols/oscar/oscar.c:5860 #: ../libpurple/protocols/sametime/sametime.c:3297 -#, c-format msgid "Do Not Disturb" msgstr "Nerušiť" -#: ../libpurple/protocols/jabber/buddy.c:2208 +#: ../libpurple/protocols/jabber/buddy.c:2211 msgid "JID" msgstr "JID" -#: ../libpurple/protocols/jabber/buddy.c:2212 -#: ../libpurple/protocols/jabber/buddy.c:2391 -#: ../libpurple/protocols/oscar/oscar.c:3711 +#: ../libpurple/protocols/jabber/buddy.c:2215 +#: ../libpurple/protocols/jabber/buddy.c:2394 +#: ../libpurple/protocols/oscar/oscar.c:3725 msgid "Last Name" msgstr "Priezvisko" -#: ../libpurple/protocols/jabber/buddy.c:2244 +#: ../libpurple/protocols/jabber/buddy.c:2247 msgid "The following are the results of your search" msgstr "Nižšie sú výsledky vášho vyhľadávania" #. current comment from Jabber User Directory users.jabber.org -#: ../libpurple/protocols/jabber/buddy.c:2319 +#: ../libpurple/protocols/jabber/buddy.c:2322 msgid "" "Find a contact by entering the search criteria in the given fields. Note: " "Each field supports wild card searches (%)" @@ -5263,40 +5274,40 @@ "Nájdite kontakt zadávaním vyhľadávaích kritérií v daných poliach. Poznámka: " "Každé pole podporuje hľadanie pomocou nahradzajúcich znakov (%)" -#: ../libpurple/protocols/jabber/buddy.c:2339 +#: ../libpurple/protocols/jabber/buddy.c:2342 msgid "Directory Query Failed" msgstr "Požiadavka na priečinok zlyhala" -#: ../libpurple/protocols/jabber/buddy.c:2340 +#: ../libpurple/protocols/jabber/buddy.c:2343 msgid "Could not query the directory server." msgstr "Nedá sa poslať požiadavka na priečinkový server." #. Try to translate the message (see static message #. list in jabber_user_dir_comments[]) -#: ../libpurple/protocols/jabber/buddy.c:2374 +#: ../libpurple/protocols/jabber/buddy.c:2377 #, c-format msgid "Server Instructions: %s" msgstr "Inštrukcie servera: %s" -#: ../libpurple/protocols/jabber/buddy.c:2381 +#: ../libpurple/protocols/jabber/buddy.c:2384 msgid "Fill in one or more fields to search for any matching XMPP users." msgstr "" "Vyplňte jedno alebo viac políčok na hľadanie vyhovujúcich XMPP používateľov." -#: ../libpurple/protocols/jabber/buddy.c:2401 -#: ../libpurple/protocols/novell/novell.c:1488 -#: ../libpurple/protocols/oscar/oscar.c:3714 -#: ../libpurple/protocols/oscar/oscar.c:3723 +#: ../libpurple/protocols/jabber/buddy.c:2404 +#: ../libpurple/protocols/novell/novell.c:1490 +#: ../libpurple/protocols/oscar/oscar.c:3728 +#: ../libpurple/protocols/oscar/oscar.c:3737 msgid "E-Mail Address" msgstr "E-mailová adresa" -#: ../libpurple/protocols/jabber/buddy.c:2410 -#: ../libpurple/protocols/jabber/buddy.c:2411 +#: ../libpurple/protocols/jabber/buddy.c:2413 +#: ../libpurple/protocols/jabber/buddy.c:2414 msgid "Search for XMPP users" msgstr "Vyhľadávanie používateľov XMPP" #. "Search" -#: ../libpurple/protocols/jabber/buddy.c:2412 +#: ../libpurple/protocols/jabber/buddy.c:2415 #: ../libpurple/protocols/qq/group.c:123 #: ../libpurple/protocols/qq/group_im.c:147 #: ../libpurple/protocols/qq/sys_msg.c:174 @@ -5308,24 +5319,24 @@ msgid "Search" msgstr "Hľadať" -#: ../libpurple/protocols/jabber/buddy.c:2427 +#: ../libpurple/protocols/jabber/buddy.c:2430 msgid "Invalid Directory" msgstr "Neplatný priečinok" -#: ../libpurple/protocols/jabber/buddy.c:2444 +#: ../libpurple/protocols/jabber/buddy.c:2447 msgid "Enter a User Directory" msgstr "Zadajte používateľský priečinok" -#: ../libpurple/protocols/jabber/buddy.c:2445 +#: ../libpurple/protocols/jabber/buddy.c:2448 msgid "Select a user directory to search" msgstr "Vyberte používateľský priečinok pre hľadanie" -#: ../libpurple/protocols/jabber/buddy.c:2448 +#: ../libpurple/protocols/jabber/buddy.c:2451 msgid "Search Directory" msgstr "Prehľadávať priečinok" #: ../libpurple/protocols/jabber/chat.c:41 -#: ../libpurple/protocols/oscar/oscar.c:5294 +#: ../libpurple/protocols/oscar/oscar.c:5344 #: ../libpurple/protocols/yahoo/yahoochat.c:1048 msgid "_Room:" msgstr "_Miestnosť:" @@ -5423,7 +5434,7 @@ #: ../libpurple/protocols/jabber/jabber.c:145 msgid "You require encryption, but it is not available on this server." -msgstr "" +msgstr "Požadovali ste šifrovanie, ale na tomto serveri nie je dostupné." #: ../libpurple/protocols/jabber/jabber.c:259 #: ../libpurple/protocols/jabber/jabber.c:312 @@ -5437,9 +5448,9 @@ msgstr "Chyba čítania" #: ../libpurple/protocols/jabber/jabber.c:482 -#: ../libpurple/protocols/oscar/flap_connection.c:394 -#: ../libpurple/protocols/yahoo/yahoo.c:2558 -#: ../libpurple/protocols/yahoo/yahoo.c:2590 +#: ../libpurple/protocols/oscar/flap_connection.c:396 +#: ../libpurple/protocols/yahoo/yahoo.c:2560 +#: ../libpurple/protocols/yahoo/yahoo.c:2592 #, c-format msgid "" "Could not establish a connection with the server:\n" @@ -5467,9 +5478,9 @@ msgstr "Registrácia %s@%s bola úspešná" #: ../libpurple/protocols/jabber/jabber.c:662 -#, fuzzy, c-format +#, c-format msgid "Registration to %s successful" -msgstr "Registrácia %s@%s bola úspešná" +msgstr "Registrácia na %s bola úspešná" #: ../libpurple/protocols/jabber/jabber.c:664 #: ../libpurple/protocols/jabber/jabber.c:665 @@ -5482,21 +5493,19 @@ msgstr "Registrácia zlyhala" #: ../libpurple/protocols/jabber/jabber.c:692 -#, fuzzy, c-format +#, c-format msgid "Registration from %s successfully removed" -msgstr "Registrácia %s@%s bola úspešná" +msgstr "Registrácia z %s bola úspešne odstránená" #: ../libpurple/protocols/jabber/jabber.c:694 #: ../libpurple/protocols/jabber/jabber.c:695 -#, fuzzy msgid "Unregistration Successful" -msgstr "Registrácia úspešná" +msgstr "Zrušenie registrácie úspešné" #: ../libpurple/protocols/jabber/jabber.c:703 #: ../libpurple/protocols/jabber/jabber.c:704 -#, fuzzy msgid "Unregistration Failed" -msgstr "Registrácia zlyhala" +msgstr "Zrušenie registrácie zlyhalo" #: ../libpurple/protocols/jabber/jabber.c:864 #: ../libpurple/protocols/jabber/jabber.c:865 @@ -5504,8 +5513,8 @@ msgstr "Už zaregistrovaný" #: ../libpurple/protocols/jabber/jabber.c:962 -#: ../libpurple/protocols/oscar/oscar.c:3790 -#: ../libpurple/protocols/oscar/oscar.c:3803 +#: ../libpurple/protocols/oscar/oscar.c:3804 +#: ../libpurple/protocols/oscar/oscar.c:3817 msgid "State" msgstr "Štát" @@ -5528,22 +5537,19 @@ msgstr "Dátum" #: ../libpurple/protocols/jabber/jabber.c:987 -#, fuzzy msgid "Unregister" -msgstr "Registrovať" +msgstr "Zrušiť registráciu" #: ../libpurple/protocols/jabber/jabber.c:994 -#, fuzzy msgid "" "Please fill out the information below to change your account registration." msgstr "" -"Pre zaregistrovanie vášho nového konta, vyplňte prosím nižšie uvedené " -"informácie." +"Pre zmenu registrácie vašeho účtu, vyplňte prosím nižšie uvedené informácie." #: ../libpurple/protocols/jabber/jabber.c:997 msgid "Please fill out the information below to register your new account." msgstr "" -"Pre zaregistrovanie vášho nového konta, vyplňte prosím nižšie uvedené " +"Pre zaregistrovanie vášho nového účtu, vyplňte prosím nižšie uvedené " "informácie." #: ../libpurple/protocols/jabber/jabber.c:1005 @@ -5557,43 +5563,39 @@ msgstr "Registrovať" #: ../libpurple/protocols/jabber/jabber.c:1012 -#, fuzzy, c-format +#, c-format msgid "Change Account Registration at %s" -msgstr "Zmeniť podrobnosti o používateľovi %s" +msgstr "Zmeniť registráciu účtu na %s" #: ../libpurple/protocols/jabber/jabber.c:1013 -#, fuzzy, c-format +#, c-format msgid "Register New Account at %s" -msgstr "Registrovať nový XMPP účet" +msgstr "Registrovať nový účet na %s" #: ../libpurple/protocols/jabber/jabber.c:1016 -#, fuzzy msgid "Change Registration" -msgstr "Zmeniť stav na:" +msgstr "Zmeniť registráciu" #: ../libpurple/protocols/jabber/jabber.c:1120 #: ../libpurple/protocols/jabber/jabber.c:1121 -#, fuzzy msgid "Error unregistering account" -msgstr "Chyba pri zmene podrobností účtu" +msgstr "Chyba pri rušení účtu" #: ../libpurple/protocols/jabber/jabber.c:1126 #: ../libpurple/protocols/jabber/jabber.c:1127 -#, fuzzy msgid "Account successfully unregistered" -msgstr "Úspešne ste vytvroili Qun" +msgstr "Registrácia úspešne zrušená" #: ../libpurple/protocols/jabber/jabber.c:1284 msgid "Initializing Stream" msgstr "Spúšťa sa dátový prúd" #: ../libpurple/protocols/jabber/jabber.c:1289 -#, fuzzy msgid "Initializing SSL/TLS" -msgstr "Spúšťa sa dátový prúd" +msgstr "Spúšťa sa SSL/TLS" #: ../libpurple/protocols/jabber/jabber.c:1293 -#: ../libpurple/protocols/msn/session.c:351 +#: ../libpurple/protocols/msn/session.c:390 msgid "Authenticating" msgstr "Autentifikácia" @@ -5606,7 +5608,7 @@ #: ../libpurple/protocols/jabber/jabber.c:1909 #: ../libpurple/protocols/jabber/jabber.c:1945 #: ../libpurple/protocols/oscar/oscar.c:826 -#: ../libpurple/protocols/oscar/oscar.c:5602 +#: ../libpurple/protocols/oscar/oscar.c:5654 msgid "Not Authorized" msgstr "Neautorizovaný" @@ -5660,27 +5662,24 @@ #: ../libpurple/protocols/jabber/jabber.c:1580 #: ../libpurple/protocols/jabber/jabber.c:1603 #: ../libpurple/protocols/jabber/jabber.c:1626 -#, fuzzy msgid "Mood Text" -msgstr "Krvná skupina" +msgstr "Popis nálady" #: ../libpurple/protocols/jabber/jabber.c:1535 #: ../libpurple/protocols/jabber/jabber.c:1558 #: ../libpurple/protocols/jabber/jabber.c:1581 #: ../libpurple/protocols/jabber/jabber.c:1604 #: ../libpurple/protocols/jabber/jabber.c:1627 -#, fuzzy msgid "Tune Artist" -msgstr "Umelci" +msgstr "Tune interpret" #: ../libpurple/protocols/jabber/jabber.c:1536 #: ../libpurple/protocols/jabber/jabber.c:1559 #: ../libpurple/protocols/jabber/jabber.c:1582 #: ../libpurple/protocols/jabber/jabber.c:1605 #: ../libpurple/protocols/jabber/jabber.c:1628 -#, fuzzy msgid "Tune Title" -msgstr "Nadpis" +msgstr "Tune titulok" #: ../libpurple/protocols/jabber/jabber.c:1537 #: ../libpurple/protocols/jabber/jabber.c:1560 @@ -5688,7 +5687,7 @@ #: ../libpurple/protocols/jabber/jabber.c:1606 #: ../libpurple/protocols/jabber/jabber.c:1629 msgid "Tune Album" -msgstr "" +msgstr "Tune album" #: ../libpurple/protocols/jabber/jabber.c:1538 #: ../libpurple/protocols/jabber/jabber.c:1561 @@ -5696,16 +5695,15 @@ #: ../libpurple/protocols/jabber/jabber.c:1607 #: ../libpurple/protocols/jabber/jabber.c:1630 msgid "Tune Genre" -msgstr "" +msgstr "Tune žáner" #: ../libpurple/protocols/jabber/jabber.c:1539 #: ../libpurple/protocols/jabber/jabber.c:1562 #: ../libpurple/protocols/jabber/jabber.c:1585 #: ../libpurple/protocols/jabber/jabber.c:1608 #: ../libpurple/protocols/jabber/jabber.c:1631 -#, fuzzy msgid "Tune Comment" -msgstr "Komentár priateľa" +msgstr "Tune komentár" #: ../libpurple/protocols/jabber/jabber.c:1540 #: ../libpurple/protocols/jabber/jabber.c:1563 @@ -5713,7 +5711,7 @@ #: ../libpurple/protocols/jabber/jabber.c:1609 #: ../libpurple/protocols/jabber/jabber.c:1632 msgid "Tune Track" -msgstr "" +msgstr "Tune stopa" #: ../libpurple/protocols/jabber/jabber.c:1541 #: ../libpurple/protocols/jabber/jabber.c:1564 @@ -5721,7 +5719,7 @@ #: ../libpurple/protocols/jabber/jabber.c:1610 #: ../libpurple/protocols/jabber/jabber.c:1633 msgid "Tune Time" -msgstr "" +msgstr "Tune čas" #: ../libpurple/protocols/jabber/jabber.c:1542 #: ../libpurple/protocols/jabber/jabber.c:1565 @@ -5729,7 +5727,7 @@ #: ../libpurple/protocols/jabber/jabber.c:1611 #: ../libpurple/protocols/jabber/jabber.c:1634 msgid "Tune Year" -msgstr "" +msgstr "Tune rok" #: ../libpurple/protocols/jabber/jabber.c:1543 #: ../libpurple/protocols/jabber/jabber.c:1566 @@ -5737,16 +5735,15 @@ #: ../libpurple/protocols/jabber/jabber.c:1612 #: ../libpurple/protocols/jabber/jabber.c:1635 msgid "Tune URL" -msgstr "" +msgstr "Tune URL" #: ../libpurple/protocols/jabber/jabber.c:1545 #: ../libpurple/protocols/jabber/jabber.c:1568 #: ../libpurple/protocols/jabber/jabber.c:1591 #: ../libpurple/protocols/jabber/jabber.c:1614 #: ../libpurple/protocols/jabber/jabber.c:1637 -#, fuzzy msgid "Allow Buzz" -msgstr "Povoliť" +msgstr "Povoliť Bzzz" #: ../libpurple/protocols/jabber/jabber.c:1665 msgid "Password Changed" @@ -5775,7 +5772,7 @@ msgstr "Zadajte, prosím, vaše nové heslo" #: ../libpurple/protocols/jabber/jabber.c:1749 -#: ../libpurple/protocols/oscar/oscar.c:6388 +#: ../libpurple/protocols/oscar/oscar.c:6440 #: ../libpurple/protocols/silc/silc.c:1093 #: ../libpurple/protocols/silc10/silc.c:1004 msgid "Set User Info..." @@ -5783,7 +5780,7 @@ #. if (js->protocol_options & CHANGE_PASSWORD) { #: ../libpurple/protocols/jabber/jabber.c:1754 -#: ../libpurple/protocols/oscar/oscar.c:6399 +#: ../libpurple/protocols/oscar/oscar.c:6451 #: ../libpurple/protocols/silc/silc.c:1089 #: ../libpurple/protocols/silc10/silc.c:1000 msgid "Change Password..." @@ -5979,7 +5976,7 @@ #: ../libpurple/protocols/jabber/jabber.c:1963 msgid "Unsupported Stanza Type" -msgstr "Nepodporovaný Stanza typ" +msgstr "Nepodporovaný typ slohy" #: ../libpurple/protocols/jabber/jabber.c:1965 msgid "Unsupported Version" @@ -6024,51 +6021,69 @@ msgstr "Nepodarilo sa vykopnúť používateľa %s" #: ../libpurple/protocols/jabber/jabber.c:2185 -#, fuzzy, c-format +#, c-format msgid "Unable to ping user %s" -msgstr "Nedá sa udeliť zákaz pre používateľa %s" +msgstr "Nepodarilo sa pingnúť používateľa %s" #: ../libpurple/protocols/jabber/jabber.c:2207 #: ../libpurple/protocols/jabber/jabber.c:2217 #, c-format msgid "Unable to buzz, because there is nothing known about user %s." -msgstr "" +msgstr "Nepodarilo sa poslať bzzz, pretože o používateľovi %s nič nevieme." #: ../libpurple/protocols/jabber/jabber.c:2213 #, c-format msgid "Unable to buzz, because user %s might be offline." -msgstr "" +msgstr "Nepodarilo sa poslať bzzz, pretože používateľ %s môže byť odpojený." #: ../libpurple/protocols/jabber/jabber.c:2239 -#, fuzzy, c-format +#, c-format msgid "Unable to buzz, because the user %s does not support it." -msgstr "Nedá sa odoslať súbor používateľovi %s, nepodporuje prenosy súborov" - -#: ../libpurple/protocols/jabber/jabber.c:2253 +msgstr "Nepodarilo sa poslať bzzz, pretože používateľ %s to nepodporuje." + +#: ../libpurple/protocols/jabber/jabber.c:2250 +#: ../libpurple/protocols/yahoo/yahoo.c:4121 +msgid "Buzz" +msgstr "Bzzz" + +#: ../libpurple/protocols/jabber/jabber.c:2251 +#: ../libpurple/protocols/jabber/message.c:307 +#: ../libpurple/protocols/yahoo/yahoo.c:4122 +#, c-format +msgid "%s has buzzed you!" +msgstr "Používateľ %s vám poslal bzzz!" + +#: ../libpurple/protocols/jabber/jabber.c:2252 +#: ../libpurple/protocols/yahoo/yahoo.c:4123 +#, c-format +msgid "Buzzing %s..." +msgstr "Posielam bzzz používateľovi %s..." + +#: ../libpurple/protocols/jabber/jabber.c:2291 msgid "config: Configure a chat room." msgstr "config: Nastavenie miestnosti chatu." -#: ../libpurple/protocols/jabber/jabber.c:2257 +#: ../libpurple/protocols/jabber/jabber.c:2295 msgid "configure: Configure a chat room." msgstr "configure: Nastavenie miestnosti chatu." -#: ../libpurple/protocols/jabber/jabber.c:2266 +#: ../libpurple/protocols/jabber/jabber.c:2304 msgid "part [room]: Leave the room." msgstr "part [miestnosť]: Opustí miestnosť." -#: ../libpurple/protocols/jabber/jabber.c:2271 +#: ../libpurple/protocols/jabber/jabber.c:2309 msgid "register: Register with a chat room." msgstr "register: Zaregistrovať sa v chatovacej miestnosti." -#: ../libpurple/protocols/jabber/jabber.c:2277 +#: ../libpurple/protocols/jabber/jabber.c:2315 msgid "topic [new topic]: View or change the topic." msgstr "topic [nová téma]: Zobrazí alebo zmení tému." -#: ../libpurple/protocols/jabber/jabber.c:2283 +#: ../libpurple/protocols/jabber/jabber.c:2321 msgid "ban <user> [room]: Ban a user from the room." msgstr "ban <používateľ> [miestnosť]: Vykázať používateľa z miestnosti." -#: ../libpurple/protocols/jabber/jabber.c:2289 +#: ../libpurple/protocols/jabber/jabber.c:2327 msgid "" "affiliate <user> <owner|admin|member|outcast|none>: Set a user's " "affiliation with the room." @@ -6076,7 +6091,7 @@ "affiliate <používateľ> <owner|admin|member|outcast|none>: " "Nastaví používateľové pričlenenie v miestnosti." -#: ../libpurple/protocols/jabber/jabber.c:2295 +#: ../libpurple/protocols/jabber/jabber.c:2333 msgid "" "role <user> <moderator|participant|visitor|none>: Set a user's " "role in the room." @@ -6084,32 +6099,32 @@ "role <používateľ> <moderator|participant|visitor|none>: Nastaví " "postavenie používateľa v miestnosti." -#: ../libpurple/protocols/jabber/jabber.c:2301 +#: ../libpurple/protocols/jabber/jabber.c:2339 msgid "invite <user> [message]: Invite a user to the room." msgstr "invite <user> [správa]: Pozve používateľa do miestnosti." -#: ../libpurple/protocols/jabber/jabber.c:2307 +#: ../libpurple/protocols/jabber/jabber.c:2345 msgid "join: <room> [server]: Join a chat on this server." msgstr "join: <room> [server]: Pripojí sa na chat na tomto serveri." -#: ../libpurple/protocols/jabber/jabber.c:2313 +#: ../libpurple/protocols/jabber/jabber.c:2351 msgid "kick <user> [room]: Kick a user from the room." msgstr "" "kick <používateľ> [miestnosť]: Vykopne používateľa z miestnosti." -#: ../libpurple/protocols/jabber/jabber.c:2318 +#: ../libpurple/protocols/jabber/jabber.c:2356 msgid "" "msg <user> <message>: Send a private message to another user." msgstr "" -"msg <používateľ> <správa>: Odosle súkromnú správu inému " +"msg <používateľ> <správa>: Odošle súkromnú správu inému " "používateľovi." -#: ../libpurple/protocols/jabber/jabber.c:2324 +#: ../libpurple/protocols/jabber/jabber.c:2362 msgid "ping <jid>:\tPing a user/component/server." -msgstr "" - -#: ../libpurple/protocols/jabber/jabber.c:2329 -#: ../libpurple/protocols/yahoo/yahoo.c:4145 +msgstr "ping <jid>:\tPingne používateľa, súčasť alebo server." + +#: ../libpurple/protocols/jabber/jabber.c:2367 +#: ../libpurple/protocols/yahoo/yahoo.c:4147 msgid "buzz: Buzz a user to get their attention" msgstr "buzz: Pošlite používateľovi „bzzz“ a tým si získajte jeho pozornosť" @@ -6135,7 +6150,7 @@ #: ../libpurple/protocols/jabber/libxmpp.c:210 msgid "Require SSL/TLS" -msgstr "" +msgstr "Vyžadovať SSL/TLS" #: ../libpurple/protocols/jabber/libxmpp.c:214 msgid "Force old (port 5223) SSL" @@ -6146,8 +6161,8 @@ msgstr "Povoliť plaintextovú autentifikáciu cez nezašifrované spojenia" #: ../libpurple/protocols/jabber/libxmpp.c:224 -#: ../libpurple/protocols/myspace/myspace.c:3277 -#: ../libpurple/protocols/simple/simple.c:1902 +#: ../libpurple/protocols/myspace/myspace.c:3283 +#: ../libpurple/protocols/simple/simple.c:1904 msgid "Connect port" msgstr "Port pripojenia" @@ -6155,7 +6170,7 @@ #. * able to set the first port to try (like LastConnectedPort in Windows client). #. Account options #: ../libpurple/protocols/jabber/libxmpp.c:228 -#: ../libpurple/protocols/myspace/myspace.c:3274 +#: ../libpurple/protocols/myspace/myspace.c:3280 #: ../libpurple/protocols/silc/silc.c:1914 #: ../libpurple/protocols/silc10/silc.c:1857 ../pidgin/gtkaccount.c:837 msgid "Connect server" @@ -6190,12 +6205,6 @@ msgid "XMPP Message Error" msgstr "Chyba správy XMPP" -#: ../libpurple/protocols/jabber/message.c:307 -#: ../libpurple/protocols/yahoo/yahoo.c:4120 -#, fuzzy, c-format -msgid "%s has buzzed you!" -msgstr "Používateľ %s sa prihlásil." - #: ../libpurple/protocols/jabber/message.c:407 #, c-format msgid " (Code %s)" @@ -6205,16 +6214,16 @@ msgid "XML Parse error" msgstr "Chyba pri spracovaní XML" -#: ../libpurple/protocols/jabber/presence.c:427 +#: ../libpurple/protocols/jabber/presence.c:422 msgid "Unknown Error in presence" msgstr "Prítomná neznáma chyba" -#: ../libpurple/protocols/jabber/presence.c:508 -#: ../libpurple/protocols/jabber/presence.c:509 +#: ../libpurple/protocols/jabber/presence.c:503 +#: ../libpurple/protocols/jabber/presence.c:504 msgid "Create New Room" msgstr "Vytvoriť novú miestnosť" -#: ../libpurple/protocols/jabber/presence.c:510 +#: ../libpurple/protocols/jabber/presence.c:505 msgid "" "You are creating a new room. Would you like to configure it, or accept the " "default settings?" @@ -6222,20 +6231,20 @@ "Vytvárate novú miestnosť. Chceli by ste ju nastaviť, alebo prijmete " "štandardné nastavenia?" -#: ../libpurple/protocols/jabber/presence.c:516 +#: ../libpurple/protocols/jabber/presence.c:511 msgid "_Configure Room" msgstr "Konfigurovať miestnosť" -#: ../libpurple/protocols/jabber/presence.c:517 +#: ../libpurple/protocols/jabber/presence.c:512 msgid "_Accept Defaults" msgstr "_Prijať štandardné" -#: ../libpurple/protocols/jabber/presence.c:559 +#: ../libpurple/protocols/jabber/presence.c:554 #, c-format msgid "Error in chat %s" msgstr "Chyba v chate %s" -#: ../libpurple/protocols/jabber/presence.c:563 +#: ../libpurple/protocols/jabber/presence.c:558 #, c-format msgid "Error joining chat %s" msgstr "Chyba pripojenia na chat %s" @@ -6279,62 +6288,64 @@ #: ../libpurple/protocols/jabber/usermood.c:179 #: ../libpurple/protocols/jabber/usermood.c:180 -#, fuzzy msgid "Edit User Mood" -msgstr "Režimy používateľa" +msgstr "Zmeniť náladu používateľa" #: ../libpurple/protocols/jabber/usermood.c:181 msgid "Please select your mood from the list." -msgstr "" +msgstr "Prosím, vyberte vašu náladu zo zoznamu." #: ../libpurple/protocols/jabber/usermood.c:183 #: ../libpurple/protocols/jabber/usernick.c:78 -#, fuzzy msgid "Set" -msgstr "_Nastaviť" +msgstr "Nastaviť" #: ../libpurple/protocols/jabber/usermood.c:191 -#, fuzzy msgid "Set Mood..." -msgstr "Odoslať správu..." +msgstr "Nastaviť náladu..." #: ../libpurple/protocols/jabber/usernick.c:76 -#, fuzzy msgid "Set User Nickname" -msgstr "Nastaviť limit používateľov" +msgstr "Nastaviť prezývku používateľa" #: ../libpurple/protocols/jabber/usernick.c:76 -#, fuzzy msgid "Please specify a new nickname for you." -msgstr "Zadajte, prosím, nový názov pre %s" +msgstr "Prosím, zadajte svoju novú prezývku." #: ../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:99 -#, fuzzy +"Táto prezývka sa zobrazí všetkým osobám vo vašom zozname kontaktov, preto " +"vyberte niečo vhodné." + +#: ../libpurple/protocols/jabber/usernick.c:100 msgid "Set Nickname..." -msgstr "Prezývka" +msgstr "Nastaviť prezývku..." #: ../libpurple/protocols/jabber/xdata.c:378 -#, fuzzy msgid "Actions" -msgstr "Akcia" +msgstr "Akcie" #: ../libpurple/protocols/jabber/xdata.c:380 -#, fuzzy msgid "Select an action" -msgstr "Vyberte súbor" - -#: ../libpurple/protocols/msn/dialog.c:110 +msgstr "Vyberte autora" + +#: ../libpurple/protocols/msn/contact.c:188 +msgid "Unable to connect to contact server" +msgstr "Nepodarilo sa pripojiť na server kontaktov." + +#: ../libpurple/protocols/msn/contact.c:948 +msgid "Unable to retrieve MSN Address Book" +msgstr "Nebolo možné prevzať zoznam adries MSN" + +#: ../libpurple/protocols/msn/dialog.c:118 #, c-format msgid "Buddy list synchronization issue in %s (%s)" msgstr "Problém synchronizácie zoznamu kamarátov v %s (%s)" -#: ../libpurple/protocols/msn/dialog.c:116 +#: ../libpurple/protocols/msn/dialog.c:124 #, c-format msgid "" "%s on the local list is inside the group \"%s\" but not on the server list. " @@ -6343,7 +6354,7 @@ "%s v miestnom zozname je v skupine „%s“, ale nie je v zozname servera. " "Chcete tohto kamaráta pridať?" -#: ../libpurple/protocols/msn/dialog.c:124 +#: ../libpurple/protocols/msn/dialog.c:132 #, c-format msgid "" "%s is on the local list but not on the server list. Do you want this buddy " @@ -6353,241 +6364,194 @@ "kamaráta pridať?" #: ../libpurple/protocols/msn/error.c:36 -#, c-format msgid "Unable to parse message" msgstr "Správa sa nedá spracovať" #: ../libpurple/protocols/msn/error.c:41 -#, c-format msgid "Syntax Error (probably a client bug)" msgstr "Chyba syntaxe (pravdepodobne chyba v klientovi)" #: ../libpurple/protocols/msn/error.c:46 -#, c-format msgid "Invalid e-mail address" msgstr "Chybná e-mailová adresa" #: ../libpurple/protocols/msn/error.c:49 -#, c-format msgid "User does not exist" msgstr "Používateľ neexistuje" #: ../libpurple/protocols/msn/error.c:53 -#, c-format msgid "Fully qualified domain name missing" msgstr "Chýba plne kvalifikované doménové meno" #: ../libpurple/protocols/msn/error.c:56 -#, c-format msgid "Already logged in" msgstr "Už je prihlásený" #: ../libpurple/protocols/msn/error.c:59 -#, c-format msgid "Invalid screen name" msgstr "Používateľské meno je chybné" #: ../libpurple/protocols/msn/error.c:62 -#, c-format msgid "Invalid friendly name" msgstr "Priateľské meno je chybné" #: ../libpurple/protocols/msn/error.c:65 -#, c-format msgid "List full" msgstr "Zoznam je plný" #: ../libpurple/protocols/msn/error.c:68 -#, c-format msgid "Already there" msgstr "Už sa tam nachádza" #: ../libpurple/protocols/msn/error.c:72 -#, c-format msgid "Not on list" msgstr "Nie je v zozname" #: ../libpurple/protocols/msn/error.c:75 #: ../libpurple/protocols/zephyr/zephyr.c:756 -#, c-format msgid "User is offline" msgstr "Používateľ je odpojený" #: ../libpurple/protocols/msn/error.c:78 -#, c-format msgid "Already in the mode" msgstr "Už v režime" #: ../libpurple/protocols/msn/error.c:82 -#, c-format msgid "Already in opposite list" msgstr "Už v opačnom zozname" #: ../libpurple/protocols/msn/error.c:86 -#, c-format msgid "Too many groups" msgstr "Príliš veľa skupín" #: ../libpurple/protocols/msn/error.c:89 -#, c-format msgid "Invalid group" msgstr "Chybná skupina" #: ../libpurple/protocols/msn/error.c:92 -#, c-format msgid "User not in group" msgstr "Používateľ nie je v skupine" #: ../libpurple/protocols/msn/error.c:95 -#, c-format msgid "Group name too long" msgstr "Názov skupiny príliš dlhý" #: ../libpurple/protocols/msn/error.c:98 -#, c-format msgid "Cannot remove group zero" msgstr "Nie je možné odstrániť nultú skupinu" #: ../libpurple/protocols/msn/error.c:103 -#, c-format msgid "Tried to add a user to a group that doesn't exist" msgstr "Pokúšate sa pridať používateľa do skupiny, ktorá neexistuje" #: ../libpurple/protocols/msn/error.c:107 -#, c-format msgid "Switchboard failed" msgstr "Prepojenie zlyhalo" #: ../libpurple/protocols/msn/error.c:111 -#, c-format msgid "Notify transfer failed" msgstr "Upozornenie prenosu zlyhalo" #: ../libpurple/protocols/msn/error.c:116 -#, c-format msgid "Required fields missing" msgstr "Chýbajú požadované polia" #: ../libpurple/protocols/msn/error.c:120 -#, c-format msgid "Too many hits to a FND" msgstr "Priveľa úderov pre FND" #: ../libpurple/protocols/msn/error.c:124 #: ../libpurple/protocols/oscar/oscar.c:120 -#, c-format msgid "Not logged in" msgstr "Neprihlásený" #: ../libpurple/protocols/msn/error.c:128 -#, c-format msgid "Service temporarily unavailable" msgstr "Služba je dočasne nedostupná" #: ../libpurple/protocols/msn/error.c:131 -#, c-format msgid "Database server error" msgstr "Chyba databázového servera" #: ../libpurple/protocols/msn/error.c:135 -#, c-format msgid "Command disabled" msgstr "Príkaz vypnutý" #: ../libpurple/protocols/msn/error.c:139 -#, c-format msgid "File operation error" msgstr "Chyba súborového operátora" #: ../libpurple/protocols/msn/error.c:143 -#, c-format msgid "Memory allocation error" msgstr "Chyba vyhradenie pamäte" #: ../libpurple/protocols/msn/error.c:147 -#, c-format msgid "Wrong CHL value sent to server" msgstr "Nesprávna CHL hodnota zaslaná servera" #: ../libpurple/protocols/msn/error.c:152 -#, c-format msgid "Server busy" msgstr "Server zaneprázdnený" #: ../libpurple/protocols/msn/error.c:155 #: ../libpurple/protocols/msn/error.c:170 #: ../libpurple/protocols/msn/error.c:230 -#, c-format msgid "Server unavailable" msgstr "Server je nedostupný" #: ../libpurple/protocols/msn/error.c:158 -#, c-format msgid "Peer notification server down" msgstr "Server upozornenia na partnera je vypnutý" #: ../libpurple/protocols/msn/error.c:162 -#, c-format msgid "Database connect error" msgstr "Chyba pripojenia k databáze" #: ../libpurple/protocols/msn/error.c:167 -#, c-format msgid "Server is going down (abandon ship)" msgstr "Server sa vypína (opustite ľoď)" #: ../libpurple/protocols/msn/error.c:174 -#, c-format msgid "Error creating connection" msgstr "Chyba pri vytváraní spojenia" #: ../libpurple/protocols/msn/error.c:179 -#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "CVR parametre sú buď neznáme alebo nedovolené" #: ../libpurple/protocols/msn/error.c:183 -#, c-format msgid "Unable to write" msgstr "Nepodarilo sa zapisovať" #: ../libpurple/protocols/msn/error.c:186 -#, c-format msgid "Session overload" msgstr "Relácia preťažená" #: ../libpurple/protocols/msn/error.c:190 -#, c-format msgid "User is too active" msgstr "Používateľ je príliš aktívny" #: ../libpurple/protocols/msn/error.c:193 -#, c-format msgid "Too many sessions" msgstr "Príliš veľa relácií" #: ../libpurple/protocols/msn/error.c:196 -#, c-format msgid "Passport not verified" msgstr "Heslo nebolo overené" #: ../libpurple/protocols/msn/error.c:199 -#, c-format msgid "Bad friend file" msgstr "Nesprávny súbor priateľa" #: ../libpurple/protocols/msn/error.c:203 -#, c-format msgid "Not expected" msgstr "Neočakávané" #: ../libpurple/protocols/msn/error.c:209 -#, c-format msgid "Friendly name changes too rapidly" msgstr "Priateľské meno sa mení príliš rýchlo" #: ../libpurple/protocols/msn/error.c:218 -#, c-format msgid "Server too busy" msgstr "Server je príliš zaneprázdnený" @@ -6596,32 +6560,26 @@ #: ../libpurple/protocols/silc/silc.c:233 #: ../libpurple/protocols/silc10/ops.c:1709 #: ../libpurple/protocols/toc/toc.c:728 ../libpurple/proxy.c:1380 -#, c-format msgid "Authentication failed" msgstr "Autentifikácia zlyhala" #: ../libpurple/protocols/msn/error.c:225 -#, c-format msgid "Not allowed when offline" msgstr "Nepovolené v odpojenom stave" #: ../libpurple/protocols/msn/error.c:233 -#, c-format msgid "Not accepting new users" msgstr "Neprijímame nových používateľov" #: ../libpurple/protocols/msn/error.c:237 -#, c-format msgid "Kids Passport without parental consent" msgstr "Detský pas bez súhlasu rodičov" #: ../libpurple/protocols/msn/error.c:241 -#, c-format msgid "Passport account not yet verified" msgstr "Účet pasu nebol ešte overený" #: ../libpurple/protocols/msn/error.c:244 -#, c-format msgid "Bad ticket" msgstr "Nesprávny lístok" @@ -6636,49 +6594,48 @@ msgstr "Chyba MSN: %s\n" #: ../libpurple/protocols/msn/msn.c:130 -#, fuzzy msgid "Nudge" -msgstr "štuchanec" +msgstr "Štuchanec" #: ../libpurple/protocols/msn/msn.c:131 -#, fuzzy, c-format +#, c-format msgid "%s has nudged you!" -msgstr "Používateľ %s sa prihlásil." +msgstr "Používateľ %s vás štuchol!" #: ../libpurple/protocols/msn/msn.c:132 -#, fuzzy, c-format +#, c-format msgid "Nudging %s..." -msgstr "Štuchanec" +msgstr "Štucháte používateľa %s..." #: ../libpurple/protocols/msn/msn.c:174 msgid "Your new MSN friendly name is too long." msgstr "Vaše nové MSN priateľské meno je príliš dlhé." -#: ../libpurple/protocols/msn/msn.c:282 +#: ../libpurple/protocols/msn/msn.c:285 msgid "Set your friendly name." msgstr "Vyplňte vaše priateľské meno." -#: ../libpurple/protocols/msn/msn.c:283 +#: ../libpurple/protocols/msn/msn.c:286 msgid "This is the name that other MSN buddies will see you as." msgstr "Toto je názov, pod ktorým vás budú vidieť ostatní priatelia z MSN." -#: ../libpurple/protocols/msn/msn.c:301 +#: ../libpurple/protocols/msn/msn.c:304 msgid "Set your home phone number." msgstr "Vyplňte vaše telefónne čislo domov" -#: ../libpurple/protocols/msn/msn.c:318 +#: ../libpurple/protocols/msn/msn.c:321 msgid "Set your work phone number." msgstr "Vyplňte vaše telefónne čislo do práce" -#: ../libpurple/protocols/msn/msn.c:335 +#: ../libpurple/protocols/msn/msn.c:338 msgid "Set your mobile phone number." msgstr "Vyplňte vaše telefónne čislo na mobil" -#: ../libpurple/protocols/msn/msn.c:350 +#: ../libpurple/protocols/msn/msn.c:353 msgid "Allow MSN Mobile pages?" msgstr "Povoliť mobilné stránky MSN?" -#: ../libpurple/protocols/msn/msn.c:351 +#: ../libpurple/protocols/msn/msn.c:354 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?" @@ -6686,323 +6643,326 @@ "Chcete povoliť alebo zakázať osobám vo vašom zozname priateľov posielať vám " "na váš mobilný telefón stránky MSN?" -#: ../libpurple/protocols/msn/msn.c:357 +#: ../libpurple/protocols/msn/msn.c:360 msgid "Allow" msgstr "Povoliť" -#: ../libpurple/protocols/msn/msn.c:358 +#: ../libpurple/protocols/msn/msn.c:361 msgid "Disallow" msgstr "Nepovoliť" -#: ../libpurple/protocols/msn/msn.c:374 +#: ../libpurple/protocols/msn/msn.c:377 msgid "This Hotmail account may not be active." msgstr "Tento účet služby Hotmail nemusí byť aktívny." -#: ../libpurple/protocols/msn/msn.c:400 +#: ../libpurple/protocols/msn/msn.c:403 msgid "Send a mobile message." msgstr "Odoslať správu na mobil." -#: ../libpurple/protocols/msn/msn.c:402 +#: ../libpurple/protocols/msn/msn.c:405 msgid "Page" msgstr "Strana" -#: ../libpurple/protocols/msn/msn.c:549 -msgid "Has you" -msgstr "Vás má" - -#: ../libpurple/protocols/msn/msn.c:579 ../libpurple/protocols/msn/state.c:33 -#: ../libpurple/protocols/yahoo/yahoo.c:3077 -#: ../libpurple/protocols/yahoo/yahoo.c:3761 +#: ../libpurple/protocols/msn/msn.c:610 ../libpurple/protocols/msn/msn.c:635 +#: ../libpurple/protocols/msn/msn.c:642 ../libpurple/protocols/msn/msn.c:649 +#: ../libpurple/protocols/msn/msn.c:656 ../libpurple/protocols/msn/msn.c:662 +#: ../libpurple/protocols/msn/msn.c:668 +msgid "Current media" +msgstr "Aktuálne médium" + +#: ../libpurple/protocols/msn/msn.c:647 ../libpurple/protocols/msn/state.c:33 +#: ../libpurple/protocols/yahoo/yahoo.c:3079 +#: ../libpurple/protocols/yahoo/yahoo.c:3763 msgid "Be Right Back" msgstr "Hneď som späť" -#: ../libpurple/protocols/msn/msn.c:583 ../libpurple/protocols/msn/state.c:31 -#: ../libpurple/protocols/novell/novell.c:2822 -#: ../libpurple/protocols/novell/novell.c:2952 +#: ../libpurple/protocols/msn/msn.c:654 ../libpurple/protocols/msn/state.c:31 +#: ../libpurple/protocols/novell/novell.c:2827 +#: ../libpurple/protocols/novell/novell.c:2957 #: ../libpurple/protocols/silc/buddy.c:1480 #: ../libpurple/protocols/silc/silc.c:56 #: ../libpurple/protocols/silc10/buddy.c:1480 #: ../libpurple/protocols/silc10/silc.c:47 -#: ../libpurple/protocols/yahoo/yahoo.c:3079 -#: ../libpurple/protocols/yahoo/yahoo.c:3764 +#: ../libpurple/protocols/yahoo/yahoo.c:3081 +#: ../libpurple/protocols/yahoo/yahoo.c:3766 msgid "Busy" msgstr "Zaneprázdnený" -#: ../libpurple/protocols/msn/msn.c:587 -#: ../libpurple/protocols/yahoo/yahoo.c:3087 -#: ../libpurple/protocols/yahoo/yahoo.c:3776 +#: ../libpurple/protocols/msn/msn.c:660 +#: ../libpurple/protocols/yahoo/yahoo.c:3089 +#: ../libpurple/protocols/yahoo/yahoo.c:3778 msgid "On the Phone" msgstr "Telefonujem" -#: ../libpurple/protocols/msn/msn.c:591 -#: ../libpurple/protocols/yahoo/yahoo.c:3091 -#: ../libpurple/protocols/yahoo/yahoo.c:3782 +#: ../libpurple/protocols/msn/msn.c:666 +#: ../libpurple/protocols/yahoo/yahoo.c:3093 +#: ../libpurple/protocols/yahoo/yahoo.c:3784 msgid "Out to Lunch" msgstr "Na obede" -#: ../libpurple/protocols/msn/msn.c:619 +#: ../libpurple/protocols/msn/msn.c:697 msgid "Set Friendly Name..." msgstr "Nastaviť priateľské meno..." -#: ../libpurple/protocols/msn/msn.c:624 +#: ../libpurple/protocols/msn/msn.c:702 msgid "Set Home Phone Number..." msgstr "Nastaviť číslo telefónu domov..." -#: ../libpurple/protocols/msn/msn.c:628 +#: ../libpurple/protocols/msn/msn.c:706 msgid "Set Work Phone Number..." msgstr "Nastaviť číslo telefónu do práce..." -#: ../libpurple/protocols/msn/msn.c:632 +#: ../libpurple/protocols/msn/msn.c:710 msgid "Set Mobile Phone Number..." msgstr "Nastaviť číslo mobilného telefónu..." -#: ../libpurple/protocols/msn/msn.c:638 +#: ../libpurple/protocols/msn/msn.c:716 msgid "Enable/Disable Mobile Devices..." msgstr "Povoliť/Zakázať mobilné zariadenia..." -#: ../libpurple/protocols/msn/msn.c:643 +#: ../libpurple/protocols/msn/msn.c:721 msgid "Allow/Disallow Mobile Pages..." msgstr "Povoliť/Zakázať mobilné stránky..." -#: ../libpurple/protocols/msn/msn.c:654 +#: ../libpurple/protocols/msn/msn.c:732 msgid "Open Hotmail Inbox" msgstr "Otvoriť poštovú schránku Hotmail" -#: ../libpurple/protocols/msn/msn.c:678 +#: ../libpurple/protocols/msn/msn.c:756 msgid "Send to Mobile" msgstr "Odoslať na mobil" -#: ../libpurple/protocols/msn/msn.c:688 -#: ../libpurple/protocols/novell/novell.c:3408 +#: ../libpurple/protocols/msn/msn.c:766 +#: ../libpurple/protocols/novell/novell.c:3413 msgid "Initiate _Chat" msgstr "Začať _chat" -#: ../libpurple/protocols/msn/msn.c:726 +#: ../libpurple/protocols/msn/msn.c:804 msgid "SSL support is needed for MSN. Please install a supported SSL library." msgstr "" "Pre MSN je potrebná podpora SSL. Nainštalujte, prosím, podporovanú SSL " "knižnicu." -#: ../libpurple/protocols/msn/msn.c:754 +#: ../libpurple/protocols/msn/msn.c:832 msgid "Failed to connect to server." msgstr "Nepodarilo sa spojiť so serverom." -#: ../libpurple/protocols/msn/msn.c:1510 ../libpurple/protocols/msn/msn.c:1858 +#: ../libpurple/protocols/msn/msn.c:1620 ../libpurple/protocols/msn/msn.c:1968 #: ../libpurple/protocols/yahoo/yahoo_profile.c:808 msgid "Error retrieving profile" msgstr "Chyba pri získavaní profilu" -#: ../libpurple/protocols/msn/msn.c:1581 ../pidgin/plugins/convcolors.c:309 -#: ../pidgin/plugins/pidginrc.c:366 +#: ../libpurple/protocols/msn/msn.c:1691 ../pidgin/plugins/convcolors.c:309 +#: ../pidgin/plugins/pidginrc.c:360 msgid "General" msgstr "Všeobecné" -#: ../libpurple/protocols/msn/msn.c:1588 -#: ../libpurple/protocols/myspace/user.c:110 -#: ../libpurple/protocols/oscar/oscar.c:3755 +#: ../libpurple/protocols/msn/msn.c:1698 +#: ../libpurple/protocols/myspace/user.c:113 +#: ../libpurple/protocols/oscar/oscar.c:3769 #: ../libpurple/protocols/qq/buddy_info.c:45 #: ../libpurple/protocols/qq/qq.c:221 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1081 msgid "Age" msgstr "Vek" -#: ../libpurple/protocols/msn/msn.c:1590 +#: ../libpurple/protocols/msn/msn.c:1700 #: ../libpurple/protocols/qq/buddy_info.c:51 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1096 msgid "Occupation" msgstr "Povolanie" -#: ../libpurple/protocols/msn/msn.c:1591 -#: ../libpurple/protocols/myspace/user.c:119 -#: ../libpurple/protocols/novell/novell.c:1478 +#: ../libpurple/protocols/msn/msn.c:1701 +#: ../libpurple/protocols/myspace/user.c:121 +#: ../libpurple/protocols/novell/novell.c:1480 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1076 #: ../libpurple/protocols/zephyr/zephyr.c:798 #: ../libpurple/protocols/zephyr/zephyr.c:1215 msgid "Location" msgstr "Lokalita" -#: ../libpurple/protocols/msn/msn.c:1596 ../libpurple/protocols/msn/msn.c:1788 -#: ../libpurple/protocols/msn/msn.c:1794 ../libpurple/protocols/msn/msn.c:1801 +#: ../libpurple/protocols/msn/msn.c:1706 ../libpurple/protocols/msn/msn.c:1898 +#: ../libpurple/protocols/msn/msn.c:1904 ../libpurple/protocols/msn/msn.c:1911 msgid "Hobbies and Interests" msgstr "Záľuby a záujmy" -#: ../libpurple/protocols/msn/msn.c:1602 ../libpurple/protocols/msn/msn.c:1722 -#: ../libpurple/protocols/msn/msn.c:1728 ../libpurple/protocols/msn/msn.c:1735 -#: ../libpurple/protocols/msn/msn.c:1743 ../libpurple/protocols/msn/msn.c:1750 +#: ../libpurple/protocols/msn/msn.c:1712 ../libpurple/protocols/msn/msn.c:1832 +#: ../libpurple/protocols/msn/msn.c:1838 ../libpurple/protocols/msn/msn.c:1845 +#: ../libpurple/protocols/msn/msn.c:1853 ../libpurple/protocols/msn/msn.c:1860 msgid "A Little About Me" msgstr "Niečo o mne" -#: ../libpurple/protocols/msn/msn.c:1619 +#: ../libpurple/protocols/msn/msn.c:1729 msgid "Social" msgstr "Sociálne" -#: ../libpurple/protocols/msn/msn.c:1621 +#: ../libpurple/protocols/msn/msn.c:1731 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1086 msgid "Marital Status" msgstr "Manželský stav" -#: ../libpurple/protocols/msn/msn.c:1622 +#: ../libpurple/protocols/msn/msn.c:1732 msgid "Interests" msgstr "Záujmy" -#: ../libpurple/protocols/msn/msn.c:1623 +#: ../libpurple/protocols/msn/msn.c:1733 msgid "Pets" msgstr "Domáce zvieratá" -#: ../libpurple/protocols/msn/msn.c:1624 +#: ../libpurple/protocols/msn/msn.c:1734 msgid "Hometown" msgstr "Mesto v ktorom bývate" -#: ../libpurple/protocols/msn/msn.c:1625 +#: ../libpurple/protocols/msn/msn.c:1735 msgid "Places Lived" msgstr "Miesta, kde ste bývali" -#: ../libpurple/protocols/msn/msn.c:1626 +#: ../libpurple/protocols/msn/msn.c:1736 msgid "Fashion" msgstr "Móda" -#: ../libpurple/protocols/msn/msn.c:1627 +#: ../libpurple/protocols/msn/msn.c:1737 msgid "Humor" msgstr "Humor" -#: ../libpurple/protocols/msn/msn.c:1628 +#: ../libpurple/protocols/msn/msn.c:1738 msgid "Music" msgstr "Hudba" -#: ../libpurple/protocols/msn/msn.c:1629 ../libpurple/protocols/msn/msn.c:1810 -#: ../libpurple/protocols/msn/msn.c:1816 +#: ../libpurple/protocols/msn/msn.c:1739 ../libpurple/protocols/msn/msn.c:1920 +#: ../libpurple/protocols/msn/msn.c:1926 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1138 msgid "Favorite Quote" msgstr "Obľúbený citát" -#: ../libpurple/protocols/msn/msn.c:1646 +#: ../libpurple/protocols/msn/msn.c:1756 msgid "Contact Info" msgstr "Kontaktné informácie" -#: ../libpurple/protocols/msn/msn.c:1647 +#: ../libpurple/protocols/msn/msn.c:1757 msgid "Personal" msgstr "Osobné" -#: ../libpurple/protocols/msn/msn.c:1650 +#: ../libpurple/protocols/msn/msn.c:1760 msgid "Significant Other" msgstr "Ďalšie významné" -#: ../libpurple/protocols/msn/msn.c:1651 +#: ../libpurple/protocols/msn/msn.c:1761 msgid "Home Phone" msgstr "Telefón domov" -#: ../libpurple/protocols/msn/msn.c:1652 +#: ../libpurple/protocols/msn/msn.c:1762 msgid "Home Phone 2" msgstr "Telefón domov 2" -#: ../libpurple/protocols/msn/msn.c:1653 -#: ../libpurple/protocols/oscar/oscar.c:3793 +#: ../libpurple/protocols/msn/msn.c:1763 +#: ../libpurple/protocols/oscar/oscar.c:3807 msgid "Home Address" msgstr "Adresa domov" -#: ../libpurple/protocols/msn/msn.c:1654 +#: ../libpurple/protocols/msn/msn.c:1764 msgid "Personal Mobile" msgstr "Osobný mobil" -#: ../libpurple/protocols/msn/msn.c:1655 +#: ../libpurple/protocols/msn/msn.c:1765 msgid "Home Fax" msgstr "Fax domov" -#: ../libpurple/protocols/msn/msn.c:1656 +#: ../libpurple/protocols/msn/msn.c:1766 msgid "Personal E-Mail" msgstr "Osobný e-mail" -#: ../libpurple/protocols/msn/msn.c:1657 +#: ../libpurple/protocols/msn/msn.c:1767 msgid "Personal IM" msgstr "Osobné IM" -#: ../libpurple/protocols/msn/msn.c:1659 +#: ../libpurple/protocols/msn/msn.c:1769 msgid "Anniversary" msgstr "Výročie" #. Business -#: ../libpurple/protocols/msn/msn.c:1675 +#: ../libpurple/protocols/msn/msn.c:1785 msgid "Work" msgstr "Práca" -#: ../libpurple/protocols/msn/msn.c:1677 +#: ../libpurple/protocols/msn/msn.c:1787 #: ../libpurple/protocols/silc/ops.c:1010 #: ../libpurple/protocols/silc10/ops.c:1044 msgid "Job Title" msgstr "Názov zamestnania" -#: ../libpurple/protocols/msn/msn.c:1678 -#: ../libpurple/protocols/oscar/oscar.c:3814 +#: ../libpurple/protocols/msn/msn.c:1788 +#: ../libpurple/protocols/oscar/oscar.c:3828 msgid "Company" msgstr "Spoločnosť" -#: ../libpurple/protocols/msn/msn.c:1679 -#: ../libpurple/protocols/novell/novell.c:1480 +#: ../libpurple/protocols/msn/msn.c:1789 +#: ../libpurple/protocols/novell/novell.c:1482 msgid "Department" msgstr "Oddelenie" -#: ../libpurple/protocols/msn/msn.c:1680 +#: ../libpurple/protocols/msn/msn.c:1790 msgid "Profession" msgstr "Profesia" -#: ../libpurple/protocols/msn/msn.c:1681 +#: ../libpurple/protocols/msn/msn.c:1791 msgid "Work Phone" msgstr "Telefón do práce" -#: ../libpurple/protocols/msn/msn.c:1682 +#: ../libpurple/protocols/msn/msn.c:1792 msgid "Work Phone 2" msgstr "Telefón do práce 2" -#: ../libpurple/protocols/msn/msn.c:1683 -#: ../libpurple/protocols/oscar/oscar.c:3806 +#: ../libpurple/protocols/msn/msn.c:1793 +#: ../libpurple/protocols/oscar/oscar.c:3820 msgid "Work Address" msgstr "Adresa pracoviska" -#: ../libpurple/protocols/msn/msn.c:1684 +#: ../libpurple/protocols/msn/msn.c:1794 msgid "Work Mobile" msgstr "Služobný mobil" -#: ../libpurple/protocols/msn/msn.c:1685 +#: ../libpurple/protocols/msn/msn.c:1795 msgid "Work Pager" msgstr "Služobný pager" -#: ../libpurple/protocols/msn/msn.c:1686 +#: ../libpurple/protocols/msn/msn.c:1796 msgid "Work Fax" msgstr "Služobný fax" -#: ../libpurple/protocols/msn/msn.c:1687 +#: ../libpurple/protocols/msn/msn.c:1797 msgid "Work E-Mail" msgstr "Pracovný e-mail" -#: ../libpurple/protocols/msn/msn.c:1688 +#: ../libpurple/protocols/msn/msn.c:1798 msgid "Work IM" msgstr "Pracovné IM" -#: ../libpurple/protocols/msn/msn.c:1689 +#: ../libpurple/protocols/msn/msn.c:1799 msgid "Start Date" msgstr "Dátum začiatku" -#: ../libpurple/protocols/msn/msn.c:1759 ../libpurple/protocols/msn/msn.c:1765 -#: ../libpurple/protocols/msn/msn.c:1772 ../libpurple/protocols/msn/msn.c:1779 +#: ../libpurple/protocols/msn/msn.c:1869 ../libpurple/protocols/msn/msn.c:1875 +#: ../libpurple/protocols/msn/msn.c:1882 ../libpurple/protocols/msn/msn.c:1889 msgid "Favorite Things" msgstr "Obľúbené veci" -#: ../libpurple/protocols/msn/msn.c:1824 +#: ../libpurple/protocols/msn/msn.c:1934 msgid "Last Updated" msgstr "Naposledy aktualizované" -#: ../libpurple/protocols/msn/msn.c:1835 +#: ../libpurple/protocols/msn/msn.c:1945 #: ../libpurple/protocols/qq/buddy_info.c:60 #: ../libpurple/protocols/silc/ops.c:1026 #: ../libpurple/protocols/silc10/ops.c:1060 msgid "Homepage" msgstr "Domovská stránka" -#: ../libpurple/protocols/msn/msn.c:1859 +#: ../libpurple/protocols/msn/msn.c:1969 msgid "The user has not created a public profile." msgstr "Používateľ nemá vytvorený verejný profil." -#: ../libpurple/protocols/msn/msn.c:1860 +#: ../libpurple/protocols/msn/msn.c:1970 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 " @@ -7011,7 +6971,7 @@ "MSN ohlásilo, že nie je schopné nájsť používateľov profil. To znamená, že " "používateľ buď neexistuje alebo existuje, ale nemá vytvorený verejný profil." -#: ../libpurple/protocols/msn/msn.c:1864 +#: ../libpurple/protocols/msn/msn.c:1974 msgid "" "Could not find any information in the user's profile. The user most likely " "does not exist." @@ -7019,7 +6979,7 @@ "Nebolo možné nájsť žiadnu informáciu v používateľovom profile. Používateľ " "pravdepodobne neexistuje." -#: ../libpurple/protocols/msn/msn.c:1872 +#: ../libpurple/protocols/msn/msn.c:1982 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1240 msgid "Profile URL" msgstr "Adresa profilu" @@ -7034,101 +6994,103 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/msn/msn.c:2158 ../libpurple/protocols/msn/msn.c:2160 -msgid "MSN Protocol Plugin" -msgstr "Modul protokolu HTTP" - -#: ../libpurple/protocols/msn/msn.c:2194 +#: ../libpurple/protocols/msn/msn.c:2269 ../libpurple/protocols/msn/msn.c:2271 +msgid "Windows Live Messenger Protocol Plugin" +msgstr "Modul protokolu Windows Live Messenger" + +#: ../libpurple/protocols/msn/msn.c:2306 msgid "Use HTTP Method" msgstr "Používať HTTP" -#: ../libpurple/protocols/msn/msn.c:2199 -#, fuzzy +#: ../libpurple/protocols/msn/msn.c:2311 msgid "HTTP Method Server" -msgstr "Server testu IPC" - -#: ../libpurple/protocols/msn/msn.c:2204 +msgstr "Server HTTP" + +#: ../libpurple/protocols/msn/msn.c:2316 msgid "Show custom smileys" msgstr "Zobraziť vlastných smajlíkov" -#: ../libpurple/protocols/msn/msn.c:2212 +#: ../libpurple/protocols/msn/msn.c:2324 msgid "nudge: nudge a user to get their attention" msgstr "nudge: postrčte používateľa pre získanie ich pozornosti" -#: ../libpurple/protocols/msn/nexus.c:146 -#: ../libpurple/protocols/msn/servconn.c:135 -#: ../libpurple/protocols/qq/qq_proxy.c:242 -#: ../libpurple/protocols/qq/qq_proxy.c:321 -#: ../libpurple/protocols/qq/qq_proxy.c:366 -#: ../libpurple/protocols/qq/qq_proxy.c:399 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:63 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:163 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:187 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:200 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:229 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:243 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:268 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:302 -#: ../libpurple/protocols/qq/udp_proxy_s5.c:332 -#: ../libpurple/protocols/yahoo/yahoochat.c:1416 -#: ../libpurple/protocols/yahoo/yahoochat.c:1442 -msgid "Unable to connect" -msgstr "Nepodarilo sa pripojiť" - -#: ../libpurple/protocols/msn/notification.c:178 +#: ../libpurple/protocols/msn/nexus.c:137 +msgid "Windows Live ID authentication:Unable to connect" +msgstr "Antentifikácia Windows Live ID: nebolo možné pripojiť sa" + +#: ../libpurple/protocols/msn/nexus.c:275 +msgid "Windows Live ID authentication Failed" +msgstr "Zlyhala antentifikácia Windows Live ID" + +#: ../libpurple/protocols/msn/notification.c:185 #, c-format msgid "%s is not a valid group." msgstr "%s nie je správna skupina." -#: ../libpurple/protocols/msn/notification.c:184 -#: ../libpurple/protocols/msn/notification.c:532 -#: ../libpurple/protocols/msn/session.c:330 +#: ../libpurple/protocols/msn/notification.c:191 +#: ../libpurple/protocols/msn/notification.c:934 +#: ../libpurple/protocols/msn/session.c:369 msgid "Unknown error." msgstr "Neznáma chyba." -#: ../libpurple/protocols/msn/notification.c:187 +#: ../libpurple/protocols/msn/notification.c:194 #, c-format msgid "%s on %s (%s)" msgstr "%s na %s (%s)" -#: ../libpurple/protocols/msn/notification.c:498 +#: ../libpurple/protocols/msn/notification.c:512 +#, c-format +msgid "%s just sent you a Nudge!" +msgstr "%s vám práve poslal Nudge!" + +#: ../libpurple/protocols/msn/notification.c:839 +#, c-format +msgid "Unknown error (%d)" +msgstr "Neznáma chyba (%d)" + +#: ../libpurple/protocols/msn/notification.c:840 +#: ../libpurple/protocols/sametime/sametime.c:4425 +msgid "Unable to add user" +msgstr "Nebolo možné priadať používateľa" + +#: ../libpurple/protocols/msn/notification.c:900 #, c-format msgid "Unable to add user on %s (%s)" msgstr "Nebolo možné pridať používateľa %s (%s)" -#: ../libpurple/protocols/msn/notification.c:502 +#: ../libpurple/protocols/msn/notification.c:904 #, c-format msgid "Unable to block user on %s (%s)" msgstr "Nebolo možné blokovať používateľa %s (%s)" -#: ../libpurple/protocols/msn/notification.c:506 +#: ../libpurple/protocols/msn/notification.c:908 #, c-format msgid "Unable to permit user on %s (%s)" msgstr "Nebolo možné povoliť používateľa %s (%s)" -#: ../libpurple/protocols/msn/notification.c:514 +#: ../libpurple/protocols/msn/notification.c:916 #, c-format msgid "%s could not be added because your buddy list is full." msgstr "%s sa nepridal, pretože váš zoznam priateľov je plný." -#: ../libpurple/protocols/msn/notification.c:523 +#: ../libpurple/protocols/msn/notification.c:925 #, c-format msgid "%s is not a valid passport account." msgstr "%s nie je platný účet pasu." -#: ../libpurple/protocols/msn/notification.c:528 +#: ../libpurple/protocols/msn/notification.c:930 msgid "Service Temporarily Unavailable." msgstr "Služba je dočasne nedostupná." -#: ../libpurple/protocols/msn/notification.c:851 +#: ../libpurple/protocols/msn/notification.c:1268 msgid "Unable to rename group" msgstr "Nepodarilo sa premenovať skupinu" -#: ../libpurple/protocols/msn/notification.c:906 +#: ../libpurple/protocols/msn/notification.c:1323 msgid "Unable to delete group" msgstr "Nepodarilo sa odstrániť skupinu" -#: ../libpurple/protocols/msn/notification.c:1325 +#: ../libpurple/protocols/msn/notification.c:1939 #, c-format msgid "" "The MSN server will shut down for maintenance in %d minute. You will " @@ -7160,6 +7122,29 @@ "\n" "Keď bude údržba dokončená, budete sa môcť znovu prihlásiť." +#: ../libpurple/protocols/msn/oim.c:141 +msgid "Unable to connect to OIM server" +msgstr "Nepodarilo sa pripojiť na OIM server." + +#: ../libpurple/protocols/msn/servconn.c:135 +#: ../libpurple/protocols/qq/qq_proxy.c:242 +#: ../libpurple/protocols/qq/qq_proxy.c:321 +#: ../libpurple/protocols/qq/qq_proxy.c:366 +#: ../libpurple/protocols/qq/qq_proxy.c:399 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:63 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:163 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:187 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:200 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:229 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:243 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:268 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:302 +#: ../libpurple/protocols/qq/udp_proxy_s5.c:332 +#: ../libpurple/protocols/yahoo/yahoochat.c:1416 +#: ../libpurple/protocols/yahoo/yahoochat.c:1442 +msgid "Unable to connect" +msgstr "Nepodarilo sa pripojiť" + #: ../libpurple/protocols/msn/servconn.c:137 msgid "Writing error" msgstr "Chyba pri zápise" @@ -7177,58 +7162,58 @@ "Chyba pripojenia %s servera:\n" "%s" -#: ../libpurple/protocols/msn/session.c:299 +#: ../libpurple/protocols/msn/session.c:336 msgid "Our protocol is not supported by the server." msgstr "Server nepodporuje náš protokol." -#: ../libpurple/protocols/msn/session.c:303 +#: ../libpurple/protocols/msn/session.c:340 msgid "Error parsing HTTP." msgstr "Chyba pri spracovávaní HTTP." -#: ../libpurple/protocols/msn/session.c:307 +#: ../libpurple/protocols/msn/session.c:344 #: ../libpurple/protocols/oscar/flap_connection.c:384 -#: ../libpurple/protocols/yahoo/yahoo.c:205 +#: ../libpurple/protocols/yahoo/yahoo.c:207 msgid "You have signed on from another location." msgstr "Prihlásili ste sa z iného miesta." -#: ../libpurple/protocols/msn/session.c:310 +#: ../libpurple/protocols/msn/session.c:349 msgid "The MSN servers are temporarily unavailable. Please wait and try again." msgstr "" "MSN servery sú dočasne nedostupné. Počkajte, prosím, a skúste to znovu." -#: ../libpurple/protocols/msn/session.c:315 +#: ../libpurple/protocols/msn/session.c:354 msgid "The MSN servers are going down temporarily." msgstr "MSN servery sa dočasne vypínajú." -#: ../libpurple/protocols/msn/session.c:320 +#: ../libpurple/protocols/msn/session.c:359 #, c-format msgid "Unable to authenticate: %s" msgstr "Nepodarilo sa autentifikovať: %s" -#: ../libpurple/protocols/msn/session.c:325 +#: ../libpurple/protocols/msn/session.c:364 msgid "" "Your MSN buddy list is temporarily unavailable. Please wait and try again." msgstr "" "Váš zoznam priateľov MSN je dočasne nedostupný. Skúste to, prosím, neskôr." -#: ../libpurple/protocols/msn/session.c:346 -#: ../libpurple/protocols/msn/session.c:348 +#: ../libpurple/protocols/msn/session.c:385 +#: ../libpurple/protocols/msn/session.c:387 msgid "Handshaking" msgstr "Prevzatie" -#: ../libpurple/protocols/msn/session.c:349 +#: ../libpurple/protocols/msn/session.c:388 msgid "Starting authentication" msgstr "Začína sa autentifikácia" -#: ../libpurple/protocols/msn/session.c:350 +#: ../libpurple/protocols/msn/session.c:389 msgid "Getting cookie" msgstr "Prijímajú sa cookies" -#: ../libpurple/protocols/msn/session.c:352 +#: ../libpurple/protocols/msn/session.c:391 msgid "Sending cookie" msgstr "Odosielajú sa cookies" -#: ../libpurple/protocols/msn/session.c:353 +#: ../libpurple/protocols/msn/session.c:392 msgid "Retrieving buddy list" msgstr "Prijíma sa zoznam priateľov" @@ -7281,22 +7266,25 @@ msgid "Message may have not been sent because an unknown error occurred:" msgstr "Správu sa nepodarilo odoslať, pretože sa vyskytla neznáma chyba:" -#: ../libpurple/protocols/msn/userlist.c:252 +#: ../libpurple/protocols/msn/userlist.c:249 #, c-format msgid "%s has added you to his or her buddy list." msgstr "Používateľ %s si vás pridal do svojho zoznamu priateľov." -#: ../libpurple/protocols/msn/userlist.c:321 +#: ../libpurple/protocols/msn/userlist.c:318 #, c-format msgid "%s has removed you from his or her buddy list." msgstr "Používateľ %s vás odstránil zo svojho zoznamu priateľov." -#: ../libpurple/protocols/msn/userlist.c:643 +#. 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/userlist.c:699 #, c-format msgid "Unable to add \"%s\"." msgstr "Nepodarilo sa pridať „%s“." -#: ../libpurple/protocols/msn/userlist.c:645 +#: ../libpurple/protocols/msn/userlist.c:702 msgid "The screen name specified is invalid." msgstr "Zadané používateľské meno je chybné." @@ -7327,198 +7315,202 @@ #. Notify an error message also, because this is important! #: ../libpurple/protocols/myspace/myspace.c:292 -#: ../libpurple/protocols/myspace/myspace.c:1801 +#: ../libpurple/protocols/myspace/myspace.c:1806 msgid "MySpaceIM Error" msgstr "Chyba MySpaceIM" -#: ../libpurple/protocols/myspace/myspace.c:349 +#: ../libpurple/protocols/myspace/myspace.c:350 msgid "Reading challenge" msgstr "Číta sa výzva" -#: ../libpurple/protocols/myspace/myspace.c:355 +#: ../libpurple/protocols/myspace/myspace.c:356 msgid "Unexpected challenge length from server" msgstr "Neočakávaná dĺžka výzvy zo servera" -#: ../libpurple/protocols/myspace/myspace.c:359 +#: ../libpurple/protocols/myspace/myspace.c:360 msgid "Logging in" msgstr "Prihlasuje sa" -#: ../libpurple/protocols/myspace/myspace.c:1286 +#: ../libpurple/protocols/myspace/myspace.c:1289 #, c-format msgid "Connection to server lost (no data received within %d seconds)" msgstr "" "Pripojenie ku serveru prerušené (neboli prijaté žiadné údaje počas %d sekúnd)" #. Can't write _()'d strings in array initializers. Workaround. -#: ../libpurple/protocols/myspace/myspace.c:1328 +#: ../libpurple/protocols/myspace/myspace.c:1331 msgid "New mail messages" msgstr "Nové poštové správy" -#: ../libpurple/protocols/myspace/myspace.c:1329 +#: ../libpurple/protocols/myspace/myspace.c:1332 msgid "New blog comments" msgstr "Nové komentáre na blogu" -#: ../libpurple/protocols/myspace/myspace.c:1330 +#: ../libpurple/protocols/myspace/myspace.c:1333 msgid "New profile comments" msgstr "Nové komentáre v profile" -#: ../libpurple/protocols/myspace/myspace.c:1331 +#: ../libpurple/protocols/myspace/myspace.c:1334 msgid "New friend requests!" msgstr "Nové pozvánky priateľov!" -#: ../libpurple/protocols/myspace/myspace.c:1332 +#: ../libpurple/protocols/myspace/myspace.c:1335 msgid "New picture comments" msgstr "Nové komentáre ku obrázkom" -#: ../libpurple/protocols/myspace/myspace.c:1360 +#: ../libpurple/protocols/myspace/myspace.c:1363 msgid "MySpace" msgstr "MySpace" #. 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:1543 +#: ../libpurple/protocols/myspace/myspace.c:1546 #: ../libpurple/protocols/sametime/sametime.c:1544 msgid "Connected" msgstr "Pripojený" -#: ../libpurple/protocols/myspace/myspace.c:1554 -#: ../libpurple/protocols/myspace/myspace.c:1556 -#, fuzzy +#: ../libpurple/protocols/myspace/myspace.c:1557 +#: ../libpurple/protocols/myspace/myspace.c:1559 msgid "No username set" -msgstr "Bez názvu" - -#: ../libpurple/protocols/myspace/myspace.c:1555 +msgstr "Nenastavené používateľské meno" + +#: ../libpurple/protocols/myspace/myspace.c:1558 msgid "" "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile." "username and choose a username and try to login again." msgstr "" - -#: ../libpurple/protocols/myspace/myspace.c:1782 +"Prosím, choďte na http://editprofile.myspace.com/index.cfm?" +"fuseaction=profile.username a vyberte si používateľské meno a skúste sa " +"prihlásiť znovu." + +#: ../libpurple/protocols/myspace/myspace.c:1785 #, c-format msgid "Protocol error, code %d: %s" msgstr "Chyba protokolu, kód %d: %s" -#: ../libpurple/protocols/myspace/myspace.c:1972 -#: ../libpurple/protocols/myspace/myspace.c:2006 +#: ../libpurple/protocols/myspace/myspace.c:1977 +#: ../libpurple/protocols/myspace/myspace.c:2011 msgid "Failed to add buddy" msgstr "Nebolo možné pridať priateľa." -#: ../libpurple/protocols/myspace/myspace.c:1972 +#: ../libpurple/protocols/myspace/myspace.c:1977 msgid "'addbuddy' command failed." msgstr "príkaz 'addbuddy' zlyhal." -#: ../libpurple/protocols/myspace/myspace.c:2006 -#: ../libpurple/protocols/myspace/myspace.c:2247 +#: ../libpurple/protocols/myspace/myspace.c:2011 +#: ../libpurple/protocols/myspace/myspace.c:2252 msgid "persist command failed" msgstr "príkaz persist zlyhal" -#: ../libpurple/protocols/myspace/myspace.c:2115 +#: ../libpurple/protocols/myspace/myspace.c:2120 #, c-format msgid "No such user: %s" msgstr "Neexistujúci používateľ: %s" -#: ../libpurple/protocols/myspace/myspace.c:2116 +#: ../libpurple/protocols/myspace/myspace.c:2121 msgid "User lookup" msgstr "Vyhľadanie používateľov" -#: ../libpurple/protocols/myspace/myspace.c:2228 -#: ../libpurple/protocols/myspace/myspace.c:2247 -#: ../libpurple/protocols/myspace/myspace.c:2269 +#: ../libpurple/protocols/myspace/myspace.c:2233 +#: ../libpurple/protocols/myspace/myspace.c:2252 +#: ../libpurple/protocols/myspace/myspace.c:2274 msgid "Failed to remove buddy" msgstr "Odstránenie priateľa zlyhalo" -#: ../libpurple/protocols/myspace/myspace.c:2228 +#: ../libpurple/protocols/myspace/myspace.c:2233 msgid "'delbuddy' command failed" msgstr "príkaz 'delbuddy' zlyhal" -#: ../libpurple/protocols/myspace/myspace.c:2269 +#: ../libpurple/protocols/myspace/myspace.c:2274 msgid "blocklist command failed" msgstr "príkaz blocklist zlyhal" -#: ../libpurple/protocols/myspace/myspace.c:2315 +#: ../libpurple/protocols/myspace/myspace.c:2320 msgid "Invalid input condition" msgstr "Chybná podmienka vstupu" #. TODO: g_realloc like msn, yahoo, irc, jabber? -#: ../libpurple/protocols/myspace/myspace.c:2333 -#: ../libpurple/protocols/myspace/myspace.c:2364 +#: ../libpurple/protocols/myspace/myspace.c:2338 +#: ../libpurple/protocols/myspace/myspace.c:2369 msgid "Read buffer full" msgstr "Zásobník čítania plný" -#: ../libpurple/protocols/myspace/myspace.c:2402 +#: ../libpurple/protocols/myspace/myspace.c:2407 msgid "Unparseable message" msgstr "Nespracovateľná správa" -#: ../libpurple/protocols/myspace/myspace.c:2471 +#: ../libpurple/protocols/myspace/myspace.c:2476 #, c-format msgid "Couldn't connect to host: %s (%d)" msgstr "Nebolo možné sa pripojiť ku hostiteľovi: %s (%d)" -#: ../libpurple/protocols/myspace/myspace.c:2642 +#: ../libpurple/protocols/myspace/myspace.c:2647 msgid "IM Friends" msgstr "IM Priateľov" -#: ../libpurple/protocols/myspace/myspace.c:2741 +#: ../libpurple/protocols/myspace/myspace.c:2747 #, c-format msgid "" "%d buddies were added or updated from the server (including buddies already " "on the server-side list)" msgstr "" - -#: ../libpurple/protocols/myspace/myspace.c:2742 +"%d priateľov bolo pridaných alebo aktualizovaných zo serveru (vrátane " +"priateľov ktorí sa už nachádzali na serverovom zozname)" + +#: ../libpurple/protocols/myspace/myspace.c:2748 msgid "Add contacts from server" msgstr "Pridať kontakty zo serveru" -#: ../libpurple/protocols/myspace/myspace.c:2794 -#: ../libpurple/protocols/myspace/myspace.c:2859 +#: ../libpurple/protocols/myspace/myspace.c:2800 +#: ../libpurple/protocols/myspace/myspace.c:2865 msgid "Add friends from MySpace.com" msgstr "Pridať priateľov z MySpace.com" -#: ../libpurple/protocols/myspace/myspace.c:2795 +#: ../libpurple/protocols/myspace/myspace.c:2801 msgid "Importing friends failed" msgstr "Importovanie priateľov zlyhalo" #. TODO: find out how -#: ../libpurple/protocols/myspace/myspace.c:2851 +#: ../libpurple/protocols/myspace/myspace.c:2857 msgid "Find people..." msgstr "Hľadať ľudí..." -#: ../libpurple/protocols/myspace/myspace.c:2854 +#: ../libpurple/protocols/myspace/myspace.c:2860 msgid "Change IM name..." msgstr "Zmeniť IM meno..." -#: ../libpurple/protocols/myspace/myspace.c:3156 +#: ../libpurple/protocols/myspace/myspace.c:3162 msgid "myim URL handler" msgstr "myim URL handler" -#: ../libpurple/protocols/myspace/myspace.c:3157 +#: ../libpurple/protocols/myspace/myspace.c:3163 msgid "No suitable MySpaceIM account could be found to open this myim URL." msgstr "" "Nebol nájdený žiadny vyhovujúci MySpaceIM účet na otvorenie tejto myim " "adresy." -#: ../libpurple/protocols/myspace/myspace.c:3158 +#: ../libpurple/protocols/myspace/myspace.c:3164 msgid "Enable the proper MySpaceIM account and try again." msgstr "Povoľte správny MySpaceIM účet a skúste znovu." -#: ../libpurple/protocols/myspace/myspace.c:3281 +#: ../libpurple/protocols/myspace/myspace.c:3287 msgid "Show display name in status text" msgstr "Zobraziť používateľské meno v texte stavu" -#: ../libpurple/protocols/myspace/myspace.c:3284 +#: ../libpurple/protocols/myspace/myspace.c:3290 msgid "Show headline in status text" msgstr "Zobraziť nadpis v texte stavu" -#: ../libpurple/protocols/myspace/myspace.c:3289 +#: ../libpurple/protocols/myspace/myspace.c:3295 msgid "Send emoticons" msgstr "Poslať emotikony" -#: ../libpurple/protocols/myspace/myspace.c:3294 +#: ../libpurple/protocols/myspace/myspace.c:3300 msgid "Screen resolution (dots per inch)" msgstr "Rozlíšenie obrazovky (bodov na palec)" -#: ../libpurple/protocols/myspace/myspace.c:3297 +#: ../libpurple/protocols/myspace/myspace.c:3303 msgid "Base font size (points)" msgstr "Základná veľkosť písma (body)" @@ -7528,178 +7520,194 @@ msgid "User" msgstr "Používateľ" -#. TODO: link to username, if available -#: ../libpurple/protocols/myspace/user.c:102 -#: ../libpurple/protocols/oscar/oscar.c:2964 +#: ../libpurple/protocols/myspace/user.c:104 +#: ../libpurple/protocols/oscar/oscar.c:2978 msgid "Profile" msgstr "Profil" -#: ../libpurple/protocols/myspace/user.c:124 -#, fuzzy +#: ../libpurple/protocols/myspace/user.c:126 msgid "Headline" -msgstr "_Prezývka:" - -#: ../libpurple/protocols/myspace/user.c:129 -#, fuzzy +msgstr "Nadpis" + +#: ../libpurple/protocols/myspace/user.c:131 msgid "Song" -msgstr "Zvuky" - -#: ../libpurple/protocols/myspace/user.c:134 -#, fuzzy +msgstr "Pesnička" + +#: ../libpurple/protocols/myspace/user.c:139 msgid "Total Friends" -msgstr "IM Priateľov" - -#: ../libpurple/protocols/myspace/user.c:145 -#: ../libpurple/protocols/myspace/user.c:148 -#: ../libpurple/protocols/myspace/user.c:151 -#, fuzzy +msgstr "Spolu priateľov" + +#: ../libpurple/protocols/myspace/user.c:157 msgid "Client Version" -msgstr "Zavrieť rozhovor" +msgstr "Verzia klienta" #. TODO: icons for each zap -#: ../libpurple/protocols/myspace/zap.c:44 -#: ../libpurple/protocols/myspace/zap.c:177 +#. 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." +#: ../libpurple/protocols/myspace/zap.c:51 +#: ../libpurple/protocols/myspace/zap.c:214 msgid "Zap" -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:44 -#, fuzzy, c-format +msgstr "Elektrizovať" + +#: ../libpurple/protocols/myspace/zap.c:51 +#, c-format msgid "%s has zapped you!" -msgstr "Používateľ %s sa prihlásil." - -#: ../libpurple/protocols/myspace/zap.c:44 +msgstr "Používateľ %s vás zelektrizoval!" + +#: ../libpurple/protocols/myspace/zap.c:51 #, c-format msgid "Zapping %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:45 +msgstr "Zelektrizovali ste %s..." + +#. Whack means "to hit or strike someone with a sharp blow" +#: ../libpurple/protocols/myspace/zap.c:54 msgid "Whack" -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:45 -#, fuzzy, c-format +msgstr "Buchnúť" + +#: ../libpurple/protocols/myspace/zap.c:54 +#, c-format msgid "%s has whacked you!" -msgstr "Používateľ vás zablokoval" - -#: ../libpurple/protocols/myspace/zap.c:45 +msgstr "Používateľ %s vás buchol!" + +#: ../libpurple/protocols/myspace/zap.c:54 #, c-format msgid "Whacking %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:46 -#, fuzzy +msgstr "Buchli ste používateľa %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. +#: ../libpurple/protocols/myspace/zap.c:59 msgid "Torch" -msgstr "Téma" - -#: ../libpurple/protocols/myspace/zap.c:46 -#, fuzzy, c-format +msgstr "Zapáliť" + +#: ../libpurple/protocols/myspace/zap.c:59 +#, c-format msgid "%s has torched you!" -msgstr "Používateľ vás zablokoval" - -#: ../libpurple/protocols/myspace/zap.c:46 +msgstr "Používateľ %s vás zapálil!" + +#: ../libpurple/protocols/myspace/zap.c:59 #, c-format msgid "Torching %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:47 +msgstr "Zapálili ste používateľa %s..." + +#. Smooch means "to kiss someone, often enthusiastically" +#: ../libpurple/protocols/myspace/zap.c:62 msgid "Smooch" -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:47 -#, fuzzy, c-format +msgstr "Pobozkať" + +#: ../libpurple/protocols/myspace/zap.c:62 +#, c-format msgid "%s has smooched you!" -msgstr "Používateľ %s sa prihlásil." - -#: ../libpurple/protocols/myspace/zap.c:47 +msgstr "Používateľ %s vás pobozkal!" + +#: ../libpurple/protocols/myspace/zap.c:62 #, c-format msgid "Smooching %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:48 +msgstr "Pobozkali ste používateľa %s..." + +#. A hug is a display of affection; wrapping your arms around someone +#: ../libpurple/protocols/myspace/zap.c:65 msgid "Hug" -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:48 -#, fuzzy, c-format +msgstr "Objať" + +#: ../libpurple/protocols/myspace/zap.c:65 +#, c-format msgid "%s has hugged you!" -msgstr "Používateľ %s sa prihlásil." - -#: ../libpurple/protocols/myspace/zap.c:48 +msgstr "Používateľ %s vás objal!" + +#: ../libpurple/protocols/myspace/zap.c:65 #, c-format msgid "Hugging %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:49 -#, fuzzy +msgstr "Objali ste používateľa %s..." + +#. Slap means "to hit someone with an open/flat hand" +#: ../libpurple/protocols/myspace/zap.c:68 msgid "Slap" -msgstr "Ospalý" - -#: ../libpurple/protocols/myspace/zap.c:49 -#, fuzzy, c-format +msgstr "Dať facku" + +#: ../libpurple/protocols/myspace/zap.c:68 +#, c-format msgid "%s has slapped you!" -msgstr "Používateľ %s sa prihlásil." - -#: ../libpurple/protocols/myspace/zap.c:49 +msgstr "Používateľ %s vám dal facku!" + +#: ../libpurple/protocols/myspace/zap.c:68 #, c-format msgid "Slapping %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:50 -#, fuzzy +msgstr "Dali ste facku používateľovi %s..." + +#. Goose means "to pinch someone on their butt" +#: ../libpurple/protocols/myspace/zap.c:71 msgid "Goose" -msgstr "Preč" - -#: ../libpurple/protocols/myspace/zap.c:50 -#, fuzzy, c-format +msgstr "Uťahovať si z" + +#: ../libpurple/protocols/myspace/zap.c:71 +#, c-format msgid "%s has goosed you!" -msgstr "Používateľ %s odišiel preč." - -#: ../libpurple/protocols/myspace/zap.c:50 -#, fuzzy, c-format +msgstr "Používateľ %s si z vás uťahuje!" + +#: ../libpurple/protocols/myspace/zap.c:71 +#, c-format msgid "Goosing %s..." -msgstr "Vyhľadáva sa %s" - -#: ../libpurple/protocols/myspace/zap.c:51 +msgstr "Uťahujete si z %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. +#: ../libpurple/protocols/myspace/zap.c:76 msgid "High-five" -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:51 -#, fuzzy, c-format +msgstr "Tľapnúť si" + +#: ../libpurple/protocols/myspace/zap.c:76 +#, c-format msgid "%s has high-fived you!" -msgstr "Používateľ %s sa prihlásil." - -#: ../libpurple/protocols/myspace/zap.c:51 +msgstr "Používateľ %s si s vami tľapol!" + +#: ../libpurple/protocols/myspace/zap.c:76 #, c-format msgid "High-fiving %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:52 +msgstr "Tľapli ste si s používateľom %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. +#: ../libpurple/protocols/myspace/zap.c:81 msgid "Punk" -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:52 -#, fuzzy, c-format +msgstr "Nachytať" + +#: ../libpurple/protocols/myspace/zap.c:81 +#, c-format msgid "%s has punk'd you!" -msgstr "Používateľ %s sa prihlásil." - -#: ../libpurple/protocols/myspace/zap.c:52 +msgstr "Používateľ %s vás nachytal!" + +#: ../libpurple/protocols/myspace/zap.c:81 #, c-format msgid "Punking %s..." -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:53 +msgstr "Nachytali ste používateľa %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. +#: ../libpurple/protocols/myspace/zap.c:90 msgid "Raspberry" -msgstr "" - -#: ../libpurple/protocols/myspace/zap.c:53 -#, fuzzy, c-format +msgstr "Vzdychnúť si na" + +#: ../libpurple/protocols/myspace/zap.c:90 +#, c-format msgid "%s has raspberried you!" -msgstr "Používateľ %s sa prihlásil." - -#: ../libpurple/protocols/myspace/zap.c:53 +msgstr "Používateľ %s si vzdychol!" + +#: ../libpurple/protocols/myspace/zap.c:90 #, c-format msgid "Raspberrying %s..." -msgstr "" +msgstr "Vzdychli ste si na používateľa %s..." #: ../libpurple/protocols/novell/nmuser.c:1864 msgid "Required parameters not passed in" @@ -7834,42 +7842,42 @@ msgid "Login failed (%s)." msgstr "Prihlásenie zlyhalo (%s)." -#: ../libpurple/protocols/novell/novell.c:247 +#: ../libpurple/protocols/novell/novell.c:249 #, c-format msgid "Unable to send message. Could not get details for user (%s)." msgstr "" "Nepodarilo sa odoslať správu. Nepodarilo sa zobraziť podrobnosti o " "používateľovi (%s)." -#: ../libpurple/protocols/novell/novell.c:396 +#: ../libpurple/protocols/novell/novell.c:398 #, c-format msgid "Unable to add %s to your buddy list (%s)." msgstr "Nepodarilo sa pridať používateľa %s do vášho zoznamu priateľov (%s)." #. TODO: Improve this! message to who or for what conference? -#: ../libpurple/protocols/novell/novell.c:422 +#: ../libpurple/protocols/novell/novell.c:424 #, c-format msgid "Unable to send message (%s)." msgstr "Nepodarilo sa odoslať správu (%s)." -#: ../libpurple/protocols/novell/novell.c:493 -#: ../libpurple/protocols/novell/novell.c:985 +#: ../libpurple/protocols/novell/novell.c:495 +#: ../libpurple/protocols/novell/novell.c:987 #, c-format msgid "Unable to invite user (%s)." msgstr "Nepodarilo sa pozvať používateľa (%s)." -#: ../libpurple/protocols/novell/novell.c:532 +#: ../libpurple/protocols/novell/novell.c:534 #, c-format msgid "Unable to send message to %s. Could not create the conference (%s)." msgstr "" "Nepodarilo sa odoslať správu pre %s. Nepodarilo sa vytvoriť konferenciu (%s)." -#: ../libpurple/protocols/novell/novell.c:537 +#: ../libpurple/protocols/novell/novell.c:539 #, c-format msgid "Unable to send message. Could not create the conference (%s)." msgstr "Nepodarilo sa odoslať správu. Nepodarilo sa vytvoriť konferenciu (%s)." -#: ../libpurple/protocols/novell/novell.c:584 +#: ../libpurple/protocols/novell/novell.c:586 #, c-format msgid "" "Unable to move user %s to folder %s in the server side list. Error while " @@ -7878,7 +7886,7 @@ "Nepodarilo sa presunúť používateľa %s do priečinka %s v serverovom zozname. " "Chyba počas vytvárania priečinku (%s)." -#: ../libpurple/protocols/novell/novell.c:632 +#: ../libpurple/protocols/novell/novell.c:634 #, c-format msgid "" "Unable to add %s to your buddy list. Error creating folder in server side " @@ -7887,61 +7895,61 @@ "Nebolo možné pridať %s do vášho zoznamu priateľov. Chyba počas vytvárania " "priečinku v serverovom zozname (%s)." -#: ../libpurple/protocols/novell/novell.c:705 +#: ../libpurple/protocols/novell/novell.c:707 #, c-format msgid "Could not get details for user %s (%s)." msgstr "Nepodarilo sa zobraziť podrobnosti o používateľovi %s (%s)." -#: ../libpurple/protocols/novell/novell.c:751 -#: ../libpurple/protocols/novell/novell.c:897 +#: ../libpurple/protocols/novell/novell.c:753 +#: ../libpurple/protocols/novell/novell.c:899 #, c-format msgid "Unable to add user to privacy list (%s)." msgstr "Nepodarilo sa pridať do zoznamu súkromných (%s)" -#: ../libpurple/protocols/novell/novell.c:798 +#: ../libpurple/protocols/novell/novell.c:800 #, c-format msgid "Unable to add %s to deny list (%s)." msgstr "Nepodarilo sa pridať %s do zoznamu blokovaných (%s)" -#: ../libpurple/protocols/novell/novell.c:851 +#: ../libpurple/protocols/novell/novell.c:853 #, c-format msgid "Unable to add %s to permit list (%s)." msgstr "Nepodarilo sa pridať %s do zoznamu povolených (%s)" -#: ../libpurple/protocols/novell/novell.c:919 +#: ../libpurple/protocols/novell/novell.c:921 #, c-format msgid "Unable to remove %s from privacy list (%s)." msgstr "Nepodarilo sa odstrániť %s zo zoznamu súkromných (%s)" -#: ../libpurple/protocols/novell/novell.c:942 -#: ../libpurple/protocols/novell/novell.c:1647 +#: ../libpurple/protocols/novell/novell.c:944 +#: ../libpurple/protocols/novell/novell.c:1649 #, c-format msgid "Unable to change server side privacy settings (%s)." msgstr "Nepodarilo sa zmeniť nastavenia súkromných na strane servera (%s)." -#: ../libpurple/protocols/novell/novell.c:1012 +#: ../libpurple/protocols/novell/novell.c:1014 #, c-format msgid "Unable to create conference (%s)." msgstr "Nepodarilo sa vytvoriť konferenciu (%s)." -#: ../libpurple/protocols/novell/novell.c:1121 -#: ../libpurple/protocols/novell/novell.c:1692 +#: ../libpurple/protocols/novell/novell.c:1123 +#: ../libpurple/protocols/novell/novell.c:1694 msgid "Error communicating with server. Closing connection." msgstr "Chyba počas komunikácie so serverom. Uzatvára sa pripojenie." -#: ../libpurple/protocols/novell/novell.c:1476 +#: ../libpurple/protocols/novell/novell.c:1478 msgid "Telephone Number" msgstr "Telefónne číslo" -#: ../libpurple/protocols/novell/novell.c:1482 +#: ../libpurple/protocols/novell/novell.c:1484 msgid "Personal Title" msgstr "Osobný titul" -#: ../libpurple/protocols/novell/novell.c:1486 +#: ../libpurple/protocols/novell/novell.c:1488 msgid "Mailstop" msgstr "Pošta" -#: ../libpurple/protocols/novell/novell.c:1502 +#: ../libpurple/protocols/novell/novell.c:1504 #: ../libpurple/protocols/sametime/sametime.c:4122 msgid "User ID" msgstr "ID používateľa" @@ -7952,41 +7960,41 @@ #. purple_notify_user_info_add_pair(user_info, tag, value); #. } #. -#: ../libpurple/protocols/novell/novell.c:1515 +#: ../libpurple/protocols/novell/novell.c:1517 msgid "Full name" msgstr "Celé meno" -#: ../libpurple/protocols/novell/novell.c:1637 +#: ../libpurple/protocols/novell/novell.c:1639 #, c-format msgid "GroupWise Conference %d" msgstr "GroupWise konferencia %d" -#: ../libpurple/protocols/novell/novell.c:1668 +#: ../libpurple/protocols/novell/novell.c:1670 msgid "Unable to make SSL connection to server." msgstr "Nepodarilo sa vytvoriť SSL pripojenie na server." -#: ../libpurple/protocols/novell/novell.c:1720 +#: ../libpurple/protocols/novell/novell.c:1722 msgid "Authenticating..." msgstr "Overuje sa..." -#: ../libpurple/protocols/novell/novell.c:1732 +#: ../libpurple/protocols/novell/novell.c:1734 msgid "Unable to connect to server." msgstr "Nepodarilo sa pripojiť na server." -#: ../libpurple/protocols/novell/novell.c:1735 +#: ../libpurple/protocols/novell/novell.c:1737 msgid "Waiting for response..." msgstr "Čaká sa na odpoveď..." -#: ../libpurple/protocols/novell/novell.c:1870 +#: ../libpurple/protocols/novell/novell.c:1872 #, c-format msgid "%s has been invited to this conversation." msgstr "Používateľ %s bol pozvaný na konferenciu." -#: ../libpurple/protocols/novell/novell.c:1898 +#: ../libpurple/protocols/novell/novell.c:1900 msgid "Invitation to Conversation" msgstr "Prozvánka na konferenciu" -#: ../libpurple/protocols/novell/novell.c:1899 +#: ../libpurple/protocols/novell/novell.c:1901 #, c-format msgid "" "Invitation from: %s\n" @@ -7997,17 +8005,16 @@ "\n" "Odoslal: %s" -#: ../libpurple/protocols/novell/novell.c:1901 +#: ../libpurple/protocols/novell/novell.c:1903 msgid "Would you like to join the conversation?" msgstr "Chcete sa pripojiť do tejto konverzácie?" -#. we don't want to reconnect in this case -#: ../libpurple/protocols/novell/novell.c:2012 +#: ../libpurple/protocols/novell/novell.c:2017 msgid "You have been logged out because you logged in at another workstation." msgstr "" "Boli ste odhlásený, pretože ste sa prihlásili na inej pracovnej stanici." -#: ../libpurple/protocols/novell/novell.c:2069 +#: ../libpurple/protocols/novell/novell.c:2074 #, c-format msgid "" "%s appears to be offline and did not receive the message that you just sent." @@ -8018,7 +8025,7 @@ #. * purple_request_fields(gc, _("Server Address"),...); #. #. ...but for now just error out with a nice message. -#: ../libpurple/protocols/novell/novell.c:2167 +#: ../libpurple/protocols/novell/novell.c:2172 msgid "" "Unable to connect to server. Please enter the address of the server you wish " "to connect to." @@ -8026,12 +8033,11 @@ "Nedá sa pripojiť na server. Zadajte, prosím, adresu servera, na ktorý sa " "chcete pripojiť." -#: ../libpurple/protocols/novell/novell.c:2195 +#: ../libpurple/protocols/novell/novell.c:2200 msgid "Error. SSL support is not installed." msgstr "Chyba. SSL podpora nie je nainštalovaná." -#: ../libpurple/protocols/novell/novell.c:2504 -#, c-format +#: ../libpurple/protocols/novell/novell.c:2509 msgid "This conference has been closed. No more messages can be sent." msgstr "" "Táto konferencia bola uzavretá. Nie je možné do nej odosielať ďalšie správy." @@ -8046,31 +8052,31 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/novell/novell.c:3518 -#: ../libpurple/protocols/novell/novell.c:3520 +#: ../libpurple/protocols/novell/novell.c:3523 +#: ../libpurple/protocols/novell/novell.c:3525 msgid "Novell GroupWise Messenger Protocol Plugin" msgstr "Modul protokolu Novell GroupWise Messenger" -#: ../libpurple/protocols/novell/novell.c:3545 +#: ../libpurple/protocols/novell/novell.c:3550 msgid "Server address" msgstr "Adresa servera" -#: ../libpurple/protocols/novell/novell.c:3549 +#: ../libpurple/protocols/novell/novell.c:3554 msgid "Server port" msgstr "Port servera" -#: ../libpurple/protocols/oscar/flap_connection.c:387 -#: ../libpurple/protocols/yahoo/yahoo.c:2469 -#: ../libpurple/protocols/yahoo/yahoo.c:2636 +#: ../libpurple/protocols/oscar/flap_connection.c:389 +#: ../libpurple/protocols/yahoo/yahoo.c:2471 +#: ../libpurple/protocols/yahoo/yahoo.c:2638 #: ../libpurple/protocols/yahoo/ycht.c:481 ../libpurple/proxy.c:581 #: ../libpurple/proxy.c:1116 ../libpurple/proxy.c:1225 #: ../libpurple/proxy.c:1325 ../libpurple/proxy.c:1453 msgid "Server closed the connection." msgstr "Server zrušil pripojenie." -#: ../libpurple/protocols/oscar/flap_connection.c:389 -#: ../libpurple/protocols/yahoo/yahoo.c:2463 -#: ../libpurple/protocols/yahoo/yahoo.c:2630 ../libpurple/proxy.c:593 +#: ../libpurple/protocols/oscar/flap_connection.c:391 +#: ../libpurple/protocols/yahoo/yahoo.c:2465 +#: ../libpurple/protocols/yahoo/yahoo.c:2632 ../libpurple/proxy.c:593 #: ../libpurple/proxy.c:1128 ../libpurple/proxy.c:1237 #: ../libpurple/proxy.c:1337 ../libpurple/proxy.c:1465 #, c-format @@ -8081,7 +8087,7 @@ "Pripojenie k servera bolo prerušené:\n" "%s" -#: ../libpurple/protocols/oscar/flap_connection.c:392 +#: ../libpurple/protocols/oscar/flap_connection.c:394 #: ../libpurple/proxy.c:1145 ../libpurple/proxy.c:1250 #: ../libpurple/proxy.c:1349 ../libpurple/proxy.c:1421 #: ../libpurple/proxy.c:1478 @@ -8119,36 +8125,44 @@ msgstr "Modul protokolu ICQ" #: ../libpurple/protocols/oscar/libicq.c:147 -#: ../libpurple/protocols/yahoo/yahoo.c:4410 +#: ../libpurple/protocols/yahoo/yahoo.c:4412 #: ../libpurple/protocols/zephyr/zephyr.c:2997 msgid "Encoding" msgstr "Kódovanie" -#: ../libpurple/protocols/oscar/odc.c:40 +#: ../libpurple/protocols/oscar/odc.c:42 msgid "The remote user has closed the connection." msgstr "Vzdialený používateľ zrušil pripojenie." -#: ../libpurple/protocols/oscar/odc.c:42 +#: ../libpurple/protocols/oscar/odc.c:44 msgid "The remote user has declined your request." msgstr "Vzdialený použivateľ odmietol vašu požiadavku." -#: ../libpurple/protocols/oscar/odc.c:44 +#: ../libpurple/protocols/oscar/odc.c:46 #, c-format msgid "Lost connection with the remote user:
%s" msgstr "Pripojenie so vzidaleným použivateľom je prerušené:
%s" -#: ../libpurple/protocols/oscar/odc.c:47 +#: ../libpurple/protocols/oscar/odc.c:49 msgid "Received invalid data on connection with remote user." msgstr "Prijaté neplatné dáta pri spojení so vzdialeným používateľom." -#: ../libpurple/protocols/oscar/odc.c:49 +#: ../libpurple/protocols/oscar/odc.c:51 msgid "Could not establish a connection with the remote user." msgstr "Nepodarilo sa založiť pripojenie so vzdialeným používateľom." -#: ../libpurple/protocols/oscar/odc.c:560 +#: ../libpurple/protocols/oscar/odc.c:562 msgid "Direct IM established" msgstr "Bola založená priama komunikácia" +#: ../libpurple/protocols/oscar/odc.c:600 +#, 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 "" +"Používateľ %s vám chcel poslať súbor %s, ale cez priame IM sú povolené súbory len do %s. Skúste namiesto toho použiť prenos súborov.\n" + #: ../libpurple/protocols/oscar/oft.c:656 #, c-format msgid "File %s is %s, which is larger than the maximum size of %s." @@ -8294,7 +8308,7 @@ msgstr "Chat" #: ../libpurple/protocols/oscar/oscar.c:651 -#: ../libpurple/protocols/oscar/oscar.c:6010 +#: ../libpurple/protocols/oscar/oscar.c:6062 msgid "Get File" msgstr "Získať súbor" @@ -8367,49 +8381,43 @@ msgstr "Kamera" #: ../libpurple/protocols/oscar/oscar.c:725 -#: ../libpurple/protocols/oscar/oscar.c:5780 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:5832 msgid "Free For Chat" msgstr "Voľný pre rozhovor" #: ../libpurple/protocols/oscar/oscar.c:729 -#: ../libpurple/protocols/oscar/oscar.c:5815 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:5867 msgid "Not Available" msgstr "Nedostupný" #: ../libpurple/protocols/oscar/oscar.c:731 -#: ../libpurple/protocols/oscar/oscar.c:5801 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:5853 msgid "Occupied" msgstr "Zaneprázdnený" #: ../libpurple/protocols/oscar/oscar.c:735 -#, c-format msgid "Web Aware" msgstr "Web aware" #: ../libpurple/protocols/oscar/oscar.c:737 ../libpurple/protocols/qq/qq.c:183 #: ../libpurple/protocols/qq/qq.c:288 -#: ../libpurple/protocols/yahoo/yahoo.c:3095 ../libpurple/status.c:157 +#: ../libpurple/protocols/yahoo/yahoo.c:3097 ../libpurple/status.c:157 #: ../pidgin/gtkdocklet.c:446 ../pidgin/gtkstatusbox.c:1060 -#, c-format msgid "Invisible" msgstr "Neviditeľný" #: ../libpurple/protocols/oscar/oscar.c:739 -#, c-format msgid "Online" msgstr "Pripojený" #: ../libpurple/protocols/oscar/oscar.c:838 -#: ../libpurple/protocols/oscar/oscar.c:3707 -#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1126 +#: ../libpurple/protocols/oscar/oscar.c:3721 +#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1128 msgid "IP Address" msgstr "IP adresa" #: ../libpurple/protocols/oscar/oscar.c:845 -#: ../libpurple/protocols/oscar/oscar.c:2891 +#: ../libpurple/protocols/oscar/oscar.c:2905 msgid "Warning Level" msgstr "Úroveň upozornenia" @@ -8461,14 +8469,14 @@ "písmená, čísla a medzery." #: ../libpurple/protocols/oscar/oscar.c:1345 -#: ../libpurple/protocols/yahoo/yahoo.c:2105 +#: ../libpurple/protocols/yahoo/yahoo.c:2107 msgid "Invalid screen name." msgstr "Chybné používateľské meno." #: ../libpurple/protocols/oscar/oscar.c:1352 -#: ../libpurple/protocols/qq/login_logout.c:483 -#: ../libpurple/protocols/simple/simple.c:1045 -#: ../libpurple/protocols/yahoo/yahoo.c:2126 +#: ../libpurple/protocols/qq/login_logout.c:485 +#: ../libpurple/protocols/simple/simple.c:1047 +#: ../libpurple/protocols/yahoo/yahoo.c:2128 msgid "Incorrect password." msgstr "Nesprávne heslo." @@ -8521,10 +8529,10 @@ #. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons. #. #: ../libpurple/protocols/oscar/oscar.c:1452 -#: ../libpurple/protocols/oscar/oscar.c:2232 -#: ../libpurple/protocols/oscar/oscar.c:2281 -#: ../libpurple/protocols/oscar/oscar.c:5885 -#: ../libpurple/protocols/oscar/oscar.c:6166 ../libpurple/request.h:1388 +#: ../libpurple/protocols/oscar/oscar.c:2246 +#: ../libpurple/protocols/oscar/oscar.c:2295 +#: ../libpurple/protocols/oscar/oscar.c:5937 +#: ../libpurple/protocols/oscar/oscar.c:6218 ../libpurple/request.h:1388 msgid "_OK" msgstr "_OK" @@ -8560,33 +8568,33 @@ msgid "Unable to initialize connection" msgstr "Spojenie sa nedá inicializovať" -#: ../libpurple/protocols/oscar/oscar.c:2202 +#: ../libpurple/protocols/oscar/oscar.c:2204 msgid "Please authorize me so I can add you to my buddy list." msgstr "" "Prosím, autorizujte ma, aby som si vás mohol pridať do svojho zoznamu " "priateľov." -#: ../libpurple/protocols/oscar/oscar.c:2230 +#: ../libpurple/protocols/oscar/oscar.c:2244 msgid "Authorization Request Message:" msgstr "Žiadosť o autorizáciu:" -#: ../libpurple/protocols/oscar/oscar.c:2231 +#: ../libpurple/protocols/oscar/oscar.c:2245 msgid "Please authorize me!" msgstr "Autorizujte ma, prosím!" -#: ../libpurple/protocols/oscar/oscar.c:2272 -#: ../libpurple/protocols/oscar/oscar.c:2280 -#: ../libpurple/protocols/oscar/oscar.c:2407 -#: ../libpurple/protocols/oscar/oscar.c:5263 -#: ../libpurple/protocols/yahoo/yahoo.c:1030 +#: ../libpurple/protocols/oscar/oscar.c:2286 +#: ../libpurple/protocols/oscar/oscar.c:2294 +#: ../libpurple/protocols/oscar/oscar.c:2421 +#: ../libpurple/protocols/oscar/oscar.c:5313 +#: ../libpurple/protocols/yahoo/yahoo.c:1032 msgid "No reason given." msgstr "Nebol uvedený dôvod." -#: ../libpurple/protocols/oscar/oscar.c:2279 +#: ../libpurple/protocols/oscar/oscar.c:2293 msgid "Authorization Denied Message:" msgstr "Správa zamietnutia autorizácie:" -#: ../libpurple/protocols/oscar/oscar.c:2407 +#: ../libpurple/protocols/oscar/oscar.c:2421 #, c-format msgid "" "The user %u has denied your request to add them to your buddy list for the " @@ -8597,18 +8605,18 @@ "nasledujúcich dôvodov:\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:2408 +#: ../libpurple/protocols/oscar/oscar.c:2422 msgid "ICQ authorization denied." msgstr "ICQ autorizácia zamietnutá." #. Someone has granted you authorization -#: ../libpurple/protocols/oscar/oscar.c:2415 +#: ../libpurple/protocols/oscar/oscar.c:2429 #, c-format msgid "The user %u has granted your request to add them to your buddy list." msgstr "" "Používateľ %u prijal vašu požiadavku o pridanie do vášho zoznamu priateľov." -#: ../libpurple/protocols/oscar/oscar.c:2423 +#: ../libpurple/protocols/oscar/oscar.c:2437 #, c-format msgid "" "You have received a special message\n" @@ -8621,7 +8629,7 @@ "od: %s [%s]\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:2431 +#: ../libpurple/protocols/oscar/oscar.c:2445 #, c-format msgid "" "You have received an ICQ page\n" @@ -8634,7 +8642,7 @@ "od: %s [%s]\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:2439 +#: ../libpurple/protocols/oscar/oscar.c:2453 #, c-format msgid "" "You have received an ICQ e-mail from %s [%s]\n" @@ -8647,24 +8655,24 @@ "Správa je:\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:2460 +#: ../libpurple/protocols/oscar/oscar.c:2474 #, c-format msgid "ICQ user %u has sent you a buddy: %s (%s)" msgstr "Používateľ protokolu ICQ, %u, vám poslal priateľa: %s (%s)" -#: ../libpurple/protocols/oscar/oscar.c:2466 +#: ../libpurple/protocols/oscar/oscar.c:2480 msgid "Do you want to add this buddy to your buddy list?" msgstr "Chcete pridať tohoto priateľa do svojho zoznamu priateľov?" -#: ../libpurple/protocols/oscar/oscar.c:2471 ../pidgin/gtkroomlist.c:309 +#: ../libpurple/protocols/oscar/oscar.c:2485 ../pidgin/gtkroomlist.c:309 msgid "_Add" msgstr "_Pridať" -#: ../libpurple/protocols/oscar/oscar.c:2472 +#: ../libpurple/protocols/oscar/oscar.c:2486 msgid "_Decline" msgstr "Odmietnuť" -#: ../libpurple/protocols/oscar/oscar.c:2596 +#: ../libpurple/protocols/oscar/oscar.c:2610 #, 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." @@ -8672,7 +8680,7 @@ msgstr[1] "Prišli ste o %hu správu od používateľa %s, pretože bola chybná." msgstr[2] "Prišli ste o %hu správy od používateľa %s, pretože boli chybné." -#: ../libpurple/protocols/oscar/oscar.c:2605 +#: ../libpurple/protocols/oscar/oscar.c:2619 #, 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." @@ -8680,7 +8688,7 @@ msgstr[1] "%hu správy od %s neboli prijaté, pretože boli príliš veľké." msgstr[2] "%hu správ od %s nebolo prijatých, pretože boli príliš veľké." -#: ../libpurple/protocols/oscar/oscar.c:2614 +#: ../libpurple/protocols/oscar/oscar.c:2628 #, c-format msgid "" "You missed %hu message from %s because the rate limit has been exceeded." @@ -8696,7 +8704,7 @@ "Prišli ste o %hu správy od používateľa %s, pretože bol prekročený limit " "hodnotenia." -#: ../libpurple/protocols/oscar/oscar.c:2623 +#: ../libpurple/protocols/oscar/oscar.c:2637 #, c-format msgid "You missed %hu message from %s because he/she was too evil." msgid_plural "You missed %hu messages from %s because he/she was too evil." @@ -8704,7 +8712,7 @@ msgstr[1] "Prišli ste o %hu správu od používateľa %s, pretože je príliš zlý." msgstr[2] "Prišli ste o %hu správy od používateľa %s, pretože je príliš zlý." -#: ../libpurple/protocols/oscar/oscar.c:2632 +#: ../libpurple/protocols/oscar/oscar.c:2646 #, c-format msgid "You missed %hu message from %s because you are too evil." msgid_plural "You missed %hu messages from %s because you are too evil." @@ -8712,7 +8720,7 @@ msgstr[1] "Prišli ste o %hu správu od používateľa %s, pretože ste príliš zlý." msgstr[2] "Prišli ste o %hu správy od používateľa %s, pretože ste príliš zlý." -#: ../libpurple/protocols/oscar/oscar.c:2641 +#: ../libpurple/protocols/oscar/oscar.c:2655 #, 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." @@ -8721,47 +8729,47 @@ msgstr[2] "Z neznámeho dôvodu ste prišli o %hu správy od používateľa %s." #. Data is assumed to be the destination sn -#: ../libpurple/protocols/oscar/oscar.c:2796 +#: ../libpurple/protocols/oscar/oscar.c:2810 #, c-format msgid "Unable to send message: %s" msgstr "Nemôžem odoslať správu: %s" -#: ../libpurple/protocols/oscar/oscar.c:2796 -#: ../libpurple/protocols/oscar/oscar.c:2801 -#: ../libpurple/protocols/oscar/oscar.c:2865 +#: ../libpurple/protocols/oscar/oscar.c:2810 +#: ../libpurple/protocols/oscar/oscar.c:2815 +#: ../libpurple/protocols/oscar/oscar.c:2879 msgid "Unknown reason." msgstr "Neznámy dôvod." -#: ../libpurple/protocols/oscar/oscar.c:2799 +#: ../libpurple/protocols/oscar/oscar.c:2813 #: ../libpurple/protocols/sametime/sametime.c:2409 #, c-format msgid "Unable to send message to %s:" msgstr "Nemôžem poslať správu k %s:" -#: ../libpurple/protocols/oscar/oscar.c:2865 +#: ../libpurple/protocols/oscar/oscar.c:2879 #, c-format msgid "User information not available: %s" msgstr "Informácie o používateľovi sú nedostupné: %s" -#: ../libpurple/protocols/oscar/oscar.c:2896 +#: ../libpurple/protocols/oscar/oscar.c:2910 msgid "Online Since" msgstr "Pripojený od" -#: ../libpurple/protocols/oscar/oscar.c:2901 +#: ../libpurple/protocols/oscar/oscar.c:2915 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1185 msgid "Member Since" msgstr "Člen od" -#: ../libpurple/protocols/oscar/oscar.c:2936 +#: ../libpurple/protocols/oscar/oscar.c:2950 msgid "Available Message" msgstr "Dostupná správa" -#: ../libpurple/protocols/oscar/oscar.c:3044 +#: ../libpurple/protocols/oscar/oscar.c:3058 msgid "Your AIM connection may be lost." msgstr "Vaše AIM spojenie je zrejme prerušené." #. The conversion failed! -#: ../libpurple/protocols/oscar/oscar.c:3232 +#: ../libpurple/protocols/oscar/oscar.c:3246 msgid "" "[Unable to display a message from this user because it contained invalid " "characters.]" @@ -8769,7 +8777,7 @@ "[Správa od používateľa obsahovala nesprávne znaky, preto ju nebolo možné " "zobraziť.]" -#: ../libpurple/protocols/oscar/oscar.c:3396 +#: ../libpurple/protocols/oscar/oscar.c:3410 msgid "" "The last action you attempted could not be performed because you are over " "the rate limit. Please wait 10 seconds and try again." @@ -8777,53 +8785,53 @@ "Akciu nebolo možné vykonať, pretože ste prekročili limit hodnotenia. Prosím, " "počkajte 10 sekúnd a skúste to znovu." -#: ../libpurple/protocols/oscar/oscar.c:3479 +#: ../libpurple/protocols/oscar/oscar.c:3493 #: ../libpurple/protocols/toc/toc.c:977 #, c-format msgid "You have been disconnected from chat room %s." msgstr "Boli ste odpojení z miestnosti %s." -#: ../libpurple/protocols/oscar/oscar.c:3729 +#: ../libpurple/protocols/oscar/oscar.c:3743 #: ../libpurple/protocols/silc/util.c:585 #: ../libpurple/protocols/silc10/util.c:581 msgid "Mobile Phone" msgstr "Mobilný telefón" -#: ../libpurple/protocols/oscar/oscar.c:3759 +#: ../libpurple/protocols/oscar/oscar.c:3773 msgid "Personal Web Page" msgstr "Osobná webová stránka" -#: ../libpurple/protocols/oscar/oscar.c:3783 +#: ../libpurple/protocols/oscar/oscar.c:3797 #: ../libpurple/protocols/qq/buddy_info.c:40 msgid "Additional Information" msgstr "Ďoplňujúce informácie" -#: ../libpurple/protocols/oscar/oscar.c:3791 -#: ../libpurple/protocols/oscar/oscar.c:3804 +#: ../libpurple/protocols/oscar/oscar.c:3805 +#: ../libpurple/protocols/oscar/oscar.c:3818 msgid "Zip Code" msgstr "PSČ" -#: ../libpurple/protocols/oscar/oscar.c:3815 +#: ../libpurple/protocols/oscar/oscar.c:3829 msgid "Division" msgstr "Oddelenie" -#: ../libpurple/protocols/oscar/oscar.c:3816 +#: ../libpurple/protocols/oscar/oscar.c:3830 msgid "Position" msgstr "Pozícia" -#: ../libpurple/protocols/oscar/oscar.c:3818 +#: ../libpurple/protocols/oscar/oscar.c:3832 msgid "Web Page" msgstr "Webstránka" -#: ../libpurple/protocols/oscar/oscar.c:3821 +#: ../libpurple/protocols/oscar/oscar.c:3835 msgid "Work Information" msgstr "Pracovné informácie" -#: ../libpurple/protocols/oscar/oscar.c:3877 +#: ../libpurple/protocols/oscar/oscar.c:3891 msgid "Pop-Up Message" msgstr "Vyskakovacia správa" -#: ../libpurple/protocols/oscar/oscar.c:3917 +#: ../libpurple/protocols/oscar/oscar.c:3931 #, c-format msgid "The following screen name is associated with %s" msgid_plural "The following screen names are associated with %s" @@ -8831,30 +8839,29 @@ msgstr[1] "S %s je asociované nasledujúce používateľské meno" msgstr[2] "S %s sú asociované nasledujúce používateľské mená" -#: ../libpurple/protocols/oscar/oscar.c:3922 +#: ../libpurple/protocols/oscar/oscar.c:3936 msgid "Screen name" msgstr "Používateľské meno" -#: ../libpurple/protocols/oscar/oscar.c:3948 +#: ../libpurple/protocols/oscar/oscar.c:3962 #, c-format msgid "No results found for e-mail address %s" msgstr "Pre e-mailovú %s adresu neboli nájdené žiadne výsledky" -#: ../libpurple/protocols/oscar/oscar.c:3969 +#: ../libpurple/protocols/oscar/oscar.c:3983 #, c-format msgid "You should receive an e-mail asking to confirm %s." msgstr "Mali by ste prijať e-mail so žiadosťou o potvrdenie %s." -#: ../libpurple/protocols/oscar/oscar.c:3971 +#: ../libpurple/protocols/oscar/oscar.c:3985 msgid "Account Confirmation Requested" msgstr "Podvrdenie účtu bolo vyžiadané" -#: ../libpurple/protocols/oscar/oscar.c:4002 -#, c-format +#: ../libpurple/protocols/oscar/oscar.c:4016 msgid "Error Changing Account Info" msgstr "Chyba pri zmene podrobností účtu" -#: ../libpurple/protocols/oscar/oscar.c:4005 +#: ../libpurple/protocols/oscar/oscar.c:4019 #, c-format msgid "" "Error 0x%04x: Unable to format screen name because the requested screen name " @@ -8863,13 +8870,13 @@ "Chyba 0x%04x: Nepodarilo sa formátovať používateľské meno, pretože " "požadované používateľské meno sa líši od pôvodného." -#: ../libpurple/protocols/oscar/oscar.c:4008 +#: ../libpurple/protocols/oscar/oscar.c:4022 #, c-format msgid "Error 0x%04x: Unable to format screen name because it is invalid." msgstr "" "Chyba 0x%04x: Nepodarilo sa formátovať používateľské meno, pretože je chybné." -#: ../libpurple/protocols/oscar/oscar.c:4011 +#: ../libpurple/protocols/oscar/oscar.c:4025 #, c-format msgid "" "Error 0x%04x: Unable to format screen name because the requested screen name " @@ -8878,7 +8885,7 @@ "Chyba 0x%04x: Nepodarilo sa formátovať používateľské meno, pretože " "požadované používateľské meno je príliš dlhé." -#: ../libpurple/protocols/oscar/oscar.c:4014 +#: ../libpurple/protocols/oscar/oscar.c:4028 #, c-format msgid "" "Error 0x%04x: Unable to change e-mail address because there is already a " @@ -8887,7 +8894,7 @@ "Chyba 0x%04x: Nepodarilo sa zmeniť e-mailovú adresu, pretože toto " "používateľské meno už má požiadavku." -#: ../libpurple/protocols/oscar/oscar.c:4017 +#: ../libpurple/protocols/oscar/oscar.c:4031 #, c-format msgid "" "Error 0x%04x: Unable to change e-mail address because the given address has " @@ -8896,7 +8903,7 @@ "Chyba 0x%04x: e-mailová adresa sa nedá zmeniť, pretože daná adresa má so " "sebou asociovaných veľmi veľa zobrazovaných mien." -#: ../libpurple/protocols/oscar/oscar.c:4020 +#: ../libpurple/protocols/oscar/oscar.c:4034 #, c-format msgid "" "Error 0x%04x: Unable to change e-mail address because the given address is " @@ -8905,32 +8912,32 @@ "Chyba 0x%04x: Nepodarilo sa zmeniť e-mailovú adresu, pretože zadaná adresa " "je chybná." -#: ../libpurple/protocols/oscar/oscar.c:4023 +#: ../libpurple/protocols/oscar/oscar.c:4037 #, c-format msgid "Error 0x%04x: Unknown error." msgstr "Chyba 0x%04x: Neznáma chyba." -#: ../libpurple/protocols/oscar/oscar.c:4033 +#: ../libpurple/protocols/oscar/oscar.c:4047 #, c-format msgid "The e-mail address for %s is %s" msgstr "E-mailová adresa používateľa %s je %s" -#: ../libpurple/protocols/oscar/oscar.c:4035 +#: ../libpurple/protocols/oscar/oscar.c:4049 msgid "Account Info" msgstr "Podrobnosti o účte" -#: ../libpurple/protocols/oscar/oscar.c:4218 +#: ../libpurple/protocols/oscar/oscar.c:4232 msgid "" "Your IM Image was not sent. You must be Direct Connected to send IM Images." msgstr "" "Váš obrázok nebol odoslaný. Na odosielanie obrázkov v správach musíte byť " "priamo pripojený." -#: ../libpurple/protocols/oscar/oscar.c:4489 +#: ../libpurple/protocols/oscar/oscar.c:4503 msgid "Unable to set AIM profile." msgstr "Nepodarilo sa odoslať AIM profil." -#: ../libpurple/protocols/oscar/oscar.c:4490 +#: ../libpurple/protocols/oscar/oscar.c:4504 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 " @@ -8940,7 +8947,7 @@ "procedúry prihlásenia. Váš profil zostáva nenastavený, skúste ho nastaviť " "znovu, keď budete plne pripojený." -#: ../libpurple/protocols/oscar/oscar.c:4504 +#: ../libpurple/protocols/oscar/oscar.c:4518 #, c-format msgid "" "The maximum profile length of %d byte has been exceeded. It has been " @@ -8958,11 +8965,11 @@ "Maximálna dĺžka profilu, %d bajty, bola prekročená. Profil bol automaticky " "skrátený." -#: ../libpurple/protocols/oscar/oscar.c:4509 +#: ../libpurple/protocols/oscar/oscar.c:4523 msgid "Profile too long." msgstr "Profil je príliš dlhý." -#: ../libpurple/protocols/oscar/oscar.c:4554 +#: ../libpurple/protocols/oscar/oscar.c:4568 #, c-format msgid "" "The maximum away message length of %d byte has been exceeded. It has been " @@ -8980,11 +8987,11 @@ "Maximálna dĺžka správy neprítomnosti, %d bajty, bola prekročená. Správa " "bola automaticky skrátená." -#: ../libpurple/protocols/oscar/oscar.c:4559 +#: ../libpurple/protocols/oscar/oscar.c:4573 msgid "Away message too long." msgstr "Správa neprítomnosti je príliš dlhá." -#: ../libpurple/protocols/oscar/oscar.c:4628 +#: ../libpurple/protocols/oscar/oscar.c:4646 #, c-format msgid "" "Could not add the buddy %s because the screen name is invalid. Screen names " @@ -8995,17 +9002,17 @@ "Používateľské mená musia byť v tvare e-mailovej adresy, čísla, alebo musí " "byť prvý znak písmeno a ostatné znaky sú písmená, čísla a medzery." -#: ../libpurple/protocols/oscar/oscar.c:4630 -#: ../libpurple/protocols/oscar/oscar.c:5060 -#: ../libpurple/protocols/oscar/oscar.c:5075 +#: ../libpurple/protocols/oscar/oscar.c:4648 +#: ../libpurple/protocols/oscar/oscar.c:5099 +#: ../libpurple/protocols/oscar/oscar.c:5114 msgid "Unable To Add" msgstr "Nepodarilo sa pridať" -#: ../libpurple/protocols/oscar/oscar.c:4739 +#: ../libpurple/protocols/oscar/oscar.c:4767 msgid "Unable To Retrieve Buddy List" msgstr "Nepodarilo sa získať zoznam priateľov" -#: ../libpurple/protocols/oscar/oscar.c:4740 +#: ../libpurple/protocols/oscar/oscar.c:4768 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." @@ -9013,15 +9020,15 @@ "AIM servery vám dočasne neposlali váš zoznam priateľov. Váš zoznam " "priateľov nie je stratený, a mal by byť znovu dostupný o pár hodín." -#: ../libpurple/protocols/oscar/oscar.c:4922 -#: ../libpurple/protocols/oscar/oscar.c:4924 -#: ../libpurple/protocols/oscar/oscar.c:5140 -#: ../libpurple/protocols/oscar/oscar.c:5141 -#: ../libpurple/protocols/oscar/oscar.c:5146 +#: ../libpurple/protocols/oscar/oscar.c:4950 +#: ../libpurple/protocols/oscar/oscar.c:4952 +#: ../libpurple/protocols/oscar/oscar.c:5179 +#: ../libpurple/protocols/oscar/oscar.c:5180 +#: ../libpurple/protocols/oscar/oscar.c:5185 msgid "Orphans" msgstr "Siroty" -#: ../libpurple/protocols/oscar/oscar.c:5058 +#: ../libpurple/protocols/oscar/oscar.c:5097 #, c-format msgid "" "Could not add the buddy %s because you have too many buddies in your buddy " @@ -9030,17 +9037,17 @@ "Nepodarilo sa pridať priateľa %s, pretože vo vašom zozname priateľov máte " "príliš veľa priateľov. Odstránte, prosím, jedného a skúste to znovu" -#: ../libpurple/protocols/oscar/oscar.c:5058 -#: ../libpurple/protocols/oscar/oscar.c:5073 +#: ../libpurple/protocols/oscar/oscar.c:5097 +#: ../libpurple/protocols/oscar/oscar.c:5112 msgid "(no name)" msgstr "(bez názvu)" -#: ../libpurple/protocols/oscar/oscar.c:5072 +#: ../libpurple/protocols/oscar/oscar.c:5111 #, c-format msgid "Could not add the buddy %s for an unknown reason." msgstr "Nebolo možné pridať priateľa %s z neznámeho dôvodu." -#: ../libpurple/protocols/oscar/oscar.c:5178 +#: ../libpurple/protocols/oscar/oscar.c:5228 #, c-format msgid "" "The user %s has given you permission to add you to their buddy list. Do you " @@ -9049,22 +9056,22 @@ "Používateľ %s vám udelil oprávnenie, aby si vás mohol pridať do svojho " "zoznamu kamarátov. Chcete pridať jeho do svojho?" -#: ../libpurple/protocols/oscar/oscar.c:5186 +#: ../libpurple/protocols/oscar/oscar.c:5236 msgid "Authorization Given" msgstr "Autorizácia udelená" #. Granted -#: ../libpurple/protocols/oscar/oscar.c:5259 +#: ../libpurple/protocols/oscar/oscar.c:5309 #, c-format msgid "The user %s has granted your request to add them to your buddy list." msgstr "Používateľ %s vám dovolil pridať ho do vášho zoznamu priateľov." -#: ../libpurple/protocols/oscar/oscar.c:5260 +#: ../libpurple/protocols/oscar/oscar.c:5310 msgid "Authorization Granted" msgstr "Udelená autorizácia" #. Denied -#: ../libpurple/protocols/oscar/oscar.c:5263 +#: ../libpurple/protocols/oscar/oscar.c:5313 #, c-format msgid "" "The user %s has denied your request to add them to your buddy list for the " @@ -9075,52 +9082,52 @@ "nasledujúceho dôvodu:\n" "%s" -#: ../libpurple/protocols/oscar/oscar.c:5264 +#: ../libpurple/protocols/oscar/oscar.c:5314 msgid "Authorization Denied" msgstr "Autorizácia zamietnutá" -#: ../libpurple/protocols/oscar/oscar.c:5300 +#: ../libpurple/protocols/oscar/oscar.c:5350 #: ../libpurple/protocols/toc/toc.c:1371 msgid "_Exchange:" msgstr "_Výmena:" -#: ../libpurple/protocols/oscar/oscar.c:5340 +#: ../libpurple/protocols/oscar/oscar.c:5390 msgid "Invalid chat name specified." msgstr "Bol zadaný chybný názov chatu." -#: ../libpurple/protocols/oscar/oscar.c:5409 +#: ../libpurple/protocols/oscar/oscar.c:5459 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats." msgstr "" "Váš obrázok nebol odoslaný. V AIM chatoch nie je možné odosielať obrázky." -#: ../libpurple/protocols/oscar/oscar.c:5569 -#: ../libpurple/protocols/oscar/oscar.c:5574 +#: ../libpurple/protocols/oscar/oscar.c:5621 +#: ../libpurple/protocols/oscar/oscar.c:5626 msgid "Away Message" msgstr "Správa o neprítomnosti" -#: ../libpurple/protocols/oscar/oscar.c:5574 +#: ../libpurple/protocols/oscar/oscar.c:5626 msgid "(retrieving)" msgstr "(prijíma sa)" -#: ../libpurple/protocols/oscar/oscar.c:5774 +#: ../libpurple/protocols/oscar/oscar.c:5826 msgid "iTunes Music Store Link" msgstr "Odkaz na hudobný obchod iTunes" -#: ../libpurple/protocols/oscar/oscar.c:5882 +#: ../libpurple/protocols/oscar/oscar.c:5934 #, c-format msgid "Buddy Comment for %s" msgstr "Komentár priateľa %s" -#: ../libpurple/protocols/oscar/oscar.c:5883 +#: ../libpurple/protocols/oscar/oscar.c:5935 msgid "Buddy Comment:" msgstr "Komentár priateľa:" -#: ../libpurple/protocols/oscar/oscar.c:5930 +#: ../libpurple/protocols/oscar/oscar.c:5982 #, c-format msgid "You have selected to open a Direct IM connection with %s." msgstr "Rozhodli ste sa otvoriť Priame IM pripojenie s používateľom %s." -#: ../libpurple/protocols/oscar/oscar.c:5934 +#: ../libpurple/protocols/oscar/oscar.c:5986 msgid "" "Because this reveals your IP address, it may be considered a security risk. " "Do you wish to continue?" @@ -9128,65 +9135,65 @@ "Táto akcia odhalí vašu IP adresu, a preto môže byť hodnotená ako " "bezpečnostné riziko. Chcete pokračovať?" -#: ../libpurple/protocols/oscar/oscar.c:5940 +#: ../libpurple/protocols/oscar/oscar.c:5992 #: ../libpurple/protocols/oscar/peer.c:1045 msgid "C_onnect" msgstr "Prip_ojiť" -#: ../libpurple/protocols/oscar/oscar.c:5975 +#: ../libpurple/protocols/oscar/oscar.c:6027 msgid "Get AIM Info" msgstr "Získať info AIM" -#: ../libpurple/protocols/oscar/oscar.c:5981 +#: ../libpurple/protocols/oscar/oscar.c:6033 msgid "Edit Buddy Comment" msgstr "Upraviť komentár priateľa" -#: ../libpurple/protocols/oscar/oscar.c:5989 +#: ../libpurple/protocols/oscar/oscar.c:6041 msgid "Get Status Msg" msgstr "Získať správu o stave" -#: ../libpurple/protocols/oscar/oscar.c:6002 +#: ../libpurple/protocols/oscar/oscar.c:6054 msgid "Direct IM" msgstr "Priama rýchla správa" -#: ../libpurple/protocols/oscar/oscar.c:6024 +#: ../libpurple/protocols/oscar/oscar.c:6076 msgid "Re-request Authorization" msgstr "Znovu požiadať o autorizáciu" -#: ../libpurple/protocols/oscar/oscar.c:6083 +#: ../libpurple/protocols/oscar/oscar.c:6135 msgid "Require authorization" msgstr "Vyžadovať autorizáciu" -#: ../libpurple/protocols/oscar/oscar.c:6086 +#: ../libpurple/protocols/oscar/oscar.c:6138 msgid "Web aware (enabling this will cause you to receive SPAM!)" msgstr "Web aware (zapnutie tejto možnosti spôsobí, že budete dostávať SPAM!)" -#: ../libpurple/protocols/oscar/oscar.c:6091 +#: ../libpurple/protocols/oscar/oscar.c:6143 msgid "ICQ Privacy Options" msgstr "Nastavenie súkromia ICQ" -#: ../libpurple/protocols/oscar/oscar.c:6110 +#: ../libpurple/protocols/oscar/oscar.c:6162 msgid "The new formatting is invalid." msgstr "Nové formátovanie je chybné." -#: ../libpurple/protocols/oscar/oscar.c:6111 +#: ../libpurple/protocols/oscar/oscar.c:6163 msgid "Screen name formatting can change only capitalization and whitespace." msgstr "" "Formátovanie používateľského mena smie obsahovať len písmená a medzery." -#: ../libpurple/protocols/oscar/oscar.c:6164 +#: ../libpurple/protocols/oscar/oscar.c:6216 msgid "Change Address To:" msgstr "Zmeniť adresu na:" -#: ../libpurple/protocols/oscar/oscar.c:6210 +#: ../libpurple/protocols/oscar/oscar.c:6262 msgid "you are not waiting for authorization" msgstr "nečakáte na autorizáciu" -#: ../libpurple/protocols/oscar/oscar.c:6213 +#: ../libpurple/protocols/oscar/oscar.c:6265 msgid "You are awaiting authorization from the following buddies" msgstr "Očakávate autorizáciu od nasledujúcich priateľov" -#: ../libpurple/protocols/oscar/oscar.c:6214 +#: ../libpurple/protocols/oscar/oscar.c:6266 msgid "" "You can re-request authorization from these buddies by right-clicking on " "them and selecting \"Re-request Authorization.\"" @@ -9194,73 +9201,73 @@ "Týchto priateľov môžete znovu požiadať o autorizáciu, keď na nich kliknete " "pravým tlačidlom a vyberiete možnosť „Znovu požiadať o autorizáciu“." -#: ../libpurple/protocols/oscar/oscar.c:6231 +#: ../libpurple/protocols/oscar/oscar.c:6283 msgid "Find Buddy by E-Mail" msgstr "Nájsť priateľa podľa E-mailu" -#: ../libpurple/protocols/oscar/oscar.c:6232 +#: ../libpurple/protocols/oscar/oscar.c:6284 msgid "Search for a buddy by e-mail address" msgstr "Vyhľadávať priateľov podľa e-mailovej adresy" -#: ../libpurple/protocols/oscar/oscar.c:6233 +#: ../libpurple/protocols/oscar/oscar.c:6285 msgid "Type the e-mail address of the buddy you are searching for." msgstr "Zadajte e-mailovú adresu priateľa, ktorého hľadáte." -#: ../libpurple/protocols/oscar/oscar.c:6236 +#: ../libpurple/protocols/oscar/oscar.c:6288 msgid "_Search" msgstr "_Hľadať" -#: ../libpurple/protocols/oscar/oscar.c:6394 +#: ../libpurple/protocols/oscar/oscar.c:6446 msgid "Set User Info (URL)..." msgstr "Nastaviť podrobnosti používateľa (URL)..." -#: ../libpurple/protocols/oscar/oscar.c:6405 +#: ../libpurple/protocols/oscar/oscar.c:6457 msgid "Change Password (URL)" msgstr "Zmeniť heslo (URL)" -#: ../libpurple/protocols/oscar/oscar.c:6409 +#: ../libpurple/protocols/oscar/oscar.c:6461 msgid "Configure IM Forwarding (URL)" msgstr "Konfiguravať preposielanie správ (URL)" #. ICQ actions -#: ../libpurple/protocols/oscar/oscar.c:6419 +#: ../libpurple/protocols/oscar/oscar.c:6471 msgid "Set Privacy Options..." msgstr "Nastaviť možnosti súkromia..." #. AIM actions -#: ../libpurple/protocols/oscar/oscar.c:6426 +#: ../libpurple/protocols/oscar/oscar.c:6478 msgid "Confirm Account" msgstr "Potvrdiť účet" -#: ../libpurple/protocols/oscar/oscar.c:6430 +#: ../libpurple/protocols/oscar/oscar.c:6482 msgid "Display Currently Registered E-Mail Address" msgstr "Zobraziť momentálne registrovanú e-maiovú adresu" -#: ../libpurple/protocols/oscar/oscar.c:6434 +#: ../libpurple/protocols/oscar/oscar.c:6486 msgid "Change Currently Registered E-Mail Address..." msgstr "Zmeniť momentálne registrovanú e-maiovú adresu..." -#: ../libpurple/protocols/oscar/oscar.c:6441 +#: ../libpurple/protocols/oscar/oscar.c:6493 msgid "Show Buddies Awaiting Authorization" msgstr "Zobraziť priateľov, ktorí čakajú na autorizáciu" -#: ../libpurple/protocols/oscar/oscar.c:6447 +#: ../libpurple/protocols/oscar/oscar.c:6499 msgid "Search for Buddy by E-Mail Address..." msgstr "Hľadať priateľa podľa e-maiovej adresy..." -#: ../libpurple/protocols/oscar/oscar.c:6452 +#: ../libpurple/protocols/oscar/oscar.c:6504 msgid "Search for Buddy by Information" msgstr "Hľadať priateľa podľa podrobností" -#: ../libpurple/protocols/oscar/oscar.c:6520 +#: ../libpurple/protocols/oscar/oscar.c:6572 msgid "Use recent buddies group" msgstr "Použiť naposledy použitú skupinu kamarátov" -#: ../libpurple/protocols/oscar/oscar.c:6523 +#: ../libpurple/protocols/oscar/oscar.c:6575 msgid "Show how long you have been idle" msgstr "Zobrazí ako dlho ste boli nečinní" -#: ../libpurple/protocols/oscar/oscar.c:6678 +#: ../libpurple/protocols/oscar/oscar.c:6730 msgid "" "Always use ICQ proxy server for file transfers\n" "(slower, but does not reveal your IP address)" @@ -9279,7 +9286,6 @@ msgstr "Pokúšame sa pripojiť ku %s:%hu." #: ../libpurple/protocols/oscar/peer.c:856 -#, c-format msgid "Attempting to connect via proxy server." msgstr "Pokúšame sa pripojiť cez proxy server." @@ -9745,7 +9751,7 @@ msgid "Error requesting login token" msgstr "Chyba pri požadovaní prihlasovacieho tokenu" -#: ../libpurple/protocols/qq/login_logout.c:486 +#: ../libpurple/protocols/qq/login_logout.c:488 msgid "Unable to login, check debug log" msgstr "Nepodarilo sa pripojiť, skontrolujte ladiaci záznam" @@ -10121,7 +10127,7 @@ msgid "Send TEST Announcement" msgstr "Poslať ohlásenie TEST" -#: ../libpurple/protocols/sametime/sametime.c:3586 ../pidgin/gtkconv.c:4354 +#: ../libpurple/protocols/sametime/sametime.c:3586 ../pidgin/gtkconv.c:4417 msgid "Topic:" msgstr "Téma:" @@ -10146,7 +10152,7 @@ msgid "No Sametime Community Server Specified" msgstr "Nebol určený žiadny server komunity rovnakého času" -#: ../libpurple/protocols/sametime/sametime.c:3644 ../pidgin/gtkblist.c:4041 +#: ../libpurple/protocols/sametime/sametime.c:3644 ../pidgin/gtkblist.c:4323 msgid "Connect" msgstr "Pripojiť" @@ -10200,10 +10206,6 @@ "Identifikátoru „%s“ nevyhovujú žiadni používatelia vo vašej Sametime " "komunite. Tento záznam bol odstránený z vášho zoznamu priateľov." -#: ../libpurple/protocols/sametime/sametime.c:4425 -msgid "Unable to add user" -msgstr "Nebolo možné priadať používateľa" - #: ../libpurple/protocols/sametime/sametime.c:5011 #, c-format msgid "" @@ -10325,7 +10327,7 @@ "ho pridať do vášho zoznamu priateľov, alebo mu odoslať správu pomocou " "tlačidiel, ktoré sú nižšie." -#: ../libpurple/protocols/sametime/sametime.c:5538 ../pidgin/gtknotify.c:756 +#: ../libpurple/protocols/sametime/sametime.c:5538 ../pidgin/gtknotify.c:762 msgid "Search Results" msgstr "Výsledky vyhľadávania" @@ -10902,7 +10904,6 @@ #: ../libpurple/protocols/silc/chat.c:153 #: ../libpurple/protocols/silc10/chat.c:152 -#, c-format msgid "
Channel Modes: " msgstr "
Režimy kanála: " @@ -10941,7 +10942,6 @@ #: ../libpurple/protocols/silc/chat.c:435 #: ../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 " @@ -11563,7 +11563,6 @@ msgstr "Pripája sa na SILC server" #: ../libpurple/protocols/silc/silc.c:352 -#, c-format msgid "Could not load SILC key pair" msgstr "Nedá sa načítať pár kľúčov SILC" @@ -11592,8 +11591,7 @@ msgstr "Vaša aktuálna nálada" #: ../libpurple/protocols/silc/silc.c:741 -#: ../libpurple/protocols/silc10/silc.c:652 ../pidgin/gtkprefs.c:1641 -#, c-format +#: ../libpurple/protocols/silc10/silc.c:652 ../pidgin/gtkprefs.c:1643 msgid "Normal" msgstr "Normálna" @@ -11988,7 +11986,7 @@ msgstr "Protokol Secure Internet Live Conferencing (SILC)" #: ../libpurple/protocols/silc/silc.c:1910 -#: ../libpurple/protocols/silc10/silc.c:1853 ../pidgin/gtkprefs.c:2036 +#: ../libpurple/protocols/silc10/silc.c:1853 ../pidgin/gtkprefs.c:2038 msgid "Network" msgstr "Sieť" @@ -12166,7 +12164,7 @@ #: ../libpurple/protocols/silc/wb.c:284 ../libpurple/protocols/silc10/wb.c:284 #, c-format msgid "%s sent message to whiteboard. Would you like to open the whiteboard?" -msgstr "Používateľ %s odoslal správu na tabuľu. Želáte si otvoriť tabuľu?" +msgstr "Používateľ %s odoslal správu na tabuľu. Chcete otvoriť tabuľu?" #: ../libpurple/protocols/silc/wb.c:288 ../libpurple/protocols/silc10/wb.c:288 #, c-format @@ -12174,7 +12172,7 @@ "%s sent message to whiteboard on %s channel. Would you like to open the " "whiteboard?" msgstr "" -"Používateľ %s odoslal správu na tabuľu na kanáli %s. Želáte si otvoriť " +"Používateľ %s odoslal správu na tabuľu na kanáli %s. Chcete otvoriť " "tabuľu?" #: ../libpurple/protocols/silc/wb.c:302 ../libpurple/protocols/silc10/wb.c:302 @@ -12186,53 +12184,43 @@ msgstr "Nie sú dostupné žiadne štatistiky" #: ../libpurple/protocols/silc10/ops.c:1931 -#, c-format msgid "Failure: Version mismatch, upgrade your client" msgstr "Zlyhanie: Nezhoda verzií, aktualizujte vášho klienta" #: ../libpurple/protocols/silc10/ops.c:1934 -#, c-format msgid "Failure: Remote does not trust/support your public key" msgstr "" "Zlyhanie: Druhá strana nepodroruje alebo nedôveruje vášmu verejnému kľúču" #: ../libpurple/protocols/silc10/ops.c:1937 -#, c-format msgid "Failure: Remote does not support proposed KE group" msgstr "Zlyhanie: Druhá strana nepodroruje vyžiadanú KE skupinu" #: ../libpurple/protocols/silc10/ops.c:1940 -#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "Zlyhanie: Druhá strana nepodroruje vyžiadanú šifru" #: ../libpurple/protocols/silc10/ops.c:1943 -#, c-format msgid "Failure: Remote does not support proposed PKCS" msgstr "Zlyhanie: Druhá strana nepodroruje vyžiadané PKCS" #: ../libpurple/protocols/silc10/ops.c:1946 -#, c-format msgid "Failure: Remote does not support proposed hash function" msgstr "Chyba: Vzdialený nepodporuje ponúknutú hašovaciu funkciu" #: ../libpurple/protocols/silc10/ops.c:1949 -#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "Chyba: Vzdialený nepodporuje ponúknutú HMAC" #: ../libpurple/protocols/silc10/ops.c:1951 -#, c-format msgid "Failure: Incorrect signature" msgstr "Chyba: Nesprávny podpis" #: ../libpurple/protocols/silc10/ops.c:1953 -#, c-format msgid "Failure: Invalid cookie" msgstr "Chyba: Neplatný koláčik (cookie)" #: ../libpurple/protocols/silc10/ops.c:1964 -#, c-format msgid "Failure: Authentication failed" msgstr "Chyba: Zlyhala antentifikácia" @@ -12259,31 +12247,30 @@ msgstr "Nepodarilo sa zapisovať" #: ../libpurple/protocols/simple/simple.c:438 -#: ../libpurple/protocols/simple/simple.c:1529 +#: ../libpurple/protocols/simple/simple.c:1531 msgid "Could not connect" msgstr "Nepodarilo sa pripojiť" -#: ../libpurple/protocols/simple/simple.c:1059 -#, fuzzy +#: ../libpurple/protocols/simple/simple.c:1061 msgid "Unknown server response." -msgstr "Neznámy dôvod." - -#: ../libpurple/protocols/simple/simple.c:1563 -#: ../libpurple/protocols/simple/simple.c:1605 -#: ../libpurple/protocols/simple/simple.c:1618 -#: ../libpurple/protocols/simple/simple.c:1669 +msgstr "Neznáma odpoveď serveru." + +#: ../libpurple/protocols/simple/simple.c:1565 +#: ../libpurple/protocols/simple/simple.c:1607 +#: ../libpurple/protocols/simple/simple.c:1620 +#: ../libpurple/protocols/simple/simple.c:1671 msgid "Could not create listen socket" msgstr "Nepodarilo sa vytvoriť socket pre príjem" -#: ../libpurple/protocols/simple/simple.c:1586 +#: ../libpurple/protocols/simple/simple.c:1588 msgid "Couldn't resolve host" msgstr "Nebolo možné preložiť názov hostiteľa" -#: ../libpurple/protocols/simple/simple.c:1677 +#: ../libpurple/protocols/simple/simple.c:1679 msgid "Could not resolve hostname" msgstr "Nebolo možné previesť názov hostiteľa na IP" -#: ../libpurple/protocols/simple/simple.c:1694 +#: ../libpurple/protocols/simple/simple.c:1696 msgid "SIP screen names may not contain whitespaces or @ symbols" msgstr "Používateľské mená SIP nemôžu obsahovať medzery alebo znaky @" @@ -12295,36 +12282,36 @@ #. *< id #. *< name #. *< version -#: ../libpurple/protocols/simple/simple.c:1870 +#: ../libpurple/protocols/simple/simple.c:1872 msgid "SIP/SIMPLE Protocol Plugin" msgstr "Modul protokolu SIP/SIMPLE" #. * summary -#: ../libpurple/protocols/simple/simple.c:1871 +#: ../libpurple/protocols/simple/simple.c:1873 msgid "The SIP/SIMPLE Protocol Plugin" msgstr "Modul pre protokol SIP/SIMPLE" -#: ../libpurple/protocols/simple/simple.c:1899 +#: ../libpurple/protocols/simple/simple.c:1901 msgid "Publish status (note: everyone may watch you)" msgstr "Zverejniť stav (poznámka: ktokoľvek vás môže sledovať)" -#: ../libpurple/protocols/simple/simple.c:1905 -msgid "Use UDP" -msgstr "Používať UDP" - #: ../libpurple/protocols/simple/simple.c:1907 +msgid "Use UDP" +msgstr "Používať UDP" + +#: ../libpurple/protocols/simple/simple.c:1909 msgid "Use proxy" msgstr "Používať proxy" -#: ../libpurple/protocols/simple/simple.c:1909 +#: ../libpurple/protocols/simple/simple.c:1911 msgid "Proxy" msgstr "Proxy" -#: ../libpurple/protocols/simple/simple.c:1911 +#: ../libpurple/protocols/simple/simple.c:1913 msgid "Auth User" msgstr "Autentifikačný používateľ" -#: ../libpurple/protocols/simple/simple.c:1913 +#: ../libpurple/protocols/simple/simple.c:1915 msgid "Auth Domain" msgstr "Autentifikačná doména" @@ -12369,7 +12356,6 @@ msgstr "Varovanie na %s nie je dovolené." #: ../libpurple/protocols/toc/toc.c:503 -#, c-format msgid "A message has been dropped, you are exceeding the server speed limit." msgstr "Správa bola zrušená, prekračujete rýchlostný limit servera" @@ -12395,47 +12381,38 @@ "Prišli ste o správu od používateľa %s, pretože bola odoslaná príliš rýchlo." #: ../libpurple/protocols/toc/toc.c:518 -#, c-format msgid "Failure." msgstr "Zlyhanie." #: ../libpurple/protocols/toc/toc.c:521 -#, c-format msgid "Too many matches." msgstr "Príliš veľa výskytov." #: ../libpurple/protocols/toc/toc.c:524 -#, c-format msgid "Need more qualifiers." msgstr "Vyžaduje viac parametrov." #: ../libpurple/protocols/toc/toc.c:527 -#, c-format msgid "Dir service temporarily unavailable." msgstr "Služba dir je dočasne nedostupná" #: ../libpurple/protocols/toc/toc.c:530 -#, c-format msgid "E-mail lookup restricted." msgstr "Vyhľadávanie e-mailu obmedzené." #: ../libpurple/protocols/toc/toc.c:533 -#, c-format msgid "Keyword ignored." msgstr "Kľúčové slovo bolo ignorované." #: ../libpurple/protocols/toc/toc.c:536 -#, c-format msgid "No keywords." msgstr "Žiadne kľúče." #: ../libpurple/protocols/toc/toc.c:539 -#, c-format msgid "User has no directory information." msgstr "Používateľ nemá žiadne podrobnosti v adresári." #: ../libpurple/protocols/toc/toc.c:543 -#, c-format msgid "Country not supported." msgstr "Krajina nie je podporovaná." @@ -12445,24 +12422,20 @@ msgstr "Neznáme zlyhanie: %s." #: ../libpurple/protocols/toc/toc.c:549 -#, c-format msgid "Incorrect screen name or password." msgstr "Nesprávne používateľské meno alebo heslo." #: ../libpurple/protocols/toc/toc.c:552 -#, c-format msgid "The service is temporarily unavailable." msgstr "Služba je dočasne nedostupná." #: ../libpurple/protocols/toc/toc.c:555 -#, c-format msgid "Your warning level is currently too high to log in." msgstr "" "Vaša úroveň upozornenia je momentálne príliš vysoká na to, aby ste sa mohli " "prihlásiť." #: ../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." @@ -12500,8 +12473,8 @@ msgid "Password Change Successful" msgstr "Heslo bolo úspešne zmenené" -#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:5582 -#: ../pidgin/gtkblist.c:5932 +#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:5871 +#: ../pidgin/gtkblist.c:6227 msgid "_Group:" msgstr "_Skupina:" @@ -12568,25 +12541,25 @@ msgid "TOC Protocol Plugin" msgstr "Modul protokolu TOC" -#: ../libpurple/protocols/yahoo/yahoo.c:782 +#: ../libpurple/protocols/yahoo/yahoo.c:784 #, c-format msgid "%s has sent you a webcam invite, which is not yet supported." msgstr "%s vám poslal pozvánku na webkameru, ktorá zatiaľ nie je podporovaná." -#: ../libpurple/protocols/yahoo/yahoo.c:838 +#: ../libpurple/protocols/yahoo/yahoo.c:840 msgid "Your Yahoo! message did not get sent." msgstr "Vaša Yahoo! správa nebola odoslaná." -#: ../libpurple/protocols/yahoo/yahoo.c:960 +#: ../libpurple/protocols/yahoo/yahoo.c:962 #, c-format msgid "Yahoo! system message for %s:" msgstr "Systémová správa Yahoo! pre %s:" -#: ../libpurple/protocols/yahoo/yahoo.c:1029 +#: ../libpurple/protocols/yahoo/yahoo.c:1031 msgid "Authorization denied message:" msgstr "Správa odmietnutia autorizácie" -#: ../libpurple/protocols/yahoo/yahoo.c:1047 +#: ../libpurple/protocols/yahoo/yahoo.c:1049 #, c-format msgid "" "%s has (retroactively) denied your request to add them to your list for the " @@ -12595,18 +12568,18 @@ "Používateľ %s (retroaktívne) zamietol vašu žiadosť o jeho pridanie do vášho " "zoznamu z nasledujúceho dôvodu: %s." -#: ../libpurple/protocols/yahoo/yahoo.c:1050 +#: ../libpurple/protocols/yahoo/yahoo.c:1052 #, c-format msgid "%s has (retroactively) denied your request to add them to your list." msgstr "" "Používateľ %s (retroaktívne) zamietol vašu žiadosť o jeho pridanie do vášho " "zoznamu." -#: ../libpurple/protocols/yahoo/yahoo.c:1052 +#: ../libpurple/protocols/yahoo/yahoo.c:1054 msgid "Add buddy rejected" msgstr "Pridanie kamaráta bolo odmietnuté" -#: ../libpurple/protocols/yahoo/yahoo.c:1994 +#: ../libpurple/protocols/yahoo/yahoo.c:1996 #, c-format msgid "" "The Yahoo server has requested the use of an unrecognized authentication " @@ -12616,11 +12589,11 @@ "Yahoo server vyžaduje neznámy spôsob autentifikácie. Zrejme sa nebude dať " "úspešne prihlásiť na Yahoo. Na adrese %s skontrolujte možnosť aktualizácie." -#: ../libpurple/protocols/yahoo/yahoo.c:1997 +#: ../libpurple/protocols/yahoo/yahoo.c:1999 msgid "Failed Yahoo! Authentication" msgstr "Zlyhala Yahoo! autentifikácia" -#: ../libpurple/protocols/yahoo/yahoo.c:2063 +#: ../libpurple/protocols/yahoo/yahoo.c:2065 #, c-format msgid "" "You have tried to ignore %s, but the user is on your buddy list. Clicking " @@ -12630,51 +12603,51 @@ "vašom zozname priateľov. Kliknutím „Áno“ odstránite používateľa zo zoznamu " "priateľov a ignorujete ho." -#: ../libpurple/protocols/yahoo/yahoo.c:2066 +#: ../libpurple/protocols/yahoo/yahoo.c:2068 msgid "Ignore buddy?" msgstr "Ignorovať priateľa?" -#: ../libpurple/protocols/yahoo/yahoo.c:2129 +#: ../libpurple/protocols/yahoo/yahoo.c:2131 msgid "Your account is locked, please log in to the Yahoo! website." msgstr "Váš účet je uzamknutý, prihláste sa, prosím, na webstránke Yahoo!." -#: ../libpurple/protocols/yahoo/yahoo.c:2132 +#: ../libpurple/protocols/yahoo/yahoo.c:2134 #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." msgstr "" "Neznáme číslo chyby %d. Prihlásenie sa na stránke Yahoo! to môže napraviť." -#: ../libpurple/protocols/yahoo/yahoo.c:2186 +#: ../libpurple/protocols/yahoo/yahoo.c:2188 #, c-format msgid "Could not add buddy %s to group %s to the server list on account %s." msgstr "" "Nepodarilo sa pridať kamaráta %s do skupiny %s do zoznamu na serveri na účte " "%s." -#: ../libpurple/protocols/yahoo/yahoo.c:2189 +#: ../libpurple/protocols/yahoo/yahoo.c:2191 msgid "Could not add buddy to server list" msgstr "Nepodarilo sa pridať priateľa do serverového zoznamu" -#: ../libpurple/protocols/yahoo/yahoo.c:2308 +#: ../libpurple/protocols/yahoo/yahoo.c:2310 #, c-format msgid "[ Audible %s/%s/%s.swf ] %s" msgstr "[ Počúvateľné %s/%s/%s.swf ] %s" -#: ../libpurple/protocols/yahoo/yahoo.c:2651 +#: ../libpurple/protocols/yahoo/yahoo.c:2653 msgid "Received unexpected HTTP response from server." msgstr "Zo servera bola prijatá neočakávaná HTTP odpoveď." -#: ../libpurple/protocols/yahoo/yahoo.c:2675 -#: ../libpurple/protocols/yahoo/yahoo.c:2861 -#: ../libpurple/protocols/yahoo/yahoo.c:2964 -#: ../libpurple/protocols/yahoo/yahoo.c:2974 +#: ../libpurple/protocols/yahoo/yahoo.c:2677 +#: ../libpurple/protocols/yahoo/yahoo.c:2863 +#: ../libpurple/protocols/yahoo/yahoo.c:2966 +#: ../libpurple/protocols/yahoo/yahoo.c:2976 #: ../libpurple/protocols/yahoo/yahoochat.c:1514 #: ../libpurple/protocols/yahoo/yahoochat.c:1584 #: ../libpurple/protocols/yahoo/ycht.c:585 msgid "Connection problem" msgstr "Problém s pripojením" -#: ../libpurple/protocols/yahoo/yahoo.c:2701 +#: ../libpurple/protocols/yahoo/yahoo.c:2703 #, c-format msgid "" "Lost connection with %s:\n" @@ -12683,7 +12656,7 @@ "Prerušené pripojenie ku %s:\n" "%s" -#: ../libpurple/protocols/yahoo/yahoo.c:2726 +#: ../libpurple/protocols/yahoo/yahoo.c:2728 #, c-format msgid "" "Could not establish a connection with %s:\n" @@ -12692,115 +12665,104 @@ "Nebolo možné nadviazať spojenie s %s:\n" "%s" -#: ../libpurple/protocols/yahoo/yahoo.c:3081 -#: ../libpurple/protocols/yahoo/yahoo.c:3767 +#: ../libpurple/protocols/yahoo/yahoo.c:3083 +#: ../libpurple/protocols/yahoo/yahoo.c:3769 msgid "Not at Home" msgstr "Nie som doma" -#: ../libpurple/protocols/yahoo/yahoo.c:3083 -#: ../libpurple/protocols/yahoo/yahoo.c:3770 +#: ../libpurple/protocols/yahoo/yahoo.c:3085 +#: ../libpurple/protocols/yahoo/yahoo.c:3772 msgid "Not at Desk" msgstr "Nie som pri stole" -#: ../libpurple/protocols/yahoo/yahoo.c:3085 -#: ../libpurple/protocols/yahoo/yahoo.c:3773 +#: ../libpurple/protocols/yahoo/yahoo.c:3087 +#: ../libpurple/protocols/yahoo/yahoo.c:3775 msgid "Not in Office" msgstr "Nie som v kancelárii" -#: ../libpurple/protocols/yahoo/yahoo.c:3089 -#: ../libpurple/protocols/yahoo/yahoo.c:3779 +#: ../libpurple/protocols/yahoo/yahoo.c:3091 +#: ../libpurple/protocols/yahoo/yahoo.c:3781 msgid "On Vacation" msgstr "Na dovolenke" -#: ../libpurple/protocols/yahoo/yahoo.c:3093 -#: ../libpurple/protocols/yahoo/yahoo.c:3785 +#: ../libpurple/protocols/yahoo/yahoo.c:3095 +#: ../libpurple/protocols/yahoo/yahoo.c:3787 msgid "Stepped Out" msgstr "Vyrazil si von" -#: ../libpurple/protocols/yahoo/yahoo.c:3186 -#: ../libpurple/protocols/yahoo/yahoo.c:3216 +#: ../libpurple/protocols/yahoo/yahoo.c:3188 +#: ../libpurple/protocols/yahoo/yahoo.c:3218 msgid "Not on server list" msgstr "Nie je na zozname serverov" -#: ../libpurple/protocols/yahoo/yahoo.c:3233 -#: ../libpurple/protocols/yahoo/yahoo.c:3291 +#: ../libpurple/protocols/yahoo/yahoo.c:3235 +#: ../libpurple/protocols/yahoo/yahoo.c:3293 msgid "Appear Online" msgstr "Javí sa pripojený" -#: ../libpurple/protocols/yahoo/yahoo.c:3236 -#: ../libpurple/protocols/yahoo/yahoo.c:3312 +#: ../libpurple/protocols/yahoo/yahoo.c:3238 +#: ../libpurple/protocols/yahoo/yahoo.c:3314 msgid "Appear Permanently Offline" msgstr "Javí sa trvale odpojený" -#: ../libpurple/protocols/yahoo/yahoo.c:3254 +#: ../libpurple/protocols/yahoo/yahoo.c:3256 msgid "Presence" msgstr "Prítomnosť" -#: ../libpurple/protocols/yahoo/yahoo.c:3297 +#: ../libpurple/protocols/yahoo/yahoo.c:3299 msgid "Appear Offline" msgstr "Vyzerať odpojený" -#: ../libpurple/protocols/yahoo/yahoo.c:3306 +#: ../libpurple/protocols/yahoo/yahoo.c:3308 msgid "Don't Appear Permanently Offline" msgstr "Nevyzerať sa trvale odpojený" -#: ../libpurple/protocols/yahoo/yahoo.c:3354 +#: ../libpurple/protocols/yahoo/yahoo.c:3356 msgid "Join in Chat" msgstr "Pripojiť sa k rozhovoru" -#: ../libpurple/protocols/yahoo/yahoo.c:3360 +#: ../libpurple/protocols/yahoo/yahoo.c:3362 msgid "Initiate Conference" msgstr "Založiť konferenciu" -#: ../libpurple/protocols/yahoo/yahoo.c:3388 +#: ../libpurple/protocols/yahoo/yahoo.c:3390 msgid "Presence Settings" msgstr "Nastavenie prítomnosti" -#: ../libpurple/protocols/yahoo/yahoo.c:3394 +#: ../libpurple/protocols/yahoo/yahoo.c:3396 msgid "Start Doodling" msgstr "Začať Čmárať" -#: ../libpurple/protocols/yahoo/yahoo.c:3495 +#: ../libpurple/protocols/yahoo/yahoo.c:3497 msgid "Activate which ID?" msgstr "Aktivovať s ID?" -#: ../libpurple/protocols/yahoo/yahoo.c:3506 -#, fuzzy +#: ../libpurple/protocols/yahoo/yahoo.c:3508 msgid "Join whom in chat?" msgstr "S kým sa spojiť v chate?" -#: ../libpurple/protocols/yahoo/yahoo.c:3518 +#: ../libpurple/protocols/yahoo/yahoo.c:3520 msgid "Activate ID..." msgstr "Aktivovať ID..." -#: ../libpurple/protocols/yahoo/yahoo.c:3522 +#: ../libpurple/protocols/yahoo/yahoo.c:3524 msgid "Join User in Chat..." msgstr "Spojiť sa s používateľom v chate..." -#: ../libpurple/protocols/yahoo/yahoo.c:3527 +#: ../libpurple/protocols/yahoo/yahoo.c:3529 msgid "Open Inbox" msgstr "Otvoriť schránku Inbox" -#: ../libpurple/protocols/yahoo/yahoo.c:4119 -#, fuzzy -msgid "Buzz" -msgstr "bzzz" - -#: ../libpurple/protocols/yahoo/yahoo.c:4121 -#, fuzzy, c-format -msgid "Buzzing %s..." -msgstr "Poslané bzzz" - -#: ../libpurple/protocols/yahoo/yahoo.c:4136 +#: ../libpurple/protocols/yahoo/yahoo.c:4138 msgid "join <room>: Join a chat room on the Yahoo network" msgstr "" "join <miestnosť>: Vstúpiť do chatovacej miestnosti na sieti Yahoo" -#: ../libpurple/protocols/yahoo/yahoo.c:4141 +#: ../libpurple/protocols/yahoo/yahoo.c:4143 msgid "list: List rooms on the Yahoo network" msgstr "list: Vypísať zoznam miestností na sieti Yahoo" -#: ../libpurple/protocols/yahoo/yahoo.c:4149 +#: ../libpurple/protocols/yahoo/yahoo.c:4151 msgid "doodle: Request user to start a Doodle session" msgstr "Čmáranie: Požiadať používateľa o reláciu Čmáranie" @@ -12814,56 +12776,56 @@ #. *< version #. * summary #. * description -#: ../libpurple/protocols/yahoo/yahoo.c:4358 #: ../libpurple/protocols/yahoo/yahoo.c:4360 +#: ../libpurple/protocols/yahoo/yahoo.c:4362 msgid "Yahoo Protocol Plugin" msgstr "Modul protokolu Yahoo" -#: ../libpurple/protocols/yahoo/yahoo.c:4383 +#: ../libpurple/protocols/yahoo/yahoo.c:4385 msgid "Yahoo Japan" msgstr "Yahoo Japonsko" -#: ../libpurple/protocols/yahoo/yahoo.c:4386 +#: ../libpurple/protocols/yahoo/yahoo.c:4388 msgid "Pager server" msgstr "Pager server" -#: ../libpurple/protocols/yahoo/yahoo.c:4389 +#: ../libpurple/protocols/yahoo/yahoo.c:4391 msgid "Japan Pager server" msgstr "Pager server pre Japonsko" -#: ../libpurple/protocols/yahoo/yahoo.c:4392 +#: ../libpurple/protocols/yahoo/yahoo.c:4394 msgid "Pager port" msgstr "Port pagera" -#: ../libpurple/protocols/yahoo/yahoo.c:4395 +#: ../libpurple/protocols/yahoo/yahoo.c:4397 msgid "File transfer server" msgstr "Server prenosu súborov" -#: ../libpurple/protocols/yahoo/yahoo.c:4398 +#: ../libpurple/protocols/yahoo/yahoo.c:4400 msgid "Japan file transfer server" msgstr "Japonský server prenosu súborov" -#: ../libpurple/protocols/yahoo/yahoo.c:4401 +#: ../libpurple/protocols/yahoo/yahoo.c:4403 msgid "File transfer port" msgstr "Port prenosu súborov" -#: ../libpurple/protocols/yahoo/yahoo.c:4404 +#: ../libpurple/protocols/yahoo/yahoo.c:4406 msgid "Chat room locale" msgstr "Jazyk chatovacej miestnosti" -#: ../libpurple/protocols/yahoo/yahoo.c:4407 +#: ../libpurple/protocols/yahoo/yahoo.c:4409 msgid "Ignore conference and chatroom invitations" msgstr "Ignorovať pozvánky na konferencie a chatovacie miestnosti" -#: ../libpurple/protocols/yahoo/yahoo.c:4415 +#: ../libpurple/protocols/yahoo/yahoo.c:4417 msgid "Chat room list URL" msgstr "URL zoznamu miestností chatu" -#: ../libpurple/protocols/yahoo/yahoo.c:4418 +#: ../libpurple/protocols/yahoo/yahoo.c:4420 msgid "Yahoo Chat server" msgstr "Server Yahoo chatu" -#: ../libpurple/protocols/yahoo/yahoo.c:4421 +#: ../libpurple/protocols/yahoo/yahoo.c:4423 msgid "Yahoo Chat port" msgstr "Port Yahoo chatu" @@ -12906,7 +12868,7 @@ "If you wish to view this profile, you will need to visit this link in your " "web browser:" msgstr "" -"Ak si želáte vidieť tento profil, budete musieť navštíviť tento odkaz vo " +"Ak chcete zobraziť tento profil, budete musieť navštíviť tento odkaz vo " "vašom webovom prehliadači." #: ../libpurple/protocols/yahoo/yahoo_profile.c:1034 @@ -13301,14 +13263,14 @@ #: ../libpurple/server.c:302 #, c-format msgid "Requesting %s's attention..." -msgstr "" +msgstr "Poprosili ste o pozornosť používateľa %s..." #: ../libpurple/server.c:347 #, c-format msgid "%s has requested your attention!" -msgstr "" - -#: ../libpurple/server.c:796 +msgstr "Používateľ %s vás poprosil o pozornosť!" + +#: ../libpurple/server.c:793 #, c-format msgid "" "%s has invited %s to the chat room %s:\n" @@ -13317,19 +13279,18 @@ "Používateľ %s pozval používateľa %s do miestnosti %s:\n" "%s" -#: ../libpurple/server.c:801 +#: ../libpurple/server.c:798 #, c-format msgid "%s has invited %s to the chat room %s\n" msgstr "Používateľ %s pozval používateľa %s do miestnosti %s\n" -#: ../libpurple/server.c:805 +#: ../libpurple/server.c:802 msgid "Accept chat invitation?" msgstr "Prijať pozvanie na chat?" #: ../libpurple/sslconn.c:164 -#, fuzzy msgid "SSL Connection Failed" -msgstr "Spojenie zlyhalo" +msgstr "SSL spojenie zlyhalo" #: ../libpurple/sslconn.c:166 msgid "SSL Handshake Failed" @@ -13337,12 +13298,11 @@ #: ../libpurple/sslconn.c:168 msgid "SSL peer presented an invalid certificate" -msgstr "" +msgstr "SSL peer ponúkol neplatný certifikát" #: ../libpurple/sslconn.c:171 -#, fuzzy msgid "Unknown SSL error" -msgstr "Neznáma chyba" +msgstr "Neznáma chyba SSL" #: ../libpurple/status.c:153 msgid "Unset" @@ -13365,47 +13325,62 @@ msgid "%s changed status from %s to %s" msgstr "Používateľ %s zmenil stav z %s na %s" -#: ../libpurple/status.c:619 +#: ../libpurple/status.c:612 +#, c-format +msgid "%s (%s) changed status from %s to %s" +msgstr "Používateľ %s (%s) zmenil stav z %s na %s" + +#: ../libpurple/status.c:623 #, c-format msgid "%s is now %s" msgstr "Používateľ %s je teraz %s" -#: ../libpurple/status.c:624 +#: ../libpurple/status.c:625 +#, c-format +msgid "%s (%s) is now %s" +msgstr "Používateľ %s (%s) je teraz %s" + +#: ../libpurple/status.c:631 #, c-format msgid "%s is no longer %s" msgstr "Používateľ %s už nie je %s" -#: ../libpurple/status.c:1234 +#: ../libpurple/status.c:633 +#, c-format +msgid "%s (%s) is no longer %s" +msgstr "Používateľ %s (%s) už nie je %s" + +#: ../libpurple/status.c:1244 #, c-format msgid "%s became idle" msgstr "Používateľ %s sa stal nečinným" -#: ../libpurple/status.c:1251 +#: ../libpurple/status.c:1261 #, c-format msgid "%s became unidle" msgstr "Používateľ %s prestal byť nečinný" -#: ../libpurple/status.c:1314 +#: ../libpurple/status.c:1324 #, c-format msgid "+++ %s became idle" msgstr "+++ Používateľ %s sa stal nečinným" -#: ../libpurple/status.c:1316 +#: ../libpurple/status.c:1326 #, c-format msgid "+++ %s became unidle" msgstr "+++ Používateľ %s prestal byť nečinný" -#: ../libpurple/util.c:718 +#: ../libpurple/util.c:701 #, c-format msgid "%x %X" msgstr "%x %X" -#: ../libpurple/util.c:2722 +#: ../libpurple/util.c:2705 #, c-format msgid "Error Reading %s" msgstr "Chyba počas čítania %s" -#: ../libpurple/util.c:2723 +#: ../libpurple/util.c:2706 #, c-format msgid "" "An error was encountered reading your %s. They have not been loaded, and " @@ -13414,15 +13389,15 @@ "Počas načítavania vášho %s sa vyskytla chyba. Zoznam nebol načítaný a starý " "súbor bol premenovaný na %s~." -#: ../libpurple/util.c:3223 +#: ../libpurple/util.c:3206 msgid "Calculating..." msgstr "Počíta sa..." -#: ../libpurple/util.c:3226 +#: ../libpurple/util.c:3209 msgid "Unknown." msgstr "Neznáme." -#: ../libpurple/util.c:3252 +#: ../libpurple/util.c:3235 #, c-format msgid "%d second" msgid_plural "%d seconds" @@ -13430,7 +13405,7 @@ msgstr[1] "%d sekunda" msgstr[2] "%d sekundy" -#: ../libpurple/util.c:3264 +#: ../libpurple/util.c:3247 #, c-format msgid "%d day" msgid_plural "%d days" @@ -13438,7 +13413,7 @@ msgstr[1] "%d deň" msgstr[2] "%d dni" -#: ../libpurple/util.c:3272 +#: ../libpurple/util.c:3255 #, c-format msgid "%s, %d hour" msgid_plural "%s, %d hours" @@ -13446,7 +13421,7 @@ msgstr[1] "%s, %d hodina" msgstr[2] "%s, %d hodiny" -#: ../libpurple/util.c:3278 +#: ../libpurple/util.c:3261 #, c-format msgid "%d hour" msgid_plural "%d hours" @@ -13454,7 +13429,7 @@ msgstr[1] "%d hodina" msgstr[2] "%d hodiny" -#: ../libpurple/util.c:3286 +#: ../libpurple/util.c:3269 #, c-format msgid "%s, %d minute" msgid_plural "%s, %d minutes" @@ -13462,7 +13437,7 @@ msgstr[1] "%s, %d minúta" msgstr[2] "%s, %d minúty" -#: ../libpurple/util.c:3292 +#: ../libpurple/util.c:3275 #, c-format msgid "%d minute" msgid_plural "%d minutes" @@ -13470,17 +13445,17 @@ msgstr[1] "%d minúta" msgstr[2] "%d minúty" -#: ../libpurple/util.c:3552 +#: ../libpurple/util.c:3535 #, c-format msgid "Could not open %s: Redirected too many times" msgstr "Nepodarilo sa otvoriť %s: Presmerovaný príliš veľa kráť" -#: ../libpurple/util.c:3589 ../libpurple/util.c:3885 +#: ../libpurple/util.c:3572 ../libpurple/util.c:3868 #, c-format msgid "Unable to connect to %s" msgstr "Nepodarilo sa pripojiť na %s" -#: ../libpurple/util.c:3712 +#: ../libpurple/util.c:3695 #, c-format msgid "" "Unable to allocate enough memory to hold the contents from %s. The web " @@ -13489,17 +13464,17 @@ "Nebolo možné rezervovať dostatok pamäťového priestoru pre údaje z %s. " "Webový server sa možno pokúša o niečo nebezpečné." -#: ../libpurple/util.c:3747 +#: ../libpurple/util.c:3730 #, c-format msgid "Error reading from %s: %s" msgstr "Chyba pri čítaní z %s: %s" -#: ../libpurple/util.c:3778 +#: ../libpurple/util.c:3761 #, c-format msgid "Error writing to %s: %s" msgstr "Chyba pri zápise do %s: %s" -#: ../libpurple/util.c:3803 +#: ../libpurple/util.c:3786 #, c-format msgid "Unable to connect to %s: %s" msgstr "Nepodarilo sa pripojiť ku %s: %s" @@ -13517,11 +13492,11 @@ msgstr "" "Program na odosielanie okamžitých správ, ktorý podporuje viacero protokolov" -#: ../pidgin/eggtrayicon.c:129 +#: ../pidgin/eggtrayicon.c:128 msgid "Orientation" msgstr "Orientácia" -#: ../pidgin/eggtrayicon.c:130 +#: ../pidgin/eggtrayicon.c:129 msgid "The orientation of the tray." msgstr "Orientácia oznamovacej oblasti." @@ -13590,7 +13565,7 @@ msgid "SOCKS 5" msgstr "SOCKS 5" -#: ../pidgin/gtkaccount.c:967 ../pidgin/gtkprefs.c:1211 +#: ../pidgin/gtkaccount.c:967 ../pidgin/gtkprefs.c:1213 msgid "Use Environmental Settings" msgstr "Použiť nastavenie prostredia" @@ -13612,15 +13587,15 @@ msgid "Proxy Options" msgstr "Možnosti proxy" -#: ../pidgin/gtkaccount.c:1044 ../pidgin/gtkprefs.c:1205 +#: ../pidgin/gtkaccount.c:1044 ../pidgin/gtkprefs.c:1207 msgid "Proxy _type:" msgstr "_Typ proxy:" -#: ../pidgin/gtkaccount.c:1053 ../pidgin/gtkprefs.c:1226 +#: ../pidgin/gtkaccount.c:1053 ../pidgin/gtkprefs.c:1228 msgid "_Host:" msgstr "_Hostiteľ:" -#: ../pidgin/gtkaccount.c:1057 ../pidgin/gtkprefs.c:1244 +#: ../pidgin/gtkaccount.c:1057 ../pidgin/gtkprefs.c:1246 msgid "_Port:" msgstr "_Port:" @@ -13628,7 +13603,7 @@ msgid "_Username:" msgstr "Po_užívateľské meno:" -#: ../pidgin/gtkaccount.c:1072 ../pidgin/gtkprefs.c:1281 +#: ../pidgin/gtkaccount.c:1072 ../pidgin/gtkprefs.c:1283 msgid "Pa_ssword:" msgstr "He_slo:" @@ -13688,11 +13663,30 @@ "toto okno otvoríte v ponuke Účty->Pridať/Upraviťt v okne Zoznam " "priateľov" -#: ../pidgin/gtkblist.c:767 -msgid "Join a Chat" -msgstr "Pripojiť sa k chatu" - -#: ../pidgin/gtkblist.c:788 +#: ../pidgin/gtkblist.c:524 +#, 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] "Máte %d kontaktov pomenovaných %s. Chceli by ste ich spojiť?" +msgstr[1] "Máte %d kontakt pomenovaný %s. Chceli by ste ich spojiť?" +msgstr[2] "Máte %d kontakty pomenované %s. Chceli by ste ich spojiť?" + +#: ../pidgin/gtkblist.c:525 +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 "" +"Po spojení budú zaberať jedno miesto v zozname kontaktov a budú využívať " +"rovnaké okno konverzácie. Môžete ich znovu oddeliť tak, že vyberiete možnosť " +"'Rozbaliť' z kontextovej ponuky" + +#: ../pidgin/gtkblist.c:527 +msgid "_Merge" +msgstr "Spojiť" + +#: ../pidgin/gtkblist.c:945 msgid "" "Please enter the appropriate information about the chat you would like to " "join.\n" @@ -13700,95 +13694,108 @@ "Prosím, zadajte zodpovedajúce informácie o chate, ku ktorému sa chcete " "pripojiť.\n" -#. Set up stuff for the account box -#: ../pidgin/gtkblist.c:799 ../pidgin/gtkblist.c:5530 -#: ../pidgin/gtkblist.c:5893 ../pidgin/gtkpounce.c:539 -#: ../pidgin/gtkroomlist.c:396 +#: ../pidgin/gtkblist.c:956 ../pidgin/gtkblist.c:6188 +#: ../pidgin/gtkpounce.c:546 ../pidgin/gtkroomlist.c:396 msgid "_Account:" msgstr "_Účet:" -#: ../pidgin/gtkblist.c:1088 ../pidgin/gtkprivacy.c:603 +#: ../pidgin/gtkblist.c:1245 ../pidgin/gtkprivacy.c:603 #: ../pidgin/gtkprivacy.c:617 msgid "_Block" msgstr "_Blokovať" -#: ../pidgin/gtkblist.c:1088 +#: ../pidgin/gtkblist.c:1245 msgid "Un_block" msgstr "Od_blokovať" -#: ../pidgin/gtkblist.c:1139 +#: ../pidgin/gtkblist.c:1288 +msgid "Move to" +msgstr "Presunúť do" + +#: ../pidgin/gtkblist.c:1328 msgid "Get _Info" -msgstr "Zobraziťo podrobnosti" - -#: ../pidgin/gtkblist.c:1142 ../pidgin/pidginstock.c:90 +msgstr "Zobraziť podrobnosti" + +#: ../pidgin/gtkblist.c:1331 ../pidgin/pidginstock.c:90 msgid "I_M" msgstr "I_M" -#: ../pidgin/gtkblist.c:1148 -#, fuzzy -msgid "_Send File" -msgstr "Odoslať súbor" - -#: ../pidgin/gtkblist.c:1155 -msgid "Add Buddy _Pounce" -msgstr "Pridať _sledovanie priatela" - -#: ../pidgin/gtkblist.c:1160 ../pidgin/gtkblist.c:1164 -#: ../pidgin/gtkblist.c:1269 ../pidgin/gtkblist.c:1292 +#: ../pidgin/gtkblist.c:1337 +msgid "_Send File..." +msgstr "Poslať _súbor..." + +#: ../pidgin/gtkblist.c:1344 +msgid "Add Buddy _Pounce..." +msgstr "Pridať sledovanie _priateľa..." + +#: ../pidgin/gtkblist.c:1349 ../pidgin/gtkblist.c:1353 +#: ../pidgin/gtkblist.c:1468 ../pidgin/gtkblist.c:1491 msgid "View _Log" msgstr "Zobraziť _záznam" -#: ../pidgin/gtkblist.c:1177 ../pidgin/gtkblist.c:1186 -#: ../pidgin/gtkblist.c:1277 ../pidgin/gtkblist.c:1298 +#: ../pidgin/gtkblist.c:1359 +msgid "Hide when offline" +msgstr "Skryť v odpojenom stave" + +#: ../pidgin/gtkblist.c:1359 +msgid "Show when offline" +msgstr "Zobaziť v odpojenom stave" + +#: ../pidgin/gtkblist.c:1373 ../pidgin/gtkblist.c:1382 +#: ../pidgin/gtkblist.c:1476 ../pidgin/gtkblist.c:1497 msgid "_Alias..." msgstr "_Prezývka..." -#: ../pidgin/gtkblist.c:1180 ../pidgin/gtkblist.c:1188 -#: ../pidgin/gtkblist.c:1279 ../pidgin/gtkblist.c:1300 +#: ../pidgin/gtkblist.c:1376 ../pidgin/gtkblist.c:1384 +#: ../pidgin/gtkblist.c:1478 ../pidgin/gtkblist.c:1499 msgid "_Remove" msgstr "Odst_rániť" -#: ../pidgin/gtkblist.c:1238 -msgid "Add a _Buddy" -msgstr "Pridať priateľa" - -#: ../pidgin/gtkblist.c:1241 -msgid "Add a C_hat" -msgstr "Pridať chat" - -#: ../pidgin/gtkblist.c:1244 +#: ../pidgin/gtkblist.c:1434 +msgid "Add _Buddy..." +msgstr "Pridať _priateľa..." + +#: ../pidgin/gtkblist.c:1437 +msgid "Add C_hat..." +msgstr "Pridať c_hat..." + +#: ../pidgin/gtkblist.c:1440 msgid "_Delete Group" msgstr "Odstrániť skupinu" -#: ../pidgin/gtkblist.c:1246 +#: ../pidgin/gtkblist.c:1442 msgid "_Rename" msgstr "Premenovať" #. join button -#: ../pidgin/gtkblist.c:1265 ../pidgin/gtkroomlist.c:307 +#: ../pidgin/gtkblist.c:1462 ../pidgin/gtkroomlist.c:307 #: ../pidgin/gtkroomlist.c:460 ../pidgin/pidginstock.c:88 msgid "_Join" msgstr "Pripo_jiť" -#: ../pidgin/gtkblist.c:1267 +#: ../pidgin/gtkblist.c:1464 msgid "Auto-Join" msgstr "Automatické prihlasovanie" -#: ../pidgin/gtkblist.c:1305 ../pidgin/gtkblist.c:1329 +#: ../pidgin/gtkblist.c:1466 +msgid "Persistent" +msgstr "Trvalé" + +#: ../pidgin/gtkblist.c:1504 ../pidgin/gtkblist.c:1527 msgid "_Collapse" msgstr "_Zbaliť" -#: ../pidgin/gtkblist.c:1334 +#: ../pidgin/gtkblist.c:1532 msgid "_Expand" msgstr "_Rozbaliť" -#: ../pidgin/gtkblist.c:1585 ../pidgin/gtkblist.c:1597 -#: ../pidgin/gtkblist.c:4603 ../pidgin/gtkblist.c:4616 +#: ../pidgin/gtkblist.c:1783 ../pidgin/gtkblist.c:1795 +#: ../pidgin/gtkblist.c:4885 ../pidgin/gtkblist.c:4898 msgid "/Tools/Mute Sounds" msgstr "/Nástroje/Vypnúť zvuky" -#: ../pidgin/gtkblist.c:2057 ../pidgin/gtkconv.c:4840 -#: ../pidgin/gtkpounce.c:430 +#: ../pidgin/gtkblist.c:2255 ../pidgin/gtkconv.c:4903 +#: ../pidgin/gtkpounce.c:437 msgid "" "You are not currently signed on with an account that can add that buddy." msgstr "" @@ -13796,143 +13803,138 @@ "priateľa." #. Buddies menu -#: ../pidgin/gtkblist.c:2869 +#: ../pidgin/gtkblist.c:3067 msgid "/_Buddies" msgstr "/_Priatelia" -#: ../pidgin/gtkblist.c:2870 +#: ../pidgin/gtkblist.c:3068 msgid "/Buddies/New Instant _Message..." msgstr "/Priatelia/Nová _správa..." -#: ../pidgin/gtkblist.c:2871 +#: ../pidgin/gtkblist.c:3069 msgid "/Buddies/Join a _Chat..." msgstr "/Priatelia/Pripojiť sa k _chatu..." -#: ../pidgin/gtkblist.c:2872 +#: ../pidgin/gtkblist.c:3070 msgid "/Buddies/Get User _Info..." msgstr "/Priatelia/_Podrobnosti o používateľovi..." -#: ../pidgin/gtkblist.c:2873 +#: ../pidgin/gtkblist.c:3071 msgid "/Buddies/View User _Log..." msgstr "/Priatelia/_Záznam používateľa..." -#: ../pidgin/gtkblist.c:2875 +#: ../pidgin/gtkblist.c:3073 msgid "/Buddies/Show" msgstr "/Priatelia/Zobraziť" -#: ../pidgin/gtkblist.c:2876 -#, fuzzy +#: ../pidgin/gtkblist.c:3074 msgid "/Buddies/Show/_Offline Buddies" -msgstr "/Priatelia/Zobraziť _nepripojených priateľov" - -#: ../pidgin/gtkblist.c:2877 -#, fuzzy +msgstr "/Priatelia/Zobraziť/_Odpojených priateľov" + +#: ../pidgin/gtkblist.c:3075 msgid "/Buddies/Show/_Empty Groups" -msgstr "/Priateliai/Zobraziť prázdne s_kupiny" - -#: ../pidgin/gtkblist.c:2878 -#, fuzzy +msgstr "/Priatelia/Zobraziť/_Prázdne skupiny" + +#: ../pidgin/gtkblist.c:3076 msgid "/Buddies/Show/Buddy _Details" -msgstr "/Priatelia/Zobraziť _detaily priateľov" - -#: ../pidgin/gtkblist.c:2879 -#, fuzzy +msgstr "/Priatelia/Zobraziť/_Detaily priateľov" + +#: ../pidgin/gtkblist.c:3077 msgid "/Buddies/Show/Idle _Times" -msgstr "/Priatelia/Zobraziť č_asy nečinnosti" - -#: ../pidgin/gtkblist.c:2880 -#, fuzzy +msgstr "/Priatelia/Zobraziť/Časy _nečinnosti" + +#: ../pidgin/gtkblist.c:3078 msgid "/Buddies/Show/_Protocol Icons" msgstr "/Priatelia/Zobraziť/_Ikony protokolov" -#: ../pidgin/gtkblist.c:2881 +#: ../pidgin/gtkblist.c:3079 msgid "/Buddies/_Sort Buddies" msgstr "/Priatelia/Zo_radiť priateľov" -#: ../pidgin/gtkblist.c:2883 +#: ../pidgin/gtkblist.c:3081 msgid "/Buddies/_Add Buddy..." msgstr "/Priatelia/Pridať priat_eľa..." -#: ../pidgin/gtkblist.c:2884 +#: ../pidgin/gtkblist.c:3082 msgid "/Buddies/Add C_hat..." msgstr "/Priatelia/Pridať cha_t..." -#: ../pidgin/gtkblist.c:2885 +#: ../pidgin/gtkblist.c:3083 msgid "/Buddies/Add _Group..." msgstr "/Priatelia/Pridať sk_upinu..." -#: ../pidgin/gtkblist.c:2887 +#: ../pidgin/gtkblist.c:3085 msgid "/Buddies/_Quit" msgstr "/Priatelia/_Ukončiť" #. Accounts menu -#: ../pidgin/gtkblist.c:2890 +#: ../pidgin/gtkblist.c:3088 msgid "/_Accounts" msgstr "/Úč_ty" -#: ../pidgin/gtkblist.c:2891 ../pidgin/gtkblist.c:6589 -msgid "/Accounts/Add\\/Edit" -msgstr "/Účty/Pri_dať a upraviť" +#: ../pidgin/gtkblist.c:3089 ../pidgin/gtkblist.c:6889 +msgid "/Accounts/Manage" +msgstr "/Účty/Organizovať" #. Tools -#: ../pidgin/gtkblist.c:2894 +#: ../pidgin/gtkblist.c:3092 msgid "/_Tools" msgstr "/_Nástroje" -#: ../pidgin/gtkblist.c:2895 +#: ../pidgin/gtkblist.c:3093 msgid "/Tools/Buddy _Pounces" msgstr "/Nástroje/_Sledovanie priateľov" -#: ../pidgin/gtkblist.c:2896 +#: ../pidgin/gtkblist.c:3094 msgid "/Tools/_Certificates" msgstr "/Nástroje/_Certifikáty" -#: ../pidgin/gtkblist.c:2897 +#: ../pidgin/gtkblist.c:3095 msgid "/Tools/Plu_gins" msgstr "/Nástroje/_Moduly" -#: ../pidgin/gtkblist.c:2898 +#: ../pidgin/gtkblist.c:3096 msgid "/Tools/Pr_eferences" msgstr "/Nástroje/_Nastavenia" -#: ../pidgin/gtkblist.c:2899 +#: ../pidgin/gtkblist.c:3097 msgid "/Tools/Pr_ivacy" msgstr "/Nástroje/_Súkromie" -#: ../pidgin/gtkblist.c:2901 +#: ../pidgin/gtkblist.c:3099 msgid "/Tools/_File Transfers" msgstr "/Nástroje/_Prenosy súborov" -#: ../pidgin/gtkblist.c:2902 +#: ../pidgin/gtkblist.c:3100 msgid "/Tools/R_oom List" msgstr "/Nástroje/Zoznam _miestností" -#: ../pidgin/gtkblist.c:2903 +#: ../pidgin/gtkblist.c:3101 msgid "/Tools/System _Log" msgstr "/Nástroje/Systémový _záznam" -#: ../pidgin/gtkblist.c:2905 +#: ../pidgin/gtkblist.c:3103 msgid "/Tools/Mute _Sounds" msgstr "/Nástroje/Vypnúť _zvuky" #. Help -#: ../pidgin/gtkblist.c:2907 +#: ../pidgin/gtkblist.c:3105 msgid "/_Help" msgstr "/_Pomocník" -#: ../pidgin/gtkblist.c:2908 +#: ../pidgin/gtkblist.c:3106 msgid "/Help/Online _Help" msgstr "/Pomoc/Online _pomocník" -#: ../pidgin/gtkblist.c:2909 +#: ../pidgin/gtkblist.c:3107 msgid "/Help/_Debug Window" msgstr "/Pomoc/_Ladiace okno" -#: ../pidgin/gtkblist.c:2911 ../pidgin/gtkblist.c:2913 +#: ../pidgin/gtkblist.c:3109 ../pidgin/gtkblist.c:3111 msgid "/Help/_About" msgstr "/Pomoc/O _programe" -#: ../pidgin/gtkblist.c:2942 +#: ../pidgin/gtkblist.c:3140 #, c-format msgid "" "\n" @@ -13941,78 +13943,78 @@ "\n" "Účet: %s" -#: ../pidgin/gtkblist.c:3020 +#: ../pidgin/gtkblist.c:3218 msgid "Buddy Alias" msgstr "Prezývka priateľa" -#: ../pidgin/gtkblist.c:3049 +#: ../pidgin/gtkblist.c:3247 msgid "Logged In" msgstr "Prihlásený" -#: ../pidgin/gtkblist.c:3095 +#: ../pidgin/gtkblist.c:3293 msgid "Last Seen" msgstr "Naposledy videný" -#: ../pidgin/gtkblist.c:3116 +#: ../pidgin/gtkblist.c:3314 msgid "Spooky" msgstr "Strašidelné" -#: ../pidgin/gtkblist.c:3118 +#: ../pidgin/gtkblist.c:3316 msgid "Awesome" msgstr "Hrozné" -#: ../pidgin/gtkblist.c:3120 +#: ../pidgin/gtkblist.c:3318 msgid "Rockin'" msgstr "Super" -#: ../pidgin/gtkblist.c:3453 +#: ../pidgin/gtkblist.c:3657 #, c-format msgid "Idle %dd %dh %02dm" msgstr "Nečinný %dd %dh %02dm" -#: ../pidgin/gtkblist.c:3455 +#: ../pidgin/gtkblist.c:3659 #, c-format msgid "Idle %dh %02dm" msgstr "Nečinný %dh %02dm" -#: ../pidgin/gtkblist.c:3457 +#: ../pidgin/gtkblist.c:3661 #, c-format msgid "Idle %dm" msgstr "Nečinný %dm" -#: ../pidgin/gtkblist.c:3602 +#: ../pidgin/gtkblist.c:3806 msgid "/Buddies/New Instant Message..." msgstr "/Priatelia/Nová _správa..." -#: ../pidgin/gtkblist.c:3603 ../pidgin/gtkblist.c:3636 +#: ../pidgin/gtkblist.c:3807 ../pidgin/gtkblist.c:3840 msgid "/Buddies/Join a Chat..." msgstr "/Priatelia/Pripojiť sa k _chatu..." -#: ../pidgin/gtkblist.c:3604 +#: ../pidgin/gtkblist.c:3808 msgid "/Buddies/Get User Info..." msgstr "/Priatelia/Zobraziť podrobnosti..." -#: ../pidgin/gtkblist.c:3605 +#: ../pidgin/gtkblist.c:3809 msgid "/Buddies/Add Buddy..." msgstr "/Priatelia/Pridať priateľa..." -#: ../pidgin/gtkblist.c:3606 ../pidgin/gtkblist.c:3639 +#: ../pidgin/gtkblist.c:3810 ../pidgin/gtkblist.c:3843 msgid "/Buddies/Add Chat..." msgstr "/Priatelia/Pridať chat..." -#: ../pidgin/gtkblist.c:3607 +#: ../pidgin/gtkblist.c:3811 msgid "/Buddies/Add Group..." msgstr "/Priatelia/Pridať skupinu..." -#: ../pidgin/gtkblist.c:3642 +#: ../pidgin/gtkblist.c:3846 msgid "/Tools/Privacy" msgstr "/Nástroje/_Súkromie" -#: ../pidgin/gtkblist.c:3645 +#: ../pidgin/gtkblist.c:3849 msgid "/Tools/Room List" msgstr "/Nástroje/Zoznam _miestností" -#: ../pidgin/gtkblist.c:3742 ../pidgin/gtkdocklet.c:153 +#: ../pidgin/gtkblist.c:3944 ../pidgin/gtkdocklet.c:153 #, c-format msgid "%d unread message from %s\n" msgid_plural "%d unread messages from %s\n" @@ -14020,94 +14022,86 @@ msgstr[1] "%d neprečítaná správa od používateľa %s\n" msgstr[2] "%d neprečítané správy od používateľa %s\n" -#: ../pidgin/gtkblist.c:3822 +#: ../pidgin/gtkblist.c:4104 msgid "Manually" msgstr "Ručne" -#: ../pidgin/gtkblist.c:3824 -msgid "Alphabetically" -msgstr "Podľa abecedy" - -#: ../pidgin/gtkblist.c:3825 +#: ../pidgin/gtkblist.c:4107 msgid "By status" msgstr "Podľa stavu" -#: ../pidgin/gtkblist.c:3826 +#: ../pidgin/gtkblist.c:4108 msgid "By log size" msgstr "Podľa veľkosti záznamu" -#: ../pidgin/gtkblist.c:4031 ../pidgin/gtkconn.c:179 +#: ../pidgin/gtkblist.c:4313 ../pidgin/gtkconn.c:180 #, c-format msgid "%s disconnected" msgstr "%s bol odpojený" -#: ../pidgin/gtkblist.c:4067 +#: ../pidgin/gtkblist.c:4349 #, c-format msgid "%s disconnected: %s" msgstr "%s bol odpojený: %s" -#: ../pidgin/gtkblist.c:4219 +#: ../pidgin/gtkblist.c:4501 msgid "Username:" msgstr "Prihlasovacie meno:" -#: ../pidgin/gtkblist.c:4226 +#: ../pidgin/gtkblist.c:4508 msgid "Password:" msgstr "Heslo:" -#: ../pidgin/gtkblist.c:4237 +#: ../pidgin/gtkblist.c:4519 msgid "_Login" msgstr "Prihlásiť" -#: ../pidgin/gtkblist.c:4320 +#: ../pidgin/gtkblist.c:4602 msgid "/Accounts" msgstr "/Účty" #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy -#: ../pidgin/gtkblist.c:4334 -#, fuzzy, c-format +#: ../pidgin/gtkblist.c:4616 +#, c-format msgid "" "Welcome to %s!\n" "\n" "You have no accounts enabled. Enable your IM accounts from the Accounts window at Accounts->Add/Edit. Once you enable accounts, you'll be " +"b> window at Accounts->Manage. Once you enable accounts, you'll be " "able to sign on, set your status, and talk to your friends." msgstr "" "Vitajte v programe %s!\n" "\n" -"Zatiaľ nemáte pridané žiadne IM účty. Môžete ich pridať v okne Účty " -"ktoré nájdete v ponuke Účty->Pridať a upraviť. Po tom, ako pridáte " +"Zatiaľ nemáte adtivované žiadne IM účty. Môžete ich pridať v okne Účty ktoré nájdete v ponuke Účty->Organizovať. Po tom, ako aktivujete " "váš účet, budete sa môcť prihlásiť, zmeniť svoj stav a písať si s vašimi " "priateľmi." +# SPRAVNE #. set the Show Offline Buddies option. must be done #. * after the treeview or faceprint gets mad. -Robot101 #. -#: ../pidgin/gtkblist.c:4597 -#, fuzzy +#: ../pidgin/gtkblist.c:4879 msgid "/Buddies/Show/Offline Buddies" -msgstr "/Priatelia/Zobraziť _nepripojených priateľov" - -#: ../pidgin/gtkblist.c:4600 -#, fuzzy +msgstr "/Priatelia/Zobraziť/Odpojených priateľov" + +#: ../pidgin/gtkblist.c:4882 msgid "/Buddies/Show/Empty Groups" -msgstr "/Priatelia/Zobraziť prázdne s_kupiny" - -#: ../pidgin/gtkblist.c:4606 -#, fuzzy +msgstr "/Priatelia/Zobraziť/Prázdne skupiny" + +#: ../pidgin/gtkblist.c:4888 msgid "/Buddies/Show/Buddy Details" -msgstr "/Nástroje/Zobraziť _detaily priateľov" - -#: ../pidgin/gtkblist.c:4609 -#, fuzzy +msgstr "/Priatelia/Zobraziť/Detaily priateľov" + +#: ../pidgin/gtkblist.c:4891 msgid "/Buddies/Show/Idle Times" -msgstr "/Priatelia/Zobraziť č_asy nečinnosti" - -#: ../pidgin/gtkblist.c:4612 -#, fuzzy +msgstr "/Priatelia/Zobraziť/Časy nečinnosti" + +#: ../pidgin/gtkblist.c:4894 msgid "/Buddies/Show/Protocol Icons" msgstr "/Priatelia/Zobraziť/Ikony protokolov" -#: ../pidgin/gtkblist.c:5507 +#: ../pidgin/gtkblist.c:5796 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. " @@ -14117,26 +14111,31 @@ "priateľov. Môžete vyplniť aj prezývku priateľa. Prezývka sa bude zobrazovať " "v zozname priateľov namiesto mena používateľa vždy, keď to bude možné.\n" +#. Set up stuff for the account box +#: ../pidgin/gtkblist.c:5819 +msgid "A_ccount:" +msgstr "Úče_t:" + #. End of account box -#: ../pidgin/gtkblist.c:5542 +#: ../pidgin/gtkblist.c:5831 msgid "_Screen name:" msgstr "_Používateľské meno:" -#: ../pidgin/gtkblist.c:5564 ../pidgin/gtkblist.c:5914 +#: ../pidgin/gtkblist.c:5853 ../pidgin/gtkblist.c:6209 msgid "A_lias:" msgstr "P_rezývka:" -#: ../pidgin/gtkblist.c:5826 +#: ../pidgin/gtkblist.c:6121 msgid "This protocol does not support chat rooms." msgstr "Tento protokol nepodporuje miestnosti chatu." -#: ../pidgin/gtkblist.c:5842 +#: ../pidgin/gtkblist.c:6137 msgid "" "You are not currently signed on with any protocols that have the ability to " "chat." msgstr "Momentálne nie ste pripojený na protokole, ktorý by podporoval chat." -#: ../pidgin/gtkblist.c:5883 +#: ../pidgin/gtkblist.c:6178 msgid "" "Please enter an alias, and the appropriate information about the chat you " "would like to add to your buddy list.\n" @@ -14144,49 +14143,56 @@ "Prosím, zadajte prezývku a príslušné informácie o chate, ktorý chcete pridať " "do vášho zoznamu priateľov.\n" -#: ../pidgin/gtkblist.c:5964 +#: ../pidgin/gtkblist.c:6237 +msgid "Autojoin when account becomes online." +msgstr "Znovu pripojiť keď sa prihlásite." + +#: ../pidgin/gtkblist.c:6238 +msgid "Hide chat when the window is closed." +msgstr "Skryť chat keď je okno zatvorené." + +#: ../pidgin/gtkblist.c:6264 msgid "Please enter the name of the group to be added." msgstr "Prosím, zadajte názov skupiny ktorú chcete pridať." -#: ../pidgin/gtkblist.c:6609 +#: ../pidgin/gtkblist.c:6909 msgid "/Accounts/" msgstr "/Účty/" -#: ../pidgin/gtkblist.c:6633 +#: ../pidgin/gtkblist.c:6933 msgid "_Edit Account" msgstr "_Upraviť účet" -#: ../pidgin/gtkblist.c:6646 ../pidgin/gtkconv.c:3073 +#: ../pidgin/gtkblist.c:6946 ../pidgin/gtkconv.c:3136 msgid "No actions available" msgstr "Nie sú dostupné žiadne akcie" -#: ../pidgin/gtkblist.c:6654 +#: ../pidgin/gtkblist.c:6954 msgid "_Disable" msgstr "_Vypnúť" -#: ../pidgin/gtkblist.c:6666 +#: ../pidgin/gtkblist.c:6966 msgid "Enable Account" msgstr "Povoliť účet" -#: ../pidgin/gtkblist.c:6672 +#: ../pidgin/gtkblist.c:6972 msgid "/Accounts/Enable Account" msgstr "/Účty/Povoliť účet" -#: ../pidgin/gtkblist.c:6721 +#: ../pidgin/gtkblist.c:7021 msgid "/Tools" msgstr "/Nástroje" -#: ../pidgin/gtkblist.c:6791 +#: ../pidgin/gtkblist.c:7091 msgid "/Buddies/Sort Buddies" msgstr "/Priatelia/Zoradiť priateľov" #. Widget creation function #: ../pidgin/gtkcertmgr.c:530 -#, fuzzy msgid "SSL Servers" -msgstr "Server" - -#: ../pidgin/gtkconn.c:180 +msgstr "SSL servery" + +#: ../pidgin/gtkconn.c:181 #, c-format msgid "" "%s\n" @@ -14199,26 +14205,26 @@ "%s sa nebude znovu pokúšať pripojiť na tento účet, kým neopravíte chybu a " "znovu nepovolíte tento účet." -#: ../pidgin/gtkconv.c:482 +#: ../pidgin/gtkconv.c:523 msgid "Unknown command." msgstr "Neznámy príkaz." -#: ../pidgin/gtkconv.c:754 ../pidgin/gtkconv.c:780 +#: ../pidgin/gtkconv.c:795 ../pidgin/gtkconv.c:821 msgid "That buddy is not on the same protocol as this chat." msgstr "Priateľ nie je na tom istom protokole ako tento chat" -#: ../pidgin/gtkconv.c:774 +#: ../pidgin/gtkconv.c:815 msgid "" "You are not currently signed on with an account that can invite that buddy." msgstr "" "Momentálne nie ste prihlásený v účte, ktorý dokáže pozvať tohoto priateľa." -#: ../pidgin/gtkconv.c:827 +#: ../pidgin/gtkconv.c:868 msgid "Invite Buddy Into Chat Room" msgstr "Pozvať priateľa do miestnosti chatu" #. Put our happy label in it. -#: ../pidgin/gtkconv.c:857 +#: ../pidgin/gtkconv.c:898 msgid "" "Please enter the name of the user you wish to invite, along with an optional " "invite message." @@ -14226,188 +14232,183 @@ "Zadajte, prosím, meno používateľa, ktorého chcete pozvať, spolu s nepovinnou " "pozývacou správou." -#: ../pidgin/gtkconv.c:878 +#: ../pidgin/gtkconv.c:919 msgid "_Buddy:" msgstr "_Priateľ:" -#: ../pidgin/gtkconv.c:889 ../pidgin/gtksavedstatuses.c:1194 +#: ../pidgin/gtkconv.c:930 ../pidgin/gtksavedstatuses.c:1194 #: ../pidgin/gtksavedstatuses.c:1528 msgid "_Message:" msgstr "_Správa:" -#: ../pidgin/gtkconv.c:947 ../pidgin/gtkconv.c:2598 ../pidgin/gtkdebug.c:219 -#: ../pidgin/gtkft.c:543 -msgid "Unable to open file." -msgstr "Nepodarilo sa otvoriť súbor." - -#: ../pidgin/gtkconv.c:953 +#: ../pidgin/gtkconv.c:994 #, c-format msgid "

Conversation with %s

\n" msgstr "

Rozhovor s %s

\n" -#: ../pidgin/gtkconv.c:991 +#: ../pidgin/gtkconv.c:1032 msgid "Save Conversation" msgstr "Uložiť konverzáciu" -#: ../pidgin/gtkconv.c:1140 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:743 +#: ../pidgin/gtkconv.c:1178 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:743 msgid "Find" msgstr "Nájsť" -#: ../pidgin/gtkconv.c:1166 ../pidgin/gtkdebug.c:195 +#: ../pidgin/gtkconv.c:1204 ../pidgin/gtkdebug.c:195 msgid "_Search for:" msgstr "Hľadať:" -#: ../pidgin/gtkconv.c:1622 +#: ../pidgin/gtkconv.c:1675 msgid "Un-Ignore" msgstr "Neignorovať" -#: ../pidgin/gtkconv.c:1625 +#: ../pidgin/gtkconv.c:1678 msgid "Ignore" msgstr "Ignorovať" -#: ../pidgin/gtkconv.c:1645 +#: ../pidgin/gtkconv.c:1698 msgid "Get Away Message" msgstr "Získať správu o neprítomnosti" -#: ../pidgin/gtkconv.c:1668 +#: ../pidgin/gtkconv.c:1721 msgid "Last said" msgstr "Naposledy povedal" -#: ../pidgin/gtkconv.c:2606 +#: ../pidgin/gtkconv.c:2665 msgid "Unable to save icon file to disk." msgstr "Nepodarilo sa uložiť súbor ikony na disk." -#: ../pidgin/gtkconv.c:2657 +#: ../pidgin/gtkconv.c:2716 msgid "Save Icon" msgstr "Uložiť ikonu" -#: ../pidgin/gtkconv.c:2709 +#: ../pidgin/gtkconv.c:2768 msgid "Animate" msgstr "Animovať" -#: ../pidgin/gtkconv.c:2714 +#: ../pidgin/gtkconv.c:2773 msgid "Hide Icon" msgstr "Skryť ikonu" -#: ../pidgin/gtkconv.c:2717 +#: ../pidgin/gtkconv.c:2776 msgid "Save Icon As..." msgstr "Uložiť ikonu ako..." -#: ../pidgin/gtkconv.c:2721 +#: ../pidgin/gtkconv.c:2780 msgid "Set Custom Icon..." msgstr "Nastaviť vlastnú ikonu..." -#: ../pidgin/gtkconv.c:2734 +#: ../pidgin/gtkconv.c:2793 msgid "Remove Custom Icon" msgstr "Odstrániť vlastnú ikonu" -#: ../pidgin/gtkconv.c:2861 +#: ../pidgin/gtkconv.c:2924 msgid "Show All" -msgstr "" +msgstr "Zobraziť všetko" #. Conversation menu -#: ../pidgin/gtkconv.c:2880 +#: ../pidgin/gtkconv.c:2943 msgid "/_Conversation" msgstr "/_Rozhovor" -#: ../pidgin/gtkconv.c:2882 +#: ../pidgin/gtkconv.c:2945 msgid "/Conversation/New Instant _Message..." msgstr "/Rozhovor/Nová správa..." -#: ../pidgin/gtkconv.c:2887 +#: ../pidgin/gtkconv.c:2950 msgid "/Conversation/_Find..." msgstr "/Rozhovor/_Hľadať..." -#: ../pidgin/gtkconv.c:2889 +#: ../pidgin/gtkconv.c:2952 msgid "/Conversation/View _Log" msgstr "/Rozhovor/Zobraziť _záznam" -#: ../pidgin/gtkconv.c:2890 +#: ../pidgin/gtkconv.c:2953 msgid "/Conversation/_Save As..." msgstr "/Rozhovor/_Uložiť ako..." -#: ../pidgin/gtkconv.c:2892 +#: ../pidgin/gtkconv.c:2955 msgid "/Conversation/Clea_r Scrollback" msgstr "/Rozhovor/Vymazať" -#: ../pidgin/gtkconv.c:2896 +#: ../pidgin/gtkconv.c:2959 msgid "/Conversation/Se_nd File..." msgstr "/Rozhovor/Odos_lať súbor..." -#: ../pidgin/gtkconv.c:2897 +#: ../pidgin/gtkconv.c:2960 msgid "/Conversation/Add Buddy _Pounce..." msgstr "/Rozhovor/Pridať _sledovanie priateľa..." -#: ../pidgin/gtkconv.c:2899 +#: ../pidgin/gtkconv.c:2962 msgid "/Conversation/_Get Info" msgstr "/Rozhovor/_Zobraziť podrobnosti" -#: ../pidgin/gtkconv.c:2901 +#: ../pidgin/gtkconv.c:2964 msgid "/Conversation/In_vite..." msgstr "/Rozhovor/Poz_vať..." -#: ../pidgin/gtkconv.c:2903 +#: ../pidgin/gtkconv.c:2966 msgid "/Conversation/M_ore" msgstr "/Conversation/Via_c" -#: ../pidgin/gtkconv.c:2907 +#: ../pidgin/gtkconv.c:2970 msgid "/Conversation/Al_ias..." msgstr "/Rozhovor/Pre_zývka..." -#: ../pidgin/gtkconv.c:2909 +#: ../pidgin/gtkconv.c:2972 msgid "/Conversation/_Block..." msgstr "/Rozhovor/_Blokovať..." -#: ../pidgin/gtkconv.c:2911 +#: ../pidgin/gtkconv.c:2974 msgid "/Conversation/_Unblock..." msgstr "/Rozhovor/_Odblokovať..." -#: ../pidgin/gtkconv.c:2913 +#: ../pidgin/gtkconv.c:2976 msgid "/Conversation/_Add..." msgstr "/Rozhovor/_Pridať..." -#: ../pidgin/gtkconv.c:2915 +#: ../pidgin/gtkconv.c:2978 msgid "/Conversation/_Remove..." msgstr "/Rozhovor/_Odstrániť..." -#: ../pidgin/gtkconv.c:2920 +#: ../pidgin/gtkconv.c:2983 msgid "/Conversation/Insert Lin_k..." msgstr "/Rozhovor/Vložiť od_kaz..." -#: ../pidgin/gtkconv.c:2922 +#: ../pidgin/gtkconv.c:2985 msgid "/Conversation/Insert Imag_e..." msgstr "/Rozhovor/Vložiť _obrázok..." -#: ../pidgin/gtkconv.c:2928 +#: ../pidgin/gtkconv.c:2991 msgid "/Conversation/_Close" msgstr "/Rozhovor/_Zavrieť" #. Options -#: ../pidgin/gtkconv.c:2932 +#: ../pidgin/gtkconv.c:2995 msgid "/_Options" msgstr "/_Možnosti" -#: ../pidgin/gtkconv.c:2933 +#: ../pidgin/gtkconv.c:2996 msgid "/Options/Enable _Logging" msgstr "/Možnosti/Povoliť zaz_namenávanie" -#: ../pidgin/gtkconv.c:2934 +#: ../pidgin/gtkconv.c:2997 msgid "/Options/Enable _Sounds" msgstr "/Možnosti/Povoliť _zvuky" -#: ../pidgin/gtkconv.c:2936 +#: ../pidgin/gtkconv.c:2999 msgid "/Options/Show Formatting _Toolbars" msgstr "/Možnosti/Zobraziť panely formá_tovania" -#: ../pidgin/gtkconv.c:2937 +#: ../pidgin/gtkconv.c:3000 msgid "/Options/Show Ti_mestamps" msgstr "/Možnosti/Zobrazovať ča_sové značky" -#: ../pidgin/gtkconv.c:3061 +#: ../pidgin/gtkconv.c:3124 msgid "/Conversation/More" msgstr "/Rozhovor/Viac" -#: ../pidgin/gtkconv.c:3117 +#: ../pidgin/gtkconv.c:3180 msgid "/Options" msgstr "/_Možnosti" @@ -14416,97 +14417,97 @@ #. 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:3152 ../pidgin/gtkconv.c:3184 +#: ../pidgin/gtkconv.c:3215 ../pidgin/gtkconv.c:3247 msgid "/Conversation" msgstr "/Rozhovor" -#: ../pidgin/gtkconv.c:3192 +#: ../pidgin/gtkconv.c:3255 msgid "/Conversation/View Log" msgstr "/Rozhovor/Zobraziť _záznam" -#: ../pidgin/gtkconv.c:3198 +#: ../pidgin/gtkconv.c:3261 msgid "/Conversation/Send File..." msgstr "/Rozhovor/Odos_lať súbor..." -#: ../pidgin/gtkconv.c:3202 +#: ../pidgin/gtkconv.c:3265 msgid "/Conversation/Add Buddy Pounce..." msgstr "/Rozhovor/Pridať _sledovanie priateľa..." -#: ../pidgin/gtkconv.c:3208 +#: ../pidgin/gtkconv.c:3271 msgid "/Conversation/Get Info" msgstr "/Rozhovor/_Zobraziť podrobnosti" -#: ../pidgin/gtkconv.c:3212 +#: ../pidgin/gtkconv.c:3275 msgid "/Conversation/Invite..." msgstr "/Rozhovor/Poz_vať..." -#: ../pidgin/gtkconv.c:3218 +#: ../pidgin/gtkconv.c:3281 msgid "/Conversation/Alias..." msgstr "/Rozhovor/Pre_zývka..." -#: ../pidgin/gtkconv.c:3222 +#: ../pidgin/gtkconv.c:3285 msgid "/Conversation/Block..." msgstr "/Rozhovor/_Blokovať..." -#: ../pidgin/gtkconv.c:3226 +#: ../pidgin/gtkconv.c:3289 msgid "/Conversation/Unblock..." msgstr "/Rozhovor/_Odblokovať..." -#: ../pidgin/gtkconv.c:3230 +#: ../pidgin/gtkconv.c:3293 msgid "/Conversation/Add..." msgstr "/Rozhovor/_Pridať..." -#: ../pidgin/gtkconv.c:3234 +#: ../pidgin/gtkconv.c:3297 msgid "/Conversation/Remove..." msgstr "/Rozhovor/Odstrániť..." -#: ../pidgin/gtkconv.c:3240 +#: ../pidgin/gtkconv.c:3303 msgid "/Conversation/Insert Link..." msgstr "/Rozhovor/Vložiť odkaz..." -#: ../pidgin/gtkconv.c:3244 +#: ../pidgin/gtkconv.c:3307 msgid "/Conversation/Insert Image..." msgstr "/Rozhovor/Vložiť obrázok..." -#: ../pidgin/gtkconv.c:3250 +#: ../pidgin/gtkconv.c:3313 msgid "/Options/Enable Logging" msgstr "/Možnosti/Povoliť zaz_namenávanie" -#: ../pidgin/gtkconv.c:3253 +#: ../pidgin/gtkconv.c:3316 msgid "/Options/Enable Sounds" msgstr "/Možnosti/Povoliť _zvuky" -#: ../pidgin/gtkconv.c:3266 +#: ../pidgin/gtkconv.c:3329 msgid "/Options/Show Formatting Toolbars" msgstr "/Možnosti/Zobraziť panely formá_tovania" -#: ../pidgin/gtkconv.c:3269 +#: ../pidgin/gtkconv.c:3332 msgid "/Options/Show Timestamps" msgstr "/Možnosti/Zobrazovať ča_sové značky" -#: ../pidgin/gtkconv.c:3346 ../pidgin/gtkconv.c:3388 +#: ../pidgin/gtkconv.c:3409 ../pidgin/gtkconv.c:3451 msgid "User is typing..." msgstr "Používateľ píše..." -#: ../pidgin/gtkconv.c:3391 +#: ../pidgin/gtkconv.c:3454 msgid "User has typed something and stopped" msgstr "Používateľ niečo napísal a prestal" #. Build the Send To menu -#: ../pidgin/gtkconv.c:3574 ../pidgin/gtkconv.c:8022 -msgid "_Send To" -msgstr "Po_slať cez" - -#: ../pidgin/gtkconv.c:4286 +#: ../pidgin/gtkconv.c:3637 ../pidgin/gtkconv.c:8105 +msgid "S_end To" +msgstr "Odoslať do" + +#: ../pidgin/gtkconv.c:4349 msgid "_Send" msgstr "Odo_slať" #. Setup the label telling how many people are in the room. -#: ../pidgin/gtkconv.c:4390 +#: ../pidgin/gtkconv.c:4453 msgid "0 people in room" msgstr "V miestnosti je 0 osôb" -#: ../pidgin/gtkconv.c:5759 ../pidgin/gtkconv.c:5880 +#: ../pidgin/gtkconv.c:5823 ../pidgin/gtkconv.c:5944 #, c-format msgid "%d person in room" msgid_plural "%d people in room" @@ -14514,75 +14515,75 @@ msgstr[1] "V miestnosti je %d osoba" msgstr[2] "V miestnosti sú %d osoby" -#: ../pidgin/gtkconv.c:6486 ../pidgin/gtkstatusbox.c:660 +#: ../pidgin/gtkconv.c:6550 ../pidgin/gtkstatusbox.c:660 msgid "Typing" msgstr "Píše" -#: ../pidgin/gtkconv.c:6490 +#: ../pidgin/gtkconv.c:6554 msgid "Stopped Typing" msgstr "Prestal písať" -#: ../pidgin/gtkconv.c:6493 +#: ../pidgin/gtkconv.c:6557 msgid "Nick Said" msgstr "Používateľ napísal" -#: ../pidgin/gtkconv.c:6496 ../pidgin/gtkdocklet.c:492 +#: ../pidgin/gtkconv.c:6560 ../pidgin/gtkdocklet.c:492 msgid "Unread Messages" msgstr "Neprečítané správy" -#: ../pidgin/gtkconv.c:6499 +#: ../pidgin/gtkconv.c:6563 msgid "New Event" msgstr "Nová udalosť" -#: ../pidgin/gtkconv.c:7572 +#: ../pidgin/gtkconv.c:7656 msgid "clear: Clears all conversation scrollbacks." msgstr "clear: Vyčistí všetky záznamy konverzácie." -#: ../pidgin/gtkconv.c:7736 +#: ../pidgin/gtkconv.c:7819 msgid "Confirm close" msgstr "Potvrdenie uzavrenia" -#: ../pidgin/gtkconv.c:7768 +#: ../pidgin/gtkconv.c:7851 msgid "You have unread messages. Are you sure you want to close the window?" msgstr "Máte neprečítané správy. Naozaj chcete zavrieť toto okno?" -#: ../pidgin/gtkconv.c:8355 +#: ../pidgin/gtkconv.c:8438 msgid "Close other tabs" msgstr "Zavrieť ostatné karty" -#: ../pidgin/gtkconv.c:8361 +#: ../pidgin/gtkconv.c:8444 msgid "Close all tabs" msgstr "Zavrieť všetky karty" -#: ../pidgin/gtkconv.c:8369 +#: ../pidgin/gtkconv.c:8452 msgid "Detach this tab" msgstr "Odpojiť túto kartu" -#: ../pidgin/gtkconv.c:8375 +#: ../pidgin/gtkconv.c:8458 msgid "Close this tab" msgstr "Zavrieť túto kartu" -#: ../pidgin/gtkconv.c:8875 +#: ../pidgin/gtkconv.c:8955 msgid "Close conversation" msgstr "Zavrieť rozhovor" -#: ../pidgin/gtkconv.c:9477 +#: ../pidgin/gtkconv.c:9557 msgid "Last created window" msgstr "Naposledy otvorené okno" -#: ../pidgin/gtkconv.c:9479 +#: ../pidgin/gtkconv.c:9559 msgid "Separate IM and Chat windows" msgstr "Oddeľovať okná správ a chatov" -#: ../pidgin/gtkconv.c:9481 ../pidgin/gtkprefs.c:1415 +#: ../pidgin/gtkconv.c:9561 ../pidgin/gtkprefs.c:1417 msgid "New window" msgstr "V novom okne" -#: ../pidgin/gtkconv.c:9483 +#: ../pidgin/gtkconv.c:9563 msgid "By group" msgstr "Podľa skupiny" -#: ../pidgin/gtkconv.c:9485 +#: ../pidgin/gtkconv.c:9565 msgid "By account" msgstr "Podľa účtu" @@ -14713,7 +14714,7 @@ #: ../pidgin/gtkdialogs.c:135 msgid "Belarusian Latin" -msgstr "" +msgstr "bieloruština, latinka" #: ../pidgin/gtkdialogs.c:136 ../pidgin/gtkdialogs.c:137 #: ../pidgin/gtkdialogs.c:227 @@ -14736,7 +14737,7 @@ #: ../pidgin/gtkdialogs.c:144 ../pidgin/gtkdialogs.c:145 msgid "Valencian-Catalan" -msgstr "katalánčina (Valencia)" +msgstr "katalánčina, valencijčina" #: ../pidgin/gtkdialogs.c:146 ../pidgin/gtkdialogs.c:230 msgid "Czech" @@ -14809,15 +14810,15 @@ #: ../pidgin/gtkdialogs.c:169 ../pidgin/gtkdialogs.c:170 #: ../pidgin/gtkdialogs.c:242 msgid "Galician" -msgstr "Galícky" +msgstr "galícijčina" #: ../pidgin/gtkdialogs.c:171 ../pidgin/gtkdialogs.c:172 msgid "Gujarati" -msgstr "Gudžarati" +msgstr "gudžarátčina" #: ../pidgin/gtkdialogs.c:172 msgid "Gujarati Language Team" -msgstr "gudžarátsky jazykový tím" +msgstr "gudžarátsky jazykový tým" #: ../pidgin/gtkdialogs.c:173 ../pidgin/gtkdialogs.c:243 msgid "Hebrew" @@ -14850,7 +14851,7 @@ #: ../pidgin/gtkdialogs.c:179 msgid "Ubuntu Georgian Translators" -msgstr "Ubuntu gruzínsky prekladatelia" +msgstr "Ubuntu gruzínski prekladatelia" #: ../pidgin/gtkdialogs.c:180 msgid "Kannada" @@ -14858,7 +14859,7 @@ #: ../pidgin/gtkdialogs.c:180 msgid "Kannada Translation team" -msgstr "kanaadsky prekladateľký tím" +msgstr "kannádsky prekladateľský tím" #: ../pidgin/gtkdialogs.c:181 ../pidgin/gtkdialogs.c:250 #: ../pidgin/gtkdialogs.c:251 @@ -14871,9 +14872,8 @@ msgstr "kurdčina" #: ../pidgin/gtkdialogs.c:185 -#, fuzzy msgid "Lao" -msgstr "Lev" +msgstr "laoština" #: ../pidgin/gtkdialogs.c:186 ../pidgin/gtkdialogs.c:252 #: ../pidgin/gtkdialogs.c:253 @@ -15023,7 +15023,6 @@ "„COPYRIGHT“. Na tento program vám neposkytujeme žiadnu záruku.

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

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

" @@ -15059,6 +15058,16 @@ msgid "Debugging Information" msgstr "Ladiace informácie" +#: ../pidgin/gtkdialogs.c:754 ../pidgin/gtkdialogs.c:893 +#: ../pidgin/gtkdialogs.c:974 +msgid "_Name" +msgstr "_Meno" + +#: ../pidgin/gtkdialogs.c:759 ../pidgin/gtkdialogs.c:898 +#: ../pidgin/gtkdialogs.c:979 +msgid "_Account" +msgstr "Úč_et" + #: ../pidgin/gtkdialogs.c:906 msgid "Get User Info" msgstr "Zobraziť podrobnosti o používateľovi" @@ -15219,8 +15228,7 @@ msgstr "Vypnúť zvuky" #: ../pidgin/gtkdocklet.c:535 -#, fuzzy -msgid "Blink on new message" +msgid "Blink on New Message" msgstr "Blikať pri novej správe" #: ../pidgin/gtkdocklet.c:542 @@ -15317,7 +15325,7 @@ msgid "Paste as Plain _Text" msgstr "_Vložiť ako čistý text" -#: ../pidgin/gtkimhtml.c:833 ../pidgin/gtkimhtmltoolbar.c:1194 +#: ../pidgin/gtkimhtml.c:833 ../pidgin/gtkimhtmltoolbar.c:1195 msgid "_Reset formatting" msgstr "Vymazať formátovanie" @@ -15396,7 +15404,6 @@ msgstr "Uložiť obrázok" #: ../pidgin/gtkimhtml.c:3522 -#, c-format msgid "_Save Image..." msgstr "_Uložiť obrázok..." @@ -15434,7 +15441,7 @@ msgid "Insert Link" msgstr "Vložiť odkaz" -#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1262 +#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1263 msgid "_Insert" msgstr "_Vložiť" @@ -15456,18 +15463,17 @@ msgid "Smile!" msgstr "Smajlík!" -#: ../pidgin/gtkimhtmltoolbar.c:846 ../pidgin/gtkimhtmltoolbar.c:1219 +#: ../pidgin/gtkimhtmltoolbar.c:846 ../pidgin/gtkimhtmltoolbar.c:1220 msgid "_Font" msgstr "_Písmo" #: ../pidgin/gtkimhtmltoolbar.c:1054 -#, fuzzy msgid "Group Items" -msgstr "ID skupiny" +msgstr "Zoskupiť položky" #: ../pidgin/gtkimhtmltoolbar.c:1054 msgid "Ungroup Items" -msgstr "" +msgstr "Nezoskupiť položky" #: ../pidgin/gtkimhtmltoolbar.c:1088 ../pidgin/plugins/convcolors.c:287 msgid "Bold" @@ -15483,105 +15489,99 @@ #: ../pidgin/gtkimhtmltoolbar.c:1091 msgid "Strikethrough" -msgstr "" +msgstr "Prečiarknuté" #: ../pidgin/gtkimhtmltoolbar.c:1093 msgid "Increase Font Size" -msgstr "" +msgstr "Zväčšiť velkosť písma" #: ../pidgin/gtkimhtmltoolbar.c:1094 msgid "Decrease Font Size" -msgstr "" +msgstr "Zmenšiť velkosť písma" #: ../pidgin/gtkimhtmltoolbar.c:1096 -#, fuzzy msgid "Font Face" -msgstr "_Rez písma" +msgstr "Rez písma" #: ../pidgin/gtkimhtmltoolbar.c:1097 -#, fuzzy msgid "Background Color" -msgstr "Farba po_zadia" +msgstr "Farba pozadia" #: ../pidgin/gtkimhtmltoolbar.c:1098 -#, fuzzy msgid "Foreground Color" -msgstr "Farba _popredia" +msgstr "Farba popredia" #: ../pidgin/gtkimhtmltoolbar.c:1100 -#, fuzzy msgid "Reset Formatting" msgstr "Vymazať formátovanie" #: ../pidgin/gtkimhtmltoolbar.c:1103 -#, fuzzy msgid "Insert IM Image" msgstr "Vložiť obrázok" #: ../pidgin/gtkimhtmltoolbar.c:1104 -#, fuzzy msgid "Insert Smiley" -msgstr "Vložiť obrázok" - -#: ../pidgin/gtkimhtmltoolbar.c:1179 +msgstr "Vložiť smajlíka" + +#: ../pidgin/gtkimhtmltoolbar.c:1180 msgid "_Bold" msgstr "_Tučné:" -#: ../pidgin/gtkimhtmltoolbar.c:1180 +#: ../pidgin/gtkimhtmltoolbar.c:1181 msgid "_Italic" msgstr "_Kurzíva" -#: ../pidgin/gtkimhtmltoolbar.c:1181 +#: ../pidgin/gtkimhtmltoolbar.c:1182 msgid "_Underline" msgstr "_Podčiarknuté" -#: ../pidgin/gtkimhtmltoolbar.c:1182 +#: ../pidgin/gtkimhtmltoolbar.c:1183 msgid "Strikethrough" msgstr "Preškrtnuté" -#: ../pidgin/gtkimhtmltoolbar.c:1183 +#: ../pidgin/gtkimhtmltoolbar.c:1184 msgid "_Larger" msgstr "_Väčšie" -#: ../pidgin/gtkimhtmltoolbar.c:1185 +#: ../pidgin/gtkimhtmltoolbar.c:1186 msgid "_Normal" msgstr "_Normálne" -#: ../pidgin/gtkimhtmltoolbar.c:1187 +#: ../pidgin/gtkimhtmltoolbar.c:1188 msgid "_Smaller" msgstr "_Menšie" #. 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:1191 +#: ../pidgin/gtkimhtmltoolbar.c:1192 msgid "_Font face" msgstr "_Rez písma" -#: ../pidgin/gtkimhtmltoolbar.c:1192 +#: ../pidgin/gtkimhtmltoolbar.c:1193 msgid "Foreground _color" msgstr "Farba _popredia" -#: ../pidgin/gtkimhtmltoolbar.c:1193 +#: ../pidgin/gtkimhtmltoolbar.c:1194 msgid "Bac_kground color" msgstr "Farba po_zadia" -#: ../pidgin/gtkimhtmltoolbar.c:1270 -msgid "_Smiley" -msgstr "_Smajlík" - -#: ../pidgin/gtkimhtmltoolbar.c:1276 +#: ../pidgin/gtkimhtmltoolbar.c:1271 msgid "_Image" msgstr "O_brázok" -#: ../pidgin/gtkimhtmltoolbar.c:1282 +#: ../pidgin/gtkimhtmltoolbar.c:1277 msgid "_Link" msgstr "_Odkaz" -#: ../pidgin/gtkimhtmltoolbar.c:1288 +#: ../pidgin/gtkimhtmltoolbar.c:1283 msgid "_Horizontal rule" msgstr "_Vodorovná čiara" +#: ../pidgin/gtkimhtmltoolbar.c:1305 +msgid "_Smile!" +msgstr "_Smajlík!" + #: ../pidgin/gtklog.c:293 #, c-format msgid "" @@ -15676,7 +15676,7 @@ msgstr "%s %s. „%s -h“ zobrazí viac informácií.\n" #: ../pidgin/gtkmain.c:388 -#, fuzzy, c-format +#, c-format msgid "" "%s %s\n" "Usage: %s [OPTION]...\n" @@ -15688,6 +15688,7 @@ " -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" " -v, --version display the current version and exit\n" msgstr "" "%s %s\n" @@ -15696,16 +15697,18 @@ " -c, --config=DIR pre konfiguračné súbory použije DIR\n" " -d, --debug vkladá ladiace informácie do stdout\n" " -h, --help zobrazí túto pomoc a skončí\n" +" -m, --multiple neobmedzí počet inštancií na jednu\n" " -n, --nologin neprihlasovať automaticky\n" " -l, --login[=MENO] automatické prihlásenie (voliteľný argument MENO " "určuje\n" " účty oddeľované čiarkami)\n" +" --display=DISPLAY X obrazovka, ktoru použiť\n" " -v, --version zobrazí verziu programu a skončí\n" -#: ../pidgin/gtkmain.c:512 -#, fuzzy, c-format -msgid "" -"%s has segfaulted and attempted to dump a core file.\n" +#: ../pidgin/gtkmain.c:516 +#, 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" @@ -15723,16 +15726,17 @@ "on other protocols is at\n" "%swiki/DeveloperPages\n" msgstr "" -"Program %s vrátil chybu segmentácie a pokúsil o výpis pamäte súboru jadra.\n" -"Je to spôsobené chybou v programe, a stalo sa tak bez vášho zavinenia.\n" +"Program %s %s vrátil chybu segmentácie a pokúsil o výpis pamäte súboru " +"jadra.\n" +"Je to spôsobené chybou v programe, a stalo sa to aj bez vášho zavinenia.\n" "\n" "Ak dokážete túto chybu zopakovať, kontaktujte, prosím, vývojárov programu\n" "tak, že nahlásite chybu na:\n" "%ssimpleticket/\n" "\n" "V hlásení nezabudnite tiež napísať čo presne ste robili, a\n" -"vložte aj backtrace zo súboru jadra. Ak neviete, ako získať\n" -"backtrace, prečítajte si, prosím, návod na adrese:\n" +"vložte aj spätný výpis zo súboru jadra. Ak neviete, ako získať\n" +"spätný výpis, prečítajte si, prosím, návod na adrese:\n" "%swiki/GetABacktrace\n" "\n" "Ak potrebujete ďalšiu pomoc, napíšte buď SeanEgnovi alebo \n" @@ -15742,7 +15746,7 @@ #. Translators may want to transliterate the name. #. It is not to be translated. -#: ../pidgin/gtkmain.c:699 ../pidgin/pidgin.h:51 +#: ../pidgin/gtkmain.c:706 ../pidgin/pidgin.h:51 msgid "Pidgin" msgstr "Pidgin" @@ -15754,7 +15758,7 @@ msgid "You have mail!" msgstr "Máte poštu!" -#: ../pidgin/gtknotify.c:540 +#: ../pidgin/gtknotify.c:545 #, c-format msgid "%s has %d new message." msgid_plural "%s has %d new messages." @@ -15762,30 +15766,30 @@ msgstr[1] "Používateľ %s má %d novú správu." msgstr[2] "Používateľ %s má %d nové správy." -#: ../pidgin/gtknotify.c:564 -#, fuzzy, c-format -msgid "You have %d new e-mail." -msgid_plural "You have %d new e-mails." -msgstr[0] "Máte %d nových e-mailov." -msgstr[1] "Máte %d nový e-mail." -msgstr[2] "Máte %d nové e-maily." - -#: ../pidgin/gtknotify.c:989 +#: ../pidgin/gtknotify.c:569 +#, c-format +msgid "%d new e-mail." +msgid_plural "%d new e-mails." +msgstr[0] "%d nových e-mailov." +msgstr[1] "%d nový e-mail." +msgstr[2] "%d nové e-maily." + +#: ../pidgin/gtknotify.c:996 #, c-format msgid "The browser command \"%s\" is invalid." msgstr "Príkaz prehliadača „%s“ je chybný." -#: ../pidgin/gtknotify.c:991 ../pidgin/gtknotify.c:1003 -#: ../pidgin/gtknotify.c:1016 ../pidgin/gtknotify.c:1144 +#: ../pidgin/gtknotify.c:998 ../pidgin/gtknotify.c:1010 +#: ../pidgin/gtknotify.c:1023 ../pidgin/gtknotify.c:1151 msgid "Unable to open URL" msgstr "Nepodarilo sa otvoriť URL" -#: ../pidgin/gtknotify.c:1001 ../pidgin/gtknotify.c:1014 +#: ../pidgin/gtknotify.c:1008 ../pidgin/gtknotify.c:1021 #, c-format msgid "Error launching \"%s\": %s" msgstr "Chyba počas spúšťania „%s“: %s" -#: ../pidgin/gtknotify.c:1145 +#: ../pidgin/gtknotify.c:1152 msgid "" "The 'Manual' browser command has been chosen, but no command has been set." msgstr "Vybrali ste možnosť „Ručne“, ale nenastavili ste príkaz prehliadača." @@ -15837,95 +15841,95 @@ msgstr "Vyberte súbor" #. Create the "Pounce on Whom" frame. -#: ../pidgin/gtkpounce.c:532 +#: ../pidgin/gtkpounce.c:539 msgid "Pounce on Whom" msgstr "Koho sledovať" -#: ../pidgin/gtkpounce.c:559 +#: ../pidgin/gtkpounce.c:566 msgid "_Buddy name:" msgstr "_Meno priateľa:" -#: ../pidgin/gtkpounce.c:593 +#: ../pidgin/gtkpounce.c:600 msgid "Si_gns on" msgstr "_Prihlási sa" -#: ../pidgin/gtkpounce.c:595 +#: ../pidgin/gtkpounce.c:602 msgid "Signs o_ff" msgstr "_Odhlási sa" -#: ../pidgin/gtkpounce.c:597 +#: ../pidgin/gtkpounce.c:604 msgid "Goes a_way" msgstr "Stane sa neprítomný" -#: ../pidgin/gtkpounce.c:599 +#: ../pidgin/gtkpounce.c:606 msgid "Ret_urns from away" msgstr "Prestane byť neprítomný" -#: ../pidgin/gtkpounce.c:601 +#: ../pidgin/gtkpounce.c:608 msgid "Becomes _idle" msgstr "Stane sa _nečinným" -#: ../pidgin/gtkpounce.c:603 +#: ../pidgin/gtkpounce.c:610 msgid "Is no longer i_dle" msgstr "Prestane byť n_ečinný" -#: ../pidgin/gtkpounce.c:605 +#: ../pidgin/gtkpounce.c:612 msgid "Starts _typing" msgstr "Začne _písať" -#: ../pidgin/gtkpounce.c:607 +#: ../pidgin/gtkpounce.c:614 msgid "P_auses while typing" msgstr "Preruší pís_anie" -#: ../pidgin/gtkpounce.c:609 +#: ../pidgin/gtkpounce.c:616 msgid "Stops t_yping" msgstr "Prestane pí_sať" -#: ../pidgin/gtkpounce.c:611 +#: ../pidgin/gtkpounce.c:618 msgid "Sends a _message" msgstr "Pošle _správu" -#: ../pidgin/gtkpounce.c:654 +#: ../pidgin/gtkpounce.c:661 msgid "Ope_n an IM window" msgstr "Ot_voriť okno správ" -#: ../pidgin/gtkpounce.c:656 +#: ../pidgin/gtkpounce.c:663 msgid "_Pop up a notification" msgstr "_Zobraziť upozornenie" -#: ../pidgin/gtkpounce.c:658 +#: ../pidgin/gtkpounce.c:665 msgid "Send a _message" msgstr "Odoslať _správu" -#: ../pidgin/gtkpounce.c:660 +#: ../pidgin/gtkpounce.c:667 msgid "E_xecute a command" msgstr "Spustiť _príkaz" -#: ../pidgin/gtkpounce.c:662 +#: ../pidgin/gtkpounce.c:669 msgid "P_lay a sound" msgstr "Prehrať _zvuk" -#: ../pidgin/gtkpounce.c:668 +#: ../pidgin/gtkpounce.c:675 msgid "Brows_e..." msgstr "P_rehľadávať..." -#: ../pidgin/gtkpounce.c:670 +#: ../pidgin/gtkpounce.c:677 msgid "Br_owse..." msgstr "Prehľadávať..." -#: ../pidgin/gtkpounce.c:671 +#: ../pidgin/gtkpounce.c:678 msgid "Pre_view" msgstr "_Náhľad" -#: ../pidgin/gtkpounce.c:798 +#: ../pidgin/gtkpounce.c:805 msgid "P_ounce only when my status is not Available" msgstr "Sledovať, len ak som neprítomný" -#: ../pidgin/gtkpounce.c:803 +#: ../pidgin/gtkpounce.c:810 msgid "_Recurring" msgstr "_Opakujúce sa" -#: ../pidgin/gtkpounce.c:1246 +#: ../pidgin/gtkpounce.c:1253 msgid "Pounce Target" msgstr "Cieľ sledovania" @@ -15975,7 +15979,7 @@ msgid "_Hide new IM conversations:" msgstr "_Skrývať nové rozhovory:" -#: ../pidgin/gtkprefs.c:908 ../pidgin/gtkprefs.c:1944 +#: ../pidgin/gtkprefs.c:908 ../pidgin/gtkprefs.c:1946 msgid "When away" msgstr "Pri neprítomnosti" @@ -16028,55 +16032,59 @@ msgid "Show _formatting on incoming messages" msgstr "Zobrazovať _formátovanie v prichádzajúcich správach" -#: ../pidgin/gtkprefs.c:998 -msgid "Show _detailed information" -msgstr "Zobraziť detailné informácie" +#: ../pidgin/gtkprefs.c:997 +msgid "Close IMs immediately when the tab is closed" +msgstr "Zavrieť rozhovory v momente, keď zavriete kartu" #: ../pidgin/gtkprefs.c:1000 +msgid "Show _detailed information" +msgstr "Zobraziť detailné informácie" + +#: ../pidgin/gtkprefs.c:1002 msgid "Enable buddy ic_on animation" msgstr "Povoliť _animované obrázky priateľov" -#: ../pidgin/gtkprefs.c:1007 +#: ../pidgin/gtkprefs.c:1009 msgid "_Notify buddies that you are typing to them" msgstr "_Zobrazovať priateľom, že im píšete" -#: ../pidgin/gtkprefs.c:1010 +#: ../pidgin/gtkprefs.c:1012 msgid "Highlight _misspelled words" msgstr "Zvýrazňovať _nesprávne napísané slová" -#: ../pidgin/gtkprefs.c:1014 +#: ../pidgin/gtkprefs.c:1016 msgid "Use smooth-scrolling" msgstr "Používať hladké posúvanie" -#: ../pidgin/gtkprefs.c:1017 -msgid "F_lash window when IMs are received" -msgstr "Blikanie okna po prijatí správy" - #: ../pidgin/gtkprefs.c:1019 +msgid "F_lash window when IMs are received" +msgstr "Blikanie okna po prijatí správy" + +#: ../pidgin/gtkprefs.c:1021 msgid "Minimi_ze new conversation windows" msgstr "Minimali_zovať nové konverzácie" -#: ../pidgin/gtkprefs.c:1023 +#: ../pidgin/gtkprefs.c:1025 msgid "Font" msgstr "Písmo" -#: ../pidgin/gtkprefs.c:1025 -msgid "Use document font from _theme" -msgstr "Použiť písmo dokumentov _témy" - #: ../pidgin/gtkprefs.c:1027 +msgid "Use document font from _theme" +msgstr "Použiť písmo dokumentov _témy" + +#: ../pidgin/gtkprefs.c:1029 msgid "Use font from _theme" msgstr "Použiť písmo _témy" -#: ../pidgin/gtkprefs.c:1029 +#: ../pidgin/gtkprefs.c:1031 msgid "Conversation _font:" msgstr "Písmo konverzácie:" -#: ../pidgin/gtkprefs.c:1043 +#: ../pidgin/gtkprefs.c:1045 msgid "Default Formatting" msgstr "Štandardné formátovanie" -#: ../pidgin/gtkprefs.c:1062 +#: ../pidgin/gtkprefs.c:1064 msgid "" "This is how your outgoing message text will appear when you use protocols " "that support formatting." @@ -16084,119 +16092,119 @@ "Takto bude vyzerať text odchádzajúcich správ pri použití protokolu, ktorý " "podporuje formátovanie." -#: ../pidgin/gtkprefs.c:1128 +#: ../pidgin/gtkprefs.c:1130 msgid "ST_UN server:" msgstr "ST_UN server:" -#: ../pidgin/gtkprefs.c:1140 +#: ../pidgin/gtkprefs.c:1142 msgid "Example: stunserver.org" msgstr "Príklad: stunserver.org" -#: ../pidgin/gtkprefs.c:1144 +#: ../pidgin/gtkprefs.c:1146 msgid "_Autodetect IP address" msgstr "_Automaticky zistiť IP adresu" -#: ../pidgin/gtkprefs.c:1153 +#: ../pidgin/gtkprefs.c:1155 msgid "Public _IP:" msgstr "Verejná _IP adresa:" -#: ../pidgin/gtkprefs.c:1182 +#: ../pidgin/gtkprefs.c:1184 msgid "Ports" msgstr "Porty" -#: ../pidgin/gtkprefs.c:1185 +#: ../pidgin/gtkprefs.c:1187 msgid "_Manually specify range of ports to listen on" msgstr "_Ručne určiť rozsah portov, na ktorých počúvať" -#: ../pidgin/gtkprefs.c:1188 +#: ../pidgin/gtkprefs.c:1190 msgid "_Start port:" msgstr "_Počiatočný port:" -#: ../pidgin/gtkprefs.c:1195 +#: ../pidgin/gtkprefs.c:1197 msgid "_End port:" -msgstr "_Konečný port:" - -#: ../pidgin/gtkprefs.c:1203 +msgstr "_Koncový port:" + +#: ../pidgin/gtkprefs.c:1205 msgid "Proxy Server" msgstr "Proxy server" -#: ../pidgin/gtkprefs.c:1207 +#: ../pidgin/gtkprefs.c:1209 msgid "No proxy" msgstr "Bez proxy" -#: ../pidgin/gtkprefs.c:1263 +#: ../pidgin/gtkprefs.c:1265 msgid "_User:" -msgstr "Používateľ:" - -#: ../pidgin/gtkprefs.c:1328 +msgstr "Po_užívateľ:" + +#: ../pidgin/gtkprefs.c:1330 msgid "Seamonkey" msgstr "Seamonkey" -#: ../pidgin/gtkprefs.c:1329 -msgid "Opera" -msgstr "Opera" - -#: ../pidgin/gtkprefs.c:1330 -msgid "Netscape" -msgstr "Netscape" - #: ../pidgin/gtkprefs.c:1331 -msgid "Mozilla" -msgstr "Mozilla" +msgid "Opera" +msgstr "Opera" #: ../pidgin/gtkprefs.c:1332 -msgid "Konqueror" -msgstr "Konqueror" +msgid "Netscape" +msgstr "Netscape" #: ../pidgin/gtkprefs.c:1333 -msgid "GNOME Default" -msgstr "GNOME štandard" +msgid "Mozilla" +msgstr "Mozilla" #: ../pidgin/gtkprefs.c:1334 +msgid "Konqueror" +msgstr "Konqueror" + +#: ../pidgin/gtkprefs.c:1335 +msgid "GNOME Default" +msgstr "GNOME štandard" + +#: ../pidgin/gtkprefs.c:1336 msgid "Galeon" msgstr "Galeon" -#: ../pidgin/gtkprefs.c:1335 +#: ../pidgin/gtkprefs.c:1337 msgid "Firefox" msgstr "Firefox" -#: ../pidgin/gtkprefs.c:1336 +#: ../pidgin/gtkprefs.c:1338 msgid "Firebird" msgstr "Firebird" -#: ../pidgin/gtkprefs.c:1337 +#: ../pidgin/gtkprefs.c:1339 msgid "Epiphany" msgstr "Epiphany" -#: ../pidgin/gtkprefs.c:1346 +#: ../pidgin/gtkprefs.c:1348 msgid "Manual" msgstr "Ručné" -#: ../pidgin/gtkprefs.c:1399 +#: ../pidgin/gtkprefs.c:1401 msgid "Browser Selection" msgstr "Výber prehliadača" -#: ../pidgin/gtkprefs.c:1403 +#: ../pidgin/gtkprefs.c:1405 msgid "_Browser:" msgstr "_Prehliadač:" -#: ../pidgin/gtkprefs.c:1411 +#: ../pidgin/gtkprefs.c:1413 msgid "_Open link in:" msgstr "_Otvoriť odkaz:" -#: ../pidgin/gtkprefs.c:1413 +#: ../pidgin/gtkprefs.c:1415 msgid "Browser default" msgstr "Podľa prehliadača" -#: ../pidgin/gtkprefs.c:1414 +#: ../pidgin/gtkprefs.c:1416 msgid "Existing window" msgstr "V otvorenom okne" -#: ../pidgin/gtkprefs.c:1416 +#: ../pidgin/gtkprefs.c:1418 msgid "New tab" msgstr "Na novej karte" -#: ../pidgin/gtkprefs.c:1430 +#: ../pidgin/gtkprefs.c:1432 #, c-format msgid "" "_Manual:\n" @@ -16205,69 +16213,63 @@ "_Ručne:\n" "(%s for URL)" -#: ../pidgin/gtkprefs.c:1470 +#: ../pidgin/gtkprefs.c:1472 msgid "Log _format:" msgstr "_Formát záznamu:" -#: ../pidgin/gtkprefs.c:1475 +#: ../pidgin/gtkprefs.c:1477 msgid "Log all _instant messages" msgstr "Zaznamenávať všetky _správy" -#: ../pidgin/gtkprefs.c:1477 +#: ../pidgin/gtkprefs.c:1479 msgid "Log all c_hats" msgstr "Zaznamenávať všetky c_haty" -#: ../pidgin/gtkprefs.c:1479 +#: ../pidgin/gtkprefs.c:1481 msgid "Log all _status changes to system log" msgstr "Zaznamenávať do systémového záznamu všetky zmeny _stavu" -#: ../pidgin/gtkprefs.c:1625 +#: ../pidgin/gtkprefs.c:1627 msgid "Sound Selection" msgstr "Výber zvuku" -#: ../pidgin/gtkprefs.c:1635 -#, c-format +#: ../pidgin/gtkprefs.c:1637 msgid "Quietest" msgstr "Najtichšia" -#: ../pidgin/gtkprefs.c:1637 -#, c-format -msgid "Quieter" -msgstr "Tichšia" - #: ../pidgin/gtkprefs.c:1639 -#, c-format +msgid "Quieter" +msgstr "Tichšia" + +#: ../pidgin/gtkprefs.c:1641 msgid "Quiet" msgstr "Tichá" -#: ../pidgin/gtkprefs.c:1643 -#, c-format +#: ../pidgin/gtkprefs.c:1645 msgid "Loud" msgstr "Hlasná" -#: ../pidgin/gtkprefs.c:1645 -#, c-format -msgid "Louder" -msgstr "Hlasnejšia" - #: ../pidgin/gtkprefs.c:1647 -#, c-format +msgid "Louder" +msgstr "Hlasnejšia" + +#: ../pidgin/gtkprefs.c:1649 msgid "Loudest" msgstr "Najhlasnejšia" -#: ../pidgin/gtkprefs.c:1713 -msgid "_Method:" -msgstr "_Spôsob:" - #: ../pidgin/gtkprefs.c:1715 +msgid "_Method:" +msgstr "_Spôsob:" + +#: ../pidgin/gtkprefs.c:1717 msgid "Console beep" msgstr "Pípnutie konzoly" -#: ../pidgin/gtkprefs.c:1722 +#: ../pidgin/gtkprefs.c:1724 msgid "No sounds" msgstr "Žiadne zvuky" -#: ../pidgin/gtkprefs.c:1730 +#: ../pidgin/gtkprefs.c:1732 #, c-format msgid "" "Sound c_ommand:\n" @@ -16276,81 +16278,81 @@ "Príkaz zvuku:\n" "(%s pre názov súboru)" -#: ../pidgin/gtkprefs.c:1757 +#: ../pidgin/gtkprefs.c:1759 msgid "Sounds when conversation has _focus" msgstr "Prehrávať zvuky, keď je okno koverzácie _aktívne" -#: ../pidgin/gtkprefs.c:1759 +#: ../pidgin/gtkprefs.c:1761 msgid "Enable sounds:" msgstr "Povoliť zvuky:" -#: ../pidgin/gtkprefs.c:1770 +#: ../pidgin/gtkprefs.c:1772 msgid "Volume:" msgstr "Hlasitosť:" -#: ../pidgin/gtkprefs.c:1850 +#: ../pidgin/gtkprefs.c:1852 msgid "Play" msgstr "Prehrať" -#: ../pidgin/gtkprefs.c:1927 +#: ../pidgin/gtkprefs.c:1929 msgid "_Report idle time:" msgstr "_Oznamovať čas nečinnosti:" -#: ../pidgin/gtkprefs.c:1932 +#: ../pidgin/gtkprefs.c:1934 msgid "Based on keyboard or mouse use" msgstr "Podľa využitia klávesnice alebo myši" -#: ../pidgin/gtkprefs.c:1941 +#: ../pidgin/gtkprefs.c:1943 msgid "_Auto-reply:" msgstr "_Automatická odpoveď:" -#: ../pidgin/gtkprefs.c:1945 +#: ../pidgin/gtkprefs.c:1947 msgid "When both away and idle" msgstr "Pri neprítomnosti a nečinnosti" #. Auto-away stuff -#: ../pidgin/gtkprefs.c:1951 +#: ../pidgin/gtkprefs.c:1953 msgid "Auto-away" msgstr "Automatická neprítomnosť" -#: ../pidgin/gtkprefs.c:1953 +#: ../pidgin/gtkprefs.c:1955 msgid "Change status when _idle" msgstr "Zmeniť stav pri _nečinnosti" -#: ../pidgin/gtkprefs.c:1957 +#: ../pidgin/gtkprefs.c:1959 msgid "_Minutes before becoming idle:" msgstr "_Počet minút pred nečinnosťou:" -#: ../pidgin/gtkprefs.c:1965 +#: ../pidgin/gtkprefs.c:1967 msgid "Change _status to:" msgstr "Zmeniť _stav na:" #. Signon status stuff -#: ../pidgin/gtkprefs.c:1986 +#: ../pidgin/gtkprefs.c:1988 msgid "Status at Startup" msgstr "Stav pri spustení" -#: ../pidgin/gtkprefs.c:1988 +#: ../pidgin/gtkprefs.c:1990 msgid "Use status from last _exit at startup" msgstr "Po spustení použiť stav ako pred odhlásením" -#: ../pidgin/gtkprefs.c:1994 +#: ../pidgin/gtkprefs.c:1996 msgid "Status to a_pply at startup:" msgstr "Po spustení použiť stav:" -#: ../pidgin/gtkprefs.c:2032 +#: ../pidgin/gtkprefs.c:2034 msgid "Interface" msgstr "Rozhranie" -#: ../pidgin/gtkprefs.c:2034 +#: ../pidgin/gtkprefs.c:2036 msgid "Smiley Themes" msgstr "Témy smajlíkov" -#: ../pidgin/gtkprefs.c:2041 +#: ../pidgin/gtkprefs.c:2043 msgid "Browser" msgstr "Prehliadač" -#: ../pidgin/gtkprefs.c:2045 +#: ../pidgin/gtkprefs.c:2047 msgid "Status / Idle" msgstr "Stav / nečinný" @@ -16424,7 +16426,7 @@ #: ../pidgin/gtkprivacy.c:601 msgid "Please enter the name of the user you wish to block." -msgstr "Zadajte, prosím, meno používateľa, ktorého si želáte blokovať." +msgstr "Zadajte, prosím, meno používateľa, ktorého chcete blokovať." #: ../pidgin/gtkprivacy.c:609 #, c-format @@ -16846,7 +16848,7 @@ msgid "Received Messages" msgstr "Prijaté správy" -#: ../pidgin/plugins/convcolors.c:210 ../pidgin/plugins/pidginrc.c:251 +#: ../pidgin/plugins/convcolors.c:210 ../pidgin/plugins/pidginrc.c:245 #, c-format msgid "Select Color for %s" msgstr "Vyberte farbu pre %s" @@ -17119,7 +17121,7 @@ "\n" "Poznámka priateľa: %s" -#: ../pidgin/plugins/history.c:188 +#: ../pidgin/plugins/history.c:192 msgid "History" msgstr "História" @@ -17374,45 +17376,36 @@ msgid "GtkTreeView Horizontal Separation" msgstr "Vodorovná medzera v GtkTreeView" -#: ../pidgin/plugins/pidginrc.c:73 +#: ../pidgin/plugins/pidginrc.c:69 msgid "Conversation Entry" msgstr "Položka rozhovoru" -#: ../pidgin/plugins/pidginrc.c:74 -msgid "Conversation History" -msgstr "História rozhovoru" - -#: ../pidgin/plugins/pidginrc.c:75 -msgid "Log Viewer" -msgstr "Zobrazovač záznamov" - -#: ../pidgin/plugins/pidginrc.c:76 +#: ../pidgin/plugins/pidginrc.c:70 msgid "Request Dialog" msgstr "Dialóg požiadavku" -#: ../pidgin/plugins/pidginrc.c:77 +#: ../pidgin/plugins/pidginrc.c:71 msgid "Notify Dialog" msgstr "Dialóg upozornenia" -#: ../pidgin/plugins/pidginrc.c:253 +#: ../pidgin/plugins/pidginrc.c:247 msgid "Select Color" msgstr "Vyberte farbu" -#: ../pidgin/plugins/pidginrc.c:300 -#, c-format +#: ../pidgin/plugins/pidginrc.c:294 msgid "Select Interface Font" msgstr "Vyberte písmo rozhrania" -#: ../pidgin/plugins/pidginrc.c:303 +#: ../pidgin/plugins/pidginrc.c:297 #, c-format msgid "Select Font for %s" msgstr "Vyberte písmo pre %s" -#: ../pidgin/plugins/pidginrc.c:371 +#: ../pidgin/plugins/pidginrc.c:365 msgid "GTK+ Interface Font" msgstr "Písmo rozhrania GTK+" -#: ../pidgin/plugins/pidginrc.c:391 +#: ../pidgin/plugins/pidginrc.c:385 msgid "GTK+ Text Shortcut Theme" msgstr "Textová téma odkazov GTK+" @@ -17436,36 +17429,36 @@ #. widget_bool_widgets[i]); #. } #. -#: ../pidgin/plugins/pidginrc.c:428 +#: ../pidgin/plugins/pidginrc.c:422 msgid "Interface colors" msgstr "Farby rozhrania" -#: ../pidgin/plugins/pidginrc.c:452 +#: ../pidgin/plugins/pidginrc.c:446 msgid "Widget Sizes" msgstr "Veľkosti ovládacích prvkov" -#: ../pidgin/plugins/pidginrc.c:473 +#: ../pidgin/plugins/pidginrc.c:467 msgid "Fonts" msgstr "Písma" -#: ../pidgin/plugins/pidginrc.c:497 +#: ../pidgin/plugins/pidginrc.c:491 msgid "Gtkrc File Tools" msgstr "Nástroje súboru Gtkrc" -#: ../pidgin/plugins/pidginrc.c:502 +#: ../pidgin/plugins/pidginrc.c:496 #, c-format msgid "Write settings to %s%sgtkrc-2.0" msgstr "Uložiť nastavenia do %s%sgtkrc-2.0" -#: ../pidgin/plugins/pidginrc.c:511 +#: ../pidgin/plugins/pidginrc.c:505 msgid "Re-read gtkrc files" msgstr "Znovu načítať súbory gtkrc" -#: ../pidgin/plugins/pidginrc.c:544 +#: ../pidgin/plugins/pidginrc.c:538 msgid "Pidgin GTK+ Theme Control" msgstr "Ovládánie témy GTK+ programu Pidgin" -#: ../pidgin/plugins/pidginrc.c:546 ../pidgin/plugins/pidginrc.c:547 +#: ../pidgin/plugins/pidginrc.c:540 ../pidgin/plugins/pidginrc.c:541 msgid "Provides access to commonly used gtkrc settings." msgstr "Umožňuje prístup ku najčastejšie používaným nastaveniam GTKrc." @@ -17647,7 +17640,6 @@ msgstr "Voľby formátu časovej značky" #: ../pidgin/plugins/timestamp_format.c:26 -#, c-format msgid "_Force 24-hour time format" msgstr "_Vynútiť 24-hodinový formát času" @@ -17842,138 +17834,46 @@ #: ../pidgin/plugins/xmppconsole.c:790 msgid "Insert an stanza." -msgstr "Vložiť stanza." +msgstr "Vložiť slohu." #: ../pidgin/plugins/xmppconsole.c:799 msgid "Insert a stanza." -msgstr "Vložiť stanza." +msgstr "Vložiť slohu." #: ../pidgin/plugins/xmppconsole.c:808 msgid "Insert a stanza." -msgstr "Vložiť stanza." +msgstr "Vložiť slohu." #. *< name #. *< version #. * summary #: ../pidgin/plugins/xmppconsole.c:863 msgid "Send and receive raw XMPP stanzas." -msgstr "Odosielať a prijímať nespracované XMPP stanzy." +msgstr "Odosielať a prijímať nespracované XMPP slohy." #. * description #: ../pidgin/plugins/xmppconsole.c:865 msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Tento plugin je vhodný pre ladenie XMPP serverov alebo klientov." -#, fuzzy -#~ msgid "Offline buddies" -#~ msgstr "Zobraziť odpojených priateľov" - -#, fuzzy -#~ msgid "Sort" -#~ msgstr "Port" - -#, fuzzy -#~ msgid "By Status" -#~ msgstr "Podľa stavu" - -#, fuzzy -#~ msgid "By Log Size" -#~ msgstr "Podľa veľkosti záznamu" - -#, fuzzy -#~ msgid "Unable to connect to contact server" -#~ msgstr "Nepodarilo sa pripojiť na server." - -#, fuzzy -#~ msgid "Unable to retrieve MSN Address Book" -#~ msgstr "Vyberte Notes zoznam adries" - -#, fuzzy -#~ msgid "Current media" -#~ msgstr "Aktuálny token" - -#, fuzzy -#~ msgid "Windows Live Messenger Protocol Plugin" -#~ msgstr "Modul protokolu Novell GroupWise Messenger" - -#, fuzzy -#~ msgid "Windows Live ID authentication Failed" -#~ msgstr "Chyba: Zlyhala antentifikácia" - -#~ msgid "%s just sent you a Nudge!" -#~ msgstr "%s vám práve poslal Nudge!" - -#, fuzzy -#~ msgid "Unknown error (%d)" -#~ msgstr "Neznáma chyba" - -#, fuzzy -#~ msgid "Unable to connect to OIM server" -#~ msgstr "Nepodarilo sa pripojiť na server." - -#, fuzzy -#~ msgid "%s (%s) changed status from %s to %s" -#~ msgstr "Používateľ %s zmenil stav z %s na %s" - -#, fuzzy -#~ msgid "%s (%s) is now %s" -#~ msgstr "Používateľ %s je teraz %s" - -#, fuzzy -#~ msgid "%s (%s) is no longer %s" -#~ msgstr "Používateľ %s už nie je %s" - -#, fuzzy -#~ msgid "_Merge" -#~ msgstr "_Správa:" - -#, fuzzy -#~ msgid "_Send File..." -#~ msgstr "Odoslať _súbor" - -#, fuzzy -#~ msgid "Add Buddy _Pounce..." -#~ msgstr "Pridať sledovanie priateľa..." - -#, fuzzy -#~ msgid "Hide when offline" -#~ msgstr "Nepovolené v odpojenom stave" - -#, fuzzy -#~ msgid "Show when offline" -#~ msgstr "Nepovolené v odpojenom stave" - -#, fuzzy -#~ msgid "Add _Buddy..." -#~ msgstr "Pridať priateľa" - -#, fuzzy -#~ msgid "Add C_hat..." -#~ msgstr "Pridať chat" - -#, fuzzy -#~ msgid "Persistent" -#~ msgstr "perzština" - -#, fuzzy -#~ msgid "/Accounts/Manage" -#~ msgstr "/Účty" - -#, fuzzy -#~ msgid "A_ccount:" -#~ msgstr "Účet:" - -#, fuzzy -#~ msgid "S_end To" -#~ msgstr "Odoslať do" - -#, fuzzy -#~ msgid "_Smile!" -#~ msgstr "Smajlík!" +#~ msgid "Sort by status" +#~ msgstr "Zoradiť podľa stavu" + +#~ msgid "Sort alphabetically" +#~ msgstr "Zoradiť podľa abecedy" + +#~ msgid "Sort by log size" +#~ msgstr "Zoradiť podľa veľkosti záznamu" #~ msgid "You have just sent a Nudge!" #~ msgstr "Práve ste odoslali štuchanec!" +#~ msgid "Has you" +#~ msgstr "Vás má" + +#~ msgid "MSN Protocol Plugin" +#~ msgstr "Modul protokolu HTTP" + #~ msgid "Would like to add him?" #~ msgstr "Chcete ho pridať?" @@ -17983,6 +17883,18 @@ #~ msgid "You have just sent a Buzz!" #~ msgstr "Práve ste odoslali bzzz!" +#~ msgid "Add Buddy _Pounce" +#~ msgstr "Pridať _sledovanie priatela" + +#~ msgid "Add a _Buddy" +#~ msgstr "Pridať priateľa" + +#~ msgid "Add a C_hat" +#~ msgstr "Pridať chat" + +#~ msgid "/Accounts/Add\\/Edit" +#~ msgstr "/Účty/Pri_dať a upraviť" + #~ msgid "/Help" #~ msgstr "/_Pomocník" @@ -17992,6 +17904,9 @@ #~ msgid "/Options/Show Buddy Icon" #~ msgstr "/Možnosti/Zobraziť ikonu priateľa" +#~ msgid "_Send To" +#~ msgstr "Po_slať cez" + #~ 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/" @@ -18014,6 +17929,15 @@ #~ "súbore 'COPYRIGHT'. Na tento program vám neposkytujeme žiadnu záruku." #~ "

" +#~ msgid "_Smiley" +#~ msgstr "_Smajlík" + +#~ msgid "Conversation History" +#~ msgstr "História rozhovoru" + +#~ msgid "Log Viewer" +#~ msgstr "Zobrazovač záznamov" + #~ msgid "nudged" #~ msgstr "štuchnutý" diff -r 7697f6872380 -r f7e4a558a439 po/stats.pl --- a/po/stats.pl Tue Oct 23 17:40:56 2007 +0000 +++ b/po/stats.pl Tue Oct 23 17:41:06 2007 +0000 @@ -32,7 +32,7 @@ $lang{en_GB} = "English (British)"; $lang{my_MM} = "Burmese (Myanmar)"; $lang{pt_BR} = "Portuguese (Brazilian)"; -$lang{'sr@Latn'} = "Serbian (Latin)"; +$lang{'sr@latin'} = "Serbian (Latin)"; $lang{zh_CN} = "Chinese (Simplified)"; $lang{zh_HK} = "Chinese (Hong Kong)"; $lang{zh_TW} = "Chinese (Traditional)";